From ccb2a4756f080cb2d22b0b670f051d5b37d8a636 Mon Sep 17 00:00:00 2001 From: Hugo Kerstens Date: Tue, 22 Mar 2016 16:27:39 +0100 Subject: [PATCH 1/6] Add config option to suppress 'Unable to get entity for ID' errors --- .../protocols/protocol1_9to1_8/packets/EntityPackets.java | 2 +- src/main/resources/config.yml | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java b/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java index 9734a96ab..945229723 100644 --- a/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java +++ b/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java @@ -183,7 +183,7 @@ public class EntityPackets { EntityTracker tracker = wrapper.user().get(EntityTracker.class); if (tracker.getClientEntityTypes().containsKey(entityID)) { MetadataRewriter.transform(tracker.getClientEntityTypes().get(entityID), metadataList); - } else { + } else if(!((ViaVersionPlugin)ViaVersion.getInstance()).getConfig().getBoolean("suppress-entityid-errors")){ System.out.println("Unable to find entity for metadata, entity ID: " + entityID); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index cdf3705d5..e8974881a 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -21,4 +21,7 @@ bossbar-patch: true # If your boss bar flickers on 1.9, set this to 'true'. It will keep all boss bars on 100% (not recommended) bossbar-anti-flicker: false # This will show the new effect indicator in the top-right corner for 1.9 players. -use-new-effect-indicator: true \ No newline at end of file +use-new-effect-indicator: true +# This will suppress the following error: 'Unable to get entity for ID: xxxx' +# This error message means one of you plugins is sending bad packets! +suppress-entityid-errors: false \ No newline at end of file From 147891f76bf8931d165b53bf59bde6ec2c773340 Mon Sep 17 00:00:00 2001 From: Hugo Kerstens Date: Tue, 22 Mar 2016 16:53:53 +0100 Subject: [PATCH 2/6] Implement config to the API --- .../us/myles/ViaVersion/ViaVersionPlugin.java | 7 +++- .../us/myles/ViaVersion/api/ViaVersion.java | 9 ++++- .../ViaVersion/api/ViaVersionConfig.java | 34 +++++++++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java diff --git a/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java b/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java index efa05b282..a503fa244 100644 --- a/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java +++ b/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java @@ -14,6 +14,7 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.plugin.java.JavaPlugin; import us.myles.ViaVersion.api.ViaVersion; import us.myles.ViaVersion.api.ViaVersionAPI; +import us.myles.ViaVersion.api.ViaVersionConfig; import us.myles.ViaVersion.api.boss.BossBar; import us.myles.ViaVersion.api.boss.BossColor; import us.myles.ViaVersion.api.boss.BossStyle; @@ -42,7 +43,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; -public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI { +public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI, ViaVersionConfig { private final Map portedPlayers = new ConcurrentHashMap<>(); private boolean debug = false; @@ -324,6 +325,10 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI { return getConfig().getBoolean("bossbar-anti-flicker", false); } + public boolean isUnkownEntitiesSuppressed() { + return getConfig().getBoolean("suppress-entityid-errors", false); + } + public double getHologramYOffset() { return getConfig().getDouble("hologram-y", -1D); } diff --git a/src/main/java/us/myles/ViaVersion/api/ViaVersion.java b/src/main/java/us/myles/ViaVersion/api/ViaVersion.java index f5507d4d2..97a5fa51e 100644 --- a/src/main/java/us/myles/ViaVersion/api/ViaVersion.java +++ b/src/main/java/us/myles/ViaVersion/api/ViaVersion.java @@ -2,10 +2,17 @@ package us.myles.ViaVersion.api; import lombok.Getter; import lombok.Setter; +import us.myles.ViaVersion.ViaVersionPlugin; public class ViaVersion { @Getter - @Setter private static ViaVersionAPI instance; + @Getter + private static ViaVersionConfig config; + + public static void setInstance(ViaVersionPlugin plugin) { + ViaVersion.instance = plugin; + ViaVersion.config = plugin; + } } diff --git a/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java b/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java new file mode 100644 index 000000000..8682a9b31 --- /dev/null +++ b/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java @@ -0,0 +1,34 @@ +package us.myles.ViaVersion.api; + +/** + * Created by Hugo on 22/03/2016. + */ +public interface ViaVersionConfig { + + /** + * Obtain if global debug is enabled + * + * @return true if debug is enabled + */ + boolean isDebug(); + + public boolean isPreventCollision(); + + public boolean isNewEffectIndicator(); + + public boolean isSuppressMetadataErrors(); + + public boolean isShieldBlocking(); + + public boolean isHologramPatch(); + + public boolean isBossbarPatch(); + + public boolean isBossbarAntiflicker(); + + public boolean isUnkownEntitiesSuppressed(); + + public double getHologramYOffset(); + + public boolean isAutoTeam(); +} From 523c27237dd337dd7ee8292315df0c95dac3a4e6 Mon Sep 17 00:00:00 2001 From: Hugo Kerstens Date: Tue, 22 Mar 2016 16:55:58 +0100 Subject: [PATCH 3/6] Small changes for the new Config API --- .../ViaVersion/api/ViaVersionConfig.java | 20 +++++++++---------- .../packets/EntityPackets.java | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java b/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java index 8682a9b31..ff7886197 100644 --- a/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java +++ b/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java @@ -12,23 +12,23 @@ public interface ViaVersionConfig { */ boolean isDebug(); - public boolean isPreventCollision(); + boolean isPreventCollision(); - public boolean isNewEffectIndicator(); + boolean isNewEffectIndicator(); - public boolean isSuppressMetadataErrors(); + boolean isSuppressMetadataErrors(); - public boolean isShieldBlocking(); + boolean isShieldBlocking(); - public boolean isHologramPatch(); + boolean isHologramPatch(); - public boolean isBossbarPatch(); + boolean isBossbarPatch(); - public boolean isBossbarAntiflicker(); + boolean isBossbarAntiflicker(); - public boolean isUnkownEntitiesSuppressed(); + boolean isUnkownEntitiesSuppressed(); - public double getHologramYOffset(); + double getHologramYOffset(); - public boolean isAutoTeam(); + boolean isAutoTeam(); } diff --git a/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java b/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java index 945229723..414c00813 100644 --- a/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java +++ b/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java @@ -183,7 +183,7 @@ public class EntityPackets { EntityTracker tracker = wrapper.user().get(EntityTracker.class); if (tracker.getClientEntityTypes().containsKey(entityID)) { MetadataRewriter.transform(tracker.getClientEntityTypes().get(entityID), metadataList); - } else if(!((ViaVersionPlugin)ViaVersion.getInstance()).getConfig().getBoolean("suppress-entityid-errors")){ + } else if(!ViaVersion.getConfig().isUnkownEntitiesSuppressed()){ System.out.println("Unable to find entity for metadata, entity ID: " + entityID); } } From a7022bddf8dba11c50ec8e2606f5fbb383b3d35f Mon Sep 17 00:00:00 2001 From: Hugo Kerstens Date: Tue, 22 Mar 2016 17:00:13 +0100 Subject: [PATCH 4/6] Small typo --- src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java | 2 +- .../java/us/myles/ViaVersion/api/ViaVersionConfig.java | 7 ++++++- .../protocols/protocol1_9to1_8/packets/EntityPackets.java | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java b/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java index a503fa244..a896aa8d0 100644 --- a/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java +++ b/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java @@ -325,7 +325,7 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI, ViaVe return getConfig().getBoolean("bossbar-anti-flicker", false); } - public boolean isUnkownEntitiesSuppressed() { + public boolean isUnknownEntitiesSuppressed() { return getConfig().getBoolean("suppress-entityid-errors", false); } diff --git a/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java b/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java index ff7886197..37e4aa5c1 100644 --- a/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java +++ b/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java @@ -12,6 +12,11 @@ public interface ViaVersionConfig { */ boolean isDebug(); + /** + * Obtain if collision preventing for players is enabled + * + * @return true if collision preventing is enabled + */ boolean isPreventCollision(); boolean isNewEffectIndicator(); @@ -26,7 +31,7 @@ public interface ViaVersionConfig { boolean isBossbarAntiflicker(); - boolean isUnkownEntitiesSuppressed(); + boolean isUnknownEntitiesSuppressed(); double getHologramYOffset(); diff --git a/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java b/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java index 414c00813..73be0397c 100644 --- a/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java +++ b/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/packets/EntityPackets.java @@ -183,7 +183,7 @@ public class EntityPackets { EntityTracker tracker = wrapper.user().get(EntityTracker.class); if (tracker.getClientEntityTypes().containsKey(entityID)) { MetadataRewriter.transform(tracker.getClientEntityTypes().get(entityID), metadataList); - } else if(!ViaVersion.getConfig().isUnkownEntitiesSuppressed()){ + } else if(!ViaVersion.getConfig().isUnknownEntitiesSuppressed()){ System.out.println("Unable to find entity for metadata, entity ID: " + entityID); } } From e12d8ec4666cc80fb77a869457b34ee6c98a62d6 Mon Sep 17 00:00:00 2001 From: Hugo Kerstens Date: Tue, 22 Mar 2016 17:17:13 +0100 Subject: [PATCH 5/6] Add descriptions for the new Config API --- .../ViaVersion/api/ViaVersionConfig.java | 49 +++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java b/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java index 37e4aa5c1..97b8f85c5 100644 --- a/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java +++ b/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java @@ -1,8 +1,5 @@ package us.myles.ViaVersion.api; -/** - * Created by Hugo on 22/03/2016. - */ public interface ViaVersionConfig { /** @@ -19,21 +16,67 @@ public interface ViaVersionConfig { */ boolean isPreventCollision(); + /** + * Obtain if 1.9 clients are shown the new effect indicator in the top-right corner + * + * @return true if the using of the new effect indicator is enabled + */ boolean isNewEffectIndicator(); + /** + * Obtain if metadata errors will be suppressed + * + * @return true if metadata errors suppression is enabled + */ boolean isSuppressMetadataErrors(); + /** + * Obtain if blocking in 1.9 appears as a player holding a shield + * + * @return true if shield blocking is enabled + */ boolean isShieldBlocking(); + /** + * Obtain if armor stand positions are fixed so holograms show up at the correct height in 1.9 + * + * @return true if hologram patching is enabled + */ boolean isHologramPatch(); + /** + * Obtain if boss bars are fixed for 1.9 clients + * + * @return true if boss bar patching is enabled + */ boolean isBossbarPatch(); + /** + * Obtain if the boss bars for 1.9 clients are being stopped from flickering + * This will keep all boss bars on 100% (not recommended) + * + * @return true if boss bar anti flickering is enabled + */ boolean isBossbarAntiflicker(); + /** + * Obtain if unknown entity errors will be suppressed + * + * @return true if boss bar patching is enabled + */ boolean isUnknownEntitiesSuppressed(); + /** + * Obtain the vertical offset armor stands are being moved with when the hologram patch is enabled + * + * @return the vertical offset holograms will be moved with + */ double getHologramYOffset(); + /** + * Obtain if players will be automatically put in the same team when collision preventing is enabled + * + * @return true if automatic teaming is enabled + */ boolean isAutoTeam(); } From 25fa2eabbb8ce10376968d33656b9b081819d732 Mon Sep 17 00:00:00 2001 From: Hugo Kerstens Date: Tue, 22 Mar 2016 17:22:49 +0100 Subject: [PATCH 6/6] Small update for descriptions --- .../myles/ViaVersion/api/ViaVersionAPI.java | 2 +- .../ViaVersion/api/ViaVersionConfig.java | 22 +++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/us/myles/ViaVersion/api/ViaVersionAPI.java b/src/main/java/us/myles/ViaVersion/api/ViaVersionAPI.java index 38bf56827..49182fa1b 100644 --- a/src/main/java/us/myles/ViaVersion/api/ViaVersionAPI.java +++ b/src/main/java/us/myles/ViaVersion/api/ViaVersionAPI.java @@ -80,7 +80,7 @@ public interface ViaVersionAPI { BossBar createBossBar(String title, float health, BossColor color, BossStyle style); /** - * Obtain if global debug is enabled + * Get if global debug is enabled * * @return true if debug is enabled */ diff --git a/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java b/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java index 97b8f85c5..ff741e632 100644 --- a/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java +++ b/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java @@ -3,56 +3,56 @@ package us.myles.ViaVersion.api; public interface ViaVersionConfig { /** - * Obtain if global debug is enabled + * Get if global debug is enabled * * @return true if debug is enabled */ boolean isDebug(); /** - * Obtain if collision preventing for players is enabled + * Get if collision preventing for players is enabled * * @return true if collision preventing is enabled */ boolean isPreventCollision(); /** - * Obtain if 1.9 clients are shown the new effect indicator in the top-right corner + * Get if 1.9 clients are shown the new effect indicator in the top-right corner * * @return true if the using of the new effect indicator is enabled */ boolean isNewEffectIndicator(); /** - * Obtain if metadata errors will be suppressed + * Get if metadata errors will be suppressed * * @return true if metadata errors suppression is enabled */ boolean isSuppressMetadataErrors(); /** - * Obtain if blocking in 1.9 appears as a player holding a shield + * Get if blocking in 1.9 appears as a player holding a shield * * @return true if shield blocking is enabled */ boolean isShieldBlocking(); /** - * Obtain if armor stand positions are fixed so holograms show up at the correct height in 1.9 + * Get if armor stand positions are fixed so holograms show up at the correct height in 1.9 * * @return true if hologram patching is enabled */ boolean isHologramPatch(); /** - * Obtain if boss bars are fixed for 1.9 clients + * Get if boss bars are fixed for 1.9 clients * * @return true if boss bar patching is enabled */ boolean isBossbarPatch(); /** - * Obtain if the boss bars for 1.9 clients are being stopped from flickering + * Get if the boss bars for 1.9 clients are being stopped from flickering * This will keep all boss bars on 100% (not recommended) * * @return true if boss bar anti flickering is enabled @@ -60,21 +60,21 @@ public interface ViaVersionConfig { boolean isBossbarAntiflicker(); /** - * Obtain if unknown entity errors will be suppressed + * Get if unknown entity errors will be suppressed * * @return true if boss bar patching is enabled */ boolean isUnknownEntitiesSuppressed(); /** - * Obtain the vertical offset armor stands are being moved with when the hologram patch is enabled + * Get the vertical offset armor stands are being moved with when the hologram patch is enabled * * @return the vertical offset holograms will be moved with */ double getHologramYOffset(); /** - * Obtain if players will be automatically put in the same team when collision preventing is enabled + * Get if players will be automatically put in the same team when collision preventing is enabled * * @return true if automatic teaming is enabled */