Update to Minecraft 1.14
Dieser Commit ist enthalten in:
Ursprung
7b7449ee15
Commit
565f169e94
@ -1,4 +1,4 @@
|
|||||||
import shadow.org.apache.tools.ant.filters.ReplaceTokens
|
import org.apache.tools.ant.filters.ReplaceTokens
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id 'com.github.johnrengelman.shadow' version '2.0.4'
|
id 'com.github.johnrengelman.shadow' version '2.0.4'
|
||||||
@ -21,8 +21,8 @@ repositories {
|
|||||||
dependencies {
|
dependencies {
|
||||||
compile group: 'com.github.jengelman.gradle.plugins', name: 'shadow', version: '2.0.4'
|
compile group: 'com.github.jengelman.gradle.plugins', name: 'shadow', version: '2.0.4'
|
||||||
compile group: 'io.netty', name: 'netty-all', version: '4.0.23.Final'
|
compile group: 'io.netty', name: 'netty-all', version: '4.0.23.Final'
|
||||||
compile group: 'org.spigotmc', name: 'spigot-api', version: '1.13.1-R0.1-SNAPSHOT'
|
compile group: 'org.spigotmc', name: 'spigot-api', version: '1.14-R0.1-SNAPSHOT'
|
||||||
compile group: 'org.spigotmc', name: 'spigot', version: '1.13.1-R0.1-SNAPSHOT'
|
compile group: 'org.spigotmc', name: 'spigot', version: '1.14-R0.1-SNAPSHOT'
|
||||||
compile group: 'cglib', name: 'cglib-nodep', version: '3.2.5'
|
compile group: 'cglib', name: 'cglib-nodep', version: '3.2.5'
|
||||||
compile group: 'com.comphenix.executors', name: 'BukkitExecutors', version: '1.1-SNAPSHOT'
|
compile group: 'com.comphenix.executors', name: 'BukkitExecutors', version: '1.1-SNAPSHOT'
|
||||||
testCompile group: 'junit', name: 'junit', version: '4.12'
|
testCompile group: 'junit', name: 'junit', version: '4.12'
|
||||||
|
@ -33,11 +33,11 @@ import com.comphenix.protocol.events.PacketListener;
|
|||||||
import com.comphenix.protocol.injector.netty.WirePacket;
|
import com.comphenix.protocol.injector.netty.WirePacket;
|
||||||
import com.google.common.base.Charsets;
|
import com.google.common.base.Charsets;
|
||||||
|
|
||||||
import org.apache.commons.io.HexDump;
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandExecutor;
|
import org.bukkit.command.CommandExecutor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.craftbukkit.libs.org.apache.commons.io.HexDump;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -123,78 +123,84 @@ public class PacketType implements Serializable, Cloneable, Comparable<PacketTyp
|
|||||||
public static final PacketType BLOCK_CHANGE = new PacketType(PROTOCOL, SENDER, 0x0B, 0x0B, "BlockChange");
|
public static final PacketType BLOCK_CHANGE = new PacketType(PROTOCOL, SENDER, 0x0B, 0x0B, "BlockChange");
|
||||||
public static final PacketType BOSS = new PacketType(PROTOCOL, SENDER, 0x0C, 0x0C, "Boss");
|
public static final PacketType BOSS = new PacketType(PROTOCOL, SENDER, 0x0C, 0x0C, "Boss");
|
||||||
public static final PacketType SERVER_DIFFICULTY = new PacketType(PROTOCOL, SENDER, 0x0D, 0x0D, "ServerDifficulty");
|
public static final PacketType SERVER_DIFFICULTY = new PacketType(PROTOCOL, SENDER, 0x0D, 0x0D, "ServerDifficulty");
|
||||||
public static final PacketType CHAT = new PacketType(PROTOCOL, SENDER, 0x0E, 0x0F, "Chat");
|
public static final PacketType CHAT = new PacketType(PROTOCOL, SENDER, 0x0E, 0x0E, "Chat");
|
||||||
public static final PacketType MULTI_BLOCK_CHANGE = new PacketType(PROTOCOL, SENDER, 0x0F, 0x10, "MultiBlockChange");
|
public static final PacketType MULTI_BLOCK_CHANGE = new PacketType(PROTOCOL, SENDER, 0x0F, 0x0F, "MultiBlockChange");
|
||||||
public static final PacketType TAB_COMPLETE = new PacketType(PROTOCOL, SENDER, 0x10, 0x0E, "TabComplete");
|
public static final PacketType TAB_COMPLETE = new PacketType(PROTOCOL, SENDER, 0x10, 0x10, "TabComplete");
|
||||||
public static final PacketType COMMANDS = new PacketType(PROTOCOL, SENDER, 0x11, -0x01, "Commands");
|
public static final PacketType COMMANDS = new PacketType(PROTOCOL, SENDER, 0x11, 0x11, "Commands");
|
||||||
public static final PacketType TRANSACTION = new PacketType(PROTOCOL, SENDER, 0x12, 0x11, "Transaction");
|
public static final PacketType TRANSACTION = new PacketType(PROTOCOL, SENDER, 0x12, 0x12, "Transaction");
|
||||||
public static final PacketType CLOSE_WINDOW = new PacketType(PROTOCOL, SENDER, 0x13, 0x12, "CloseWindow");
|
public static final PacketType CLOSE_WINDOW = new PacketType(PROTOCOL, SENDER, 0x13, 0x13, "CloseWindow");
|
||||||
public static final PacketType OPEN_WINDOW = new PacketType(PROTOCOL, SENDER, 0x14, 0x13, "OpenWindow");
|
public static final PacketType WINDOW_ITEMS = new PacketType(PROTOCOL, SENDER, 0x14, 0x15, "WindowItems");
|
||||||
public static final PacketType WINDOW_ITEMS = new PacketType(PROTOCOL, SENDER, 0x15, 0x14, "WindowItems");
|
public static final PacketType WINDOW_DATA = new PacketType(PROTOCOL, SENDER, 0x15, 0x16, "WindowData");
|
||||||
public static final PacketType WINDOW_DATA = new PacketType(PROTOCOL, SENDER, 0x16, 0x15, "WindowData");
|
public static final PacketType SET_SLOT = new PacketType(PROTOCOL, SENDER, 0x16, 0x17, "SetSlot");
|
||||||
public static final PacketType SET_SLOT = new PacketType(PROTOCOL, SENDER, 0x17, 0x16, "SetSlot");
|
public static final PacketType SET_COOLDOWN = new PacketType(PROTOCOL, SENDER, 0x17, 0x18, "SetCooldown");
|
||||||
public static final PacketType SET_COOLDOWN = new PacketType(PROTOCOL, SENDER, 0x18, 0x17, "SetCooldown");
|
public static final PacketType CUSTOM_PAYLOAD = new PacketType(PROTOCOL, SENDER, 0x18, 0x19, "CustomPayload");
|
||||||
public static final PacketType CUSTOM_PAYLOAD = new PacketType(PROTOCOL, SENDER, 0x19, 0x18, "CustomPayload");
|
public static final PacketType CUSTOM_SOUND_EFFECT = new PacketType(PROTOCOL, SENDER, 0x19, 0x1A, "CustomSoundEffect");
|
||||||
public static final PacketType CUSTOM_SOUND_EFFECT = new PacketType(PROTOCOL, SENDER, 0x1A, 0x19, "CustomSoundEffect");
|
public static final PacketType KICK_DISCONNECT = new PacketType(PROTOCOL, SENDER, 0x1A, 0x1B, "KickDisconnect");
|
||||||
public static final PacketType KICK_DISCONNECT = new PacketType(PROTOCOL, SENDER, 0x1B, 0x1A, "KickDisconnect");
|
public static final PacketType ENTITY_STATUS = new PacketType(PROTOCOL, SENDER, 0x1B, 0x1C, "EntityStatus");
|
||||||
public static final PacketType ENTITY_STATUS = new PacketType(PROTOCOL, SENDER, 0x1C, 0x1B, "EntityStatus");
|
public static final PacketType EXPLOSION = new PacketType(PROTOCOL, SENDER, 0x1C, 0x1E, "Explosion");
|
||||||
public static final PacketType NBT_QUERY = new PacketType(PROTOCOL, SENDER, 0x1D, -0x01, "NBTQuery");
|
public static final PacketType UNLOAD_CHUNK = new PacketType(PROTOCOL, SENDER, 0x1D, -1, "UnloadChunk");
|
||||||
public static final PacketType EXPLOSION = new PacketType(PROTOCOL, SENDER, 0x1E, 0x1C, "Explosion");
|
public static final PacketType GAME_STATE_CHANGE = new PacketType(PROTOCOL, SENDER, 0x1E, 0x20, "GameStateChange");
|
||||||
public static final PacketType UNLOAD_CHUNK = new PacketType(PROTOCOL, SENDER, 0x1F, 0x1D, "UnloadChunk");
|
public static final PacketType OPEN_WINDOW_HORSE = new PacketType(PROTOCOL, SENDER, 0x1F, 0x1F, "OpenWindowHorse");
|
||||||
public static final PacketType GAME_STATE_CHANGE = new PacketType(PROTOCOL, SENDER, 0x20, 0x1E, "GameStateChange");
|
public static final PacketType KEEP_ALIVE = new PacketType(PROTOCOL, SENDER, 0x20, 0x21, "KeepAlive");
|
||||||
public static final PacketType KEEP_ALIVE = new PacketType(PROTOCOL, SENDER, 0x21, 0x1F, "KeepAlive");
|
public static final PacketType MAP_CHUNK = new PacketType(PROTOCOL, SENDER, 0x21, 0x22, "MapChunk");
|
||||||
public static final PacketType MAP_CHUNK = new PacketType(PROTOCOL, SENDER, 0x22, 0x20, "MapChunk");
|
public static final PacketType WORLD_EVENT = new PacketType(PROTOCOL, SENDER, 0x22, 0x23, "WorldEvent");
|
||||||
public static final PacketType WORLD_EVENT = new PacketType(PROTOCOL, SENDER, 0x23, 0x21, "WorldEvent");
|
public static final PacketType WORLD_PARTICLES = new PacketType(PROTOCOL, SENDER, 0x23, -1, "WorldParticles");
|
||||||
public static final PacketType WORLD_PARTICLES = new PacketType(PROTOCOL, SENDER, 0x24, 0x22, "WorldParticles");
|
public static final PacketType LIGHT_UPDATE = new PacketType(PROTOCOL, SENDER, 0x24, 0x24, "LightUpdate");
|
||||||
public static final PacketType LOGIN = new PacketType(PROTOCOL, SENDER, 0x25, 0x23, "Login");
|
public static final PacketType LOGIN = new PacketType(PROTOCOL, SENDER, 0x25, 0x25, "Login");
|
||||||
public static final PacketType MAP = new PacketType(PROTOCOL, SENDER, 0x26, 0x24, "Map");
|
public static final PacketType MAP = new PacketType(PROTOCOL, SENDER, 0x26, 0x26, "Map");
|
||||||
public static final PacketType ENTITY = new PacketType(PROTOCOL, SENDER, 0x27, 0x25, "Entity");
|
public static final PacketType OPEN_WINDOW_MERCHANT = new PacketType(PROTOCOL, SENDER, 0x27, -1, "OpenWindowMerchant");
|
||||||
public static final PacketType REL_ENTITY_MOVE = new PacketType(PROTOCOL, SENDER, 0x28, 0x26, "RelEntityMove");
|
public static final PacketType REL_ENTITY_MOVE = new PacketType(PROTOCOL, SENDER, 0x28, 0x28, "RelEntityMove");
|
||||||
public static final PacketType REL_ENTITY_MOVE_LOOK = new PacketType(PROTOCOL, SENDER, 0x29, 0x27, "RelEntityMoveLook");
|
public static final PacketType REL_ENTITY_MOVE_LOOK = new PacketType(PROTOCOL, SENDER, 0x29, 0x29, "RelEntityMoveLook");
|
||||||
public static final PacketType ENTITY_LOOK = new PacketType(PROTOCOL, SENDER, 0x2A, 0x28, "EntityLook");
|
public static final PacketType ENTITY_LOOK = new PacketType(PROTOCOL, SENDER, 0x2A, 0x2A, "EntityLook");
|
||||||
public static final PacketType VEHICLE_MOVE = new PacketType(PROTOCOL, SENDER, 0x2B, 0x29, "VehicleMove");
|
public static final PacketType ENTITY = new PacketType(PROTOCOL, SENDER, 0x2B, 0x27, "Entity");
|
||||||
public static final PacketType OPEN_SIGN_EDITOR = new PacketType(PROTOCOL, SENDER, 0x2C, 0x2A, "OpenSignEditor");
|
public static final PacketType VEHICLE_MOVE = new PacketType(PROTOCOL, SENDER, 0x2C, 0x2B, "VehicleMove");
|
||||||
public static final PacketType AUTO_RECIPE = new PacketType(PROTOCOL, SENDER, 0x2D, 0x2B, "AutoRecipe");
|
public static final PacketType OPEN_BOOK = new PacketType(PROTOCOL, SENDER, 0x2D, -1, "OpenBook");
|
||||||
public static final PacketType ABILITIES = new PacketType(PROTOCOL, SENDER, 0x2E, 0x2C, "Abilities");
|
public static final PacketType OPEN_WINDOW = new PacketType(PROTOCOL, SENDER, 0x2E, 0x14, "OpenWindow");
|
||||||
public static final PacketType COMBAT_EVENT = new PacketType(PROTOCOL, SENDER, 0x2F, 0x2D, "CombatEvent");
|
public static final PacketType OPEN_SIGN_EDITOR = new PacketType(PROTOCOL, SENDER, 0x2F, 0x2C, "OpenSignEditor");
|
||||||
public static final PacketType PLAYER_INFO = new PacketType(PROTOCOL, SENDER, 0x30, 0x2E, "PlayerInfo");
|
public static final PacketType AUTO_RECIPE = new PacketType(PROTOCOL, SENDER, 0x30, 0x2D, "AutoRecipe");
|
||||||
public static final PacketType LOOK_AT = new PacketType(PROTOCOL, SENDER, 0x31, -0x01, "LookAt");
|
public static final PacketType ABILITIES = new PacketType(PROTOCOL, SENDER, 0x31, 0x2E, "Abilities");
|
||||||
public static final PacketType POSITION = new PacketType(PROTOCOL, SENDER, 0x32, 0x2F, "Position");
|
public static final PacketType COMBAT_EVENT = new PacketType(PROTOCOL, SENDER, 0x32, 0x2F, "CombatEvent");
|
||||||
public static final PacketType BED = new PacketType(PROTOCOL, SENDER, 0x33, 0x30, "Bed");
|
public static final PacketType PLAYER_INFO = new PacketType(PROTOCOL, SENDER, 0x33, 0x30, "PlayerInfo");
|
||||||
public static final PacketType RECIPES = new PacketType(PROTOCOL, SENDER, 0x34, 0x31, "Recipes");
|
public static final PacketType LOOK_AT = new PacketType(PROTOCOL, SENDER, 0x34, 0x31, "LookAt");
|
||||||
public static final PacketType ENTITY_DESTROY = new PacketType(PROTOCOL, SENDER, 0x35, 0x32, "EntityDestroy");
|
public static final PacketType POSITION = new PacketType(PROTOCOL, SENDER, 0x35, 0x32, "Position");
|
||||||
public static final PacketType REMOVE_ENTITY_EFFECT = new PacketType(PROTOCOL, SENDER, 0x36, 0x33, "RemoveEntityEffect");
|
public static final PacketType RECIPES = new PacketType(PROTOCOL, SENDER, 0x36, 0x34, "Recipes");
|
||||||
public static final PacketType RESOURCE_PACK_SEND = new PacketType(PROTOCOL, SENDER, 0x37, 0x34, "ResourcePackSend");
|
public static final PacketType ENTITY_DESTROY = new PacketType(PROTOCOL, SENDER, 0x37, 0x35, "EntityDestroy");
|
||||||
public static final PacketType RESPAWN = new PacketType(PROTOCOL, SENDER, 0x38, 0x35, "Respawn");
|
public static final PacketType REMOVE_ENTITY_EFFECT = new PacketType(PROTOCOL, SENDER, 0x38, 0x36, "RemoveEntityEffect");
|
||||||
public static final PacketType ENTITY_HEAD_ROTATION = new PacketType(PROTOCOL, SENDER, 0x39, 0x36, "EntityHeadRotation");
|
public static final PacketType RESOURCE_PACK_SEND = new PacketType(PROTOCOL, SENDER, 0x39, 0x37, "ResourcePackSend");
|
||||||
public static final PacketType SELECT_ADVANCEMENT_TAB = new PacketType(PROTOCOL, SENDER, 0x3A, 0x37, "SelectAdvancementTab");
|
public static final PacketType RESPAWN = new PacketType(PROTOCOL, SENDER, 0x3A, 0x38, "Respawn");
|
||||||
public static final PacketType WORLD_BORDER = new PacketType(PROTOCOL, SENDER, 0x3B, 0x38, "WorldBorder");
|
public static final PacketType ENTITY_HEAD_ROTATION = new PacketType(PROTOCOL, SENDER, 0x3B, 0x39, "EntityHeadRotation");
|
||||||
public static final PacketType CAMERA = new PacketType(PROTOCOL, SENDER, 0x3C, 0x39, "Camera");
|
public static final PacketType SELECT_ADVANCEMENT_TAB = new PacketType(PROTOCOL, SENDER, 0x3C, 0x3A, "SelectAdvancementTab");
|
||||||
public static final PacketType HELD_ITEM_SLOT = new PacketType(PROTOCOL, SENDER, 0x3D, 0x3A, "HeldItemSlot");
|
public static final PacketType WORLD_BORDER = new PacketType(PROTOCOL, SENDER, 0x3D, 0x3B, "WorldBorder");
|
||||||
public static final PacketType SCOREBOARD_DISPLAY_OBJECTIVE = new PacketType(PROTOCOL, SENDER, 0x3E, 0x3B, "ScoreboardDisplayObjective");
|
public static final PacketType CAMERA = new PacketType(PROTOCOL, SENDER, 0x3E, 0x3C, "Camera");
|
||||||
public static final PacketType ENTITY_METADATA = new PacketType(PROTOCOL, SENDER, 0x3F, 0x3C, "EntityMetadata");
|
public static final PacketType HELD_ITEM_SLOT = new PacketType(PROTOCOL, SENDER, 0x3F, 0x3D, "HeldItemSlot");
|
||||||
public static final PacketType ATTACH_ENTITY = new PacketType(PROTOCOL, SENDER, 0x40, 0x3D, "AttachEntity");
|
public static final PacketType VIEW_CENTRE = new PacketType(PROTOCOL, SENDER, 0x40, -1, "ViewCentre");
|
||||||
public static final PacketType ENTITY_VELOCITY = new PacketType(PROTOCOL, SENDER, 0x41, 0x3E, "EntityVelocity");
|
public static final PacketType VIEW_DISTANCE = new PacketType(PROTOCOL, SENDER, 0x41, -1, "ViewDistance");
|
||||||
public static final PacketType ENTITY_EQUIPMENT = new PacketType(PROTOCOL, SENDER, 0x42, 0x3F, "EntityEquipment");
|
public static final PacketType SCOREBOARD_DISPLAY_OBJECTIVE = new PacketType(PROTOCOL, SENDER, 0x42, 0x3E, "ScoreboardDisplayObjective");
|
||||||
public static final PacketType EXPERIENCE = new PacketType(PROTOCOL, SENDER, 0x43, 0x40, "Experience");
|
public static final PacketType ENTITY_METADATA = new PacketType(PROTOCOL, SENDER, 0x43, 0x3F, "EntityMetadata");
|
||||||
public static final PacketType UPDATE_HEALTH = new PacketType(PROTOCOL, SENDER, 0x44, 0x41, "UpdateHealth");
|
public static final PacketType ATTACH_ENTITY = new PacketType(PROTOCOL, SENDER, 0x44, 0x40, "AttachEntity");
|
||||||
public static final PacketType SCOREBOARD_OBJECTIVE = new PacketType(PROTOCOL, SENDER, 0x45, 0x42, "ScoreboardObjective");
|
public static final PacketType ENTITY_VELOCITY = new PacketType(PROTOCOL, SENDER, 0x45, 0x41, "EntityVelocity");
|
||||||
public static final PacketType MOUNT = new PacketType(PROTOCOL, SENDER, 0x46, 0x43, "Mount");
|
public static final PacketType ENTITY_EQUIPMENT = new PacketType(PROTOCOL, SENDER, 0x46, 0x42, "EntityEquipment");
|
||||||
public static final PacketType SCOREBOARD_TEAM = new PacketType(PROTOCOL, SENDER, 0x47, 0x44, "ScoreboardTeam");
|
public static final PacketType EXPERIENCE = new PacketType(PROTOCOL, SENDER, 0x47, 0x43, "Experience");
|
||||||
public static final PacketType SCOREBOARD_SCORE = new PacketType(PROTOCOL, SENDER, 0x48, 0x45, "ScoreboardScore");
|
public static final PacketType UPDATE_HEALTH = new PacketType(PROTOCOL, SENDER, 0x48, 0x44, "UpdateHealth");
|
||||||
public static final PacketType SPAWN_POSITION = new PacketType(PROTOCOL, SENDER, 0x49, 0x46, "SpawnPosition");
|
public static final PacketType SCOREBOARD_OBJECTIVE = new PacketType(PROTOCOL, SENDER, 0x49, 0x45, "ScoreboardObjective");
|
||||||
public static final PacketType UPDATE_TIME = new PacketType(PROTOCOL, SENDER, 0x4A, 0x47, "UpdateTime");
|
public static final PacketType MOUNT = new PacketType(PROTOCOL, SENDER, 0x4A, 0x46, "Mount");
|
||||||
public static final PacketType TITLE = new PacketType(PROTOCOL, SENDER, 0x4B, 0x48, "Title");
|
public static final PacketType SCOREBOARD_TEAM = new PacketType(PROTOCOL, SENDER, 0x4B, 0x47, "ScoreboardTeam");
|
||||||
public static final PacketType STOP_SOUND = new PacketType(PROTOCOL, SENDER, 0x4C, -0x01, "StopSound");
|
public static final PacketType SCOREBOARD_SCORE = new PacketType(PROTOCOL, SENDER, 0x4C, 0x48, "ScoreboardScore");
|
||||||
public static final PacketType NAMED_SOUND_EFFECT = new PacketType(PROTOCOL, SENDER, 0x4D, 0x49, "NamedSoundEffect");
|
public static final PacketType SPAWN_POSITION = new PacketType(PROTOCOL, SENDER, 0x4D, 0x49, "SpawnPosition");
|
||||||
public static final PacketType PLAYER_LIST_HEADER_FOOTER = new PacketType(PROTOCOL, SENDER, 0x4E, 0x4A, "PlayerListHeaderFooter");
|
public static final PacketType UPDATE_TIME = new PacketType(PROTOCOL, SENDER, 0x4E, 0x4A, "UpdateTime");
|
||||||
public static final PacketType COLLECT = new PacketType(PROTOCOL, SENDER, 0x4F, 0x4B, "Collect");
|
public static final PacketType TITLE = new PacketType(PROTOCOL, SENDER, 0x4F, 0x4B, "Title");
|
||||||
public static final PacketType ENTITY_TELEPORT = new PacketType(PROTOCOL, SENDER, 0x50, 0x4C, "EntityTeleport");
|
public static final PacketType ENTITY_SOUND = new PacketType(PROTOCOL, SENDER, 0x50, -1, "EntitySound");
|
||||||
public static final PacketType ADVANCEMENTS = new PacketType(PROTOCOL, SENDER, 0x51, 0x4D, "Advancements");
|
public static final PacketType NAMED_SOUND_EFFECT = new PacketType(PROTOCOL, SENDER, 0x51, 0x4D, "NamedSoundEffect");
|
||||||
public static final PacketType UPDATE_ATTRIBUTES = new PacketType(PROTOCOL, SENDER, 0x52, 0x4E, "UpdateAttributes");
|
public static final PacketType STOP_SOUND = new PacketType(PROTOCOL, SENDER, 0x52, 0x4C, "StopSound");
|
||||||
public static final PacketType ENTITY_EFFECT = new PacketType(PROTOCOL, SENDER, 0x53, 0x4F, "EntityEffect");
|
public static final PacketType PLAYER_LIST_HEADER_FOOTER = new PacketType(PROTOCOL, SENDER, 0x53, 0x4E, "PlayerListHeaderFooter");
|
||||||
public static final PacketType RECIPE_UPDATE = new PacketType(PROTOCOL, SENDER, 0x54, 0x54, "RecipeUpdate");
|
public static final PacketType NBT_QUERY = new PacketType(PROTOCOL, SENDER, 0x54, 0x1D, "NBTQuery");
|
||||||
public static final PacketType TAGS = new PacketType(PROTOCOL, SENDER, 0x55, 0x55, "Tags");
|
public static final PacketType COLLECT = new PacketType(PROTOCOL, SENDER, 0x55, 0x4F, "Collect");
|
||||||
|
public static final PacketType ENTITY_TELEPORT = new PacketType(PROTOCOL, SENDER, 0x56, 0x50, "EntityTeleport");
|
||||||
|
public static final PacketType ADVANCEMENTS = new PacketType(PROTOCOL, SENDER, 0x57, 0x51, "Advancements");
|
||||||
|
public static final PacketType UPDATE_ATTRIBUTES = new PacketType(PROTOCOL, SENDER, 0x58, 0x52, "UpdateAttributes");
|
||||||
|
public static final PacketType ENTITY_EFFECT = new PacketType(PROTOCOL, SENDER, 0x59, 0x53, "EntityEffect");
|
||||||
|
public static final PacketType RECIPE_UPDATE = new PacketType(PROTOCOL, SENDER, 0x5A, 0x54, "RecipeUpdate");
|
||||||
|
public static final PacketType TAGS = new PacketType(PROTOCOL, SENDER, 0x5B, 0x55, "Tags");
|
||||||
|
|
||||||
// ---- Removed in 1.9
|
// ---- Removed in 1.9
|
||||||
|
|
||||||
@ -251,6 +257,14 @@ public class PacketType implements Serializable, Cloneable, Comparable<PacketTyp
|
|||||||
public static final PacketType UPDATE_SIGN = MinecraftReflection.signUpdateExists() ? new PacketType(PROTOCOL, SENDER, 252, 252, "UpdateSign") :
|
public static final PacketType UPDATE_SIGN = MinecraftReflection.signUpdateExists() ? new PacketType(PROTOCOL, SENDER, 252, 252, "UpdateSign") :
|
||||||
TILE_ENTITY_DATA.clone();
|
TILE_ENTITY_DATA.clone();
|
||||||
|
|
||||||
|
// ---- Removed in 1.14
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Removed in 1.14
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public static final PacketType USE_BED = new PacketType(PROTOCOL, SENDER, 0x33, 0x33, "UseBed");
|
||||||
|
|
||||||
private final static Server INSTANCE = new Server();
|
private final static Server INSTANCE = new Server();
|
||||||
|
|
||||||
// Prevent accidental construction
|
// Prevent accidental construction
|
||||||
@ -272,48 +286,51 @@ public class PacketType implements Serializable, Cloneable, Comparable<PacketTyp
|
|||||||
private final static Sender SENDER = Sender.CLIENT;
|
private final static Sender SENDER = Sender.CLIENT;
|
||||||
|
|
||||||
public static final PacketType TELEPORT_ACCEPT = new PacketType(PROTOCOL, SENDER, 0x00, 0x00, "TeleportAccept");
|
public static final PacketType TELEPORT_ACCEPT = new PacketType(PROTOCOL, SENDER, 0x00, 0x00, "TeleportAccept");
|
||||||
public static final PacketType TILE_NBT_QUERY = new PacketType(PROTOCOL, SENDER, 0x01, -0x01, "TileNBTQuery");
|
public static final PacketType TILE_NBT_QUERY = new PacketType(PROTOCOL, SENDER, 0x01, 0x01, "TileNBTQuery");
|
||||||
public static final PacketType CHAT = new PacketType(PROTOCOL, SENDER, 0x02, 0x02, "Chat");
|
public static final PacketType DIFFICULTY_CHANGE = new PacketType(PROTOCOL, SENDER, 0x02, -1, "DifficultyChange");
|
||||||
public static final PacketType CLIENT_COMMAND = new PacketType(PROTOCOL, SENDER, 0x03, 0x03, "ClientCommand");
|
public static final PacketType CHAT = new PacketType(PROTOCOL, SENDER, 0x03, 0x02, "Chat");
|
||||||
public static final PacketType SETTINGS = new PacketType(PROTOCOL, SENDER, 0x04, 0x04, "Settings");
|
public static final PacketType CLIENT_COMMAND = new PacketType(PROTOCOL, SENDER, 0x04, 0x03, "ClientCommand");
|
||||||
public static final PacketType TAB_COMPLETE = new PacketType(PROTOCOL, SENDER, 0x05, 0x01, "TabComplete");
|
public static final PacketType SETTINGS = new PacketType(PROTOCOL, SENDER, 0x05, 0x04, "Settings");
|
||||||
public static final PacketType TRANSACTION = new PacketType(PROTOCOL, SENDER, 0x06, 0x05, "Transaction");
|
public static final PacketType TAB_COMPLETE = new PacketType(PROTOCOL, SENDER, 0x06, 0x05, "TabComplete");
|
||||||
public static final PacketType ENCHANT_ITEM = new PacketType(PROTOCOL, SENDER, 0x07, 0x06, "EnchantItem");
|
public static final PacketType TRANSACTION = new PacketType(PROTOCOL, SENDER, 0x07, 0x06, "Transaction");
|
||||||
public static final PacketType WINDOW_CLICK = new PacketType(PROTOCOL, SENDER, 0x08, 0x07, "WindowClick");
|
public static final PacketType ENCHANT_ITEM = new PacketType(PROTOCOL, SENDER, 0x08, 0x07, "EnchantItem");
|
||||||
public static final PacketType CLOSE_WINDOW = new PacketType(PROTOCOL, SENDER, 0x09, 0x08, "CloseWindow");
|
public static final PacketType WINDOW_CLICK = new PacketType(PROTOCOL, SENDER, 0x09, 0x08, "WindowClick");
|
||||||
public static final PacketType CUSTOM_PAYLOAD = new PacketType(PROTOCOL, SENDER, 0x0A, 0x09, "CustomPayload");
|
public static final PacketType CLOSE_WINDOW = new PacketType(PROTOCOL, SENDER, 0x0A, 0x09, "CloseWindow");
|
||||||
public static final PacketType BOOK_EDIT = new PacketType(PROTOCOL, SENDER, 0x0B, -0x01, "BEdit");
|
public static final PacketType CUSTOM_PAYLOAD = new PacketType(PROTOCOL, SENDER, 0x0B, 0x0A, "CustomPayload");
|
||||||
public static final PacketType ENTITY_NBT_QUERY = new PacketType(PROTOCOL, SENDER, 0x0C, -0x01, "EntityNBTQuery");
|
public static final PacketType B_EDIT = new PacketType(PROTOCOL, SENDER, 0x0C, 0x0B, "BEdit");
|
||||||
public static final PacketType USE_ENTITY = new PacketType(PROTOCOL, SENDER, 0x0D, 0x0A, "UseEntity");
|
public static final PacketType ENTITY_NBT_QUERY = new PacketType(PROTOCOL, SENDER, 0x0D, 0x0C, "EntityNBTQuery");
|
||||||
public static final PacketType KEEP_ALIVE = new PacketType(PROTOCOL, SENDER, 0x0E, 0x0B, "KeepAlive");
|
public static final PacketType USE_ENTITY = new PacketType(PROTOCOL, SENDER, 0x0E, 0x0D, "UseEntity");
|
||||||
public static final PacketType FLYING = new PacketType(PROTOCOL, SENDER, 0x0F, 0x0C, "Flying");
|
public static final PacketType KEEP_ALIVE = new PacketType(PROTOCOL, SENDER, 0x0F, 0x0E, "KeepAlive");
|
||||||
public static final PacketType POSITION = new PacketType(PROTOCOL, SENDER, 0x10, 0x0D, "Position");
|
public static final PacketType DIFFICULTY_LOCK = new PacketType(PROTOCOL, SENDER, 0x10, -1, "DifficultyLock");
|
||||||
public static final PacketType POSITION_LOOK = new PacketType(PROTOCOL, SENDER, 0x11, 0x0E, "PositionLook");
|
public static final PacketType POSITION = new PacketType(PROTOCOL, SENDER, 0x11, 0x10, "Position");
|
||||||
public static final PacketType LOOK = new PacketType(PROTOCOL, SENDER, 0x12, 0x0F, "Look");
|
public static final PacketType POSITION_LOOK = new PacketType(PROTOCOL, SENDER, 0x12, 0x11, "PositionLook");
|
||||||
public static final PacketType VEHICLE_MOVE = new PacketType(PROTOCOL, SENDER, 0x13, 0x10, "VehicleMove");
|
public static final PacketType LOOK = new PacketType(PROTOCOL, SENDER, 0x13, 0x12, "Look");
|
||||||
public static final PacketType BOAT_MOVE = new PacketType(PROTOCOL, SENDER, 0x14, 0x11, "BoatMove");
|
public static final PacketType FLYING = new PacketType(PROTOCOL, SENDER, 0x14, 0x0F, "Flying");
|
||||||
public static final PacketType PICK_ITEM = new PacketType(PROTOCOL, SENDER, 0x15, -0x01, "PickItem");
|
public static final PacketType VEHICLE_MOVE = new PacketType(PROTOCOL, SENDER, 0x15, 0x13, "VehicleMove");
|
||||||
public static final PacketType AUTO_RECIPE = new PacketType(PROTOCOL, SENDER, 0x16, 0x12, "AutoRecipe");
|
public static final PacketType BOAT_MOVE = new PacketType(PROTOCOL, SENDER, 0x16, 0x14, "BoatMove");
|
||||||
public static final PacketType ABILITIES = new PacketType(PROTOCOL, SENDER, 0x17, 0x13, "Abilities");
|
public static final PacketType PICK_ITEM = new PacketType(PROTOCOL, SENDER, 0x17, 0x15, "PickItem");
|
||||||
public static final PacketType BLOCK_DIG = new PacketType(PROTOCOL, SENDER, 0x18, 0x14, "BlockDig");
|
public static final PacketType AUTO_RECIPE = new PacketType(PROTOCOL, SENDER, 0x18, 0x16, "AutoRecipe");
|
||||||
public static final PacketType ENTITY_ACTION = new PacketType(PROTOCOL, SENDER, 0x19, 0x15, "EntityAction");
|
public static final PacketType ABILITIES = new PacketType(PROTOCOL, SENDER, 0x19, 0x17, "Abilities");
|
||||||
public static final PacketType STEER_VEHICLE = new PacketType(PROTOCOL, SENDER, 0x1A, 0x16, "SteerVehicle");
|
public static final PacketType BLOCK_DIG = new PacketType(PROTOCOL, SENDER, 0x1A, 0x18, "BlockDig");
|
||||||
public static final PacketType RECIPE_DISPLAYED = new PacketType(PROTOCOL, SENDER, 0x1B, 0x17, "RecipeDisplayed");
|
public static final PacketType ENTITY_ACTION = new PacketType(PROTOCOL, SENDER, 0x1B, 0x19, "EntityAction");
|
||||||
public static final PacketType ITEM_NAME = new PacketType(PROTOCOL, SENDER, 0x1C, -0x01, "ItemName");
|
public static final PacketType STEER_VEHICLE = new PacketType(PROTOCOL, SENDER, 0x1C, 0x1A, "SteerVehicle");
|
||||||
public static final PacketType RESOURCE_PACK_STATUS = new PacketType(PROTOCOL, SENDER, 0x1D, 0x18, "ResourcePackStatus");
|
public static final PacketType RECIPE_DISPLAYED = new PacketType(PROTOCOL, SENDER, 0x1D, 0x1B, "RecipeDisplayed");
|
||||||
public static final PacketType ADVANCEMENTS = new PacketType(PROTOCOL, SENDER, 0x1E, 0x19, "Advancements");
|
public static final PacketType ITEM_NAME = new PacketType(PROTOCOL, SENDER, 0x1E, 0x1C, "ItemName");
|
||||||
public static final PacketType TRADE_SELECT = new PacketType(PROTOCOL, SENDER, 0x1F, -0x01, "TrSel");
|
public static final PacketType RESOURCE_PACK_STATUS = new PacketType(PROTOCOL, SENDER, 0x1F, 0x1D, "ResourcePackStatus");
|
||||||
public static final PacketType BEACON = new PacketType(PROTOCOL, SENDER, 0x20, -0x01, "Beacon");
|
public static final PacketType ADVANCEMENTS = new PacketType(PROTOCOL, SENDER, 0x20, 0x1E, "Advancements");
|
||||||
public static final PacketType HELD_ITEM_SLOT = new PacketType(PROTOCOL, SENDER, 0x21, 0x1A, "HeldItemSlot");
|
public static final PacketType TR_SEL = new PacketType(PROTOCOL, SENDER, 0x21, 0x1F, "TrSel");
|
||||||
public static final PacketType SET_COMMAND_BLOCK = new PacketType(PROTOCOL, SENDER, 0x22, 0x22, "SetCommandBlock");
|
public static final PacketType BEACON = new PacketType(PROTOCOL, SENDER, 0x22, 0x20, "Beacon");
|
||||||
public static final PacketType SET_COMMAND_MINECART = new PacketType(PROTOCOL, SENDER, 0x23, 0x23, "SetCommandMinecart");
|
public static final PacketType HELD_ITEM_SLOT = new PacketType(PROTOCOL, SENDER, 0x23, 0x21, "HeldItemSlot");
|
||||||
public static final PacketType SET_CREATIVE_SLOT = new PacketType(PROTOCOL, SENDER, 0x24, 0x1B, "SetCreativeSlot");
|
public static final PacketType SET_COMMAND_BLOCK = new PacketType(PROTOCOL, SENDER, 0x24, 0x22, "SetCommandBlock");
|
||||||
public static final PacketType STRUCTURE_BLOCK = new PacketType(PROTOCOL, SENDER, 0x25, 0x25, "Struct");
|
public static final PacketType SET_COMMAND_MINECART = new PacketType(PROTOCOL, SENDER, 0x25, 0x23, "SetCommandMinecart");
|
||||||
public static final PacketType UPDATE_SIGN = new PacketType(PROTOCOL, SENDER, 0x26, 0x1C, "UpdateSign");
|
public static final PacketType SET_CREATIVE_SLOT = new PacketType(PROTOCOL, SENDER, 0x26, 0x24, "SetCreativeSlot");
|
||||||
public static final PacketType ARM_ANIMATION = new PacketType(PROTOCOL, SENDER, 0x27, 0x1D, "ArmAnimation");
|
public static final PacketType SET_JIGSAW = new PacketType(PROTOCOL, SENDER, 0x27, -1, "SetJigsaw");
|
||||||
public static final PacketType SPECTATE = new PacketType(PROTOCOL, SENDER, 0x28, 0x1E, "Spectate");
|
public static final PacketType STRUCT = new PacketType(PROTOCOL, SENDER, 0x28, 0x25, "Struct");
|
||||||
public static final PacketType USE_ITEM = new PacketType(PROTOCOL, SENDER, 0x29, 0x1F, "UseItem");
|
public static final PacketType UPDATE_SIGN = new PacketType(PROTOCOL, SENDER, 0x29, 0x26, "UpdateSign");
|
||||||
public static final PacketType BLOCK_PLACE = new PacketType(PROTOCOL, SENDER, 0x2A, 0x20, "BlockPlace");
|
public static final PacketType ARM_ANIMATION = new PacketType(PROTOCOL, SENDER, 0x2A, 0x27, "ArmAnimation");
|
||||||
|
public static final PacketType SPECTATE = new PacketType(PROTOCOL, SENDER, 0x2B, 0x28, "Spectate");
|
||||||
|
public static final PacketType USE_ITEM = new PacketType(PROTOCOL, SENDER, 0x2C, 0x29, "UseItem");
|
||||||
|
public static final PacketType BLOCK_PLACE = new PacketType(PROTOCOL, SENDER, 0x2D, 0x2A, "BlockPlace");
|
||||||
|
|
||||||
private final static Client INSTANCE = new Client();
|
private final static Client INSTANCE = new Client();
|
||||||
|
|
||||||
@ -619,7 +636,7 @@ public class PacketType implements Serializable, Cloneable, Comparable<PacketTyp
|
|||||||
/**
|
/**
|
||||||
* Protocol version of all the current IDs.
|
* Protocol version of all the current IDs.
|
||||||
*/
|
*/
|
||||||
private static final MinecraftVersion PROTOCOL_VERSION = MinecraftVersion.EXPLORATION_UPDATE;
|
private static final MinecraftVersion PROTOCOL_VERSION = MinecraftVersion.VILLAGE_UPDATE;
|
||||||
|
|
||||||
private final Protocol protocol;
|
private final Protocol protocol;
|
||||||
private final Sender sender;
|
private final Sender sender;
|
||||||
|
@ -39,12 +39,12 @@ public class ProtocolLibrary {
|
|||||||
/**
|
/**
|
||||||
* The maximum version ProtocolLib has been tested with.
|
* The maximum version ProtocolLib has been tested with.
|
||||||
*/
|
*/
|
||||||
public static final String MAXIMUM_MINECRAFT_VERSION = "1.13.1";
|
public static final String MAXIMUM_MINECRAFT_VERSION = "1.14";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The date (with ISO 8601 or YYYY-MM-DD) when the most recent version (1.13.1) was released.
|
* The date (with ISO 8601 or YYYY-MM-DD) when the most recent version (1.13.1) was released.
|
||||||
*/
|
*/
|
||||||
public static final String MINECRAFT_LAST_RELEASE_DATE = "2018-08-22";
|
public static final String MINECRAFT_LAST_RELEASE_DATE = "2019-04-23";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plugins that are currently incompatible with ProtocolLib.
|
* Plugins that are currently incompatible with ProtocolLib.
|
||||||
|
@ -16,15 +16,14 @@
|
|||||||
*/
|
*/
|
||||||
package com.comphenix.protocol.events;
|
package com.comphenix.protocol.events;
|
||||||
|
|
||||||
|
import com.google.common.cache.Cache;
|
||||||
|
import com.google.common.cache.CacheBuilder;
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import com.google.common.cache.Cache;
|
|
||||||
import com.google.common.cache.CacheBuilder;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.Validate;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stores and retrieves metadata for applicable packet objects.
|
* Stores and retrieves metadata for applicable packet objects.
|
||||||
* @author dmulloy2
|
* @author dmulloy2
|
||||||
|
@ -16,13 +16,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.comphenix.protocol.injector.netty;
|
package com.comphenix.protocol.injector.netty;
|
||||||
|
|
||||||
import java.net.Socket;
|
|
||||||
import java.net.SocketAddress;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.concurrent.Callable;
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
|
||||||
|
|
||||||
import com.comphenix.protocol.PacketType;
|
import com.comphenix.protocol.PacketType;
|
||||||
import com.comphenix.protocol.PacketType.Protocol;
|
import com.comphenix.protocol.PacketType.Protocol;
|
||||||
import com.comphenix.protocol.ProtocolLibrary;
|
import com.comphenix.protocol.ProtocolLibrary;
|
||||||
@ -44,7 +37,6 @@ import com.comphenix.protocol.utility.MinecraftProtocolVersion;
|
|||||||
import com.comphenix.protocol.utility.MinecraftReflection;
|
import com.comphenix.protocol.utility.MinecraftReflection;
|
||||||
import com.comphenix.protocol.wrappers.WrappedGameProfile;
|
import com.comphenix.protocol.wrappers.WrappedGameProfile;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
|
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import io.netty.channel.*;
|
import io.netty.channel.*;
|
||||||
import io.netty.channel.socket.SocketChannel;
|
import io.netty.channel.socket.SocketChannel;
|
||||||
@ -52,13 +44,18 @@ import io.netty.handler.codec.ByteToMessageDecoder;
|
|||||||
import io.netty.handler.codec.MessageToByteEncoder;
|
import io.netty.handler.codec.MessageToByteEncoder;
|
||||||
import io.netty.util.AttributeKey;
|
import io.netty.util.AttributeKey;
|
||||||
import io.netty.util.internal.TypeParameterMatcher;
|
import io.netty.util.internal.TypeParameterMatcher;
|
||||||
|
|
||||||
import net.sf.cglib.proxy.Factory;
|
import net.sf.cglib.proxy.Factory;
|
||||||
|
import org.apache.commons.lang.Validate;
|
||||||
import org.apache.commons.lang3.Validate;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.net.Socket;
|
||||||
|
import java.net.SocketAddress;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.concurrent.Callable;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a channel injector.
|
* Represents a channel injector.
|
||||||
* @author Kristian
|
* @author Kristian
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.comphenix.protocol.injector.netty;
|
package com.comphenix.protocol.injector.netty;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
@ -51,8 +52,10 @@ public class NettyProtocolRegistry extends ProtocolRegistry {
|
|||||||
|
|
||||||
// Iterate through the protocols
|
// Iterate through the protocols
|
||||||
for (Object protocol : protocols) {
|
for (Object protocol : protocols) {
|
||||||
if (modifier == null)
|
if (modifier == null) {
|
||||||
modifier = new StructureModifier<Object>(protocol.getClass().getSuperclass(), false);
|
modifier = new StructureModifier<Object>(protocol.getClass().getSuperclass(), false);
|
||||||
|
}
|
||||||
|
|
||||||
StructureModifier<Map<Object, Map<Integer, Class<?>>>> maps = modifier.withTarget(protocol).withType(Map.class);
|
StructureModifier<Map<Object, Map<Integer, Class<?>>>> maps = modifier.withTarget(protocol).withType(Map.class);
|
||||||
for (Entry<Object, Map<Integer, Class<?>>> entry : maps.read(0).entrySet()) {
|
for (Entry<Object, Map<Integer, Class<?>>> entry : maps.read(0).entrySet()) {
|
||||||
String direction = entry.getKey().toString();
|
String direction = entry.getKey().toString();
|
||||||
@ -92,6 +95,7 @@ public class NettyProtocolRegistry extends ProtocolRegistry {
|
|||||||
protected void associatePackets(Register register, Map<Integer, Class<?>> lookup, Protocol protocol, Sender sender) {
|
protected void associatePackets(Register register, Map<Integer, Class<?>> lookup, Protocol protocol, Sender sender) {
|
||||||
for (Entry<Integer, Class<?>> entry : lookup.entrySet()) {
|
for (Entry<Integer, Class<?>> entry : lookup.entrySet()) {
|
||||||
PacketType type = PacketType.fromCurrent(protocol, sender, entry.getKey(), entry.getValue());
|
PacketType type = PacketType.fromCurrent(protocol, sender, entry.getKey(), entry.getValue());
|
||||||
|
// System.out.println(Arrays.toString(type.getClassNames()) + " -> " + entry.getValue());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
register.typeToClass.put(type, entry.getValue());
|
register.typeToClass.put(type, entry.getValue());
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
package com.comphenix.protocol.metrics;
|
package com.comphenix.protocol.metrics;
|
||||||
|
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
|
import org.bukkit.craftbukkit.libs.org.apache.commons.lang3.tuple.Pair;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||||
import org.bukkit.plugin.ServicePriority;
|
import org.bukkit.plugin.ServicePriority;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
import org.json.simple.JSONArray;
|
import org.json.simple.JSONArray;
|
||||||
import org.json.simple.JSONObject;
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
@ -16,16 +15,9 @@ import java.io.ByteArrayOutputStream;
|
|||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Timer;
|
|
||||||
import java.util.TimerTask;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.zip.GZIPOutputStream;
|
import java.util.zip.GZIPOutputStream;
|
||||||
|
@ -17,17 +17,15 @@
|
|||||||
|
|
||||||
package com.comphenix.protocol.metrics;
|
package com.comphenix.protocol.metrics;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.comphenix.protocol.ProtocolLib;
|
import com.comphenix.protocol.ProtocolLib;
|
||||||
import com.comphenix.protocol.ProtocolLibrary;
|
import com.comphenix.protocol.ProtocolLibrary;
|
||||||
import com.comphenix.protocol.events.PacketAdapter;
|
import com.comphenix.protocol.events.PacketAdapter;
|
||||||
import com.comphenix.protocol.events.PacketListener;
|
import com.comphenix.protocol.events.PacketListener;
|
||||||
|
import org.bukkit.craftbukkit.libs.org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import java.io.IOException;
|
||||||
import org.bukkit.plugin.Plugin;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class Statistics {
|
public class Statistics {
|
||||||
|
|
||||||
|
@ -69,6 +69,10 @@ public class ImmutableDetector implements Cloner {
|
|||||||
add(MinecraftReflection::getFluidTypeClass);
|
add(MinecraftReflection::getFluidTypeClass);
|
||||||
add(MinecraftReflection::getParticleTypeClass);
|
add(MinecraftReflection::getParticleTypeClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (MinecraftVersion.atOrAbove(MinecraftVersion.VILLAGE_UPDATE)) {
|
||||||
|
add(() -> MinecraftReflection.getMinecraftClass("EntityTypes"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void add(Supplier<Class<?>> getClass) {
|
private static void add(Supplier<Class<?>> getClass) {
|
||||||
|
@ -21,7 +21,7 @@ package com.comphenix.protocol.utility;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public final class Constants {
|
public final class Constants {
|
||||||
public static final String PACKAGE_VERSION = "v1_13_R2";
|
public static final String PACKAGE_VERSION = "v1_14_R1";
|
||||||
public static final String NMS = "net.minecraft.server." + PACKAGE_VERSION;
|
public static final String NMS = "net.minecraft.server." + PACKAGE_VERSION;
|
||||||
public static final String OBC = "org.bukkit.craftbukkit." + PACKAGE_VERSION;
|
public static final String OBC = "org.bukkit.craftbukkit." + PACKAGE_VERSION;
|
||||||
}
|
}
|
||||||
|
@ -49,6 +49,8 @@ public class MinecraftProtocolVersion {
|
|||||||
map.put(new MinecraftVersion(1, 12, 2), 340);
|
map.put(new MinecraftVersion(1, 12, 2), 340);
|
||||||
map.put(new MinecraftVersion(1, 13, 0), 393);
|
map.put(new MinecraftVersion(1, 13, 0), 393);
|
||||||
map.put(new MinecraftVersion(1, 13, 1), 401);
|
map.put(new MinecraftVersion(1, 13, 1), 401);
|
||||||
|
map.put(new MinecraftVersion(1, 13, 2), 404);
|
||||||
|
map.put(new MinecraftVersion(1, 14, 0), 477);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,6 +44,11 @@ public class MinecraftVersion implements Comparable<MinecraftVersion>, Serializa
|
|||||||
*/
|
*/
|
||||||
private static final Pattern VERSION_PATTERN = Pattern.compile(".*\\(.*MC.\\s*([a-zA-z0-9\\-\\.]+)\\s*\\)");
|
private static final Pattern VERSION_PATTERN = Pattern.compile(".*\\(.*MC.\\s*([a-zA-z0-9\\-\\.]+)\\s*\\)");
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Version 1.14 - village and pillage update.
|
||||||
|
*/
|
||||||
|
public static final MinecraftVersion VILLAGE_UPDATE = new MinecraftVersion("1.14");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Version 1.13 - update aquatic.
|
* Version 1.13 - update aquatic.
|
||||||
*/
|
*/
|
||||||
|
@ -1,9 +1,5 @@
|
|||||||
package com.comphenix.protocol.wrappers;
|
package com.comphenix.protocol.wrappers;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import com.comphenix.protocol.PacketType;
|
import com.comphenix.protocol.PacketType;
|
||||||
import com.comphenix.protocol.PacketType.Protocol;
|
import com.comphenix.protocol.PacketType.Protocol;
|
||||||
import com.comphenix.protocol.ProtocolLogger;
|
import com.comphenix.protocol.ProtocolLogger;
|
||||||
@ -12,9 +8,12 @@ import com.comphenix.protocol.reflect.FuzzyReflection;
|
|||||||
import com.comphenix.protocol.utility.MinecraftReflection;
|
import com.comphenix.protocol.utility.MinecraftReflection;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
|
|
||||||
import org.bukkit.EntityEffect;
|
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a generic enum converter.
|
* Represents a generic enum converter.
|
||||||
* @author Kristian
|
* @author Kristian
|
||||||
@ -387,7 +386,13 @@ public abstract class EnumWrappers {
|
|||||||
PROTOCOL_CLASS = getEnum(PacketType.Handshake.Client.SET_PROTOCOL.getPacketClass(), 0);
|
PROTOCOL_CLASS = getEnum(PacketType.Handshake.Client.SET_PROTOCOL.getPacketClass(), 0);
|
||||||
CLIENT_COMMAND_CLASS = getEnum(PacketType.Play.Client.CLIENT_COMMAND.getPacketClass(), 0);
|
CLIENT_COMMAND_CLASS = getEnum(PacketType.Play.Client.CLIENT_COMMAND.getPacketClass(), 0);
|
||||||
CHAT_VISIBILITY_CLASS = getEnum(PacketType.Play.Client.SETTINGS.getPacketClass(), 0);
|
CHAT_VISIBILITY_CLASS = getEnum(PacketType.Play.Client.SETTINGS.getPacketClass(), 0);
|
||||||
|
|
||||||
|
try {
|
||||||
|
DIFFICULTY_CLASS = getEnum(PacketType.Play.Server.SERVER_DIFFICULTY.getPacketClass(), 0);
|
||||||
|
} catch (Exception ex) {
|
||||||
DIFFICULTY_CLASS = getEnum(PacketType.Play.Server.LOGIN.getPacketClass(), 1);
|
DIFFICULTY_CLASS = getEnum(PacketType.Play.Server.LOGIN.getPacketClass(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
ENTITY_USE_ACTION_CLASS = getEnum(PacketType.Play.Client.USE_ENTITY.getPacketClass(), 0);
|
ENTITY_USE_ACTION_CLASS = getEnum(PacketType.Play.Client.USE_ENTITY.getPacketClass(), 0);
|
||||||
GAMEMODE_CLASS = getEnum(PacketType.Play.Server.LOGIN.getPacketClass(), 0);
|
GAMEMODE_CLASS = getEnum(PacketType.Play.Server.LOGIN.getPacketClass(), 0);
|
||||||
RESOURCE_PACK_STATUS_CLASS = getEnum(PacketType.Play.Client.RESOURCE_PACK_STATUS.getPacketClass(), 0);
|
RESOURCE_PACK_STATUS_CLASS = getEnum(PacketType.Play.Client.RESOURCE_PACK_STATUS.getPacketClass(), 0);
|
||||||
@ -447,9 +452,9 @@ public abstract class EnumWrappers {
|
|||||||
try {
|
try {
|
||||||
return FuzzyReflection.fromClass(clazz, true).getFieldListByType(Enum.class).get(index).getType();
|
return FuzzyReflection.fromClass(clazz, true).getFieldListByType(Enum.class).get(index).getType();
|
||||||
} catch (Throwable ex) {
|
} catch (Throwable ex) {
|
||||||
/* if (ProtocolLogger.isDebugEnabled()) {
|
if (ProtocolLogger.isDebugEnabled()) {
|
||||||
ex.printStackTrace();
|
// ex.printStackTrace();
|
||||||
} */
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -3,12 +3,11 @@
|
|||||||
*/
|
*/
|
||||||
package com.comphenix.protocol.wrappers;
|
package com.comphenix.protocol.wrappers;
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
|
||||||
|
|
||||||
import com.comphenix.protocol.reflect.EquivalentConverter;
|
import com.comphenix.protocol.reflect.EquivalentConverter;
|
||||||
import com.comphenix.protocol.reflect.StructureModifier;
|
import com.comphenix.protocol.reflect.StructureModifier;
|
||||||
import com.comphenix.protocol.utility.MinecraftReflection;
|
import com.comphenix.protocol.utility.MinecraftReflection;
|
||||||
import com.comphenix.protocol.wrappers.BukkitConverters.IgnoreNullConverter;
|
|
||||||
|
import java.lang.reflect.Constructor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author dmulloy2
|
* @author dmulloy2
|
||||||
|
@ -5,10 +5,12 @@ import java.util.UUID;
|
|||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
import com.comphenix.protocol.reflect.EquivalentConverter;
|
||||||
import com.comphenix.protocol.reflect.FuzzyReflection;
|
import com.comphenix.protocol.reflect.FuzzyReflection;
|
||||||
import com.comphenix.protocol.reflect.StructureModifier;
|
import com.comphenix.protocol.reflect.StructureModifier;
|
||||||
import com.comphenix.protocol.reflect.fuzzy.FuzzyMethodContract;
|
import com.comphenix.protocol.reflect.fuzzy.FuzzyMethodContract;
|
||||||
import com.comphenix.protocol.utility.MinecraftReflection;
|
import com.comphenix.protocol.utility.MinecraftReflection;
|
||||||
|
import com.comphenix.protocol.utility.MinecraftVersion;
|
||||||
import com.google.common.base.Objects;
|
import com.google.common.base.Objects;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
|
|
||||||
@ -20,6 +22,49 @@ import com.google.common.base.Preconditions;
|
|||||||
* @author Kristian
|
* @author Kristian
|
||||||
*/
|
*/
|
||||||
public class WrappedAttributeModifier extends AbstractWrapper {
|
public class WrappedAttributeModifier extends AbstractWrapper {
|
||||||
|
private static final Class<?> OPERATION_CLASS = MinecraftReflection.getMinecraftClass("AttributeModifier$Operation");
|
||||||
|
private static final boolean OPERATION_ENUM = MinecraftVersion.atOrAbove(MinecraftVersion.VILLAGE_UPDATE);
|
||||||
|
private static final EquivalentConverter<Operation> OPERATION_CONVERTER = new IndexedEnumConverter<>(Operation.class, OPERATION_CLASS);
|
||||||
|
|
||||||
|
private static class IndexedEnumConverter<T extends Enum<T>> implements EquivalentConverter<T> {
|
||||||
|
private Class<T> specificClass;
|
||||||
|
private Class<?> genericClass;
|
||||||
|
|
||||||
|
private IndexedEnumConverter(Class<T> specificClass, Class<?> genericClass) {
|
||||||
|
this.specificClass = specificClass;
|
||||||
|
this.genericClass = genericClass;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getGeneric(T specific) {
|
||||||
|
int ordinal = specific.ordinal();
|
||||||
|
for (Object elem : genericClass.getEnumConstants()) {
|
||||||
|
if (((Enum<?>) elem).ordinal() == ordinal) {
|
||||||
|
return elem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T getSpecific(Object generic) {
|
||||||
|
int ordinal = ((Enum<?>) generic).ordinal();
|
||||||
|
for (T elem : specificClass.getEnumConstants()) {
|
||||||
|
if (elem.ordinal() == ordinal) {
|
||||||
|
return elem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<T> getSpecificType() {
|
||||||
|
return specificClass;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the different modifier operations.
|
* Represents the different modifier operations.
|
||||||
* <p>
|
* <p>
|
||||||
@ -137,7 +182,12 @@ public class WrappedAttributeModifier extends AbstractWrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.amount = (Double) modifier.withType(double.class).read(0);
|
this.amount = (Double) modifier.withType(double.class).read(0);
|
||||||
this.operation = Operation.fromId((Integer) modifier.withType(int.class).read(0));
|
|
||||||
|
if (OPERATION_ENUM) {
|
||||||
|
this.operation = modifier.withType(OPERATION_CLASS, OPERATION_CONVERTER).readSafely(0);
|
||||||
|
} else {
|
||||||
|
this.operation = Operation.fromId((Integer) modifier.withType(int.class).readSafely(0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -374,16 +424,7 @@ public class WrappedAttributeModifier extends AbstractWrapper {
|
|||||||
|
|
||||||
// Retrieve the correct constructor
|
// Retrieve the correct constructor
|
||||||
if (ATTRIBUTE_MODIFIER_CONSTRUCTOR == null) {
|
if (ATTRIBUTE_MODIFIER_CONSTRUCTOR == null) {
|
||||||
ATTRIBUTE_MODIFIER_CONSTRUCTOR = FuzzyReflection.fromClass(
|
ATTRIBUTE_MODIFIER_CONSTRUCTOR = getConstructor();
|
||||||
MinecraftReflection.getAttributeModifierClass(), true).getConstructor(
|
|
||||||
FuzzyMethodContract.newBuilder().parameterCount(4).
|
|
||||||
parameterDerivedOf(UUID.class, 0).
|
|
||||||
parameterExactType(String.class, 1).
|
|
||||||
parameterExactType(double.class, 2).
|
|
||||||
parameterExactType(int.class, 3).build());
|
|
||||||
|
|
||||||
// Just in case
|
|
||||||
ATTRIBUTE_MODIFIER_CONSTRUCTOR.setAccessible(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Construct it
|
// Construct it
|
||||||
@ -391,7 +432,7 @@ public class WrappedAttributeModifier extends AbstractWrapper {
|
|||||||
// No need to read these values with a modifier
|
// No need to read these values with a modifier
|
||||||
return new WrappedAttributeModifier(
|
return new WrappedAttributeModifier(
|
||||||
ATTRIBUTE_MODIFIER_CONSTRUCTOR.newInstance(
|
ATTRIBUTE_MODIFIER_CONSTRUCTOR.newInstance(
|
||||||
uuid, name, amount, operation.getId()),
|
uuid, name, amount, getOperationParam(operation)),
|
||||||
uuid, name, amount, operation
|
uuid, name, amount, operation
|
||||||
);
|
);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -399,4 +440,27 @@ public class WrappedAttributeModifier extends AbstractWrapper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Object getOperationParam(Operation operation) {
|
||||||
|
return OPERATION_ENUM ? OPERATION_CONVERTER.getGeneric(operation) : operation.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Constructor<?> getConstructor() {
|
||||||
|
FuzzyMethodContract.Builder builder = FuzzyMethodContract
|
||||||
|
.newBuilder()
|
||||||
|
.parameterCount(4)
|
||||||
|
.parameterDerivedOf(UUID.class, 0)
|
||||||
|
.parameterExactType(String.class, 1)
|
||||||
|
.parameterExactType(double.class, 2);
|
||||||
|
if (OPERATION_ENUM) {
|
||||||
|
builder = builder.parameterExactType(OPERATION_CLASS, 3);
|
||||||
|
} else {
|
||||||
|
builder = builder.parameterExactType(int.class, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
Constructor<?> ret = FuzzyReflection.fromClass(MinecraftReflection.getAttributeModifierClass(), true)
|
||||||
|
.getConstructor(builder.build());
|
||||||
|
ret.setAccessible(true);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,9 @@ import com.google.common.base.Preconditions;
|
|||||||
/**
|
/**
|
||||||
* Represents a wrapper for the internal IntHashMap in Minecraft.
|
* Represents a wrapper for the internal IntHashMap in Minecraft.
|
||||||
* @author Kristian
|
* @author Kristian
|
||||||
|
* @deprecated IntHashMap no longer exists
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public class WrappedIntHashMap extends AbstractWrapper {
|
public class WrappedIntHashMap extends AbstractWrapper {
|
||||||
private static Method PUT_METHOD;
|
private static Method PUT_METHOD;
|
||||||
private static Method GET_METHOD;
|
private static Method GET_METHOD;
|
||||||
|
@ -4,16 +4,17 @@ import com.comphenix.protocol.utility.Constants;
|
|||||||
import com.comphenix.protocol.utility.MinecraftReflection;
|
import com.comphenix.protocol.utility.MinecraftReflection;
|
||||||
import com.comphenix.protocol.utility.MinecraftVersion;
|
import com.comphenix.protocol.utility.MinecraftVersion;
|
||||||
|
|
||||||
import net.minecraft.server.v1_13_R2.DispenserRegistry;
|
import net.minecraft.server.v1_14_R1.DispenserRegistry;
|
||||||
|
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
import org.bukkit.craftbukkit.v1_13_R2.CraftServer;
|
import org.bukkit.craftbukkit.v1_14_R1.CraftServer;
|
||||||
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemFactory;
|
import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftItemFactory;
|
||||||
import org.bukkit.craftbukkit.v1_13_R2.util.Versioning;
|
import org.bukkit.craftbukkit.v1_14_R1.util.Versioning;
|
||||||
|
|
||||||
import static org.mockito.Mockito.*;
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to ensure that ProtocolLib and Bukkit is prepared to be tested.
|
* Used to ensure that ProtocolLib and Bukkit is prepared to be tested.
|
||||||
@ -55,7 +56,7 @@ public class BukkitInitialization {
|
|||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
DispenserRegistry.c(); // Basically registers everything
|
DispenserRegistry.init();
|
||||||
|
|
||||||
// Mock the server object
|
// Mock the server object
|
||||||
Server mockedServer = mock(Server.class);
|
Server mockedServer = mock(Server.class);
|
||||||
@ -88,7 +89,7 @@ public class BukkitInitialization {
|
|||||||
}
|
}
|
||||||
|
|
||||||
MinecraftReflection.setMinecraftPackage(Constants.NMS, Constants.OBC);
|
MinecraftReflection.setMinecraftPackage(Constants.NMS, Constants.OBC);
|
||||||
MinecraftVersion.setCurrentVersion(MinecraftVersion.AQUATIC_UPDATE);
|
MinecraftVersion.setCurrentVersion(MinecraftVersion.VILLAGE_UPDATE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -17,6 +17,8 @@
|
|||||||
package com.comphenix.protocol;
|
package com.comphenix.protocol;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
@ -24,11 +26,14 @@ import java.util.TreeMap;
|
|||||||
import com.comphenix.protocol.PacketType.Protocol;
|
import com.comphenix.protocol.PacketType.Protocol;
|
||||||
import com.comphenix.protocol.PacketType.Sender;
|
import com.comphenix.protocol.PacketType.Sender;
|
||||||
import com.comphenix.protocol.injector.packet.PacketRegistry;
|
import com.comphenix.protocol.injector.packet.PacketRegistry;
|
||||||
|
import com.comphenix.protocol.utility.Constants;
|
||||||
|
import com.comphenix.protocol.utility.MinecraftReflection;
|
||||||
|
|
||||||
import net.minecraft.server.v1_13_R2.EnumProtocol;
|
import net.minecraft.server.v1_14_R1.EnumProtocol;
|
||||||
import net.minecraft.server.v1_13_R2.EnumProtocolDirection;
|
import net.minecraft.server.v1_14_R1.EnumProtocolDirection;
|
||||||
import net.minecraft.server.v1_13_R2.PacketLoginInStart;
|
import net.minecraft.server.v1_14_R1.PacketLoginInStart;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.WordUtils;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
@ -39,6 +44,117 @@ import static org.junit.Assert.*;
|
|||||||
*/
|
*/
|
||||||
public class PacketTypeTest {
|
public class PacketTypeTest {
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
MinecraftReflection.setMinecraftPackage(Constants.NMS, Constants.OBC);
|
||||||
|
EnumProtocol[] protocols = EnumProtocol.values();
|
||||||
|
for (EnumProtocol protocol : protocols) {
|
||||||
|
System.out.println(WordUtils.capitalize(protocol.name().toLowerCase()));
|
||||||
|
|
||||||
|
Field field = EnumProtocol.class.getDeclaredField("h");
|
||||||
|
field.setAccessible(true);
|
||||||
|
|
||||||
|
Map<EnumProtocolDirection, Map<Integer, Class<?>>> map = (Map<EnumProtocolDirection, Map<Integer, Class<?>>>) field.get(protocol);
|
||||||
|
for (Entry<EnumProtocolDirection, Map<Integer, Class<?>>> entry : map.entrySet()) {
|
||||||
|
Map<Integer, Class<?>> treeMap = new TreeMap<Integer, Class<?>>(entry.getValue());
|
||||||
|
System.out.println(" " + entry.getKey());
|
||||||
|
for (Entry<Integer, Class<?>> entry1 : treeMap.entrySet()) {
|
||||||
|
System.out.println(generateNewType(entry1.getKey(), entry1.getValue()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String formatHex(int dec) {
|
||||||
|
if (dec < 0) {
|
||||||
|
return "-1";
|
||||||
|
}
|
||||||
|
|
||||||
|
String hex = Integer.toHexString(dec).toUpperCase();
|
||||||
|
return "0x" + (hex.length() < 2 ? "0" : "") + hex;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<String> splitOnCaps(String string) {
|
||||||
|
List<String> list = new ArrayList<>();
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
char[] chars = string.toCharArray();
|
||||||
|
for (int i = 0; i < chars.length; i++) {
|
||||||
|
char c = chars[i];
|
||||||
|
if (i != 0 && Character.isUpperCase(c)) {
|
||||||
|
list.add(builder.toString());
|
||||||
|
builder = new StringBuilder();
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.append(c);
|
||||||
|
}
|
||||||
|
|
||||||
|
list.add(builder.toString());
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String generateNewType(int packetId, Class<?> clazz) {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
builder.append("\t\t\t");
|
||||||
|
builder.append("public static final PacketType ");
|
||||||
|
|
||||||
|
StringBuilder nameBuilder = new StringBuilder();
|
||||||
|
List<String> split = splitOnCaps(clazz.getSimpleName());
|
||||||
|
|
||||||
|
// We're not interested in the first 3
|
||||||
|
for (int i = 3; i < split.size(); i++) {
|
||||||
|
nameBuilder.append(split.get(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
String className = nameBuilder.toString();
|
||||||
|
|
||||||
|
// Format it like SET_PROTOCOL
|
||||||
|
StringBuilder fieldName = new StringBuilder();
|
||||||
|
char[] chars = className.toCharArray();
|
||||||
|
for (int i = 0; i < chars.length; i++) {
|
||||||
|
char c = chars[i];
|
||||||
|
if (i != 0 && Character.isUpperCase(c)) {
|
||||||
|
fieldName.append("_");
|
||||||
|
}
|
||||||
|
fieldName.append(Character.toUpperCase(c));
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.append(fieldName.toString().replace("N_B_T", "NBT"));
|
||||||
|
builder.append(" = ");
|
||||||
|
|
||||||
|
// Add spacing
|
||||||
|
if (builder.length() > 65) {
|
||||||
|
builder.append("\n");
|
||||||
|
} else {
|
||||||
|
while (builder.length() < 65) {
|
||||||
|
builder.append(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
builder.append("new ");
|
||||||
|
builder.append("PacketType(PROTOCOL, SENDER, ");
|
||||||
|
|
||||||
|
int legacy = -1;
|
||||||
|
|
||||||
|
try {
|
||||||
|
PacketType type = PacketType.fromClass(clazz);
|
||||||
|
if (type != null) {
|
||||||
|
legacy = type.getCurrentId();
|
||||||
|
}
|
||||||
|
} catch (Throwable ex) {
|
||||||
|
// ex.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.append(formatHex(packetId));
|
||||||
|
builder.append(", ");
|
||||||
|
builder.append(formatHex(legacy));
|
||||||
|
builder.append(", ");
|
||||||
|
if (legacy == -1) {
|
||||||
|
builder.append(" ");
|
||||||
|
}
|
||||||
|
builder.append("\"").append(className).append("\"");
|
||||||
|
builder.append(");");
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void initializeReflection() {
|
public static void initializeReflection() {
|
||||||
BukkitInitialization.initializePackage();
|
BukkitInitialization.initializePackage();
|
||||||
|
@ -16,10 +16,6 @@
|
|||||||
*/
|
*/
|
||||||
package com.comphenix.protocol.events;
|
package com.comphenix.protocol.events;
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
import com.comphenix.protocol.BukkitInitialization;
|
import com.comphenix.protocol.BukkitInitialization;
|
||||||
import com.comphenix.protocol.PacketType;
|
import com.comphenix.protocol.PacketType;
|
||||||
import com.comphenix.protocol.injector.PacketConstructor;
|
import com.comphenix.protocol.injector.PacketConstructor;
|
||||||
@ -36,11 +32,11 @@ import com.comphenix.protocol.wrappers.nbt.NbtCompound;
|
|||||||
import com.comphenix.protocol.wrappers.nbt.NbtFactory;
|
import com.comphenix.protocol.wrappers.nbt.NbtFactory;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
|
||||||
import net.minecraft.server.v1_13_R2.*;
|
import net.minecraft.server.v1_14_R1.*;
|
||||||
import net.minecraft.server.v1_13_R2.PacketPlayOutUpdateAttributes.AttributeSnapshot;
|
import net.minecraft.server.v1_14_R1.PacketPlayOutUpdateAttributes.AttributeSnapshot;
|
||||||
|
|
||||||
import org.apache.commons.lang.SerializationUtils;
|
import org.apache.commons.lang.SerializationUtils;
|
||||||
import org.apache.commons.lang3.builder.EqualsBuilder;
|
import org.apache.commons.lang.builder.EqualsBuilder;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
@ -54,6 +50,10 @@ import org.junit.Test;
|
|||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.powermock.core.classloader.annotations.PowerMockIgnore;
|
import org.powermock.core.classloader.annotations.PowerMockIgnore;
|
||||||
|
|
||||||
|
import java.lang.reflect.Array;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
import static com.comphenix.protocol.utility.TestUtils.*;
|
import static com.comphenix.protocol.utility.TestUtils.*;
|
||||||
import static org.junit.Assert.*;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
@ -359,7 +359,7 @@ public class PacketContainerTest {
|
|||||||
|
|
||||||
// Initialize some test data
|
// Initialize some test data
|
||||||
List<AttributeModifier> modifiers = Lists.newArrayList(
|
List<AttributeModifier> modifiers = Lists.newArrayList(
|
||||||
new AttributeModifier(UUID.randomUUID(), "Unknown synced attribute modifier", 10, 0));
|
new AttributeModifier(UUID.randomUUID(), "Unknown synced attribute modifier", 10, AttributeModifier.Operation.ADDITION));
|
||||||
|
|
||||||
// Obtain an AttributeSnapshot instance. This is complicated by the fact that AttributeSnapshots
|
// Obtain an AttributeSnapshot instance. This is complicated by the fact that AttributeSnapshots
|
||||||
// are inner classes (which is ultimately pointless because AttributeSnapshots don't access any
|
// are inner classes (which is ultimately pointless because AttributeSnapshots don't access any
|
||||||
@ -508,20 +508,13 @@ public class PacketContainerTest {
|
|||||||
public void testDeepClone() {
|
public void testDeepClone() {
|
||||||
// Try constructing all the packets
|
// Try constructing all the packets
|
||||||
for (PacketType type : PacketType.values()) {
|
for (PacketType type : PacketType.values()) {
|
||||||
if (BLACKLISTED.contains(type) || type.isDeprecated() || type.name().contains("CUSTOM_PAYLOAD")) {
|
if (BLACKLISTED.contains(type) || type.isDeprecated() || type.name().contains("CUSTOM_PAYLOAD") || !type.isSupported()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Whether or not this packet has been registered
|
|
||||||
boolean registered = type.isSupported();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
PacketContainer constructed = new PacketContainer(type);
|
PacketContainer constructed = new PacketContainer(type);
|
||||||
|
|
||||||
if (!registered) {
|
|
||||||
fail("Expected IllegalArgumentException(Packet " + type + " not registered)");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize default values
|
// Initialize default values
|
||||||
constructed.getModifier().writeDefaults();
|
constructed.getModifier().writeDefaults();
|
||||||
|
|
||||||
|
@ -6,8 +6,8 @@ import static org.junit.Assert.assertEquals;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.server.v1_13_R2.ItemStack;
|
import net.minecraft.server.v1_14_R1.ItemStack;
|
||||||
import net.minecraft.server.v1_13_R2.NonNullList;
|
import net.minecraft.server.v1_14_R1.NonNullList;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@ -6,22 +6,22 @@ import static org.mockito.Mockito.mock;
|
|||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import net.minecraft.server.v1_13_R2.ChatComponentText;
|
import net.minecraft.server.v1_14_R1.ChatComponentText;
|
||||||
import net.minecraft.server.v1_13_R2.ChunkCoordIntPair;
|
import net.minecraft.server.v1_14_R1.ChunkCoordIntPair;
|
||||||
import net.minecraft.server.v1_13_R2.DataWatcher;
|
import net.minecraft.server.v1_14_R1.DataWatcher;
|
||||||
import net.minecraft.server.v1_13_R2.IBlockData;
|
import net.minecraft.server.v1_14_R1.IBlockData;
|
||||||
import net.minecraft.server.v1_13_R2.IChatBaseComponent;
|
import net.minecraft.server.v1_14_R1.IChatBaseComponent;
|
||||||
import net.minecraft.server.v1_13_R2.IChatBaseComponent.ChatSerializer;
|
import net.minecraft.server.v1_14_R1.IChatBaseComponent.ChatSerializer;
|
||||||
import net.minecraft.server.v1_13_R2.NBTCompressedStreamTools;
|
import net.minecraft.server.v1_14_R1.NBTCompressedStreamTools;
|
||||||
import net.minecraft.server.v1_13_R2.PacketPlayOutUpdateAttributes.AttributeSnapshot;
|
import net.minecraft.server.v1_14_R1.PacketPlayOutUpdateAttributes.AttributeSnapshot;
|
||||||
import net.minecraft.server.v1_13_R2.PlayerConnection;
|
import net.minecraft.server.v1_14_R1.PlayerConnection;
|
||||||
import net.minecraft.server.v1_13_R2.ServerPing;
|
import net.minecraft.server.v1_14_R1.ServerPing;
|
||||||
import net.minecraft.server.v1_13_R2.ServerPing.ServerData;
|
import net.minecraft.server.v1_14_R1.ServerPing.ServerData;
|
||||||
import net.minecraft.server.v1_13_R2.ServerPing.ServerPingPlayerSample;
|
import net.minecraft.server.v1_14_R1.ServerPing.ServerPingPlayerSample;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack;
|
import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftItemStack;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.junit.AfterClass;
|
import org.junit.AfterClass;
|
||||||
|
@ -1,13 +1,9 @@
|
|||||||
package com.comphenix.protocol.utility;
|
package com.comphenix.protocol.utility;
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
|
|
||||||
import com.comphenix.protocol.BukkitInitialization;
|
import com.comphenix.protocol.BukkitInitialization;
|
||||||
import com.comphenix.protocol.wrappers.nbt.NbtCompound;
|
import com.comphenix.protocol.wrappers.nbt.NbtCompound;
|
||||||
import com.comphenix.protocol.wrappers.nbt.NbtFactory;
|
import com.comphenix.protocol.wrappers.nbt.NbtFactory;
|
||||||
|
|
||||||
import net.minecraft.server.v1_13_R2.IntHashMap;
|
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@ -17,6 +13,8 @@ import org.junit.Test;
|
|||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.powermock.core.classloader.annotations.PowerMockIgnore;
|
import org.powermock.core.classloader.annotations.PowerMockIgnore;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
|
||||||
import static com.comphenix.protocol.utility.TestUtils.assertItemsEqual;
|
import static com.comphenix.protocol.utility.TestUtils.assertItemsEqual;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
@ -30,10 +28,10 @@ public class StreamSerializerTest {
|
|||||||
BukkitInitialization.initializeItemMeta();
|
BukkitInitialization.initializeItemMeta();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
/*@Test
|
||||||
public void testMinecraftReflection() {
|
public void testMinecraftReflection() {
|
||||||
assertEquals(IntHashMap.class, MinecraftReflection.getIntHashMapClass());
|
assertEquals(IntHashMap.class, MinecraftReflection.getIntHashMapClass());
|
||||||
}
|
}*/
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testStrings() throws IOException {
|
public void testStrings() throws IOException {
|
||||||
|
@ -16,14 +16,14 @@ public class ChunkCoordIntPairTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test() {
|
public void test() {
|
||||||
net.minecraft.server.v1_13_R2.ChunkCoordIntPair pair = new net.minecraft.server.v1_13_R2.ChunkCoordIntPair(1, 2);
|
net.minecraft.server.v1_14_R1.ChunkCoordIntPair pair = new net.minecraft.server.v1_14_R1.ChunkCoordIntPair(1, 2);
|
||||||
ChunkCoordIntPair specific = ChunkCoordIntPair.getConverter().getSpecific(pair);
|
ChunkCoordIntPair specific = ChunkCoordIntPair.getConverter().getSpecific(pair);
|
||||||
|
|
||||||
assertEquals(1, specific.getChunkX());
|
assertEquals(1, specific.getChunkX());
|
||||||
assertEquals(2, specific.getChunkZ());
|
assertEquals(2, specific.getChunkZ());
|
||||||
|
|
||||||
net.minecraft.server.v1_13_R2.ChunkCoordIntPair roundtrip =
|
net.minecraft.server.v1_14_R1.ChunkCoordIntPair roundtrip =
|
||||||
(net.minecraft.server.v1_13_R2.ChunkCoordIntPair) ChunkCoordIntPair.getConverter().
|
(net.minecraft.server.v1_14_R1.ChunkCoordIntPair) ChunkCoordIntPair.getConverter().
|
||||||
getGeneric(specific);
|
getGeneric(specific);
|
||||||
|
|
||||||
assertEquals(1, roundtrip.x);
|
assertEquals(1, roundtrip.x);
|
||||||
|
@ -2,12 +2,12 @@ package com.comphenix.protocol.wrappers;
|
|||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
import net.minecraft.server.v1_13_R2.EntityHuman.EnumChatVisibility;
|
import net.minecraft.server.v1_14_R1.EnumChatVisibility;
|
||||||
import net.minecraft.server.v1_13_R2.EnumDifficulty;
|
import net.minecraft.server.v1_14_R1.EnumDifficulty;
|
||||||
import net.minecraft.server.v1_13_R2.EnumGamemode;
|
import net.minecraft.server.v1_14_R1.EnumGamemode;
|
||||||
import net.minecraft.server.v1_13_R2.EnumProtocol;
|
import net.minecraft.server.v1_14_R1.EnumProtocol;
|
||||||
import net.minecraft.server.v1_13_R2.PacketPlayInClientCommand.EnumClientCommand;
|
import net.minecraft.server.v1_14_R1.PacketPlayInClientCommand.EnumClientCommand;
|
||||||
import net.minecraft.server.v1_13_R2.PacketPlayInUseEntity.EnumEntityUseAction;
|
import net.minecraft.server.v1_14_R1.PacketPlayInUseEntity.EnumEntityUseAction;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@ -6,9 +6,9 @@ import static org.junit.Assert.assertTrue;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.server.v1_13_R2.AttributeModifier;
|
import net.minecraft.server.v1_14_R1.AttributeModifier;
|
||||||
import net.minecraft.server.v1_13_R2.PacketPlayOutUpdateAttributes;
|
import net.minecraft.server.v1_14_R1.PacketPlayOutUpdateAttributes;
|
||||||
import net.minecraft.server.v1_13_R2.PacketPlayOutUpdateAttributes.AttributeSnapshot;
|
import net.minecraft.server.v1_14_R1.PacketPlayOutUpdateAttributes.AttributeSnapshot;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
@ -90,6 +90,7 @@ public class WrappedAttributeTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private AttributeModifier getModifierCopy(WrappedAttributeModifier modifier) {
|
private AttributeModifier getModifierCopy(WrappedAttributeModifier modifier) {
|
||||||
return new AttributeModifier(modifier.getUUID(), modifier.getName(), modifier.getAmount(), modifier.getOperation().getId());
|
AttributeModifier.Operation operation = AttributeModifier.Operation.values()[modifier.getOperation().getId()];
|
||||||
|
return new AttributeModifier(modifier.getUUID(), modifier.getName(), modifier.getAmount(), operation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,14 +18,14 @@ package com.comphenix.protocol.wrappers;
|
|||||||
|
|
||||||
import com.comphenix.protocol.BukkitInitialization;
|
import com.comphenix.protocol.BukkitInitialization;
|
||||||
|
|
||||||
import net.minecraft.server.v1_13_R2.IBlockData;
|
import net.minecraft.server.v1_14_R1.IBlockData;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.block.data.type.GlassPane;
|
import org.bukkit.block.data.type.GlassPane;
|
||||||
import org.bukkit.craftbukkit.v1_13_R2.block.data.CraftBlockData;
|
import org.bukkit.craftbukkit.v1_14_R1.block.data.CraftBlockData;
|
||||||
import org.bukkit.craftbukkit.v1_13_R2.block.impl.CraftGlassPane;
|
import org.bukkit.craftbukkit.v1_14_R1.block.impl.CraftStainedGlassPane;
|
||||||
import org.bukkit.craftbukkit.v1_13_R2.util.CraftMagicNumbers;
|
import org.bukkit.craftbukkit.v1_14_R1.util.CraftMagicNumbers;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ public class WrappedBlockDataTest {
|
|||||||
WrappedBlockData wrapper = WrappedBlockData.createData(data);
|
WrappedBlockData wrapper = WrappedBlockData.createData(data);
|
||||||
assertEquals(wrapper.getType(), Material.CYAN_STAINED_GLASS_PANE);
|
assertEquals(wrapper.getType(), Material.CYAN_STAINED_GLASS_PANE);
|
||||||
|
|
||||||
GlassPane back = new CraftGlassPane((IBlockData) wrapper.getHandle());
|
GlassPane back = new CraftStainedGlassPane((IBlockData) wrapper.getHandle());
|
||||||
assertEquals(back.hasFace(BlockFace.EAST), data.hasFace(BlockFace.EAST));
|
assertEquals(back.hasFace(BlockFace.EAST), data.hasFace(BlockFace.EAST));
|
||||||
assertEquals(back.hasFace(BlockFace.SOUTH), data.hasFace(BlockFace.SOUTH));
|
assertEquals(back.hasFace(BlockFace.SOUTH), data.hasFace(BlockFace.SOUTH));
|
||||||
}
|
}
|
||||||
|
@ -23,10 +23,10 @@ import com.comphenix.protocol.wrappers.WrappedDataWatcher.Registry;
|
|||||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher.Serializer;
|
import com.comphenix.protocol.wrappers.WrappedDataWatcher.Serializer;
|
||||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher.WrappedDataWatcherObject;
|
import com.comphenix.protocol.wrappers.WrappedDataWatcher.WrappedDataWatcherObject;
|
||||||
|
|
||||||
import net.minecraft.server.v1_13_R2.EntityEgg;
|
import net.minecraft.server.v1_14_R1.EntityEgg;
|
||||||
|
|
||||||
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftEgg;
|
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftEgg;
|
||||||
import org.bukkit.craftbukkit.v1_13_R2.entity.CraftEntity;
|
import org.bukkit.craftbukkit.v1_14_R1.entity.CraftEntity;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
@ -87,8 +87,8 @@ public class WrappedDataWatcherTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerializers() {
|
public void testSerializers() {
|
||||||
Serializer blockPos = Registry.get(net.minecraft.server.v1_13_R2.BlockPosition.class, false);
|
Serializer blockPos = Registry.get(net.minecraft.server.v1_14_R1.BlockPosition.class, false);
|
||||||
Serializer optionalBlockPos = Registry.get(net.minecraft.server.v1_13_R2.BlockPosition.class, true);
|
Serializer optionalBlockPos = Registry.get(net.minecraft.server.v1_14_R1.BlockPosition.class, true);
|
||||||
assertNotSame(blockPos, optionalBlockPos);
|
assertNotSame(blockPos, optionalBlockPos);
|
||||||
|
|
||||||
// assertNull(Registry.get(ItemStack.class, false));
|
// assertNull(Registry.get(ItemStack.class, false));
|
||||||
|
@ -10,12 +10,12 @@ import com.comphenix.protocol.BukkitInitialization;
|
|||||||
|
|
||||||
public class WrappedIntHashMapTest {
|
public class WrappedIntHashMapTest {
|
||||||
|
|
||||||
@BeforeClass
|
//@BeforeClass
|
||||||
public static void initializeBukkit() {
|
public static void initializeBukkit() {
|
||||||
BukkitInitialization.initializePackage();
|
BukkitInitialization.initializePackage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
//@Test
|
||||||
public void testIntMap() {
|
public void testIntMap() {
|
||||||
WrappedIntHashMap test = WrappedIntHashMap.newMap();
|
WrappedIntHashMap test = WrappedIntHashMap.newMap();
|
||||||
test.put(1, "hello");
|
test.put(1, "hello");
|
||||||
|
@ -4,6 +4,8 @@ import com.comphenix.protocol.BukkitInitialization;
|
|||||||
import com.comphenix.protocol.PacketType;
|
import com.comphenix.protocol.PacketType;
|
||||||
import com.comphenix.protocol.events.PacketContainer;
|
import com.comphenix.protocol.events.PacketContainer;
|
||||||
|
|
||||||
|
import net.minecraft.server.v1_14_R1.PacketPlayOutWorldParticles;
|
||||||
|
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Particle;
|
import org.bukkit.Particle;
|
||||||
@ -24,6 +26,8 @@ public class WrappedParticleTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testBlockData() {
|
public void testBlockData() {
|
||||||
PacketContainer packet = new PacketContainer(PacketType.Play.Server.WORLD_PARTICLES);
|
PacketContainer packet = new PacketContainer(PacketType.Play.Server.WORLD_PARTICLES);
|
||||||
|
System.out.println(packet.getType().getPacketClass());
|
||||||
|
System.out.println(PacketType.fromClass(PacketPlayOutWorldParticles.class));
|
||||||
WrappedParticle before = WrappedParticle.create(Particle.BLOCK_CRACK,
|
WrappedParticle before = WrappedParticle.create(Particle.BLOCK_CRACK,
|
||||||
WrappedBlockData.createData(Material.LAPIS_BLOCK));
|
WrappedBlockData.createData(Material.LAPIS_BLOCK));
|
||||||
packet.getNewParticles().write(0, before);
|
packet.getNewParticles().write(0, before);
|
||||||
|
@ -26,8 +26,8 @@ import java.io.DataInputStream;
|
|||||||
import java.io.DataOutput;
|
import java.io.DataOutput;
|
||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
|
|
||||||
import net.minecraft.server.v1_13_R2.ItemStack;
|
import net.minecraft.server.v1_14_R1.ItemStack;
|
||||||
import net.minecraft.server.v1_13_R2.Items;
|
import net.minecraft.server.v1_14_R1.Items;
|
||||||
|
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren