mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-05 00:38:14 +00:00
Merge branch 'master' of git@bitbucket.org:Major-/apollo.git.
This commit is contained in:
+11
-10
@@ -107,18 +107,19 @@ public final class Server {
|
|||||||
* @param jagGrabAddress The JAGGRAB address to bind to.
|
* @param jagGrabAddress The JAGGRAB address to bind to.
|
||||||
*/
|
*/
|
||||||
public void bind(SocketAddress serviceAddress, SocketAddress httpAddress, SocketAddress jagGrabAddress) {
|
public void bind(SocketAddress serviceAddress, SocketAddress httpAddress, SocketAddress jagGrabAddress) {
|
||||||
logger.fine("Binding service listener to address: " + serviceAddress + "...");
|
|
||||||
serviceBootstrap.bind(serviceAddress);
|
|
||||||
|
|
||||||
logger.fine("Binding HTTP listener to address: " + httpAddress + "...");
|
|
||||||
try {
|
try {
|
||||||
httpBootstrap.bind(httpAddress);
|
logger.fine("Binding service listener to address: " + serviceAddress + "...");
|
||||||
} catch (Throwable t) {
|
serviceBootstrap.bind(serviceAddress).sync();
|
||||||
logger.log(Level.WARNING, "Binding to HTTP failed: client will use JAGGRAB as a fallback (not recommended)!", t);
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.fine("Binding JAGGRAB listener to address: " + jagGrabAddress + "...");
|
logger.fine("Binding HTTP listener to address: " + httpAddress + "...");
|
||||||
jagGrabBootstrap.bind(jagGrabAddress);
|
httpBootstrap.bind(httpAddress).sync();
|
||||||
|
|
||||||
|
logger.fine("Binding JAGGRAB listener to address: " + jagGrabAddress + "...");
|
||||||
|
jagGrabBootstrap.bind(jagGrabAddress).sync();
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.log(Level.SEVERE, "Binding to a port failed: ensure apollo isn't already running.", e);
|
||||||
|
System.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
logger.info("Ready for connections.");
|
logger.info("Ready for connections.");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.apollo.game.message.impl;
|
package org.apollo.game.message.impl;
|
||||||
|
|
||||||
import org.apollo.game.message.Message;
|
import org.apollo.game.message.Message;
|
||||||
|
import org.apollo.game.model.entity.setting.MembershipStatus;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A {@link Message} sent to the client that specifies the local id and membership status of the current player.
|
* A {@link Message} sent to the client that specifies the local id and membership status of the current player.
|
||||||
@@ -15,17 +16,17 @@ public final class IdAssignmentMessage extends Message {
|
|||||||
private final int id;
|
private final int id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The membership flag.
|
* The MembershipStatus.
|
||||||
*/
|
*/
|
||||||
private final boolean members;
|
private final MembershipStatus members;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates the local id message.
|
* Creates the local id message.
|
||||||
*
|
*
|
||||||
* @param id The id.
|
* @param id The id.
|
||||||
* @param members The membership flag.
|
* @param members The MembershipStatus.
|
||||||
*/
|
*/
|
||||||
public IdAssignmentMessage(int id, boolean members) {
|
public IdAssignmentMessage(int id, MembershipStatus members) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.members = members;
|
this.members = members;
|
||||||
}
|
}
|
||||||
@@ -40,12 +41,12 @@ public final class IdAssignmentMessage extends Message {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the membership flag.
|
* Gets whether or not the Player is a {@link MembershipStatus#PAID paying member}.
|
||||||
*
|
*
|
||||||
* @return The membership flag.
|
* @return {@code true} if the Player is a paying member, {@code false} if not.
|
||||||
*/
|
*/
|
||||||
public boolean isMembers() {
|
public boolean isMembers() {
|
||||||
return members;
|
return members == MembershipStatus.PAID;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -19,6 +19,7 @@ import org.apollo.game.model.Appearance;
|
|||||||
import org.apollo.game.model.Position;
|
import org.apollo.game.model.Position;
|
||||||
import org.apollo.game.model.World;
|
import org.apollo.game.model.World;
|
||||||
import org.apollo.game.model.area.Sector;
|
import org.apollo.game.model.area.Sector;
|
||||||
|
import org.apollo.game.model.entity.setting.MembershipStatus;
|
||||||
import org.apollo.game.model.entity.setting.PrivacyState;
|
import org.apollo.game.model.entity.setting.PrivacyState;
|
||||||
import org.apollo.game.model.entity.setting.PrivilegeLevel;
|
import org.apollo.game.model.entity.setting.PrivilegeLevel;
|
||||||
import org.apollo.game.model.entity.setting.ScreenBrightness;
|
import org.apollo.game.model.entity.setting.ScreenBrightness;
|
||||||
@@ -131,9 +132,9 @@ public final class Player extends Mob {
|
|||||||
private transient Position lastKnownSector;
|
private transient Position lastKnownSector;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The membership flag.
|
* The MembershipStatus of this Player.
|
||||||
*/
|
*/
|
||||||
private transient boolean members = false;
|
private transient MembershipStatus members = MembershipStatus.FREE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A flag indicating if the player is new.
|
* A flag indicating if the player is new.
|
||||||
@@ -558,6 +559,15 @@ public final class Player extends Mob {
|
|||||||
* @return {@code true} if so, {@code false} if not.
|
* @return {@code true} if so, {@code false} if not.
|
||||||
*/
|
*/
|
||||||
public boolean isMembers() {
|
public boolean isMembers() {
|
||||||
|
return members == MembershipStatus.PAID;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the {@link MembershipStatus} of this Player.
|
||||||
|
*
|
||||||
|
* @return The MembershipStatus.
|
||||||
|
*/
|
||||||
|
public MembershipStatus getMembershipStatus() {
|
||||||
return members;
|
return members;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -830,7 +840,7 @@ public final class Player extends Mob {
|
|||||||
*
|
*
|
||||||
* @param members The new membership flag.
|
* @param members The new membership flag.
|
||||||
*/
|
*/
|
||||||
public void setMembers(boolean members) {
|
public void setMembers(MembershipStatus members) {
|
||||||
this.members = members;
|
this.members = members;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
package org.apollo.game.model.entity.setting;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The membership status of a Player.
|
||||||
|
*
|
||||||
|
* @author Major
|
||||||
|
*/
|
||||||
|
public enum MembershipStatus {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The free membership status.
|
||||||
|
*/
|
||||||
|
FREE(0),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The paid membership status.
|
||||||
|
*/
|
||||||
|
PAID(1);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the MembershipStatus with the specified value.
|
||||||
|
*
|
||||||
|
* @param value The integer value of the MembershipStatus.
|
||||||
|
* @return The MembershipStatus.
|
||||||
|
* @throws IllegalArgumentException If no MembershipStatus with the specified the value exists.
|
||||||
|
*/
|
||||||
|
public static MembershipStatus valueOf(int value) {
|
||||||
|
Optional<MembershipStatus> optional = Arrays.stream(values()).filter(status -> status.value == value).findAny();
|
||||||
|
return optional.orElseThrow(() -> new IllegalArgumentException("Illegal membership status value."));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The integer value of this MembershipStatus.
|
||||||
|
*/
|
||||||
|
private final int value;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the MembershipStatus.
|
||||||
|
*
|
||||||
|
* @param value The integer value.
|
||||||
|
*/
|
||||||
|
private MembershipStatus(int value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value of this MembershipStatus.
|
||||||
|
*
|
||||||
|
* @return The value.
|
||||||
|
*/
|
||||||
|
public int getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -21,6 +21,7 @@ import org.apollo.game.model.entity.attr.BooleanAttribute;
|
|||||||
import org.apollo.game.model.entity.attr.NumericalAttribute;
|
import org.apollo.game.model.entity.attr.NumericalAttribute;
|
||||||
import org.apollo.game.model.entity.attr.StringAttribute;
|
import org.apollo.game.model.entity.attr.StringAttribute;
|
||||||
import org.apollo.game.model.entity.setting.Gender;
|
import org.apollo.game.model.entity.setting.Gender;
|
||||||
|
import org.apollo.game.model.entity.setting.MembershipStatus;
|
||||||
import org.apollo.game.model.entity.setting.PrivacyState;
|
import org.apollo.game.model.entity.setting.PrivacyState;
|
||||||
import org.apollo.game.model.entity.setting.PrivilegeLevel;
|
import org.apollo.game.model.entity.setting.PrivilegeLevel;
|
||||||
import org.apollo.game.model.entity.setting.ScreenBrightness;
|
import org.apollo.game.model.entity.setting.ScreenBrightness;
|
||||||
@@ -69,7 +70,7 @@ public final class BinaryPlayerLoader implements PlayerLoader {
|
|||||||
credentials.setPassword(pass);
|
credentials.setPassword(pass);
|
||||||
|
|
||||||
PrivilegeLevel privilegeLevel = PrivilegeLevel.valueOf(in.readByte());
|
PrivilegeLevel privilegeLevel = PrivilegeLevel.valueOf(in.readByte());
|
||||||
boolean members = in.readBoolean();
|
MembershipStatus members = MembershipStatus.valueOf(in.readByte());
|
||||||
|
|
||||||
// read settings
|
// read settings
|
||||||
PrivacyState chatPrivacy = PrivacyState.valueOf(in.readByte(), true);
|
PrivacyState chatPrivacy = PrivacyState.valueOf(in.readByte(), true);
|
||||||
@@ -166,21 +167,21 @@ public final class BinaryPlayerLoader implements PlayerLoader {
|
|||||||
String name = StreamUtil.readString(in);
|
String name = StreamUtil.readString(in);
|
||||||
AttributeType type = AttributeType.valueOf(in.read());
|
AttributeType type = AttributeType.valueOf(in.read());
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case BOOLEAN:
|
case BOOLEAN:
|
||||||
attribute = new BooleanAttribute(in.read() == 1);
|
attribute = new BooleanAttribute(in.read() == 1);
|
||||||
break;
|
break;
|
||||||
case DOUBLE:
|
case DOUBLE:
|
||||||
attribute = new NumericalAttribute(in.readDouble());
|
attribute = new NumericalAttribute(in.readDouble());
|
||||||
break;
|
break;
|
||||||
case LONG:
|
case LONG:
|
||||||
attribute = new NumericalAttribute(in.readLong());
|
attribute = new NumericalAttribute(in.readLong());
|
||||||
break;
|
break;
|
||||||
case STRING:
|
case STRING:
|
||||||
case SYMBOL:
|
case SYMBOL:
|
||||||
attribute = new StringAttribute(StreamUtil.readString(in), type == AttributeType.SYMBOL);
|
attribute = new StringAttribute(StreamUtil.readString(in), type == AttributeType.SYMBOL);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("Undefined attribute type: " + type + ".");
|
throw new IllegalArgumentException("Undefined attribute type: " + type + ".");
|
||||||
}
|
}
|
||||||
attributes.put(name, attribute);
|
attributes.put(name, attribute);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public final class BinaryPlayerSaver implements PlayerSaver {
|
|||||||
StreamUtil.writeString(out, player.getUsername());
|
StreamUtil.writeString(out, player.getUsername());
|
||||||
StreamUtil.writeString(out, player.getCredentials().getPassword());
|
StreamUtil.writeString(out, player.getCredentials().getPassword());
|
||||||
out.writeByte(player.getPrivilegeLevel().toInteger());
|
out.writeByte(player.getPrivilegeLevel().toInteger());
|
||||||
out.writeBoolean(player.isMembers());
|
out.writeByte(player.getMembershipStatus().getValue());
|
||||||
|
|
||||||
// write settings
|
// write settings
|
||||||
out.writeByte(player.getChatPrivacy().toInteger(true));
|
out.writeByte(player.getChatPrivacy().toInteger(true));
|
||||||
@@ -118,21 +118,21 @@ public final class BinaryPlayerSaver implements PlayerSaver {
|
|||||||
|
|
||||||
out.writeByte(type.getValue());
|
out.writeByte(type.getValue());
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case BOOLEAN:
|
case BOOLEAN:
|
||||||
out.writeByte((Boolean) attribute.getValue() ? 1 : 0);
|
out.writeByte((Boolean) attribute.getValue() ? 1 : 0);
|
||||||
break;
|
break;
|
||||||
case DOUBLE:
|
case DOUBLE:
|
||||||
out.writeDouble((Double) attribute.getValue());
|
out.writeDouble((Double) attribute.getValue());
|
||||||
break;
|
break;
|
||||||
case LONG:
|
case LONG:
|
||||||
out.writeLong((Long) attribute.getValue());
|
out.writeLong((Long) attribute.getValue());
|
||||||
break;
|
break;
|
||||||
case STRING:
|
case STRING:
|
||||||
case SYMBOL:
|
case SYMBOL:
|
||||||
StreamUtil.writeString(out, (String) attribute.getValue());
|
StreamUtil.writeString(out, (String) attribute.getValue());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("Undefined attribute type " + type + ".");
|
throw new IllegalArgumentException("Undefined attribute type " + type + ".");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.apollo.io.player.impl;
|
|||||||
|
|
||||||
import org.apollo.game.model.Position;
|
import org.apollo.game.model.Position;
|
||||||
import org.apollo.game.model.entity.Player;
|
import org.apollo.game.model.entity.Player;
|
||||||
|
import org.apollo.game.model.entity.setting.MembershipStatus;
|
||||||
import org.apollo.game.model.entity.setting.PrivilegeLevel;
|
import org.apollo.game.model.entity.setting.PrivilegeLevel;
|
||||||
import org.apollo.io.player.PlayerLoader;
|
import org.apollo.io.player.PlayerLoader;
|
||||||
import org.apollo.io.player.PlayerLoaderResponse;
|
import org.apollo.io.player.PlayerLoaderResponse;
|
||||||
@@ -26,7 +27,7 @@ public final class DummyPlayerLoader implements PlayerLoader {
|
|||||||
|
|
||||||
Player player = new Player(credentials, DEFAULT_POSITION);
|
Player player = new Player(credentials, DEFAULT_POSITION);
|
||||||
player.setPrivilegeLevel(PrivilegeLevel.ADMINISTRATOR);
|
player.setPrivilegeLevel(PrivilegeLevel.ADMINISTRATOR);
|
||||||
player.setMembers(true);
|
player.setMembers(MembershipStatus.PAID);
|
||||||
|
|
||||||
return new PlayerLoaderResponse(status, player);
|
return new PlayerLoaderResponse(status, player);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user