From f52c0497290f726de261008ad24d8889940a41ce Mon Sep 17 00:00:00 2001 From: Bixilon Date: Thu, 9 Jul 2020 23:46:45 +0200 Subject: [PATCH] all entity meta data (1.13) --- .../entities/meta/AbstractHorseMetaData.java | 9 ++++ .../meta/AbstractIllagerMetaData.java | 1 + .../entities/meta/AgeableMetaData.java | 1 + .../meta/AreaEffectCloudMetaData.java | 7 ++- .../entities/meta/ArmorStandMetaData.java | 11 +++- .../entities/meta/ArrowMetaData.java | 18 +++++++ .../datatypes/entities/meta/BatMetaData.java | 1 + .../entities/meta/BlazeMetaData.java | 1 + .../datatypes/entities/meta/BoatMetaData.java | 15 ++++++ .../entities/meta/ChestedHorseMetaData.java | 1 + .../meta/CommandBlockMinecartMetaData.java | 2 + .../entities/meta/CreeperMetaData.java | 4 ++ .../entities/meta/DolphinMetaData.java | 50 +++++++++++++++++ .../entities/meta/EnderCrystalMetaData.java | 2 + .../entities/meta/EnderDragonMetaData.java | 1 + .../entities/meta/EndermanMetaData.java | 2 + .../entities/meta/EntityMetaData.java | 53 +++++++++++------- .../entities/meta/FallingBlockMetaData.java | 1 + .../entities/meta/FireworkMetaData.java | 2 + .../datatypes/entities/meta/FishMetaData.java | 32 +++++++++++ .../entities/meta/FishingHookMetaData.java | 3 +- .../meta/FurnaceMinecartMetaData.java | 1 + .../entities/meta/GhastMetaData.java | 1 + .../entities/meta/GuardianMetaData.java | 2 + .../entities/meta/HorseMetaData.java | 3 ++ .../entities/meta/HumanMetaData.java | 5 ++ .../entities/meta/InsentientMetaData.java | 2 + .../entities/meta/IronGolemMetaData.java | 1 + .../entities/meta/ItemFrameMetaData.java | 2 + .../datatypes/entities/meta/ItemMetaData.java | 1 + .../entities/meta/LlamaMetaData.java | 3 ++ .../entities/meta/MinecartMetaData.java | 6 +++ .../datatypes/entities/meta/MobMetaData.java | 20 +++++-- .../entities/meta/OcelotMetaData.java | 1 + .../entities/meta/ParrotMetaData.java | 1 + .../entities/meta/PhantomMetaData.java | 34 ++++++++++++ .../datatypes/entities/meta/PigMetaData.java | 2 + .../entities/meta/PotionMetaData.java | 1 + .../entities/meta/PrimedTNTMetaData.java | 1 + .../entities/meta/PufferFishMetaData.java | 32 +++++++++++ .../entities/meta/RabbitMetaData.java | 54 +++++++++++++++---- .../entities/meta/SheepMetaData.java | 2 + .../entities/meta/ShulkerMetaData.java | 4 ++ .../entities/meta/SkeletonMetaData.java | 1 + .../entities/meta/SlimeMetaData.java | 1 + .../entities/meta/SnowGolemMetaData.java | 1 + .../entities/meta/SpellcasterMetaData.java | 1 + .../entities/meta/SpiderMetaData.java | 1 + .../entities/meta/TameableMetaData.java | 4 ++ .../entities/meta/TippedArrowMetaData.java | 2 + .../entities/meta/TridentMetaData.java | 33 ++++++++++++ .../entities/meta/TropicalFishMetaData.java | 32 +++++++++++ .../datatypes/entities/meta/VexMetaData.java | 1 + .../entities/meta/VillagerMetaData.java | 1 + .../entities/meta/WitchMetaData.java | 2 +- .../entities/meta/WitherMetaData.java | 4 ++ .../entities/meta/WitherSkullMetaData.java | 3 +- .../datatypes/entities/meta/WolfMetaData.java | 3 ++ .../entities/meta/ZombieMetaData.java | 10 ++++ .../entities/meta/ZombieVillagerMetaData.java | 5 ++ 60 files changed, 464 insertions(+), 37 deletions(-) create mode 100644 src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/DolphinMetaData.java create mode 100644 src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FishMetaData.java create mode 100644 src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PhantomMetaData.java create mode 100644 src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PufferFishMetaData.java create mode 100644 src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TridentMetaData.java create mode 100644 src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TropicalFishMetaData.java diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AbstractHorseMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AbstractHorseMetaData.java index f215007e5..2cca17620 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AbstractHorseMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AbstractHorseMetaData.java @@ -34,6 +34,8 @@ public class AbstractHorseMetaData extends AgeableMetaData { return BitByte.isBitMask((int) sets.get(12).getData(), 0x02); case VERSION_1_10: case VERSION_1_11_2: + case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x02); } return false; @@ -48,6 +50,8 @@ public class AbstractHorseMetaData extends AgeableMetaData { return BitByte.isBitMask((int) sets.get(12).getData(), 0x04); case VERSION_1_10: case VERSION_1_11_2: + case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x04); } return false; @@ -64,6 +68,7 @@ public class AbstractHorseMetaData extends AgeableMetaData { case VERSION_1_11_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x10); case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x08); } return false; @@ -80,6 +85,7 @@ public class AbstractHorseMetaData extends AgeableMetaData { case VERSION_1_11_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x20); case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x10); } return false; @@ -96,6 +102,7 @@ public class AbstractHorseMetaData extends AgeableMetaData { case VERSION_1_11_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x40); case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x20); } return false; @@ -112,6 +119,7 @@ public class AbstractHorseMetaData extends AgeableMetaData { case VERSION_1_11_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x80); case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x40); } return false; @@ -147,6 +155,7 @@ public class AbstractHorseMetaData extends AgeableMetaData { return (UUID) sets.get(16).getData(); case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (UUID) sets.get(14).getData(); } return null; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AbstractIllagerMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AbstractIllagerMetaData.java index 04bea698b..fad4ad7af 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AbstractIllagerMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AbstractIllagerMetaData.java @@ -26,6 +26,7 @@ public class AbstractIllagerMetaData extends MobMetaData { public boolean hasTarget() { switch (version) { case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(12).getData(), 0x01); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AgeableMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AgeableMetaData.java index c60bb0c6f..b84fdd68d 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AgeableMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AgeableMetaData.java @@ -43,6 +43,7 @@ public class AgeableMetaData extends InsentientMetaData { return (boolean) sets.get(12).getData(); case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return !(boolean) sets.get(12).getData(); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AreaEffectCloudMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AreaEffectCloudMetaData.java index bf0c3eed5..ac9dea09a 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AreaEffectCloudMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/AreaEffectCloudMetaData.java @@ -17,7 +17,7 @@ import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; import java.util.HashMap; -public class AreaEffectCloudMetaData extends MobMetaData { +public class AreaEffectCloudMetaData extends EntityMetaData { public AreaEffectCloudMetaData(HashMap sets, ProtocolVersion version) { super(sets, version); @@ -31,6 +31,7 @@ public class AreaEffectCloudMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (float) sets.get(6).getData(); } return 0.5F; @@ -43,6 +44,7 @@ public class AreaEffectCloudMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(7).getData(); } return 0; @@ -55,6 +57,7 @@ public class AreaEffectCloudMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(8).getData(); } return false; @@ -68,6 +71,8 @@ public class AreaEffectCloudMetaData extends MobMetaData { case VERSION_1_11_2: case VERSION_1_12_2: return Particles.byId((int) sets.get(9).getData()); + case VERSION_1_13_2: + return (Particles) sets.get(9).getData(); } return Particles.EFFECT; } diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ArmorStandMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ArmorStandMetaData.java index 1b4add747..5a51a9d9b 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ArmorStandMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ArmorStandMetaData.java @@ -33,6 +33,7 @@ public class ArmorStandMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(11).getData(), 0x01); } return false; @@ -44,7 +45,6 @@ public class ArmorStandMetaData extends MobMetaData { case VERSION_1_9_4: return BitByte.isBitMask((byte) sets.get(10).getData(), 0x02); case VERSION_1_10: - case VERSION_1_12_2: return BitByte.isBitMask((byte) sets.get(11).getData(), 0x02); default: return super.hasGravity(); @@ -59,6 +59,7 @@ public class ArmorStandMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(11).getData(), 0x04); } return true; @@ -72,6 +73,7 @@ public class ArmorStandMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(11).getData(), 0x08); } return false; @@ -85,6 +87,7 @@ public class ArmorStandMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(11).getData(), 0x10); } return false; @@ -98,6 +101,7 @@ public class ArmorStandMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (EntityRotation) sets.get(12).getData(); } return new EntityRotation(0, 0, 0); @@ -111,6 +115,7 @@ public class ArmorStandMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (EntityRotation) sets.get(13).getData(); } return new EntityRotation(0, 0, 0); @@ -124,6 +129,7 @@ public class ArmorStandMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (EntityRotation) sets.get(14).getData(); } return new EntityRotation(-10, 0, -10); @@ -137,6 +143,7 @@ public class ArmorStandMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (EntityRotation) sets.get(15).getData(); } return new EntityRotation(-15, 0, 10); @@ -150,6 +157,7 @@ public class ArmorStandMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (EntityRotation) sets.get(16).getData(); } return new EntityRotation(-1, 0, -1); @@ -163,6 +171,7 @@ public class ArmorStandMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (EntityRotation) sets.get(17).getData(); } return new EntityRotation(1, 0, 1); diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ArrowMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ArrowMetaData.java index f78996198..78147bb6b 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ArrowMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ArrowMetaData.java @@ -16,6 +16,7 @@ import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; import de.bixilon.minosoft.util.BitByte; import java.util.HashMap; +import java.util.UUID; public class ArrowMetaData extends EntityMetaData { @@ -33,9 +34,26 @@ public class ArrowMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(6).getData(), 0x01); } return false; } + public boolean isNoClip() { + switch (version) { + case VERSION_1_13_2: + return BitByte.isBitMask((byte) sets.get(6).getData(), 0x02); + } + return false; + } + + public UUID getShooterUUID() { + switch (version) { + case VERSION_1_13_2: + return (UUID) sets.get(7).getData(); + } + return null; + } + } diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/BatMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/BatMetaData.java index 2cd9f3d70..2c0404aa5 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/BatMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/BatMetaData.java @@ -34,6 +34,7 @@ public class BatMetaData extends InsentientMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(12).getData(), 0x01); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/BlazeMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/BlazeMetaData.java index 25dc8c14c..0ddef1965 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/BlazeMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/BlazeMetaData.java @@ -35,6 +35,7 @@ public class BlazeMetaData extends MobMetaData { return BitByte.isBitMask((byte) sets.get(17).getData(), 0x01); case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(12).getData(), 0x01); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/BoatMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/BoatMetaData.java index d87fe1174..ae926577a 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/BoatMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/BoatMetaData.java @@ -32,6 +32,7 @@ public class BoatMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(6).getData(); } return 0; @@ -47,6 +48,7 @@ public class BoatMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(7).getData(); } return 1; @@ -62,6 +64,7 @@ public class BoatMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (float) sets.get(8).getData(); } return 0; @@ -74,6 +77,7 @@ public class BoatMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BoatMaterial.byId((int) sets.get(9).getData()); } return BoatMaterial.OAK; @@ -87,6 +91,8 @@ public class BoatMetaData extends EntityMetaData { case VERSION_1_11_2: case VERSION_1_12_2: return (boolean) sets.get(10).getData(); + case VERSION_1_13_2: + return (boolean) sets.get(11).getData(); } return false; } @@ -94,6 +100,7 @@ public class BoatMetaData extends EntityMetaData { public boolean isLeftPaddleTurning() { switch (version) { case VERSION_1_9_4: + case VERSION_1_13_2: return (boolean) sets.get(10).getData(); case VERSION_1_10: case VERSION_1_11_2: @@ -103,6 +110,14 @@ public class BoatMetaData extends EntityMetaData { return false; } + public int getSplashTimer() { + switch (version) { + case VERSION_1_13_2: + return (int) sets.get(12).getData(); + } + return 0; + } + public enum BoatMaterial { OAK(0), SPRUCE(1), diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ChestedHorseMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ChestedHorseMetaData.java index 5c8af5d4b..611bc5791 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ChestedHorseMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ChestedHorseMetaData.java @@ -34,6 +34,7 @@ public class ChestedHorseMetaData extends AbstractHorseMetaData { return BitByte.isBitMask((int) sets.get(13).getData(), 0x08); case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((int) sets.get(15).getData(), 0x08); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/CommandBlockMinecartMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/CommandBlockMinecartMetaData.java index 121808f10..96f63a4cb 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/CommandBlockMinecartMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/CommandBlockMinecartMetaData.java @@ -30,6 +30,7 @@ public class CommandBlockMinecartMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (String) sets.get(12).getData(); } return ""; @@ -42,6 +43,7 @@ public class CommandBlockMinecartMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (TextComponent) sets.get(13).getData(); } return null; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/CreeperMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/CreeperMetaData.java index 3d9aaa97e..195f584fb 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/CreeperMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/CreeperMetaData.java @@ -33,6 +33,7 @@ public class CreeperMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(12).getData(); } return -1; @@ -49,6 +50,7 @@ public class CreeperMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(13).getData(); } return false; @@ -60,6 +62,8 @@ public class CreeperMetaData extends MobMetaData { return (boolean) sets.get(13).getData(); case VERSION_1_10: case VERSION_1_11_2: + case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(14).getData(); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/DolphinMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/DolphinMetaData.java new file mode 100644 index 000000000..d66e25b92 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/DolphinMetaData.java @@ -0,0 +1,50 @@ +/* + * Codename Minosoft + * Copyright (C) 2020 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ +package de.bixilon.minosoft.game.datatypes.entities.meta; + +import de.bixilon.minosoft.game.datatypes.world.BlockPosition; +import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; + +import java.util.HashMap; + +public class DolphinMetaData extends InsentientMetaData { + + public DolphinMetaData(HashMap sets, ProtocolVersion version) { + super(sets, version); + } + + public BlockPosition isTreasure() { + switch (version) { + case VERSION_1_13_2: + return (BlockPosition) sets.get(12).getData(); + } + return new BlockPosition(0, (short) 0, 0); + } + + public boolean canFireTreasure() { + switch (version) { + case VERSION_1_13_2: + return (boolean) sets.get(13).getData(); + } + return false; + } + + public boolean hasFish() { + switch (version) { + case VERSION_1_13_2: + return (boolean) sets.get(14).getData(); + } + return false; + } + +} diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EnderCrystalMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EnderCrystalMetaData.java index 8ea4c1369..3c43d3992 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EnderCrystalMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EnderCrystalMetaData.java @@ -39,6 +39,7 @@ public class EnderCrystalMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (BlockPosition) sets.get(6).getData(); } return null; @@ -51,6 +52,7 @@ public class EnderCrystalMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(7).getData(); } return true; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EnderDragonMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EnderDragonMetaData.java index e37f4e4ab..eeb34cb92 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EnderDragonMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EnderDragonMetaData.java @@ -30,6 +30,7 @@ public class EnderDragonMetaData extends InsentientMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return ((int) sets.get(12).getData()); } return 0; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EndermanMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EndermanMetaData.java index c88dc6c5a..7deda8efe 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EndermanMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EndermanMetaData.java @@ -34,6 +34,7 @@ public class EndermanMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (Blocks) sets.get(12).getData(); } return Blocks.AIR; @@ -49,6 +50,7 @@ public class EndermanMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(13).getData(); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EntityMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EntityMetaData.java index 2221a4095..f83c8de4a 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EntityMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/EntityMetaData.java @@ -12,10 +12,7 @@ */ package de.bixilon.minosoft.game.datatypes.entities.meta; -import de.bixilon.minosoft.game.datatypes.EntityRotation; -import de.bixilon.minosoft.game.datatypes.MapSet; -import de.bixilon.minosoft.game.datatypes.Vector; -import de.bixilon.minosoft.game.datatypes.VersionValueMap; +import de.bixilon.minosoft.game.datatypes.*; import de.bixilon.minosoft.game.datatypes.blocks.Blocks; import de.bixilon.minosoft.protocol.protocol.InByteBuffer; import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; @@ -34,6 +31,7 @@ public class EntityMetaData { 1.8: https://wiki.vg/index.php?title=Entity_metadata&oldid=6611 1.9.4: https://wiki.vg/index.php?title=Entity_metadata&oldid=7955 1.10: https://wiki.vg/index.php?title=Entity_metadata&oldid=8241 + 1.13: https://wiki.vg/index.php?title=Entity_metadata&oldid=14800 */ public EntityMetaData(HashMap sets, ProtocolVersion version) { this.sets = sets; @@ -129,6 +127,7 @@ public class EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(0).getData(), 0x01); } return false; @@ -142,6 +141,7 @@ public class EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(0).getData(), 0x02); } return false; @@ -155,6 +155,7 @@ public class EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(0).getData(), 0x08); } return false; @@ -171,6 +172,14 @@ public class EntityMetaData { return false; } + public boolean isSwimming() { + switch (version) { + case VERSION_1_13_2: + return BitByte.isBitMask((byte) sets.get(0).getData(), 0x10); + } + return false; + } + public boolean isDrinking() { return isEating(); } @@ -187,6 +196,7 @@ public class EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitSet((byte) sets.get(0).getData(), 0x20); } return false; @@ -200,6 +210,7 @@ public class EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitSet((byte) sets.get(0).getData(), 0x40); } return false; @@ -213,18 +224,21 @@ public class EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitSet((byte) sets.get(0).getData(), 0x80); } return false; } - public String getNameTag() { + public TextComponent getNameTag() { switch (version) { case VERSION_1_9_4: case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: - return (String) sets.get(2).getData(); + return new TextComponent((String) sets.get(2).getData()); + case VERSION_1_13_2: + return (TextComponent) sets.get(2).getData(); } return null; } @@ -235,6 +249,7 @@ public class EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(3).getData(); } return false; @@ -246,6 +261,7 @@ public class EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(4).getData(); } return false; @@ -256,6 +272,7 @@ public class EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return !(boolean) sets.get(5).getData(); } return true; @@ -269,25 +286,23 @@ public class EntityMetaData { FLOAT(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_7_10, 3), new MapSet<>(ProtocolVersion.VERSION_1_9_4, 2)}), STRING(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_7_10, 4), new MapSet<>(ProtocolVersion.VERSION_1_9_4, 3)}), CHAT(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_9_4, 4)}), - OPT_CHAT(-1), - SLOT(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_7_10, 5)}), - BOOLEAN(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_9_4, 6)}), + OPT_CHAT(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_13_2, 5)}), + SLOT(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_7_10, 5), new MapSet<>(ProtocolVersion.VERSION_1_13_2, 6)}), + BOOLEAN(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_9_4, 6), new MapSet<>(ProtocolVersion.VERSION_1_13_2, 7)}), VECTOR(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_7_10, 6), new MapSet<>(ProtocolVersion.VERSION_1_9_4, 1002)}), - ROTATION(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_7_10, 7)}), - POSITION(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_9_4, 8)}), - OPT_POSITION(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_9_4, 9)}), - DIRECTION(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_9_4, 10)}), - OPT_UUID(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_9_4, 11)}), + ROTATION(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_7_10, 7), new MapSet<>(ProtocolVersion.VERSION_1_13_2, 8)}), + POSITION(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_9_4, 8), new MapSet<>(ProtocolVersion.VERSION_1_13_2, 9)}), + OPT_POSITION(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_9_4, 9), new MapSet<>(ProtocolVersion.VERSION_1_13_2, 10)}), + DIRECTION(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_9_4, 10), new MapSet<>(ProtocolVersion.VERSION_1_13_2, 11)}), + OPT_UUID(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_9_4, 11), new MapSet<>(ProtocolVersion.VERSION_1_13_2, 12)}), BLOCK_ID(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_9_4, 12), new MapSet<>(ProtocolVersion.VERSION_1_10, 1003)}), - OPT_BLOCK_ID(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_10, 12)}), - NBT(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_12_2, 13)}), - PARTICLE(-1), + OPT_BLOCK_ID(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_10, 12), new MapSet<>(ProtocolVersion.VERSION_1_13_2, 13)}), + NBT(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_12_2, 13), new MapSet<>(ProtocolVersion.VERSION_1_13_2, 14)}), + PARTICLE(new MapSet[]{new MapSet<>(ProtocolVersion.VERSION_1_13_2, 15)}), VILLAGER_DATA(-1), OPT_VAR_INT(-1), POSE(-1); - //ToDo: add all types by version - final VersionValueMap valueMap; Types(MapSet[] values) { diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FallingBlockMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FallingBlockMetaData.java index 42e4e5603..93e072b99 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FallingBlockMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FallingBlockMetaData.java @@ -30,6 +30,7 @@ public class FallingBlockMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (BlockPosition) sets.get(6).getData(); } return new BlockPosition(0, (short) 0, 0); diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FireworkMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FireworkMetaData.java index 29bec17cf..fda26f9d5 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FireworkMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FireworkMetaData.java @@ -33,6 +33,7 @@ public class FireworkMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (Slot) sets.get(6).getData(); } return null; @@ -42,6 +43,7 @@ public class FireworkMetaData extends EntityMetaData { switch (version) { case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(7).getData(); } return 0; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FishMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FishMetaData.java new file mode 100644 index 000000000..2226129fc --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FishMetaData.java @@ -0,0 +1,32 @@ +/* + * Codename Minosoft + * Copyright (C) 2020 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ +package de.bixilon.minosoft.game.datatypes.entities.meta; + +import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; + +import java.util.HashMap; + +public class FishMetaData extends InsentientMetaData { + + public FishMetaData(HashMap sets, ProtocolVersion version) { + super(sets, version); + } + + public boolean fromBucket() { + switch (version) { + case VERSION_1_13_2: + return (boolean) sets.get(12).getData(); + } + return false; + } +} diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FishingHookMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FishingHookMetaData.java index 5c456a733..f1c231d9c 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FishingHookMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FishingHookMetaData.java @@ -16,7 +16,7 @@ import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; import java.util.HashMap; -public class FishingHookMetaData extends MobMetaData { +public class FishingHookMetaData extends EntityMetaData { public FishingHookMetaData(HashMap sets, ProtocolVersion version) { super(sets, version); @@ -30,6 +30,7 @@ public class FishingHookMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(6).getData(); } return -1; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FurnaceMinecartMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FurnaceMinecartMetaData.java index 36ad4cb48..109b5f531 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FurnaceMinecartMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/FurnaceMinecartMetaData.java @@ -32,6 +32,7 @@ public class FurnaceMinecartMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(12).getData(); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/GhastMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/GhastMetaData.java index 0c565ec97..51fa4ca57 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/GhastMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/GhastMetaData.java @@ -32,6 +32,7 @@ public class GhastMetaData extends InsentientMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(12).getData(); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/GuardianMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/GuardianMetaData.java index 8345a8530..045245526 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/GuardianMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/GuardianMetaData.java @@ -44,6 +44,7 @@ public class GuardianMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitSet((byte) sets.get(12).getData(), 0x02); } return false; @@ -59,6 +60,7 @@ public class GuardianMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(13).getData(); } return 0; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/HorseMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/HorseMetaData.java index 7f048169e..9fcc28b01 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/HorseMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/HorseMetaData.java @@ -32,6 +32,7 @@ public class HorseMetaData extends AbstractHorseMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return HorseColor.byId((int) sets.get(15).getData() & 0xFF); } return HorseColor.WHITE; @@ -47,6 +48,7 @@ public class HorseMetaData extends AbstractHorseMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return HorseDots.byId((int) sets.get(15).getData() & 0xFF00); } return HorseDots.NONE; @@ -60,6 +62,7 @@ public class HorseMetaData extends AbstractHorseMetaData { case VERSION_1_9_4: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return HorseArmor.byId((int) sets.get(16).getData()); case VERSION_1_10: return HorseArmor.byId((int) sets.get(17).getData()); diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/HumanMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/HumanMetaData.java index 91db74a74..024b5c125 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/HumanMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/HumanMetaData.java @@ -35,6 +35,7 @@ public class HumanMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (float) sets.get(11).getData(); } return 0.0F; @@ -50,6 +51,7 @@ public class HumanMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(12).getData(); } return 0; @@ -63,6 +65,7 @@ public class HumanMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return Hand.byId((byte) sets.get(14).getData()); } return Hand.RIGHT; @@ -71,6 +74,7 @@ public class HumanMetaData extends MobMetaData { public CompoundTag getLeftShoulderEntityData() { switch (version) { case VERSION_1_12_2: + case VERSION_1_13_2: return (CompoundTag) sets.get(15).getData(); } return null; @@ -79,6 +83,7 @@ public class HumanMetaData extends MobMetaData { public CompoundTag getRightShoulderEntityData() { switch (version) { case VERSION_1_12_2: + case VERSION_1_13_2: return (CompoundTag) sets.get(16).getData(); } return null; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/InsentientMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/InsentientMetaData.java index 2386911db..2cfaef018 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/InsentientMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/InsentientMetaData.java @@ -34,6 +34,7 @@ public class InsentientMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(11).getData(), 0x01); default: return super.hasAI(); @@ -47,6 +48,7 @@ public class InsentientMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(11).getData(), 0x02); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/IronGolemMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/IronGolemMetaData.java index 09dc845e8..1a3a772a7 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/IronGolemMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/IronGolemMetaData.java @@ -33,6 +33,7 @@ public class IronGolemMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(12).getData(), 0x01); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ItemFrameMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ItemFrameMetaData.java index 302d4fec6..ede1e0831 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ItemFrameMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ItemFrameMetaData.java @@ -34,6 +34,7 @@ public class ItemFrameMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (Slot) sets.get(6).getData(); } return null; @@ -50,6 +51,7 @@ public class ItemFrameMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(7).getData(); } return 0; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ItemMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ItemMetaData.java index fc41598de..bf37e3839 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ItemMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ItemMetaData.java @@ -33,6 +33,7 @@ public class ItemMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (Slot) sets.get(6).getData(); } return null; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/LlamaMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/LlamaMetaData.java index 9d627363f..5dfd0a75e 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/LlamaMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/LlamaMetaData.java @@ -27,6 +27,7 @@ public class LlamaMetaData extends ChestedHorseMetaData { switch (version) { case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(16).getData(); } return 0; @@ -36,6 +37,7 @@ public class LlamaMetaData extends ChestedHorseMetaData { switch (version) { case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return Color.byId((int) sets.get(17).getData()); } return null; @@ -45,6 +47,7 @@ public class LlamaMetaData extends ChestedHorseMetaData { switch (version) { case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return LlamaVariants.byId((int) sets.get(17).getData()); } return null; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/MinecartMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/MinecartMetaData.java index ef77f8269..2e8ee3367 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/MinecartMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/MinecartMetaData.java @@ -33,6 +33,7 @@ public class MinecartMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(6).getData(); } return 0; @@ -48,6 +49,7 @@ public class MinecartMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(7).getData(); } return 0; @@ -63,6 +65,7 @@ public class MinecartMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (float) sets.get(8).getData(); } return 0; @@ -78,6 +81,7 @@ public class MinecartMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return Blocks.byId((int) sets.get(9).getData() & 0xFF, (int) sets.get(9).getData() >>> 4); } return Blocks.AIR; @@ -92,6 +96,7 @@ public class MinecartMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(10).getData(); } return 0; @@ -106,6 +111,7 @@ public class MinecartMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(11).getData(); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/MobMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/MobMetaData.java index c509e2bbc..480629265 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/MobMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/MobMetaData.java @@ -12,6 +12,7 @@ */ package de.bixilon.minosoft.game.datatypes.entities.meta; +import de.bixilon.minosoft.game.datatypes.TextComponent; import de.bixilon.minosoft.game.datatypes.player.Hand; import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; import de.bixilon.minosoft.util.BitByte; @@ -34,6 +35,7 @@ public class MobMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (float) sets.get(7).getData(); } return 1.0F; @@ -49,6 +51,7 @@ public class MobMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(8).getData(); } return 0; @@ -65,6 +68,7 @@ public class MobMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(9).getData(); } return false; @@ -80,18 +84,19 @@ public class MobMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(10).getData(); } return 0; } @Override - public String getNameTag() { + public TextComponent getNameTag() { switch (version) { case VERSION_1_7_10: - return (String) sets.get(10).getData(); + return new TextComponent((String) sets.get(10).getData()); case VERSION_1_8: - return (String) sets.get(2).getData(); + return new TextComponent((String) sets.get(2).getData()); default: return super.getNameTag(); } @@ -124,6 +129,7 @@ public class MobMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(6).getData(), 0x01); } return false; @@ -137,10 +143,18 @@ public class MobMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(6).getData(), 0x02) ? Hand.LEFT : Hand.RIGHT; } return Hand.RIGHT; } + public boolean isRiptideAttack() { + switch (version) { + case VERSION_1_13_2: + return BitByte.isBitMask((byte) sets.get(6).getData(), 0x04); + } + return false; + } } diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/OcelotMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/OcelotMetaData.java index b367ab734..182be06c5 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/OcelotMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/OcelotMetaData.java @@ -33,6 +33,7 @@ public class OcelotMetaData extends TameableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return OcelotTypes.byId((int) sets.get(15).getData()); } return OcelotTypes.UNTAMED; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ParrotMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ParrotMetaData.java index feb5d5415..ef2477a73 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ParrotMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ParrotMetaData.java @@ -25,6 +25,7 @@ public class ParrotMetaData extends TameableMetaData { public ParrotVariants getVariant() { switch (version) { case VERSION_1_12_2: + case VERSION_1_13_2: return ParrotVariants.byId((Integer) sets.get(15).getData()); } return ParrotVariants.RED_BLUE; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PhantomMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PhantomMetaData.java new file mode 100644 index 000000000..c44eaf245 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PhantomMetaData.java @@ -0,0 +1,34 @@ +/* + * Codename Minosoft + * Copyright (C) 2020 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ +package de.bixilon.minosoft.game.datatypes.entities.meta; + +import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; + +import java.util.HashMap; + +public class PhantomMetaData extends InsentientMetaData { + + public PhantomMetaData(HashMap sets, ProtocolVersion version) { + super(sets, version); + } + + public int getSize() { + switch (version) { + case VERSION_1_13_2: + return (int) sets.get(12).getData(); + } + return 0; + } + + +} diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PigMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PigMetaData.java index c8cd1306f..05315a544 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PigMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PigMetaData.java @@ -33,6 +33,7 @@ public class PigMetaData extends AgeableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(13).getData(); } return false; @@ -42,6 +43,7 @@ public class PigMetaData extends AgeableMetaData { switch (version) { case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(14).getData(); } return 0; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PotionMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PotionMetaData.java index ae7feeb37..f086cfac2 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PotionMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PotionMetaData.java @@ -30,6 +30,7 @@ public class PotionMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (Slot) sets.get(6).getData(); } return null; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PrimedTNTMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PrimedTNTMetaData.java index cc9d9d3fd..d87f7fae9 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PrimedTNTMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PrimedTNTMetaData.java @@ -29,6 +29,7 @@ public class PrimedTNTMetaData extends EntityMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(6).getData(); } return 0; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PufferFishMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PufferFishMetaData.java new file mode 100644 index 000000000..8e5d91b62 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/PufferFishMetaData.java @@ -0,0 +1,32 @@ +/* + * Codename Minosoft + * Copyright (C) 2020 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ +package de.bixilon.minosoft.game.datatypes.entities.meta; + +import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; + +import java.util.HashMap; + +public class PufferFishMetaData extends FishMetaData { + + public PufferFishMetaData(HashMap sets, ProtocolVersion version) { + super(sets, version); + } + + public int getPuffState() { + switch (version) { + case VERSION_1_13_2: + return (int) sets.get(13).getData(); + } + return 0; + } +} diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/RabbitMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/RabbitMetaData.java index db8c35172..4a93178f5 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/RabbitMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/RabbitMetaData.java @@ -12,6 +12,7 @@ */ package de.bixilon.minosoft.game.datatypes.entities.meta; +import de.bixilon.minosoft.game.datatypes.world.BlockPosition; import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; import java.util.HashMap; @@ -23,18 +24,51 @@ public class RabbitMetaData extends TameableMetaData { } - public int getType() { + public BlockPosition getHomePosition() { switch (version) { - case VERSION_1_8: - return (byte) sets.get(18).getData(); - case VERSION_1_9_4: - return (int) sets.get(12).getData(); - case VERSION_1_10: - case VERSION_1_11_2: - case VERSION_1_12_2: - return (int) sets.get(13).getData(); + case VERSION_1_13_2: + return (BlockPosition) sets.get(13).getData(); } - return 0; + return new BlockPosition(0, (short) 0, 0); } + public boolean hasEgg() { + switch (version) { + case VERSION_1_13_2: + return (boolean) sets.get(14).getData(); + } + return false; + } + + public boolean isLayingEgg() { + switch (version) { + case VERSION_1_13_2: + return (boolean) sets.get(15).getData(); + } + return false; + } + + public BlockPosition getTravelPosition() { + switch (version) { + case VERSION_1_13_2: + return (BlockPosition) sets.get(16).getData(); + } + return new BlockPosition(0, (short) 0, 0); + } + + public boolean isGoingHome() { + switch (version) { + case VERSION_1_13_2: + return (boolean) sets.get(17).getData(); + } + return false; + } + + public boolean isTraveling() { + switch (version) { + case VERSION_1_13_2: + return (boolean) sets.get(18).getData(); + } + return false; + } } diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SheepMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SheepMetaData.java index 70d872ff4..65bc3c66e 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SheepMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SheepMetaData.java @@ -35,6 +35,7 @@ public class SheepMetaData extends AgeableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return Color.byId((byte) sets.get(13).getData() & 0xF); } return Color.WHITE; @@ -50,6 +51,7 @@ public class SheepMetaData extends AgeableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(13).getData(), 0x10); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ShulkerMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ShulkerMetaData.java index a5b943a51..06d860575 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ShulkerMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ShulkerMetaData.java @@ -32,6 +32,7 @@ public class ShulkerMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (Direction) sets.get(12).getData(); } return Direction.DOWN; @@ -44,6 +45,7 @@ public class ShulkerMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (BlockPosition) sets.get(13).getData(); } return null; @@ -56,6 +58,7 @@ public class ShulkerMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (byte) sets.get(14).getData(); } return 0; @@ -65,6 +68,7 @@ public class ShulkerMetaData extends MobMetaData { switch (version) { case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return Color.byId((byte) sets.get(15).getData()); } return Color.PURPLE; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SkeletonMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SkeletonMetaData.java index 390b148f7..edf7d65bd 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SkeletonMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SkeletonMetaData.java @@ -40,6 +40,7 @@ public class SkeletonMetaData extends MobMetaData { case VERSION_1_9_4: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(12).getData(); case VERSION_1_10: return (boolean) sets.get(13).getData(); diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SlimeMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SlimeMetaData.java index 66d921bb5..d3182b6be 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SlimeMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SlimeMetaData.java @@ -32,6 +32,7 @@ public class SlimeMetaData extends InsentientMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(12).getData(); } return 0; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SnowGolemMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SnowGolemMetaData.java index 564e743f1..89a16ca9b 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SnowGolemMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SnowGolemMetaData.java @@ -31,6 +31,7 @@ public class SnowGolemMetaData extends MobMetaData { case VERSION_1_11_2: return BitByte.isBitMask((byte) sets.get(12).getData(), 0x10); case VERSION_1_12_2: + case VERSION_1_13_2: //ToDo: obviously wrong return BitByte.isBitMask((byte) sets.get(12).getData(), 0x01); } diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SpellcasterMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SpellcasterMetaData.java index 4d982517a..2ac91aab0 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SpellcasterMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SpellcasterMetaData.java @@ -26,6 +26,7 @@ public class SpellcasterMetaData extends MobMetaData { switch (version) { case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (byte) sets.get(13).getData(); } return 0; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SpiderMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SpiderMetaData.java index 0c97ed8d2..d011e1102 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SpiderMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/SpiderMetaData.java @@ -34,6 +34,7 @@ public class SpiderMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(12).getData(), 0x01); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TameableMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TameableMetaData.java index 360f76275..2936fb616 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TameableMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TameableMetaData.java @@ -35,6 +35,7 @@ public class TameableMetaData extends AgeableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x01); } return false; @@ -50,6 +51,7 @@ public class TameableMetaData extends AgeableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x04); } return false; @@ -62,6 +64,7 @@ public class TameableMetaData extends AgeableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((int) sets.get(13).getData(), 0x02); } return false; @@ -83,6 +86,7 @@ public class TameableMetaData extends AgeableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (UUID) sets.get(14).getData(); } return null; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TippedArrowMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TippedArrowMetaData.java index 1bcd87a4b..a3c7f2254 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TippedArrowMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TippedArrowMetaData.java @@ -30,6 +30,8 @@ public class TippedArrowMetaData extends ArrowMetaData { case VERSION_1_11_2: case VERSION_1_12_2: return (int) sets.get(7).getData(); + case VERSION_1_13_2: + return (int) sets.get(8).getData(); } return 0; } diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TridentMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TridentMetaData.java new file mode 100644 index 000000000..fee298280 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TridentMetaData.java @@ -0,0 +1,33 @@ +/* + * Codename Minosoft + * Copyright (C) 2020 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ +package de.bixilon.minosoft.game.datatypes.entities.meta; + +import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; + +import java.util.HashMap; + +public class TridentMetaData extends ArrowMetaData { + + public TridentMetaData(HashMap sets, ProtocolVersion version) { + super(sets, version); + } + + public int getLoyaltyLevel() { + switch (version) { + case VERSION_1_13_2: + return (int) sets.get(8).getData(); + } + return 0; + } + +} diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TropicalFishMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TropicalFishMetaData.java new file mode 100644 index 000000000..2b15526fb --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/TropicalFishMetaData.java @@ -0,0 +1,32 @@ +/* + * Codename Minosoft + * Copyright (C) 2020 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ +package de.bixilon.minosoft.game.datatypes.entities.meta; + +import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; + +import java.util.HashMap; + +public class TropicalFishMetaData extends FishMetaData { + + public TropicalFishMetaData(HashMap sets, ProtocolVersion version) { + super(sets, version); + } + + public int getVariant() { + switch (version) { + case VERSION_1_13_2: + return (int) sets.get(13).getData(); + } + return 0; + } +} diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/VexMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/VexMetaData.java index 9664125aa..2f9ed001d 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/VexMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/VexMetaData.java @@ -27,6 +27,7 @@ public class VexMetaData extends MobMetaData { switch (version) { case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return BitByte.isBitMask((byte) sets.get(12).getData(), 0x01); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/VillagerMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/VillagerMetaData.java index 23a3d18f7..672e17349 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/VillagerMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/VillagerMetaData.java @@ -33,6 +33,7 @@ public class VillagerMetaData extends AgeableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return VillagerType.byId((int) sets.get(13).getData()); } return VillagerType.FARMER; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WitchMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WitchMetaData.java index b1295f935..ede16c4f9 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WitchMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WitchMetaData.java @@ -31,7 +31,6 @@ public class WitchMetaData extends MobMetaData { return (boolean) sets.get(11).getData(); case VERSION_1_10: case VERSION_1_11_2: - case VERSION_1_12_2: return (boolean) sets.get(12).getData(); } return false; @@ -40,6 +39,7 @@ public class WitchMetaData extends MobMetaData { public boolean isDrinkingPotion() { switch (version) { case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(12).getData(); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WitherMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WitherMetaData.java index b9bdfcbbf..12dad9639 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WitherMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WitherMetaData.java @@ -32,6 +32,7 @@ public class WitherMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(12).getData(); } return 0; @@ -47,6 +48,7 @@ public class WitherMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(13).getData(); } return 0; @@ -62,6 +64,7 @@ public class WitherMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(14).getData(); } return 0; @@ -77,6 +80,7 @@ public class WitherMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (int) sets.get(15).getData(); } return 0; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WitherSkullMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WitherSkullMetaData.java index 9480e3cb7..df6bf05d6 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WitherSkullMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WitherSkullMetaData.java @@ -16,7 +16,7 @@ import de.bixilon.minosoft.protocol.protocol.ProtocolVersion; import java.util.HashMap; -public class WitherSkullMetaData extends TameableMetaData { +public class WitherSkullMetaData extends EntityMetaData { public WitherSkullMetaData(HashMap sets, ProtocolVersion version) { super(sets, version); @@ -30,6 +30,7 @@ public class WitherSkullMetaData extends TameableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(6).getData(); } return false; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WolfMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WolfMetaData.java index 560306f5d..090cafae9 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WolfMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/WolfMetaData.java @@ -54,6 +54,7 @@ public class WolfMetaData extends TameableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (float) sets.get(15).getData(); } return getHealth(); @@ -70,6 +71,7 @@ public class WolfMetaData extends TameableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return (boolean) sets.get(16).getData(); } return false; @@ -85,6 +87,7 @@ public class WolfMetaData extends TameableMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return Color.byId((byte) sets.get(17).getData()); } return Color.RED; diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ZombieMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ZombieMetaData.java index afebd15bc..7c30c3457 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ZombieMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ZombieMetaData.java @@ -33,6 +33,7 @@ public class ZombieMetaData extends MobMetaData { case VERSION_1_10: case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return ((boolean) sets.get(12).getData()); } return false; @@ -72,8 +73,17 @@ public class ZombieMetaData extends MobMetaData { return ((boolean) sets.get(15).getData()); case VERSION_1_11_2: case VERSION_1_12_2: + case VERSION_1_13_2: return ((boolean) sets.get(16).getData()); } return false; } + + public boolean isBecomingADrowned() { + switch (version) { + case VERSION_1_13_2: + return ((boolean) sets.get(15).getData()); + } + return false; + } } diff --git a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ZombieVillagerMetaData.java b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ZombieVillagerMetaData.java index a858525b5..f9a0c3a75 100644 --- a/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ZombieVillagerMetaData.java +++ b/src/main/java/de/bixilon/minosoft/game/datatypes/entities/meta/ZombieVillagerMetaData.java @@ -28,6 +28,8 @@ public class ZombieVillagerMetaData extends ZombieMetaData { case VERSION_1_11_2: case VERSION_1_12_2: return VillagerMetaData.VillagerType.byId((int) sets.get(16).getData() + 1); + case VERSION_1_13_2: + return VillagerMetaData.VillagerType.byId((int) sets.get(17).getData() + 1); } return VillagerMetaData.VillagerType.FARMER; } @@ -38,6 +40,9 @@ public class ZombieVillagerMetaData extends ZombieMetaData { case VERSION_1_11_2: case VERSION_1_12_2: return ((boolean) sets.get(15).getData()); + case VERSION_1_13_2: + return ((boolean) sets.get(16).getData()); + } return false; }