diff --git a/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java b/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java index d133f4b28..ccda23c0f 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; @@ -313,6 +314,10 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI { return getConfig().getBoolean("bossbar-anti-flicker", false); } + public boolean isUnknownEntitiesSuppressed() { + 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/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 new file mode 100644 index 000000000..ff741e632 --- /dev/null +++ b/src/main/java/us/myles/ViaVersion/api/ViaVersionConfig.java @@ -0,0 +1,82 @@ +package us.myles.ViaVersion.api; + +public interface ViaVersionConfig { + + /** + * Get if global debug is enabled + * + * @return true if debug is enabled + */ + boolean isDebug(); + + /** + * Get if collision preventing for players is enabled + * + * @return true if collision preventing is enabled + */ + boolean isPreventCollision(); + + /** + * 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(); + + /** + * Get if metadata errors will be suppressed + * + * @return true if metadata errors suppression is enabled + */ + boolean isSuppressMetadataErrors(); + + /** + * Get if blocking in 1.9 appears as a player holding a shield + * + * @return true if shield blocking is enabled + */ + boolean isShieldBlocking(); + + /** + * 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(); + + /** + * Get if boss bars are fixed for 1.9 clients + * + * @return true if boss bar patching is enabled + */ + boolean isBossbarPatch(); + + /** + * 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 + */ + boolean isBossbarAntiflicker(); + + /** + * Get if unknown entity errors will be suppressed + * + * @return true if boss bar patching is enabled + */ + boolean isUnknownEntitiesSuppressed(); + + /** + * 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(); + + /** + * Get if players will be automatically put in the same team when collision preventing is enabled + * + * @return true if automatic teaming is enabled + */ + 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 78c286c88..38e254c69 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(!ViaVersion.getConfig().isUnknownEntitiesSuppressed()){ 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