diff --git a/src/main/java/org/spacehq/mc/protocol/data/MagicValues.java b/src/main/java/org/spacehq/mc/protocol/data/MagicValues.java index d124567f..b198e8cf 100644 --- a/src/main/java/org/spacehq/mc/protocol/data/MagicValues.java +++ b/src/main/java/org/spacehq/mc/protocol/data/MagicValues.java @@ -265,6 +265,10 @@ public class MagicValues { register(Effect.HEALTH_BOOST, 21); register(Effect.ABSORPTION, 22); register(Effect.SATURATION, 23); + register(Effect.GLOWING, 24); + register(Effect.LEVITATION, 25); + register(Effect.LUCK, 26); + register(Effect.BAD_LUCK, 27); register(EntityStatus.HURT_OR_MINECART_SPAWNER_DELAY_RESET, 1); register(EntityStatus.LIVING_HURT, 2); diff --git a/src/main/java/org/spacehq/mc/protocol/data/game/entity/Effect.java b/src/main/java/org/spacehq/mc/protocol/data/game/entity/Effect.java index 4ca9f231..a8d02919 100644 --- a/src/main/java/org/spacehq/mc/protocol/data/game/entity/Effect.java +++ b/src/main/java/org/spacehq/mc/protocol/data/game/entity/Effect.java @@ -24,6 +24,10 @@ public enum Effect { WITHER_EFFECT, HEALTH_BOOST, ABSORPTION, - SATURATION; + SATURATION, + GLOWING, + LEVITATION, + LUCK, + BAD_LUCK; } diff --git a/src/main/java/org/spacehq/mc/protocol/packet/ingame/server/world/ServerBlockValuePacket.java b/src/main/java/org/spacehq/mc/protocol/packet/ingame/server/world/ServerBlockValuePacket.java index 914d0fdd..3a0f3446 100644 --- a/src/main/java/org/spacehq/mc/protocol/packet/ingame/server/world/ServerBlockValuePacket.java +++ b/src/main/java/org/spacehq/mc/protocol/packet/ingame/server/world/ServerBlockValuePacket.java @@ -68,32 +68,25 @@ public class ServerBlockValuePacket implements Packet { public void read(NetInput in) throws IOException { this.position = NetUtil.readPosition(in); int type = in.readUnsignedByte(); + int value = in.readUnsignedByte(); + this.blockId = in.readVarInt() & 0xFFF; + if(this.blockId == NOTE_BLOCK) { this.type = MagicValues.key(NoteBlockValueType.class, type); - } else if(this.blockId == STICKY_PISTON || this.blockId == PISTON) { - this.type = MagicValues.key(PistonValueType.class, type); - } else if(this.blockId == MOB_SPAWNER) { - this.type = MagicValues.key(MobSpawnerValueType.class, type); - } else if(this.blockId == CHEST || this.blockId == ENDER_CHEST || this.blockId == TRAPPED_CHEST) { - this.type = MagicValues.key(ChestValueType.class, type); - } else { - this.type = MagicValues.key(GenericBlockValueType.class, type); - } - - int value = in.readUnsignedByte(); - if(this.blockId == NOTE_BLOCK) { this.value = new NoteBlockValue(value); } else if(this.blockId == STICKY_PISTON || this.blockId == PISTON) { + this.type = MagicValues.key(PistonValueType.class, type); this.value = MagicValues.key(PistonValue.class, value); } else if(this.blockId == MOB_SPAWNER) { + this.type = MagicValues.key(MobSpawnerValueType.class, type); this.value = new MobSpawnerValue(); } else if(this.blockId == CHEST || this.blockId == ENDER_CHEST || this.blockId == TRAPPED_CHEST) { + this.type = MagicValues.key(ChestValueType.class, type); this.value = new ChestValue(value); } else { + this.type = MagicValues.key(GenericBlockValueType.class, type); this.value = new GenericBlockValue(value); } - - this.blockId = in.readVarInt() & 4095; } @Override