From e71fa15bb06ecdb368ca498867b8f937c636a657 Mon Sep 17 00:00:00 2001 From: nea Date: Wed, 13 Apr 2022 15:08:09 +0200 Subject: horseys --- .../miscfeatures/entityviewer/EntityViewer.java | 1 + .../miscfeatures/entityviewer/HorseModifier.java | 66 ++++++++++++++++++++++ .../notenoughupdates/util/SkytilsCompat.java | 11 +++- 3 files changed, 75 insertions(+), 3 deletions(-) create mode 100644 src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/HorseModifier.java diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/EntityViewer.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/EntityViewer.java index 9f2d2a54..14513dd1 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/EntityViewer.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/EntityViewer.java @@ -76,6 +76,7 @@ public class EntityViewer extends GuiScreen { put("witherdata", new WitherModifier()); put("invisible", new InvisibleModifier()); put("age", new AgeModifier()); + put("horse", new HorseModifier()); }}; public int guiLeft = 0; diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/HorseModifier.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/HorseModifier.java new file mode 100644 index 00000000..3e4efa3d --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/entityviewer/HorseModifier.java @@ -0,0 +1,66 @@ +package io.github.moulberry.notenoughupdates.miscfeatures.entityviewer; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.passive.EntityHorse; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class HorseModifier extends EntityViewerModifier { + @Override + public EntityLivingBase applyModifier(EntityLivingBase base, JsonObject info) { + if (!(base instanceof EntityHorse)) + return null; + EntityHorse horse = (EntityHorse) base; + if (info.has("type")) { + String type = info.get("type").getAsString().intern(); + switch (type) { + case "skeleton": + horse.setHorseType(4); + break; + case "zombie": + horse.setHorseType(3); + break; + case "mule": + horse.setHorseType(2); + break; + case "donkey": + horse.setHorseType(1); + break; + case "horse": + horse.setHorseType(0); + break; + default: + throw new IllegalArgumentException("Unknown horse type: " + type); + } + } + if (info.has("armor")) { + JsonElement el = info.get("type"); + if (el.isJsonNull()) { + horse.setHorseArmorStack(null); + } else { + Item item; + switch (el.getAsString().intern()) { + case "iron": + item = Items.iron_horse_armor; + break; + case "golden": + item = Items.golden_horse_armor; + break; + case "diamond": + item = Items.diamond_horse_armor; + break; + default: + throw new IllegalArgumentException("Unknown horse armor: " + el.getAsString()); + } + horse.setHorseArmorStack(new ItemStack(item)); + } + } + if (info.has("saddled")) { + horse.setHorseSaddled(info.get("saddled").getAsBoolean()); + } + return horse; + } +} diff --git a/src/main/java/io/github/moulberry/notenoughupdates/util/SkytilsCompat.java b/src/main/java/io/github/moulberry/notenoughupdates/util/SkytilsCompat.java index 623a6c1a..193f6133 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/util/SkytilsCompat.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/util/SkytilsCompat.java @@ -2,12 +2,10 @@ package io.github.moulberry.notenoughupdates.util; import net.minecraft.item.ItemStack; -import java.lang.invoke.MethodHandle; -import java.lang.invoke.MethodHandles; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.security.cert.TrustAnchor; + public class SkytilsCompat { // Defer static initialization @@ -59,6 +57,13 @@ public class SkytilsCompat { } + public static boolean isSkytilsFullyLoaded() { + return Holder.isSkytilsFullyPresent; + } + + public static boolean isSkytilsPresent() { + return Holder.isSkytilsPresent; + } public static void renderSkytilsRarity(ItemStack stack, int x, int y) { renderSkytilsRarity(stack, x, y, false); } -- cgit