This commit is contained in:
Sen 2025-06-03 10:56:56 +02:00
parent 21cec747be
commit f849ee4526
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
58 changed files with 826 additions and 1003 deletions

View file

@ -27,7 +27,6 @@ import java.io.File;
import java.io.IOException;
import java.net.IDN;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@ -43,6 +42,7 @@ import java.util.concurrent.FutureTask;
import javax.imageio.ImageIO;
import com.google.common.base.Charsets;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Queues;
import com.google.common.util.concurrent.Futures;
@ -58,15 +58,17 @@ import proxy.network.MessageSerializer2;
import proxy.network.NetHandlerHandshake;
import proxy.network.NetHandlerPlayServer;
import proxy.network.NetworkManager;
import proxy.network.ServerStatusResponse;
import proxy.network.ThreadQuickExitException;
import proxy.packet.play.server.S40PacketDisconnect;
import proxy.util.ChatColor;
import proxy.util.ChatComponentText;
import proxy.util.GameProfile;
import proxy.util.Profile;
import proxy.util.ServerInfo;
import proxy.util.User;
import proxy.util.VersionId;
import proxy.util.LazyLoadBase;
import proxy.util.Log;
import proxy.util.PlayerInfo;
public class Proxy {
public static final LazyLoadBase<NioEventLoopGroup> NIO_EVENT_LOOP = new LazyLoadBase<NioEventLoopGroup>() {
@ -83,8 +85,8 @@ public class Proxy {
private volatile boolean isAlive;
private volatile boolean running = true;
private final List<ChannelFuture> endpoints = Collections.<ChannelFuture>synchronizedList(new ArrayList());
private final List<NetworkManager> networkManagers = Collections.<NetworkManager>synchronizedList(new ArrayList());
private final List<ChannelFuture> endpoints = Collections.<ChannelFuture>synchronizedList(Lists.newArrayList());
private final List<NetworkManager> networkManagers = Collections.<NetworkManager>synchronizedList(Lists.newArrayList());
private final Queue<FutureTask<?>> futureTaskQueue = Queues.<FutureTask<?>>newArrayDeque();
private final Map<String, User> users = Maps.newHashMap();
private final Map<String, NetHandlerPlayServer> players = Maps.newHashMap();
@ -100,10 +102,10 @@ public class Proxy {
private int proxyPort = 25566;
private int minPassLength = 8;
private int maxAttempts = 5;
private ServerStatusResponse status = getStatus(new File("icon.png"), ChatColor.AQUA + "Server\n" + ChatColor.GREEN + "Test!!", 90, 10, "Test1",
private ServerInfo status = getStatus(new File("icon.png"), ChatColor.AQUA + "Server\n" + ChatColor.GREEN + "Test!!", 90, 10, "Test1",
"Test2 ...", "Test #3 !!");
private static void addFaviconToStatusResponse(ServerStatusResponse info, File file) {
private static void addFaviconToStatusResponse(ServerInfo info, File file) {
if(file.isFile()) {
ByteBuf buf = Unpooled.buffer();
try {
@ -112,7 +114,7 @@ public class Proxy {
throw new IllegalArgumentException("Icon must be 64x64 pixels");
ImageIO.write(img, "PNG", new ByteBufOutputStream(buf));
ByteBuf base64 = Base64.encode(buf);
info.setFavicon("data:image/png;base64," + base64.toString(Charsets.UTF_8));
info.setIcon("data:image/png;base64," + base64.toString(Charsets.UTF_8));
}
catch(Exception e) {
Log.error(e, "Couldn't load server icon");
@ -123,17 +125,17 @@ public class Proxy {
}
}
public static ServerStatusResponse getStatus(File icon, String motd, int max, int current, String... lines) {
ServerStatusResponse info = new ServerStatusResponse();
info.setServerDescription(new ChatComponentText(motd));
info.setProtocolVersionInfo(new ServerStatusResponse.MinecraftProtocolVersionIdentifier("1.8.9", 47));
public static ServerInfo getStatus(File icon, String motd, int max, int current, String... lines) {
ServerInfo info = new ServerInfo();
info.setMotd(new ChatComponentText(motd));
info.setVersion(new VersionId("1.8.9", 47));
addFaviconToStatusResponse(info, icon);
info.setPlayerCountData(new ServerStatusResponse.PlayerCountData(max, current));
GameProfile[] profiles = new GameProfile[Math.min(lines.length, 12)];
info.setInfo(new PlayerInfo(max, current));
Profile[] profiles = new Profile[Math.min(lines.length, 12)];
for(int z = 0; z < profiles.length; z++) {
profiles[z] = new GameProfile(Proxy.getOfflineUUID(lines[z]), lines[z]);
profiles[z] = new Profile(Proxy.getOfflineUUID(lines[z]), lines[z]);
}
info.getPlayerCountData().setPlayers(profiles);
info.getInfo().setList(profiles);
return info;
}
@ -282,7 +284,7 @@ public class Proxy {
}
private <V> ListenableFuture<V> callFromMainThread(Callable<V> callable) {
if(!this.isCallingFromMinecraftThread()) {
if(!this.isMainThread()) {
ListenableFutureTask<V> task = ListenableFutureTask.<V>create(callable);
synchronized(this.futureTaskQueue) {
@ -304,7 +306,7 @@ public class Proxy {
this.<Object>callFromMainThread(Executors.callable(task));
}
public boolean isCallingFromMinecraftThread() {
public boolean isMainThread() {
return Thread.currentThread() == this.serverThread;
}
@ -312,7 +314,7 @@ public class Proxy {
return this.compression;
}
public ServerStatusResponse getStatus() {
public ServerInfo getStatus() {
return this.status;
}

View file

@ -3,14 +3,16 @@ package proxy.nbt;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import com.google.common.collect.Maps;
import java.util.Map.Entry;
public class NBTTagCompound extends NBTBase
{
private Map<String, NBTBase> tagMap = new HashMap();
private Map<String, NBTBase> tagMap = Maps.newHashMap();
/**
* Write the actual data contents of the tag, implemented in NBT extension classes

View file

@ -3,14 +3,15 @@ package proxy.nbt;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.google.common.collect.Lists;
import proxy.util.Log;
public class NBTTagList extends NBTBase
{
private List<NBTBase> tagList = new ArrayList();
private List<NBTBase> tagList = Lists.newArrayList();
/**
* The type byte for the tags in the list - they must all be of the same type.
@ -60,7 +61,7 @@ public class NBTTagList extends NBTBase
else
{
sizeTracker.read(32L * (long)i);
this.tagList = new ArrayList(i);
this.tagList = Lists.newArrayListWithCapacity(i);
for (int j = 0; j < i; ++j)
{

View file

@ -113,7 +113,7 @@ import proxy.util.ChatColor;
import proxy.util.ChatComponent;
import proxy.util.ChatComponentText;
import proxy.util.User;
import proxy.util.ItemStack;
import proxy.util.Stack;
import proxy.util.Log;
public class NetHandlerPlayServer implements INetHandler {
@ -502,7 +502,7 @@ public class NetHandlerPlayServer implements INetHandler {
public void processCreativeInventoryAction(C10PacketCreativeInventoryAction packetIn) {
if(!this.connected)
return;
ItemStack stack = packetIn.getStack();
Stack stack = packetIn.getStack();
// TODO: validate item
this.sendToServer(packetIn);
}
@ -522,7 +522,7 @@ public class NetHandlerPlayServer implements INetHandler {
if("MC|BEdit".equals(packetIn.getChannelName())) {
PacketBuffer packetbuffer = packetIn.getBufferData();
try {
ItemStack itemstack1 = packetbuffer.readItemStackFromBuffer();
Stack itemstack1 = packetbuffer.readStack();
if(itemstack1 != null) {
NBTTagList pages = itemstack1.getTag().getTagList("pages", 8);
@ -541,7 +541,7 @@ public class NetHandlerPlayServer implements INetHandler {
else if("MC|BSign".equals(packetIn.getChannelName())) {
PacketBuffer packetbuffer = packetIn.getBufferData();
try {
ItemStack itemstack = packetbuffer.readItemStackFromBuffer();
Stack itemstack = packetbuffer.readStack();
if(itemstack != null) {
String title = itemstack.getTag().getString("title");

View file

@ -22,9 +22,9 @@ import java.util.UUID;
import proxy.nbt.NBTSizeTracker;
import proxy.nbt.NBTTagCompound;
import proxy.util.BlockPos;
import proxy.util.Vec3;
import proxy.util.ChatComponent;
import proxy.util.ItemStack;
import proxy.util.Stack;
public class PacketBuffer extends ByteBuf
{
@ -67,14 +67,14 @@ public class PacketBuffer extends ByteBuf
return abyte;
}
public BlockPos readBlockPos()
public Vec3 readVector()
{
return BlockPos.fromLong(this.readLong());
return new Vec3(this.readLong());
}
public void writeBlockPos(BlockPos pos)
public void writeVector(Vec3 pos)
{
this.writeLong(pos.toLong());
this.writeLong(pos.getData());
}
public ChatComponent readChatComponent() throws IOException
@ -244,10 +244,7 @@ public class PacketBuffer extends ByteBuf
}
}
/**
* Writes the ItemStack's ID (short), then size (byte), then damage. (short)
*/
public void writeItemStackToBuffer(ItemStack stack)
public void writeStack(Stack stack)
{
if (stack == null)
{
@ -262,19 +259,16 @@ public class PacketBuffer extends ByteBuf
}
}
/**
* Reads an ItemStack from this buffer
*/
public ItemStack readItemStackFromBuffer() throws IOException
public Stack readStack() throws IOException
{
ItemStack stack = null;
Stack stack = null;
short id = this.readShort();
if (id >= 0)
{
byte size = this.readByte();
short meta = this.readShort();
stack = new ItemStack(id, size, meta, this.readNBTTagCompoundFromBuffer());
stack = new Stack(id, size, meta, this.readNBTTagCompoundFromBuffer());
}
return stack;

View file

@ -4,7 +4,7 @@ import proxy.Proxy;
public class PacketThreadUtil {
public static <T extends INetHandler> void checkThreadAndEnqueue(final Packet<T> packet, final T handler, Proxy proxy) throws ThreadQuickExitException {
if(!proxy.isCallingFromMinecraftThread()) {
if(!proxy.isMainThread()) {
proxy.schedule(new Runnable() {
public void run() {
packet.processPacket(handler);

View file

@ -1,249 +0,0 @@
package proxy.network;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import java.lang.reflect.Type;
import java.util.UUID;
import proxy.util.ChatComponent;
import proxy.util.GameProfile;
import proxy.util.JsonUtils;
public class ServerStatusResponse
{
private ChatComponent serverMotd;
private ServerStatusResponse.PlayerCountData playerCount;
private ServerStatusResponse.MinecraftProtocolVersionIdentifier protocolVersion;
private String favicon;
public ChatComponent getServerDescription()
{
return this.serverMotd;
}
public void setServerDescription(ChatComponent motd)
{
this.serverMotd = motd;
}
public ServerStatusResponse.PlayerCountData getPlayerCountData()
{
return this.playerCount;
}
public void setPlayerCountData(ServerStatusResponse.PlayerCountData countData)
{
this.playerCount = countData;
}
public ServerStatusResponse.MinecraftProtocolVersionIdentifier getProtocolVersionInfo()
{
return this.protocolVersion;
}
public void setProtocolVersionInfo(ServerStatusResponse.MinecraftProtocolVersionIdentifier protocolVersionData)
{
this.protocolVersion = protocolVersionData;
}
public void setFavicon(String faviconBlob)
{
this.favicon = faviconBlob;
}
public String getFavicon()
{
return this.favicon;
}
public static class MinecraftProtocolVersionIdentifier
{
private final String name;
private final int protocol;
public MinecraftProtocolVersionIdentifier(String nameIn, int protocolIn)
{
this.name = nameIn;
this.protocol = protocolIn;
}
public String getName()
{
return this.name;
}
public int getProtocol()
{
return this.protocol;
}
public static class Serializer implements JsonDeserializer<ServerStatusResponse.MinecraftProtocolVersionIdentifier>, JsonSerializer<ServerStatusResponse.MinecraftProtocolVersionIdentifier>
{
public ServerStatusResponse.MinecraftProtocolVersionIdentifier deserialize(JsonElement p_deserialize_1_, Type p_deserialize_2_, JsonDeserializationContext p_deserialize_3_) throws JsonParseException
{
JsonObject jsonobject = JsonUtils.getJsonObject(p_deserialize_1_, "version");
return new ServerStatusResponse.MinecraftProtocolVersionIdentifier(JsonUtils.getString(jsonobject, "name"), JsonUtils.getInt(jsonobject, "protocol"));
}
public JsonElement serialize(ServerStatusResponse.MinecraftProtocolVersionIdentifier p_serialize_1_, Type p_serialize_2_, JsonSerializationContext p_serialize_3_)
{
JsonObject jsonobject = new JsonObject();
jsonobject.addProperty("name", p_serialize_1_.getName());
jsonobject.addProperty("protocol", (Number)Integer.valueOf(p_serialize_1_.getProtocol()));
return jsonobject;
}
}
}
public static class PlayerCountData
{
private final int maxPlayers;
private final int onlinePlayerCount;
private GameProfile[] players;
public PlayerCountData(int maxOnlinePlayers, int onlinePlayers)
{
this.maxPlayers = maxOnlinePlayers;
this.onlinePlayerCount = onlinePlayers;
}
public int getMaxPlayers()
{
return this.maxPlayers;
}
public int getOnlinePlayerCount()
{
return this.onlinePlayerCount;
}
public GameProfile[] getPlayers()
{
return this.players;
}
public void setPlayers(GameProfile[] playersIn)
{
this.players = playersIn;
}
public static class Serializer implements JsonDeserializer<ServerStatusResponse.PlayerCountData>, JsonSerializer<ServerStatusResponse.PlayerCountData>
{
public ServerStatusResponse.PlayerCountData deserialize(JsonElement p_deserialize_1_, Type p_deserialize_2_, JsonDeserializationContext p_deserialize_3_) throws JsonParseException
{
JsonObject jsonobject = JsonUtils.getJsonObject(p_deserialize_1_, "players");
ServerStatusResponse.PlayerCountData serverstatusresponse$playercountdata = new ServerStatusResponse.PlayerCountData(JsonUtils.getInt(jsonobject, "max"), JsonUtils.getInt(jsonobject, "online"));
if (JsonUtils.isJsonArray(jsonobject, "sample"))
{
JsonArray jsonarray = JsonUtils.getJsonArray(jsonobject, "sample");
if (jsonarray.size() > 0)
{
GameProfile[] agameprofile = new GameProfile[jsonarray.size()];
for (int i = 0; i < agameprofile.length; ++i)
{
JsonObject jsonobject1 = JsonUtils.getJsonObject(jsonarray.get(i), "player[" + i + "]");
String s = JsonUtils.getString(jsonobject1, "id");
agameprofile[i] = new GameProfile(UUID.fromString(s), JsonUtils.getString(jsonobject1, "name"));
}
serverstatusresponse$playercountdata.setPlayers(agameprofile);
}
}
return serverstatusresponse$playercountdata;
}
public JsonElement serialize(ServerStatusResponse.PlayerCountData p_serialize_1_, Type p_serialize_2_, JsonSerializationContext p_serialize_3_)
{
JsonObject jsonobject = new JsonObject();
jsonobject.addProperty("max", (Number)Integer.valueOf(p_serialize_1_.getMaxPlayers()));
jsonobject.addProperty("online", (Number)Integer.valueOf(p_serialize_1_.getOnlinePlayerCount()));
if (p_serialize_1_.getPlayers() != null && p_serialize_1_.getPlayers().length > 0)
{
JsonArray jsonarray = new JsonArray();
for (int i = 0; i < p_serialize_1_.getPlayers().length; ++i)
{
JsonObject jsonobject1 = new JsonObject();
UUID uuid = p_serialize_1_.getPlayers()[i].getId();
jsonobject1.addProperty("id", uuid == null ? "" : uuid.toString());
jsonobject1.addProperty("name", p_serialize_1_.getPlayers()[i].getName());
jsonarray.add(jsonobject1);
}
jsonobject.add("sample", jsonarray);
}
return jsonobject;
}
}
}
public static class Serializer implements JsonDeserializer<ServerStatusResponse>, JsonSerializer<ServerStatusResponse>
{
public ServerStatusResponse deserialize(JsonElement p_deserialize_1_, Type p_deserialize_2_, JsonDeserializationContext p_deserialize_3_) throws JsonParseException
{
JsonObject jsonobject = JsonUtils.getJsonObject(p_deserialize_1_, "status");
ServerStatusResponse serverstatusresponse = new ServerStatusResponse();
if (jsonobject.has("description"))
{
serverstatusresponse.setServerDescription((ChatComponent)p_deserialize_3_.deserialize(jsonobject.get("description"), ChatComponent.class));
}
if (jsonobject.has("players"))
{
serverstatusresponse.setPlayerCountData((ServerStatusResponse.PlayerCountData)p_deserialize_3_.deserialize(jsonobject.get("players"), ServerStatusResponse.PlayerCountData.class));
}
if (jsonobject.has("version"))
{
serverstatusresponse.setProtocolVersionInfo((ServerStatusResponse.MinecraftProtocolVersionIdentifier)p_deserialize_3_.deserialize(jsonobject.get("version"), ServerStatusResponse.MinecraftProtocolVersionIdentifier.class));
}
if (jsonobject.has("favicon"))
{
serverstatusresponse.setFavicon(JsonUtils.getString(jsonobject, "favicon"));
}
return serverstatusresponse;
}
public JsonElement serialize(ServerStatusResponse p_serialize_1_, Type p_serialize_2_, JsonSerializationContext p_serialize_3_)
{
JsonObject jsonobject = new JsonObject();
if (p_serialize_1_.getServerDescription() != null)
{
jsonobject.add("description", p_serialize_3_.serialize(p_serialize_1_.getServerDescription()));
}
if (p_serialize_1_.getPlayerCountData() != null)
{
jsonobject.add("players", p_serialize_3_.serialize(p_serialize_1_.getPlayerCountData()));
}
if (p_serialize_1_.getProtocolVersionInfo() != null)
{
jsonobject.add("version", p_serialize_3_.serialize(p_serialize_1_.getProtocolVersionInfo()));
}
if (p_serialize_1_.getFavicon() != null)
{
jsonobject.addProperty("favicon", p_serialize_1_.getFavicon());
}
return jsonobject;
}
}
}

View file

@ -5,11 +5,11 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
public class C07PacketPlayerDigging implements Packet<NetHandlerPlayServer>
{
private BlockPos position;
private Vec3 position;
private byte facing;
private C07PacketPlayerDigging.Action status;
@ -19,7 +19,7 @@ public class C07PacketPlayerDigging implements Packet<NetHandlerPlayServer>
public void readPacketData(PacketBuffer buf) throws IOException
{
this.status = (C07PacketPlayerDigging.Action)buf.readEnumValue(C07PacketPlayerDigging.Action.class);
this.position = buf.readBlockPos();
this.position = buf.readVector();
this.facing = (byte)buf.readUnsignedByte();
}
@ -29,7 +29,7 @@ public class C07PacketPlayerDigging implements Packet<NetHandlerPlayServer>
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeEnumValue(this.status);
buf.writeBlockPos(this.position);
buf.writeVector(this.position);
buf.writeByte(this.facing);
}

View file

@ -5,14 +5,14 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.ItemStack;
import proxy.util.Vec3;
import proxy.util.Stack;
public class C08PacketPlayerBlockPlacement implements Packet<NetHandlerPlayServer>
{
private BlockPos position;
private Vec3 position;
private int placedBlockDirection;
private ItemStack stack;
private Stack stack;
private float facingX;
private float facingY;
private float facingZ;
@ -22,9 +22,9 @@ public class C08PacketPlayerBlockPlacement implements Packet<NetHandlerPlayServe
*/
public void readPacketData(PacketBuffer buf) throws IOException
{
this.position = buf.readBlockPos();
this.position = buf.readVector();
this.placedBlockDirection = buf.readUnsignedByte();
this.stack = buf.readItemStackFromBuffer();
this.stack = buf.readStack();
this.facingX = (float)buf.readUnsignedByte() / 16.0F;
this.facingY = (float)buf.readUnsignedByte() / 16.0F;
this.facingZ = (float)buf.readUnsignedByte() / 16.0F;
@ -35,9 +35,9 @@ public class C08PacketPlayerBlockPlacement implements Packet<NetHandlerPlayServe
*/
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeBlockPos(this.position);
buf.writeVector(this.position);
buf.writeByte(this.placedBlockDirection);
buf.writeItemStackToBuffer(this.stack);
buf.writeStack(this.stack);
buf.writeByte((int)(this.facingX * 16.0F));
buf.writeByte((int)(this.facingY * 16.0F));
buf.writeByte((int)(this.facingZ * 16.0F));

View file

@ -5,7 +5,7 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.ItemStack;
import proxy.util.Stack;
public class C0EPacketClickWindow implements Packet<NetHandlerPlayServer>
{
@ -13,7 +13,7 @@ public class C0EPacketClickWindow implements Packet<NetHandlerPlayServer>
private int slotId;
private int usedButton;
private short actionNumber;
private ItemStack clickedItem;
private Stack clickedItem;
private int mode;
/**
@ -34,7 +34,7 @@ public class C0EPacketClickWindow implements Packet<NetHandlerPlayServer>
this.usedButton = buf.readByte();
this.actionNumber = buf.readShort();
this.mode = buf.readByte();
this.clickedItem = buf.readItemStackFromBuffer();
this.clickedItem = buf.readStack();
}
/**
@ -47,6 +47,6 @@ public class C0EPacketClickWindow implements Packet<NetHandlerPlayServer>
buf.writeByte(this.usedButton);
buf.writeShort(this.actionNumber);
buf.writeByte(this.mode);
buf.writeItemStackToBuffer(this.clickedItem);
buf.writeStack(this.clickedItem);
}
}

View file

@ -5,12 +5,12 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.ItemStack;
import proxy.util.Stack;
public class C10PacketCreativeInventoryAction implements Packet<NetHandlerPlayServer>
{
private int slotId;
private ItemStack stack;
private Stack stack;
/**
* Passes this Packet on to the NetHandler for processing.
@ -26,7 +26,7 @@ public class C10PacketCreativeInventoryAction implements Packet<NetHandlerPlaySe
public void readPacketData(PacketBuffer buf) throws IOException
{
this.slotId = buf.readShort();
this.stack = buf.readItemStackFromBuffer();
this.stack = buf.readStack();
}
/**
@ -35,10 +35,10 @@ public class C10PacketCreativeInventoryAction implements Packet<NetHandlerPlaySe
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeShort(this.slotId);
buf.writeItemStackToBuffer(this.stack);
buf.writeStack(this.stack);
}
public ItemStack getStack()
public Stack getStack()
{
return this.stack;
}

View file

@ -5,12 +5,12 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
import proxy.util.ChatComponent;
public class C12PacketUpdateSign implements Packet<NetHandlerPlayServer>
{
private BlockPos pos;
private Vec3 pos;
private ChatComponent[] lines;
/**
@ -18,7 +18,7 @@ public class C12PacketUpdateSign implements Packet<NetHandlerPlayServer>
*/
public void readPacketData(PacketBuffer buf) throws IOException
{
this.pos = buf.readBlockPos();
this.pos = buf.readVector();
this.lines = new ChatComponent[4];
for (int i = 0; i < 4; ++i)
@ -34,7 +34,7 @@ public class C12PacketUpdateSign implements Packet<NetHandlerPlayServer>
*/
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeBlockPos(this.pos);
buf.writeVector(this.pos);
for (int i = 0; i < 4; ++i)
{

View file

@ -5,12 +5,12 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
public class C14PacketTabComplete implements Packet<NetHandlerPlayServer>
{
private String message;
private BlockPos targetBlock;
private Vec3 targetBlock;
public C14PacketTabComplete()
{
@ -18,10 +18,10 @@ public class C14PacketTabComplete implements Packet<NetHandlerPlayServer>
public C14PacketTabComplete(String msg)
{
this(msg, (BlockPos)null);
this(msg, (Vec3)null);
}
public C14PacketTabComplete(String msg, BlockPos target)
public C14PacketTabComplete(String msg, Vec3 target)
{
this.message = msg;
this.targetBlock = target;
@ -37,7 +37,7 @@ public class C14PacketTabComplete implements Packet<NetHandlerPlayServer>
if (flag)
{
this.targetBlock = buf.readBlockPos();
this.targetBlock = buf.readVector();
}
}
@ -52,7 +52,7 @@ public class C14PacketTabComplete implements Packet<NetHandlerPlayServer>
if (flag)
{
buf.writeBlockPos(this.targetBlock);
buf.writeVector(this.targetBlock);
}
}
@ -69,7 +69,7 @@ public class C14PacketTabComplete implements Packet<NetHandlerPlayServer>
return this.message;
}
public BlockPos getTargetBlock()
public Vec3 getTargetBlock()
{
return this.targetBlock;
}

View file

@ -5,13 +5,13 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.ItemStack;
import proxy.util.Stack;
public class S04PacketEntityEquipment implements Packet<NetHandlerPlayServer>
{
private int entityID;
private int equipmentSlot;
private ItemStack itemStack;
private Stack itemStack;
/**
* Reads the raw packet data from the data stream.
@ -20,7 +20,7 @@ public class S04PacketEntityEquipment implements Packet<NetHandlerPlayServer>
{
this.entityID = buf.readVarIntFromBuffer();
this.equipmentSlot = buf.readShort();
this.itemStack = buf.readItemStackFromBuffer();
this.itemStack = buf.readStack();
}
/**
@ -30,7 +30,7 @@ public class S04PacketEntityEquipment implements Packet<NetHandlerPlayServer>
{
buf.writeVarIntToBuffer(this.entityID);
buf.writeShort(this.equipmentSlot);
buf.writeItemStackToBuffer(this.itemStack);
buf.writeStack(this.itemStack);
}
/**

View file

@ -5,18 +5,18 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
public class S05PacketSpawnPosition implements Packet<NetHandlerPlayServer>
{
private BlockPos spawnBlockPos;
private Vec3 spawnBlockPos;
/**
* Reads the raw packet data from the data stream.
*/
public void readPacketData(PacketBuffer buf) throws IOException
{
this.spawnBlockPos = buf.readBlockPos();
this.spawnBlockPos = buf.readVector();
}
/**
@ -24,7 +24,7 @@ public class S05PacketSpawnPosition implements Packet<NetHandlerPlayServer>
*/
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeBlockPos(this.spawnBlockPos);
buf.writeVector(this.spawnBlockPos);
}
/**

View file

@ -5,12 +5,12 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
public class S0APacketUseBed implements Packet<NetHandlerPlayServer>
{
private int playerID;
private BlockPos bedPos;
private Vec3 bedPos;
/**
* Reads the raw packet data from the data stream.
@ -18,7 +18,7 @@ public class S0APacketUseBed implements Packet<NetHandlerPlayServer>
public void readPacketData(PacketBuffer buf) throws IOException
{
this.playerID = buf.readVarIntFromBuffer();
this.bedPos = buf.readBlockPos();
this.bedPos = buf.readVector();
}
/**
@ -27,7 +27,7 @@ public class S0APacketUseBed implements Packet<NetHandlerPlayServer>
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeVarIntToBuffer(this.playerID);
buf.writeBlockPos(this.bedPos);
buf.writeVector(this.bedPos);
}
/**

View file

@ -7,7 +7,7 @@ import java.util.UUID;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.DataWatcher;
import proxy.util.EntityData;
import proxy.util.MathHelper;
public class S0CPacketSpawnPlayer implements Packet<NetHandlerPlayServer>
@ -20,7 +20,7 @@ public class S0CPacketSpawnPlayer implements Packet<NetHandlerPlayServer>
private byte yaw;
private byte pitch;
private int currentItem;
private List<DataWatcher.WatchableObject> field_148958_j;
private List<EntityData> field_148958_j;
public S0CPacketSpawnPlayer()
{
@ -51,7 +51,7 @@ public class S0CPacketSpawnPlayer implements Packet<NetHandlerPlayServer>
this.yaw = buf.readByte();
this.pitch = buf.readByte();
this.currentItem = buf.readShort();
this.field_148958_j = DataWatcher.readWatchedListFromPacketBuffer(buf);
this.field_148958_j = EntityData.readData(buf);
}
/**
@ -67,7 +67,7 @@ public class S0CPacketSpawnPlayer implements Packet<NetHandlerPlayServer>
buf.writeByte(this.yaw);
buf.writeByte(this.pitch);
buf.writeShort(this.currentItem);
DataWatcher.writeWatchedListToPacketBuffer(this.field_148958_j, buf);
EntityData.writeData(this.field_148958_j, buf);
}
/**

View file

@ -6,7 +6,7 @@ import java.util.List;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.DataWatcher;
import proxy.util.EntityData;
public class S0FPacketSpawnMob implements Packet<NetHandlerPlayServer>
{
@ -21,7 +21,7 @@ public class S0FPacketSpawnMob implements Packet<NetHandlerPlayServer>
private byte yaw;
private byte pitch;
private byte headPitch;
private List<DataWatcher.WatchableObject> watcher;
private List<EntityData> watcher;
/**
* Reads the raw packet data from the data stream.
@ -39,7 +39,7 @@ public class S0FPacketSpawnMob implements Packet<NetHandlerPlayServer>
this.velocityX = buf.readShort();
this.velocityY = buf.readShort();
this.velocityZ = buf.readShort();
this.watcher = DataWatcher.readWatchedListFromPacketBuffer(buf);
this.watcher = EntityData.readData(buf);
}
/**
@ -58,7 +58,7 @@ public class S0FPacketSpawnMob implements Packet<NetHandlerPlayServer>
buf.writeShort(this.velocityX);
buf.writeShort(this.velocityY);
buf.writeShort(this.velocityZ);
DataWatcher.writeWatchedListToPacketBuffer(this.watcher, buf);
EntityData.writeData(this.watcher, buf);
}
/**

View file

@ -5,12 +5,12 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
public class S10PacketSpawnPainting implements Packet<NetHandlerPlayServer>
{
private int entityID;
private BlockPos position;
private Vec3 position;
private byte facing;
private String title;
@ -21,7 +21,7 @@ public class S10PacketSpawnPainting implements Packet<NetHandlerPlayServer>
{
this.entityID = buf.readVarIntFromBuffer();
this.title = buf.readStringFromBuffer(13);
this.position = buf.readBlockPos();
this.position = buf.readVector();
this.facing = (byte)buf.readUnsignedByte();
}
@ -32,7 +32,7 @@ public class S10PacketSpawnPainting implements Packet<NetHandlerPlayServer>
{
buf.writeVarIntToBuffer(this.entityID);
buf.writeString(this.title);
buf.writeBlockPos(this.position);
buf.writeVector(this.position);
buf.writeByte(this.facing);
}

View file

@ -6,12 +6,12 @@ import java.util.List;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.DataWatcher;
import proxy.util.EntityData;
public class S1CPacketEntityMetadata implements Packet<NetHandlerPlayServer>
{
private int entityId;
private List<DataWatcher.WatchableObject> field_149378_b;
private List<EntityData> field_149378_b;
/**
* Reads the raw packet data from the data stream.
@ -19,7 +19,7 @@ public class S1CPacketEntityMetadata implements Packet<NetHandlerPlayServer>
public void readPacketData(PacketBuffer buf) throws IOException
{
this.entityId = buf.readVarIntFromBuffer();
this.field_149378_b = DataWatcher.readWatchedListFromPacketBuffer(buf);
this.field_149378_b = EntityData.readData(buf);
}
/**
@ -28,7 +28,7 @@ public class S1CPacketEntityMetadata implements Packet<NetHandlerPlayServer>
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeVarIntToBuffer(this.entityId);
DataWatcher.writeWatchedListToPacketBuffer(this.field_149378_b, buf);
EntityData.writeData(this.field_149378_b, buf);
}
/**

View file

@ -5,11 +5,11 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
public class S23PacketBlockChange implements Packet<NetHandlerPlayServer>
{
private BlockPos blockPosition;
private Vec3 blockPosition;
private int blockState;
/**
@ -17,7 +17,7 @@ public class S23PacketBlockChange implements Packet<NetHandlerPlayServer>
*/
public void readPacketData(PacketBuffer buf) throws IOException
{
this.blockPosition = buf.readBlockPos();
this.blockPosition = buf.readVector();
this.blockState = buf.readVarIntFromBuffer();
}
@ -26,7 +26,7 @@ public class S23PacketBlockChange implements Packet<NetHandlerPlayServer>
*/
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeBlockPos(this.blockPosition);
buf.writeVector(this.blockPosition);
buf.writeVarIntToBuffer(this.blockState);
}

View file

@ -5,11 +5,11 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
public class S24PacketBlockAction implements Packet<NetHandlerPlayServer>
{
private BlockPos blockPosition;
private Vec3 blockPosition;
private int instrument;
private int pitch;
private int block;
@ -19,7 +19,7 @@ public class S24PacketBlockAction implements Packet<NetHandlerPlayServer>
*/
public void readPacketData(PacketBuffer buf) throws IOException
{
this.blockPosition = buf.readBlockPos();
this.blockPosition = buf.readVector();
this.instrument = buf.readUnsignedByte();
this.pitch = buf.readUnsignedByte();
this.block = buf.readVarIntFromBuffer();
@ -30,7 +30,7 @@ public class S24PacketBlockAction implements Packet<NetHandlerPlayServer>
*/
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeBlockPos(this.blockPosition);
buf.writeVector(this.blockPosition);
buf.writeByte(this.instrument);
buf.writeByte(this.pitch);
buf.writeVarIntToBuffer(this.block);

View file

@ -5,12 +5,12 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
public class S25PacketBlockBreakAnim implements Packet<NetHandlerPlayServer>
{
private int breakerId;
private BlockPos position;
private Vec3 position;
private int progress;
/**
@ -19,7 +19,7 @@ public class S25PacketBlockBreakAnim implements Packet<NetHandlerPlayServer>
public void readPacketData(PacketBuffer buf) throws IOException
{
this.breakerId = buf.readVarIntFromBuffer();
this.position = buf.readBlockPos();
this.position = buf.readVector();
this.progress = buf.readUnsignedByte();
}
@ -29,7 +29,7 @@ public class S25PacketBlockBreakAnim implements Packet<NetHandlerPlayServer>
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeVarIntToBuffer(this.breakerId);
buf.writeBlockPos(this.position);
buf.writeVector(this.position);
buf.writeByte(this.progress);
}

View file

@ -8,7 +8,7 @@ import com.google.common.collect.Lists;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
public class S27PacketExplosion implements Packet<NetHandlerPlayServer>
{
@ -16,7 +16,7 @@ public class S27PacketExplosion implements Packet<NetHandlerPlayServer>
private double posY;
private double posZ;
private float strength;
private List<BlockPos> affectedBlockPositions;
private List<Vec3> affectedBlockPositions;
private float field_149152_f;
private float field_149153_g;
private float field_149159_h;
@ -31,7 +31,7 @@ public class S27PacketExplosion implements Packet<NetHandlerPlayServer>
this.posZ = (double)buf.readFloat();
this.strength = buf.readFloat();
int i = buf.readInt();
this.affectedBlockPositions = Lists.<BlockPos>newArrayListWithCapacity(i);
this.affectedBlockPositions = Lists.<Vec3>newArrayListWithCapacity(i);
int j = (int)this.posX;
int k = (int)this.posY;
int l = (int)this.posZ;
@ -41,7 +41,7 @@ public class S27PacketExplosion implements Packet<NetHandlerPlayServer>
int j1 = buf.readByte() + j;
int k1 = buf.readByte() + k;
int l1 = buf.readByte() + l;
this.affectedBlockPositions.add(new BlockPos(j1, k1, l1));
this.affectedBlockPositions.add(new Vec3(j1, k1, l1));
}
this.field_149152_f = buf.readFloat();
@ -63,7 +63,7 @@ public class S27PacketExplosion implements Packet<NetHandlerPlayServer>
int j = (int)this.posY;
int k = (int)this.posZ;
for (BlockPos blockpos : this.affectedBlockPositions)
for (Vec3 blockpos : this.affectedBlockPositions)
{
int l = blockpos.getX() - i;
int i1 = blockpos.getY() - j;

View file

@ -5,12 +5,12 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
public class S28PacketEffect implements Packet<NetHandlerPlayServer>
{
private int soundType;
private BlockPos soundPos;
private Vec3 soundPos;
private int soundData;
private boolean serverWide;
@ -20,7 +20,7 @@ public class S28PacketEffect implements Packet<NetHandlerPlayServer>
public void readPacketData(PacketBuffer buf) throws IOException
{
this.soundType = buf.readInt();
this.soundPos = buf.readBlockPos();
this.soundPos = buf.readVector();
this.soundData = buf.readInt();
this.serverWide = buf.readBoolean();
}
@ -31,7 +31,7 @@ public class S28PacketEffect implements Packet<NetHandlerPlayServer>
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeInt(this.soundType);
buf.writeBlockPos(this.soundPos);
buf.writeVector(this.soundPos);
buf.writeInt(this.soundData);
buf.writeBoolean(this.serverWide);
}

View file

@ -5,13 +5,13 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.ItemStack;
import proxy.util.Stack;
public class S2FPacketSetSlot implements Packet<NetHandlerPlayServer>
{
private int windowId;
private int slot;
private ItemStack item;
private Stack item;
/**
* Passes this Packet on to the NetHandler for processing.
@ -28,7 +28,7 @@ public class S2FPacketSetSlot implements Packet<NetHandlerPlayServer>
{
this.windowId = buf.readByte();
this.slot = buf.readShort();
this.item = buf.readItemStackFromBuffer();
this.item = buf.readStack();
}
/**
@ -38,6 +38,6 @@ public class S2FPacketSetSlot implements Packet<NetHandlerPlayServer>
{
buf.writeByte(this.windowId);
buf.writeShort(this.slot);
buf.writeItemStackToBuffer(this.item);
buf.writeStack(this.item);
}
}

View file

@ -5,12 +5,12 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.ItemStack;
import proxy.util.Stack;
public class S30PacketWindowItems implements Packet<NetHandlerPlayServer>
{
private int windowId;
private ItemStack[] itemStacks;
private Stack[] itemStacks;
/**
* Reads the raw packet data from the data stream.
@ -19,11 +19,11 @@ public class S30PacketWindowItems implements Packet<NetHandlerPlayServer>
{
this.windowId = buf.readUnsignedByte();
int i = buf.readShort();
this.itemStacks = new ItemStack[i];
this.itemStacks = new Stack[i];
for (int j = 0; j < i; ++j)
{
this.itemStacks[j] = buf.readItemStackFromBuffer();
this.itemStacks[j] = buf.readStack();
}
}
@ -35,9 +35,9 @@ public class S30PacketWindowItems implements Packet<NetHandlerPlayServer>
buf.writeByte(this.windowId);
buf.writeShort(this.itemStacks.length);
for (ItemStack itemstack : this.itemStacks)
for (Stack itemstack : this.itemStacks)
{
buf.writeItemStackToBuffer(itemstack);
buf.writeStack(itemstack);
}
}

View file

@ -5,13 +5,13 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
import proxy.util.ChatComponent;
import proxy.util.ChatComponentText;
public class S33PacketUpdateSign implements Packet<NetHandlerPlayServer>
{
private BlockPos blockPos;
private Vec3 blockPos;
private ChatComponent[] lines;
public S33PacketUpdateSign() {
@ -19,7 +19,7 @@ public class S33PacketUpdateSign implements Packet<NetHandlerPlayServer>
}
public S33PacketUpdateSign(int x, int y, int z, String line1, String line2, String line3, String line4) {
this.blockPos = new BlockPos(x, y, z);
this.blockPos = new Vec3(x, y, z);
this.lines = new ChatComponent[] {new ChatComponentText(line1), new ChatComponentText(line2), new ChatComponentText(line3), new ChatComponentText(line4)};
}
@ -28,7 +28,7 @@ public class S33PacketUpdateSign implements Packet<NetHandlerPlayServer>
*/
public void readPacketData(PacketBuffer buf) throws IOException
{
this.blockPos = buf.readBlockPos();
this.blockPos = buf.readVector();
this.lines = new ChatComponent[4];
for (int i = 0; i < 4; ++i)
@ -42,7 +42,7 @@ public class S33PacketUpdateSign implements Packet<NetHandlerPlayServer>
*/
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeBlockPos(this.blockPos);
buf.writeVector(this.blockPos);
for (int i = 0; i < 4; ++i)
{

View file

@ -6,11 +6,11 @@ import proxy.nbt.NBTTagCompound;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
public class S35PacketUpdateTileEntity implements Packet<NetHandlerPlayServer>
{
private BlockPos blockPos;
private Vec3 blockPos;
private int metadata;
private NBTTagCompound nbt;
@ -19,7 +19,7 @@ public class S35PacketUpdateTileEntity implements Packet<NetHandlerPlayServer>
*/
public void readPacketData(PacketBuffer buf) throws IOException
{
this.blockPos = buf.readBlockPos();
this.blockPos = buf.readVector();
this.metadata = buf.readUnsignedByte();
this.nbt = buf.readNBTTagCompoundFromBuffer();
}
@ -29,7 +29,7 @@ public class S35PacketUpdateTileEntity implements Packet<NetHandlerPlayServer>
*/
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeBlockPos(this.blockPos);
buf.writeVector(this.blockPos);
buf.writeByte((byte)this.metadata);
buf.writeNBTTagCompoundToBuffer(this.nbt);
}

View file

@ -5,18 +5,18 @@ import java.io.IOException;
import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.BlockPos;
import proxy.util.Vec3;
public class S36PacketSignEditorOpen implements Packet<NetHandlerPlayServer>
{
private BlockPos signPosition;
private Vec3 signPosition;
public S36PacketSignEditorOpen() {
}
public S36PacketSignEditorOpen(int x, int y, int z) {
this.signPosition = new BlockPos(x, y, z);
this.signPosition = new Vec3(x, y, z);
}
/**
@ -32,7 +32,7 @@ public class S36PacketSignEditorOpen implements Packet<NetHandlerPlayServer>
*/
public void readPacketData(PacketBuffer buf) throws IOException
{
this.signPosition = buf.readBlockPos();
this.signPosition = buf.readVector();
}
/**
@ -40,6 +40,6 @@ public class S36PacketSignEditorOpen implements Packet<NetHandlerPlayServer>
*/
public void writePacketData(PacketBuffer buf) throws IOException
{
buf.writeBlockPos(this.signPosition);
buf.writeVector(this.signPosition);
}
}

View file

@ -10,7 +10,7 @@ import proxy.network.NetHandlerPlayServer;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.util.ChatComponent;
import proxy.util.GameProfile;
import proxy.util.Profile;
import proxy.util.Property;
public class S38PacketPlayerListItem implements Packet<NetHandlerPlayServer>
@ -22,7 +22,7 @@ public class S38PacketPlayerListItem implements Packet<NetHandlerPlayServer>
{
}
public S38PacketPlayerListItem(S38PacketPlayerListItem.Action actionIn, GameProfile profile, int ping, int mode, ChatComponent display)
public S38PacketPlayerListItem(S38PacketPlayerListItem.Action actionIn, Profile profile, int ping, int mode, ChatComponent display)
{
this.action = actionIn;
@ -39,7 +39,7 @@ public class S38PacketPlayerListItem implements Packet<NetHandlerPlayServer>
for (int j = 0; j < i; ++j)
{
GameProfile gameprofile = null;
Profile gameprofile = null;
int k = 0;
int worldsettings$gametype = 0;
ChatComponent ichatcomponent = null;
@ -47,7 +47,7 @@ public class S38PacketPlayerListItem implements Packet<NetHandlerPlayServer>
switch (this.action)
{
case ADD_PLAYER:
gameprofile = new GameProfile(buf.readUuid(), buf.readStringFromBuffer(16));
gameprofile = new Profile(buf.readUuid(), buf.readStringFromBuffer(16));
int l = buf.readVarIntFromBuffer();
int i1 = 0;
@ -77,17 +77,17 @@ public class S38PacketPlayerListItem implements Packet<NetHandlerPlayServer>
break;
case UPDATE_GAME_MODE:
gameprofile = new GameProfile(buf.readUuid(), (String)null);
gameprofile = new Profile(buf.readUuid(), (String)null);
worldsettings$gametype = buf.readVarIntFromBuffer();
break;
case UPDATE_LATENCY:
gameprofile = new GameProfile(buf.readUuid(), (String)null);
gameprofile = new Profile(buf.readUuid(), (String)null);
k = buf.readVarIntFromBuffer();
break;
case UPDATE_DISPLAY_NAME:
gameprofile = new GameProfile(buf.readUuid(), (String)null);
gameprofile = new Profile(buf.readUuid(), (String)null);
if (buf.readBoolean())
{
@ -97,7 +97,7 @@ public class S38PacketPlayerListItem implements Packet<NetHandlerPlayServer>
break;
case REMOVE_PLAYER:
gameprofile = new GameProfile(buf.readUuid(), (String)null);
gameprofile = new Profile(buf.readUuid(), (String)null);
}
this.players.add(new S38PacketPlayerListItem.AddPlayerData(gameprofile, k, worldsettings$gametype, ichatcomponent));
@ -126,7 +126,7 @@ public class S38PacketPlayerListItem implements Packet<NetHandlerPlayServer>
buf.writeString(property.getName());
buf.writeString(property.getValue());
if (property.hasSignature())
if (property.getSignature() != null)
{
buf.writeBoolean(true);
buf.writeString(property.getSignature());
@ -219,10 +219,10 @@ public class S38PacketPlayerListItem implements Packet<NetHandlerPlayServer>
{
private final int ping;
private final int gamemode;
private final GameProfile profile;
private final Profile profile;
private final ChatComponent displayName;
public AddPlayerData(GameProfile profile, int pingIn, int gamemodeIn, ChatComponent displayNameIn)
public AddPlayerData(Profile profile, int pingIn, int gamemodeIn, ChatComponent displayNameIn)
{
this.profile = profile;
this.ping = pingIn;
@ -230,7 +230,7 @@ public class S38PacketPlayerListItem implements Packet<NetHandlerPlayServer>
this.displayName = displayNameIn;
}
public GameProfile getProfile()
public Profile getProfile()
{
return this.profile;
}

View file

@ -8,21 +8,23 @@ import java.io.IOException;
import proxy.network.NetHandlerStatusClient;
import proxy.network.Packet;
import proxy.network.PacketBuffer;
import proxy.network.ServerStatusResponse;
import proxy.util.ChatComponent;
import proxy.util.ChatStyle;
import proxy.util.EnumTypeAdapterFactory;
import proxy.util.JsonEnumFactory;
import proxy.util.PlayerInfo;
import proxy.util.ServerInfo;
import proxy.util.VersionId;
public class S00PacketServerInfo implements Packet<NetHandlerStatusClient>
{
private static final Gson GSON = (new GsonBuilder()).registerTypeAdapter(ServerStatusResponse.MinecraftProtocolVersionIdentifier.class, new ServerStatusResponse.MinecraftProtocolVersionIdentifier.Serializer()).registerTypeAdapter(ServerStatusResponse.PlayerCountData.class, new ServerStatusResponse.PlayerCountData.Serializer()).registerTypeAdapter(ServerStatusResponse.class, new ServerStatusResponse.Serializer()).registerTypeHierarchyAdapter(ChatComponent.class, new ChatComponent.Serializer()).registerTypeHierarchyAdapter(ChatStyle.class, new ChatStyle.Serializer()).registerTypeAdapterFactory(new EnumTypeAdapterFactory()).create();
private ServerStatusResponse response;
private static final Gson GSON = (new GsonBuilder()).registerTypeAdapter(VersionId.class, new VersionId.Serializer()).registerTypeAdapter(PlayerInfo.class, new PlayerInfo.Serializer()).registerTypeAdapter(ServerInfo.class, new ServerInfo.Serializer()).registerTypeHierarchyAdapter(ChatComponent.class, new ChatComponent.Serializer()).registerTypeHierarchyAdapter(ChatStyle.class, new ChatStyle.Serializer()).registerTypeAdapterFactory(new JsonEnumFactory()).create();
private ServerInfo response;
public S00PacketServerInfo()
{
}
public S00PacketServerInfo(ServerStatusResponse responseIn)
public S00PacketServerInfo(ServerInfo responseIn)
{
this.response = responseIn;
}
@ -32,7 +34,7 @@ public class S00PacketServerInfo implements Packet<NetHandlerStatusClient>
*/
public void readPacketData(PacketBuffer buf) throws IOException
{
this.response = (ServerStatusResponse)GSON.fromJson(buf.readStringFromBuffer(32767), ServerStatusResponse.class);
this.response = (ServerInfo)GSON.fromJson(buf.readStringFromBuffer(32767), ServerInfo.class);
}
/**
@ -51,7 +53,7 @@ public class S00PacketServerInfo implements Packet<NetHandlerStatusClient>
handler.handleServerInfo(this);
}
public ServerStatusResponse getResponse()
public ServerInfo getResponse()
{
return this.response;
}

View file

@ -1,45 +0,0 @@
package proxy.util;
public class BlockPos {
private static final int NUM_X_BITS = 1 + MathHelper.calculateLogBaseTwo(MathHelper.roundUpToPowerOfTwo(30000000));
private static final int NUM_Z_BITS = NUM_X_BITS;
private static final int NUM_Y_BITS = 64 - NUM_X_BITS - NUM_Z_BITS;
private static final int Y_SHIFT = 0 + NUM_Z_BITS;
private static final int X_SHIFT = Y_SHIFT + NUM_Y_BITS;
private static final long X_MASK = (1L << NUM_X_BITS) - 1L;
private static final long Y_MASK = (1L << NUM_Y_BITS) - 1L;
private static final long Z_MASK = (1L << NUM_Z_BITS) - 1L;
private final int x;
private final int y;
private final int z;
public BlockPos(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
public int getX() {
return this.x;
}
public int getY() {
return this.y;
}
public int getZ() {
return this.z;
}
public long toLong() {
return ((long)this.getX() & X_MASK) << X_SHIFT | ((long)this.getY() & Y_MASK) << Y_SHIFT | ((long)this.getZ() & Z_MASK) << 0;
}
public static BlockPos fromLong(long serialized) {
int i = (int)(serialized << 64 - X_SHIFT - NUM_X_BITS >> 64 - NUM_X_BITS);
int j = (int)(serialized << 64 - Y_SHIFT - NUM_Y_BITS >> 64 - NUM_Y_BITS);
int k = (int)(serialized << 64 - NUM_Z_BITS >> 64 - NUM_Z_BITS);
return new BlockPos(i, j, k);
}
}

View file

@ -30,6 +30,10 @@ public enum ChatColor {
private final String value;
public static String strip(String str) {
return str == null ? null : STRIP_PATTERN.matcher(str).replaceAll("");
}
private ChatColor(char code) {
this.value = "\u00a7" + code;
}
@ -37,8 +41,4 @@ public enum ChatColor {
public String toString() {
return this.value;
}
public static String strip(String str) {
return str == null ? null : STRIP_PATTERN.matcher(str).replaceAll("");
}
}

View file

@ -74,29 +74,29 @@ public abstract class ChatComponent
if (jsonobject.has("with"))
{
JsonArray jsonarray = jsonobject.getAsJsonArray("with");
Object[] aobject = new Object[jsonarray.size()];
JsonArray arr = jsonobject.getAsJsonArray("with");
Object[] args = new Object[arr.size()];
for (int i = 0; i < aobject.length; ++i)
for (int z = 0; z < args.length; z++)
{
aobject[i] = this.deserialize(jsonarray.get(i), p_deserialize_2_, p_deserialize_3_);
args[z] = this.deserialize(arr.get(z), p_deserialize_2_, p_deserialize_3_);
if (aobject[i] instanceof ChatComponentText)
if (args[z] instanceof ChatComponentText)
{
ChatComponentText chatcomponenttext = (ChatComponentText)aobject[i];
ChatComponentText text = (ChatComponentText)args[z];
if ((((ChatComponent)chatcomponenttext).style == null || ((ChatComponent)chatcomponenttext).style.isEmpty()) && ((ChatComponent)chatcomponenttext).siblings.isEmpty())
if ((((ChatComponent)text).style == null || ((ChatComponent)text).style.isEmpty()) && ((ChatComponent)text).siblings.isEmpty())
{
aobject[i] = chatcomponenttext.getText();
args[z] = text.getText();
}
}
}
ichatcomponent = new ChatComponentTranslation(s, aobject);
ichatcomponent = new ChatComponentTranslation(s, args);
}
else
{
ichatcomponent = new ChatComponentTranslation(s, new Object[0]);
ichatcomponent = new ChatComponentTranslation(s);
}
}
else if (jsonobject.has("score"))
@ -196,11 +196,11 @@ public abstract class ChatComponent
ChatComponentTranslation chatcomponenttranslation = (ChatComponentTranslation)p_serialize_1_;
jsonobject.addProperty("translate", chatcomponenttranslation.getKey());
if (chatcomponenttranslation.getFormatArgs() != null && chatcomponenttranslation.getFormatArgs().length > 0)
if (chatcomponenttranslation.getArgs() != null && chatcomponenttranslation.getArgs().length > 0)
{
JsonArray jsonarray1 = new JsonArray();
for (Object object : chatcomponenttranslation.getFormatArgs())
for (Object object : chatcomponenttranslation.getArgs())
{
if (object instanceof ChatComponent)
{
@ -254,7 +254,7 @@ public abstract class ChatComponent
GsonBuilder gsonbuilder = new GsonBuilder();
gsonbuilder.registerTypeHierarchyAdapter(ChatComponent.class, new ChatComponent.Serializer());
gsonbuilder.registerTypeHierarchyAdapter(ChatStyle.class, new ChatStyle.Serializer());
gsonbuilder.registerTypeAdapterFactory(new EnumTypeAdapterFactory());
gsonbuilder.registerTypeAdapterFactory(new JsonEnumFactory());
GSON = gsonbuilder.create();
}
}

View file

@ -5,9 +5,9 @@ public class ChatComponentScore extends ChatComponent {
private final String objective;
private String value = "";
public ChatComponentScore(String nameIn, String objectiveIn) {
this.name = nameIn;
this.objective = objectiveIn;
public ChatComponentScore(String name, String objective) {
this.name = name;
this.objective = objective;
}
public String getName() {
@ -18,8 +18,8 @@ public class ChatComponentScore extends ChatComponent {
return this.objective;
}
public void setValue(String valueIn) {
this.value = valueIn;
public void setValue(String value) {
this.value = value;
}
public String getValue() {

View file

@ -3,8 +3,8 @@ package proxy.util;
public class ChatComponentSelector extends ChatComponent {
private final String selector;
public ChatComponentSelector(String selectorIn) {
this.selector = selectorIn;
public ChatComponentSelector(String selector) {
this.selector = selector;
}
public String getSelector() {

View file

@ -3,8 +3,8 @@ package proxy.util;
public class ChatComponentText extends ChatComponent {
private final String text;
public ChatComponentText(String msg) {
this.text = msg;
public ChatComponentText(String text) {
this.text = text;
}
public String getText() {

View file

@ -2,24 +2,24 @@ package proxy.util;
public class ChatComponentTranslation extends ChatComponent {
private final String key;
private final Object[] formatArgs;
private final Object[] args;
public ChatComponentTranslation(String translationKey, Object... args) {
this.key = translationKey;
this.formatArgs = args;
public ChatComponentTranslation(String key, Object... args) {
this.key = key;
this.args = args;
}
public String getKey() {
return this.key;
}
public Object[] getFormatArgs() {
return this.formatArgs;
public Object[] getArgs() {
return this.args;
}
public String toString() {
StringBuilder sb = new StringBuilder(this.key);
for(Object arg : this.formatArgs) {
for(Object arg : this.args) {
sb.append(' ').append(arg);
}
return sb.toString();

View file

@ -84,11 +84,11 @@ public class ChatStyle
if (jsonobject1 != null)
{
JsonPrimitive jsonprimitive = jsonobject1.getAsJsonPrimitive("action");
ClickEvent.Action clickevent$action = jsonprimitive == null ? null : ClickEvent.Action.getValueByCanonicalName(jsonprimitive.getAsString());
ClickAction clickevent$action = jsonprimitive == null ? null : ClickAction.getByName(jsonprimitive.getAsString());
JsonPrimitive jsonprimitive1 = jsonobject1.getAsJsonPrimitive("value");
String s = jsonprimitive1 == null ? null : jsonprimitive1.getAsString();
if (clickevent$action != null && s != null && clickevent$action.shouldAllowInChat())
if (clickevent$action != null && s != null && clickevent$action.isSerialized())
{
chatstyle.chatClickEvent = new ClickEvent(clickevent$action, s);
}
@ -102,10 +102,10 @@ public class ChatStyle
if (jsonobject2 != null)
{
JsonPrimitive jsonprimitive2 = jsonobject2.getAsJsonPrimitive("action");
HoverEvent.Action hoverevent$action = jsonprimitive2 == null ? null : HoverEvent.Action.getValueByCanonicalName(jsonprimitive2.getAsString());
HoverAction hoverevent$action = jsonprimitive2 == null ? null : HoverAction.getByName(jsonprimitive2.getAsString());
ChatComponent ichatcomponent = (ChatComponent)p_deserialize_3_.deserialize(jsonobject2.get("value"), ChatComponent.class);
if (hoverevent$action != null && ichatcomponent != null && hoverevent$action.shouldAllowInChat())
if (hoverevent$action != null && ichatcomponent != null && hoverevent$action.isSerialized())
{
chatstyle.chatHoverEvent = new HoverEvent(hoverevent$action, ichatcomponent);
}
@ -169,7 +169,7 @@ public class ChatStyle
if (p_serialize_1_.chatClickEvent != null)
{
JsonObject jsonobject1 = new JsonObject();
jsonobject1.addProperty("action", p_serialize_1_.chatClickEvent.getAction().getCanonicalName());
jsonobject1.addProperty("action", p_serialize_1_.chatClickEvent.getAction().getName());
jsonobject1.addProperty("value", p_serialize_1_.chatClickEvent.getValue());
jsonobject.add("clickEvent", jsonobject1);
}
@ -177,7 +177,7 @@ public class ChatStyle
if (p_serialize_1_.chatHoverEvent != null)
{
JsonObject jsonobject2 = new JsonObject();
jsonobject2.addProperty("action", p_serialize_1_.chatHoverEvent.getAction().getCanonicalName());
jsonobject2.addProperty("action", p_serialize_1_.chatHoverEvent.getAction().getName());
jsonobject2.add("value", p_serialize_3_.serialize(p_serialize_1_.chatHoverEvent.getValue()));
jsonobject.add("hoverEvent", jsonobject2);
}

View file

@ -0,0 +1,42 @@
package proxy.util;
import java.util.Map;
import com.google.common.collect.Maps;
public enum ClickAction {
OPEN_URL("open_url", true),
OPEN_FILE("open_file", false),
RUN_COMMAND("run_command", true),
TWITCH_USER_INFO("twitch_user_info", false),
SUGGEST_COMMAND("suggest_command", true),
CHANGE_PAGE("change_page", true);
private static final Map<String, ClickAction> LOOKUP = Maps.newHashMap();
private final boolean serialize;
private final String name;
static {
for(ClickAction action : values()) {
LOOKUP.put(action.name, action);
}
}
public static ClickAction getByName(String name) {
return LOOKUP.get(name);
}
private ClickAction(String name, boolean serialize) {
this.name = name;
this.serialize = serialize;
}
public boolean isSerialized() {
return this.serialize;
}
public String getName() {
return this.name;
}
}

View file

@ -1,59 +1,19 @@
package proxy.util;
import java.util.HashMap;
import java.util.Map;
public class ClickEvent {
private final ClickEvent.Action action;
private final ClickAction action;
private final String value;
public ClickEvent(ClickEvent.Action theAction, String theValue) {
this.action = theAction;
this.value = theValue;
public ClickEvent(ClickAction action, String value) {
this.action = action;
this.value = value;
}
public ClickEvent.Action getAction() {
public ClickAction getAction() {
return this.action;
}
public String getValue() {
return this.value;
}
public static enum Action {
OPEN_URL("open_url", true),
OPEN_FILE("open_file", false),
RUN_COMMAND("run_command", true),
TWITCH_USER_INFO("twitch_user_info", false),
SUGGEST_COMMAND("suggest_command", true),
CHANGE_PAGE("change_page", true);
private static final Map<String, ClickEvent.Action> nameMapping = new HashMap();
private final boolean allowedInChat;
private final String canonicalName;
private Action(String canonicalNameIn, boolean allowedInChatIn) {
this.canonicalName = canonicalNameIn;
this.allowedInChat = allowedInChatIn;
}
public boolean shouldAllowInChat() {
return this.allowedInChat;
}
public String getCanonicalName() {
return this.canonicalName;
}
public static ClickEvent.Action getValueByCanonicalName(String canonicalNameIn) {
return nameMapping.get(canonicalNameIn);
}
static {
for(ClickEvent.Action clickevent$action : values()) {
nameMapping.put(clickevent$action.getCanonicalName(), clickevent$action);
}
}
}
}

View file

@ -1,201 +0,0 @@
package proxy.util;
import java.io.IOException;
import java.util.List;
import com.google.common.collect.Lists;
import proxy.network.PacketBuffer;
public class DataWatcher
{
private static class Vec3f {
protected final float x;
protected final float y;
protected final float z;
public Vec3f(float x, float y, float z) {
this.x = x;
this.y = y;
this.z = z;
}
public float getX() {
return this.x;
}
public float getY() {
return this.y;
}
public float getZ() {
return this.z;
}
}
public static void writeWatchedListToPacketBuffer(List<DataWatcher.WatchableObject> objectsList, PacketBuffer buffer) throws IOException
{
if (objectsList != null)
{
for (DataWatcher.WatchableObject datawatcher$watchableobject : objectsList)
{
writeWatchableObjectToPacketBuffer(buffer, datawatcher$watchableobject);
}
}
buffer.writeByte(127);
}
private static void writeWatchableObjectToPacketBuffer(PacketBuffer buffer, DataWatcher.WatchableObject object) throws IOException
{
int i = (object.getObjectType() << 5 | object.getDataValueId() & 31) & 255;
buffer.writeByte(i);
switch (object.getObjectType())
{
case 0:
buffer.writeByte(((Byte)object.getObject()).byteValue());
break;
case 1:
buffer.writeShort(((Short)object.getObject()).shortValue());
break;
case 2:
buffer.writeInt(((Integer)object.getObject()).intValue());
break;
case 3:
buffer.writeFloat(((Float)object.getObject()).floatValue());
break;
case 4:
buffer.writeString((String)object.getObject());
break;
case 5:
ItemStack itemstack = (ItemStack)object.getObject();
buffer.writeItemStackToBuffer(itemstack);
break;
case 6:
BlockPos blockpos = (BlockPos)object.getObject();
buffer.writeInt(blockpos.getX());
buffer.writeInt(blockpos.getY());
buffer.writeInt(blockpos.getZ());
break;
case 7:
Vec3f rotations = (Vec3f)object.getObject();
buffer.writeFloat(rotations.getX());
buffer.writeFloat(rotations.getY());
buffer.writeFloat(rotations.getZ());
}
}
public static List<DataWatcher.WatchableObject> readWatchedListFromPacketBuffer(PacketBuffer buffer) throws IOException
{
List<DataWatcher.WatchableObject> list = null;
for (int i = buffer.readByte(); i != 127; i = buffer.readByte())
{
if (list == null)
{
list = Lists.<DataWatcher.WatchableObject>newArrayList();
}
int j = (i & 224) >> 5;
int k = i & 31;
DataWatcher.WatchableObject datawatcher$watchableobject = null;
switch (j)
{
case 0:
datawatcher$watchableobject = new DataWatcher.WatchableObject(j, k, Byte.valueOf(buffer.readByte()));
break;
case 1:
datawatcher$watchableobject = new DataWatcher.WatchableObject(j, k, Short.valueOf(buffer.readShort()));
break;
case 2:
datawatcher$watchableobject = new DataWatcher.WatchableObject(j, k, Integer.valueOf(buffer.readInt()));
break;
case 3:
datawatcher$watchableobject = new DataWatcher.WatchableObject(j, k, Float.valueOf(buffer.readFloat()));
break;
case 4:
datawatcher$watchableobject = new DataWatcher.WatchableObject(j, k, buffer.readStringFromBuffer(32767));
break;
case 5:
datawatcher$watchableobject = new DataWatcher.WatchableObject(j, k, buffer.readItemStackFromBuffer());
break;
case 6:
int l = buffer.readInt();
int i1 = buffer.readInt();
int j1 = buffer.readInt();
datawatcher$watchableobject = new DataWatcher.WatchableObject(j, k, new BlockPos(l, i1, j1));
break;
case 7:
float f = buffer.readFloat();
float f1 = buffer.readFloat();
float f2 = buffer.readFloat();
datawatcher$watchableobject = new DataWatcher.WatchableObject(j, k, new Vec3f(f, f1, f2));
}
list.add(datawatcher$watchableobject);
}
return list;
}
public static class WatchableObject
{
private final int objectType;
private final int dataValueId;
private Object watchedObject;
private boolean watched;
public WatchableObject(int type, int id, Object object)
{
this.dataValueId = id;
this.watchedObject = object;
this.objectType = type;
this.watched = true;
}
public int getDataValueId()
{
return this.dataValueId;
}
public void setObject(Object object)
{
this.watchedObject = object;
}
public Object getObject()
{
return this.watchedObject;
}
public int getObjectType()
{
return this.objectType;
}
public boolean isWatched()
{
return this.watched;
}
public void setWatched(boolean watched)
{
this.watched = watched;
}
}
}

View file

@ -0,0 +1,122 @@
package proxy.util;
import java.io.IOException;
import java.util.List;
import com.google.common.collect.Lists;
import proxy.network.PacketBuffer;
public class EntityData {
private final int type;
private final int id;
private final Object data;
private static void writeData(PacketBuffer buf, EntityData data) throws IOException {
int value = (data.getType() << 5 | data.getId() & 31) & 255;
buf.writeByte(value);
switch(data.getType()) {
case 0:
buf.writeByte(((Byte)data.getData()).byteValue());
break;
case 1:
buf.writeShort(((Short)data.getData()).shortValue());
break;
case 2:
buf.writeInt(((Integer)data.getData()).intValue());
break;
case 3:
buf.writeFloat(((Float)data.getData()).floatValue());
break;
case 4:
buf.writeString((String)data.getData());
break;
case 5:
Stack stack = (Stack)data.getData();
buf.writeStack(stack);
break;
case 6:
Vec3 vec = (Vec3)data.getData();
buf.writeInt(vec.getX());
buf.writeInt(vec.getY());
buf.writeInt(vec.getZ());
break;
case 7:
Vec3f vecf = (Vec3f)data.getData();
buf.writeFloat(vecf.getX());
buf.writeFloat(vecf.getY());
buf.writeFloat(vecf.getZ());
}
}
public static void writeData(List<EntityData> list, PacketBuffer buf) throws IOException {
if(list != null) {
for(EntityData data : list) {
EntityData.writeData(buf, data);
}
}
buf.writeByte(127);
}
public static List<EntityData> readData(PacketBuffer buf) throws IOException {
List<EntityData> list = null;
for(int value = buf.readByte(); value != 127; value = buf.readByte()) {
if(list == null)
list = Lists.<EntityData>newArrayList();
int type = (value & 224) >> 5;
int id = value & 31;
EntityData data = null;
switch(type) {
case 0:
data = new EntityData(type, id, Byte.valueOf(buf.readByte()));
break;
case 1:
data = new EntityData(type, id, Short.valueOf(buf.readShort()));
break;
case 2:
data = new EntityData(type, id, Integer.valueOf(buf.readInt()));
break;
case 3:
data = new EntityData(type, id, Float.valueOf(buf.readFloat()));
break;
case 4:
data = new EntityData(type, id, buf.readStringFromBuffer(32767));
break;
case 5:
data = new EntityData(type, id, buf.readStack());
break;
case 6:
int x = buf.readInt();
int y = buf.readInt();
int z = buf.readInt();
data = new EntityData(type, id, new Vec3(x, y, z));
break;
case 7:
float xf = buf.readFloat();
float yf = buf.readFloat();
float zf = buf.readFloat();
data = new EntityData(type, id, new Vec3f(xf, yf, zf));
}
list.add(data);
}
return list;
}
public EntityData(int type, int id, Object data) {
this.type = type;
this.id = id;
this.data = data;
}
public int getType() {
return this.type;
}
public int getId() {
return this.id;
}
public Object getData() {
return this.data;
}
}

View file

@ -1,67 +0,0 @@
package proxy.util;
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
public class EnumTypeAdapterFactory implements TypeAdapterFactory
{
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> token)
{
Class<T> oclass = (Class<T>)token.getRawType();
if (!oclass.isEnum())
{
return null;
}
else
{
final Map<String, T> map = new HashMap();
for (T t : oclass.getEnumConstants())
{
map.put(this.func_151232_a(t), t);
}
return new TypeAdapter<T>()
{
public void write(JsonWriter p_write_1_, T p_write_2_) throws IOException
{
if (p_write_2_ == null)
{
p_write_1_.nullValue();
}
else
{
p_write_1_.value(EnumTypeAdapterFactory.this.func_151232_a(p_write_2_));
}
}
public T read(JsonReader p_read_1_) throws IOException
{
if (p_read_1_.peek() == JsonToken.NULL)
{
p_read_1_.nextNull();
return (T)null;
}
else
{
return (T)map.get(p_read_1_.nextString());
}
}
};
}
}
private String func_151232_a(Object p_151232_1_)
{
return p_151232_1_ instanceof Enum ? ((Enum)p_151232_1_).name().toLowerCase(Locale.US) : p_151232_1_.toString().toLowerCase(Locale.US);
}
}

View file

@ -1,64 +0,0 @@
package proxy.util;
import java.util.UUID;
public class GameProfile {
private final UUID id;
private final String name;
private final PropertyMap properties = new PropertyMap();
private boolean legacy;
public GameProfile(UUID id, String name) {
this.id = id;
this.name = name;
}
public UUID getId() {
return this.id;
}
public String getName() {
return this.name;
}
public PropertyMap getProperties() {
return this.properties;
}
public boolean equals(Object o) {
if(this == o) {
return true;
} else if(o != null && this.getClass() == o.getClass()) {
GameProfile that = (GameProfile)o;
if(this.id != null) {
if(!this.id.equals(that.id)) {
return false;
}
} else if(that.id != null) {
return false;
}
if(this.name != null) {
if(!this.name.equals(that.name)) {
return false;
}
} else if(that.name != null) {
return false;
}
return true;
} else {
return false;
}
}
public int hashCode() {
int result = this.id != null?this.id.hashCode():0;
result = 31 * result + (this.name != null?this.name.hashCode():0);
return result;
}
public boolean isLegacy() {
return this.legacy;
}
}

View file

@ -0,0 +1,40 @@
package proxy.util;
import java.util.Map;
import com.google.common.collect.Maps;
public enum HoverAction {
SHOW_TEXT("show_text", true),
SHOW_ACHIEVEMENT("show_achievement", true),
SHOW_ITEM("show_item", true),
SHOW_ENTITY("show_entity", true);
private static final Map<String, HoverAction> LOOKUP = Maps.newHashMap();
private final boolean serialize;
private final String name;
static {
for(HoverAction action : values()) {
LOOKUP.put(action.name, action);
}
}
public static HoverAction getByName(String name) {
return LOOKUP.get(name);
}
private HoverAction(String name, boolean serialize) {
this.name = name;
this.serialize = serialize;
}
public boolean isSerialized() {
return this.serialize;
}
public String getName() {
return this.name;
}
}

View file

@ -1,57 +1,19 @@
package proxy.util;
import java.util.HashMap;
import java.util.Map;
public class HoverEvent {
private final HoverEvent.Action action;
private final HoverAction action;
private final ChatComponent value;
public HoverEvent(HoverEvent.Action actionIn, ChatComponent valueIn) {
this.action = actionIn;
this.value = valueIn;
public HoverEvent(HoverAction action, ChatComponent value) {
this.action = action;
this.value = value;
}
public HoverEvent.Action getAction() {
public HoverAction getAction() {
return this.action;
}
public ChatComponent getValue() {
return this.value;
}
public static enum Action {
SHOW_TEXT("show_text", true),
SHOW_ACHIEVEMENT("show_achievement", true),
SHOW_ITEM("show_item", true),
SHOW_ENTITY("show_entity", true);
private static final Map<String, HoverEvent.Action> nameMapping = new HashMap();
private final boolean allowedInChat;
private final String canonicalName;
private Action(String canonicalNameIn, boolean allowedInChatIn) {
this.canonicalName = canonicalNameIn;
this.allowedInChat = allowedInChatIn;
}
public boolean shouldAllowInChat() {
return this.allowedInChat;
}
public String getCanonicalName() {
return this.canonicalName;
}
public static HoverEvent.Action getValueByCanonicalName(String canonicalNameIn) {
return nameMapping.get(canonicalNameIn);
}
static {
for(HoverEvent.Action hoverevent$action : values()) {
nameMapping.put(hoverevent$action.getCanonicalName(), hoverevent$action);
}
}
}
}

View file

@ -0,0 +1,49 @@
package proxy.util;
import com.google.common.collect.Maps;
import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.util.Locale;
import java.util.Map;
public class JsonEnumFactory implements TypeAdapterFactory {
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
Class<T> clazz = (Class<T>)type.getRawType();
if(!clazz.isEnum())
return null;
final Map<String, T> map = Maps.newHashMap();
for(T t : clazz.getEnumConstants()) {
map.put(this.formatName(t), t);
}
return new TypeAdapter<T>() {
public void write(JsonWriter writer, T data) throws IOException {
if(data == null) {
writer.nullValue();
}
else {
writer.value(JsonEnumFactory.this.formatName(data));
}
}
public T read(JsonReader reader) throws IOException {
if(reader.peek() == JsonToken.NULL) {
reader.nextNull();
return (T)null;
}
else {
return (T)map.get(reader.nextString());
}
}
};
}
private String formatName(Object data) {
return data instanceof Enum ? ((Enum)data).name().toLowerCase(Locale.US) : data.toString().toLowerCase(Locale.US);
}
}

View file

@ -0,0 +1,78 @@
package proxy.util;
import java.lang.reflect.Type;
import java.util.UUID;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
public class PlayerInfo {
private final int capacity;
private final int online;
private Profile[] list;
public PlayerInfo(int capacity, int online) {
this.capacity = capacity;
this.online = online;
}
public int getCapacity() {
return this.capacity;
}
public int getOnline() {
return this.online;
}
public Profile[] getList() {
return this.list;
}
public void setList(Profile[] list) {
this.list = list;
}
public static class Serializer implements JsonDeserializer<PlayerInfo>, JsonSerializer<PlayerInfo> {
public PlayerInfo deserialize(JsonElement elem, Type type, JsonDeserializationContext context) throws JsonParseException {
JsonObject obj = JsonUtils.getJsonObject(elem, "players");
PlayerInfo info = new PlayerInfo(JsonUtils.getInt(obj, "max"), JsonUtils.getInt(obj, "online"));
if(JsonUtils.isJsonArray(obj, "sample")) {
JsonArray arr = JsonUtils.getJsonArray(obj, "sample");
if(arr.size() > 0) {
Profile[] list = new Profile[arr.size()];
for(int z = 0; z < list.length; z++) {
JsonObject profile = JsonUtils.getJsonObject(arr.get(z), "player[" + z + "]");
String id = JsonUtils.getString(profile, "id");
list[z] = new Profile(UUID.fromString(id), JsonUtils.getString(profile, "name"));
}
info.setList(list);
}
}
return info;
}
public JsonElement serialize(PlayerInfo info, Type type, JsonSerializationContext context) {
JsonObject obj = new JsonObject();
obj.addProperty("max", info.getCapacity());
obj.addProperty("online", info.getOnline());
if(info.getList() != null && info.getList().length > 0) {
JsonArray arr = new JsonArray();
for(int z = 0; z < info.getList().length; z++) {
JsonObject profile = new JsonObject();
UUID id = info.getList()[z].getId();
profile.addProperty("id", id == null ? "" : id.toString());
profile.addProperty("name", info.getList()[z].getName());
arr.add(profile);
}
obj.add("sample", arr);
}
return obj;
}
}
}

View file

@ -0,0 +1,27 @@
package proxy.util;
import java.util.UUID;
public class Profile {
private final UUID id;
private final String name;
private final PropertyMap properties = new PropertyMap();
private boolean legacy;
public Profile(UUID id, String name) {
this.id = id;
this.name = name;
}
public UUID getId() {
return this.id;
}
public String getName() {
return this.name;
}
public PropertyMap getProperties() {
return this.properties;
}
}

View file

@ -1,33 +1,29 @@
package proxy.util;
public class Property {
private final String name;
private final String value;
private final String signature;
private final String name;
private final String value;
private final String signature;
public Property(String value, String name) {
this(value, name, (String)null);
}
public Property(String value, String name) {
this(value, name, null);
}
public Property(String name, String value, String signature) {
this.name = name;
this.value = value;
this.signature = signature;
}
public Property(String name, String value, String signature) {
this.name = name;
this.value = value;
this.signature = signature;
}
public String getName() {
return this.name;
}
public String getName() {
return this.name;
}
public String getValue() {
return this.value;
}
public String getValue() {
return this.value;
}
public String getSignature() {
return this.signature;
}
public boolean hasSignature() {
return this.signature != null;
}
public String getSignature() {
return this.signature;
}
}

View file

@ -15,58 +15,53 @@ import java.lang.reflect.Type;
import java.util.Map.Entry;
public class PropertyMap extends ForwardingMultimap<String, Property> {
private final Multimap<String, Property> properties = LinkedHashMultimap.create();
private final Multimap<String, Property> properties = LinkedHashMultimap.create();
protected Multimap<String, Property> delegate() {
return this.properties;
}
protected Multimap<String, Property> delegate() {
return this.properties;
}
public static class Serializer implements JsonSerializer<PropertyMap>, JsonDeserializer<PropertyMap> {
public PropertyMap deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
PropertyMap result = new PropertyMap();
if(json instanceof JsonObject) {
JsonObject object = (JsonObject)json;
public static class Serializer implements JsonSerializer<PropertyMap>, JsonDeserializer<PropertyMap> {
public PropertyMap deserialize(JsonElement elem, Type type, JsonDeserializationContext context) throws JsonParseException {
PropertyMap properties = new PropertyMap();
if(elem instanceof JsonObject) {
JsonObject obj = (JsonObject)elem;
for(Entry<String, JsonElement> entry : obj.entrySet()) {
if(entry.getValue() instanceof JsonArray) {
for(JsonElement element : (JsonArray)entry.getValue()) {
properties.put(entry.getKey(), new Property(entry.getKey(), element.getAsString()));
}
}
}
}
else if(elem instanceof JsonArray) {
for(JsonElement element : (JsonArray)elem) {
if(element instanceof JsonObject) {
JsonObject obj = (JsonObject)element;
String name = obj.getAsJsonPrimitive("name").getAsString();
String value = obj.getAsJsonPrimitive("value").getAsString();
if(obj.has("signature"))
properties.put(name, new Property(name, value, obj.getAsJsonPrimitive("signature").getAsString()));
else
properties.put(name, new Property(name, value));
}
}
}
for(Entry<String, JsonElement> entry : object.entrySet()) {
if(entry.getValue() instanceof JsonArray) {
for(JsonElement element : (JsonArray)entry.getValue()) {
result.put(entry.getKey(), new Property((String)entry.getKey(), element.getAsString()));
}
}
}
} else if(json instanceof JsonArray) {
for(JsonElement element : (JsonArray)json) {
if(element instanceof JsonObject) {
JsonObject object = (JsonObject)element;
String name = object.getAsJsonPrimitive("name").getAsString();
String value = object.getAsJsonPrimitive("value").getAsString();
if(object.has("signature")) {
result.put(name, new Property(name, value, object.getAsJsonPrimitive("signature").getAsString()));
} else {
result.put(name, new Property(name, value));
}
}
}
}
return properties;
}
return result;
}
public JsonElement serialize(PropertyMap src, Type typeOfSrc, JsonSerializationContext context) {
JsonArray result = new JsonArray();
for(Property property : src.values()) {
JsonObject object = new JsonObject();
object.addProperty("name", property.getName());
object.addProperty("value", property.getValue());
if(property.hasSignature()) {
object.addProperty("signature", property.getSignature());
}
result.add(object);
}
return result;
}
}
public JsonElement serialize(PropertyMap properties, Type type, JsonSerializationContext context) {
JsonArray arr = new JsonArray();
for(Property property : properties.values()) {
JsonObject obj = new JsonObject();
obj.addProperty("name", property.getName());
obj.addProperty("value", property.getValue());
if(property.getSignature() != null)
obj.addProperty("signature", property.getSignature());
arr.add(obj);
}
return arr;
}
}
}

View file

@ -0,0 +1,78 @@
package proxy.util;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import java.lang.reflect.Type;
public class ServerInfo {
private ChatComponent motd;
private PlayerInfo info;
private VersionId version;
private String icon;
public ChatComponent getMotd() {
return this.motd;
}
public void setMotd(ChatComponent motd) {
this.motd = motd;
}
public PlayerInfo getInfo() {
return this.info;
}
public void setInfo(PlayerInfo info) {
this.info = info;
}
public VersionId getVersion() {
return this.version;
}
public void setVersion(VersionId version) {
this.version = version;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getIcon() {
return this.icon;
}
public static class Serializer implements JsonDeserializer<ServerInfo>, JsonSerializer<ServerInfo> {
public ServerInfo deserialize(JsonElement elem, Type type, JsonDeserializationContext context) throws JsonParseException {
JsonObject obj = JsonUtils.getJsonObject(elem, "status");
ServerInfo status = new ServerInfo();
if(obj.has("description"))
status.setMotd((ChatComponent)context.deserialize(obj.get("description"), ChatComponent.class));
if(obj.has("players"))
status.setInfo((PlayerInfo)context.deserialize(obj.get("players"), PlayerInfo.class));
if(obj.has("version"))
status.setVersion((VersionId)context.deserialize(obj.get("version"), VersionId.class));
if(obj.has("favicon"))
status.setIcon(JsonUtils.getString(obj, "favicon"));
return status;
}
public JsonElement serialize(ServerInfo status, Type type, JsonSerializationContext context) {
JsonObject obj = new JsonObject();
if(status.getMotd() != null)
obj.add("description", context.serialize(status.getMotd()));
if(status.getInfo() != null)
obj.add("players", context.serialize(status.getInfo()));
if(status.getVersion() != null)
obj.add("version", context.serialize(status.getVersion()));
if(status.getIcon() != null)
obj.addProperty("favicon", status.getIcon());
return obj;
}
}
}

View file

@ -2,27 +2,23 @@ package proxy.util;
import proxy.nbt.NBTTagCompound;
public final class ItemStack {
public final class Stack {
private final short id;
private final byte size;
private final short meta;
private final NBTTagCompound tag;
public ItemStack(short id, byte size, short meta, NBTTagCompound tag) {
public Stack(short id, byte size, short meta, NBTTagCompound tag) {
this.id = id;
this.size = size;
this.meta = meta;
this.tag = tag;
}
public ItemStack copy() {
return new ItemStack(this.id, this.size, this.meta, (NBTTagCompound)this.tag.copy());
}
public short getId() {
return this.id;
}
public byte getSize() {
return this.size;
}

View file

@ -0,0 +1,35 @@
package proxy.util;
public class Vec3 {
private final int x;
private final int y;
private final int z;
public Vec3(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
public Vec3(long data) {
this.x = (int)(data << 64 - 38 - 26 >> 64 - 26);
this.y = (int)(data << 64 - 26 - 12 >> 64 - 12);
this.z = (int)(data << 64 - 26 >> 64 - 26);
}
public int getX() {
return this.x;
}
public int getY() {
return this.y;
}
public int getZ() {
return this.z;
}
public long getData() {
return ((long)this.getX() & 0x3ffffff) << 38 | ((long)this.getY() & 0xfff) << 26 | ((long)this.getZ() & 0x3ffffff) << 0;
}
}

View file

@ -0,0 +1,25 @@
package proxy.util;
public class Vec3f {
private final float x;
private final float y;
private final float z;
public Vec3f(float x, float y, float z) {
this.x = x;
this.y = y;
this.z = z;
}
public float getX() {
return this.x;
}
public float getY() {
return this.y;
}
public float getZ() {
return this.z;
}
}

View file

@ -0,0 +1,43 @@
package proxy.util;
import java.lang.reflect.Type;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
public class VersionId {
private final String name;
private final int protocol;
public VersionId(String name, int protocol) {
this.name = name;
this.protocol = protocol;
}
public String getName() {
return this.name;
}
public int getProtocol() {
return this.protocol;
}
public static class Serializer implements JsonDeserializer<VersionId>, JsonSerializer<VersionId> {
public VersionId deserialize(JsonElement elem, Type type, JsonDeserializationContext context) throws JsonParseException {
JsonObject obj = JsonUtils.getJsonObject(elem, "version");
return new VersionId(JsonUtils.getString(obj, "name"), JsonUtils.getInt(obj, "protocol"));
}
public JsonElement serialize(VersionId version, Type type, JsonSerializationContext context) {
JsonObject obj = new JsonObject();
obj.addProperty("name", version.getName());
obj.addProperty("protocol", (Number)Integer.valueOf(version.getProtocol()));
return obj;
}
}
}