From 6544505b11bfcb0e271aa4818285fcffd2c420e9 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Fri, 26 Oct 2018 12:03:42 +0200 Subject: [PATCH] added custom book model and also shuffled around some settings --- .../de/ellpeck/naturesaura/NaturesAura.java | 2 +- .../de/ellpeck/naturesaura/compat/Compat.java | 8 +++----- .../compat/patchouli/PatchouliCompat.java | 7 ++++++- .../ellpeck/naturesaura/proxy/ClientProxy.java | 9 +++++---- .../de/ellpeck/naturesaura/proxy/IProxy.java | 3 ++- .../ellpeck/naturesaura/proxy/ServerProxy.java | 4 ++-- .../ellpeck/naturesaura/reg/IModelProvider.java | 16 +++------------- .../de/ellpeck/naturesaura/reg/ModRegistry.java | 7 +++---- .../assets/naturesaura/models/item/book.json | 6 ++++++ .../naturesaura/patchouli_books/book/book.json | 4 ++-- .../assets/naturesaura/textures/gui/book.png | Bin 0 -> 26095 bytes .../assets/naturesaura/textures/items/book.png | Bin 0 -> 448 bytes 12 files changed, 33 insertions(+), 33 deletions(-) create mode 100644 src/main/resources/assets/naturesaura/models/item/book.json create mode 100644 src/main/resources/assets/naturesaura/textures/gui/book.png create mode 100644 src/main/resources/assets/naturesaura/textures/items/book.png diff --git a/src/main/java/de/ellpeck/naturesaura/NaturesAura.java b/src/main/java/de/ellpeck/naturesaura/NaturesAura.java index 55b168d3..bfad6fbe 100644 --- a/src/main/java/de/ellpeck/naturesaura/NaturesAura.java +++ b/src/main/java/de/ellpeck/naturesaura/NaturesAura.java @@ -37,7 +37,7 @@ public final class NaturesAura { public static final String PROXY_LOCATION = "de.ellpeck." + MOD_ID + ".proxy."; public static final String MOD_NAME = "Nature's Aura"; public static final String VERSION = "@VERSION@"; - public static final String DEPS = "required:patchouli;"; + public static final String DEPS = "required-after:patchouli;"; public static final Logger LOGGER = LogManager.getLogger(MOD_NAME); diff --git a/src/main/java/de/ellpeck/naturesaura/compat/Compat.java b/src/main/java/de/ellpeck/naturesaura/compat/Compat.java index e9fc92e7..42d5c9a3 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/Compat.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/Compat.java @@ -6,7 +6,6 @@ import net.minecraftforge.fml.common.Loader; public final class Compat { - public static boolean patchouli; public static boolean baubles; public static void init() { @@ -14,10 +13,9 @@ public final class Compat { if (baubles) { MinecraftForge.EVENT_BUS.register(new BaublesCompat()); } + } - patchouli = Loader.isModLoaded("patchouli"); - if (patchouli) { - PatchouliCompat.init(); - } + public static void initClient(){ + PatchouliCompat.initClient(); } } diff --git a/src/main/java/de/ellpeck/naturesaura/compat/patchouli/PatchouliCompat.java b/src/main/java/de/ellpeck/naturesaura/compat/patchouli/PatchouliCompat.java index b2822e78..c8c2ee16 100644 --- a/src/main/java/de/ellpeck/naturesaura/compat/patchouli/PatchouliCompat.java +++ b/src/main/java/de/ellpeck/naturesaura/compat/patchouli/PatchouliCompat.java @@ -1,17 +1,22 @@ package de.ellpeck.naturesaura.compat.patchouli; import de.ellpeck.naturesaura.NaturesAura; +import net.minecraft.client.renderer.block.model.ModelBakery; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.util.ResourceLocation; import vazkii.patchouli.client.book.BookPage; import vazkii.patchouli.client.book.ClientBookRegistry; +import vazkii.patchouli.common.item.PatchouliItems; public final class PatchouliCompat { public static final ResourceLocation GUI_ELEMENTS = new ResourceLocation(NaturesAura.MOD_ID, "textures/gui/patchouli/elements.png"); - public static void init() { + public static void initClient() { addPatchouliPage("altar", PageAltar.class); addPatchouliPage("tree_ritual", PageTreeRitual.class); + + ModelBakery.registerItemVariants(PatchouliItems.book, new ModelResourceLocation(NaturesAura.MOD_ID + ":book", "inventory")); } private static void addPatchouliPage(String name, Class page) { diff --git a/src/main/java/de/ellpeck/naturesaura/proxy/ClientProxy.java b/src/main/java/de/ellpeck/naturesaura/proxy/ClientProxy.java index 7bd52d5a..b8db7435 100644 --- a/src/main/java/de/ellpeck/naturesaura/proxy/ClientProxy.java +++ b/src/main/java/de/ellpeck/naturesaura/proxy/ClientProxy.java @@ -4,12 +4,13 @@ import de.ellpeck.naturesaura.blocks.tiles.TileEntityNatureAltar; import de.ellpeck.naturesaura.blocks.tiles.TileEntityWoodStand; import de.ellpeck.naturesaura.blocks.tiles.render.RenderNatureAltar; import de.ellpeck.naturesaura.blocks.tiles.render.RenderWoodStand; -import de.ellpeck.naturesaura.renderers.PlayerLayerTrinkets; +import de.ellpeck.naturesaura.compat.Compat; import de.ellpeck.naturesaura.events.ClientEvents; import de.ellpeck.naturesaura.particles.ParticleHandler; import de.ellpeck.naturesaura.particles.ParticleMagic; import de.ellpeck.naturesaura.reg.IColorProvidingBlock; import de.ellpeck.naturesaura.reg.IColorProvidingItem; +import de.ellpeck.naturesaura.renderers.PlayerLayerTrinkets; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.ModelResourceLocation; @@ -18,7 +19,6 @@ import net.minecraft.client.renderer.color.ItemColors; import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.MinecraftForge; @@ -34,6 +34,7 @@ public class ClientProxy implements IProxy { @Override public void preInit(FMLPreInitializationEvent event) { MinecraftForge.EVENT_BUS.register(new ClientEvents()); + Compat.initClient(); } @Override @@ -53,8 +54,8 @@ public class ClientProxy implements IProxy { } @Override - public void registerRenderer(ItemStack stack, ResourceLocation location, String variant) { - ModelLoader.setCustomModelResourceLocation(stack.getItem(), stack.getItemDamage(), new ModelResourceLocation(location, variant)); + public void registerRenderer(ItemStack stack, ModelResourceLocation location) { + ModelLoader.setCustomModelResourceLocation(stack.getItem(), stack.getItemDamage(), location); } @Override diff --git a/src/main/java/de/ellpeck/naturesaura/proxy/IProxy.java b/src/main/java/de/ellpeck/naturesaura/proxy/IProxy.java index ca0e9474..80a5d8f5 100644 --- a/src/main/java/de/ellpeck/naturesaura/proxy/IProxy.java +++ b/src/main/java/de/ellpeck/naturesaura/proxy/IProxy.java @@ -2,6 +2,7 @@ package de.ellpeck.naturesaura.proxy; import de.ellpeck.naturesaura.reg.IColorProvidingBlock; import de.ellpeck.naturesaura.reg.IColorProvidingItem; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -16,7 +17,7 @@ public interface IProxy { void postInit(FMLPostInitializationEvent event); - void registerRenderer(ItemStack stack, ResourceLocation location, String variant); + void registerRenderer(ItemStack stack, ModelResourceLocation location); void addColorProvidingItem(IColorProvidingItem item); diff --git a/src/main/java/de/ellpeck/naturesaura/proxy/ServerProxy.java b/src/main/java/de/ellpeck/naturesaura/proxy/ServerProxy.java index 38e2f652..0e8d5086 100644 --- a/src/main/java/de/ellpeck/naturesaura/proxy/ServerProxy.java +++ b/src/main/java/de/ellpeck/naturesaura/proxy/ServerProxy.java @@ -2,8 +2,8 @@ package de.ellpeck.naturesaura.proxy; import de.ellpeck.naturesaura.reg.IColorProvidingBlock; import de.ellpeck.naturesaura.reg.IColorProvidingItem; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.fml.common.FMLCommonHandler; import net.minecraftforge.fml.common.event.FMLInitializationEvent; @@ -28,7 +28,7 @@ public class ServerProxy implements IProxy { } @Override - public void registerRenderer(ItemStack stack, ResourceLocation location, String variant) { + public void registerRenderer(ItemStack stack, ModelResourceLocation location) { } diff --git a/src/main/java/de/ellpeck/naturesaura/reg/IModelProvider.java b/src/main/java/de/ellpeck/naturesaura/reg/IModelProvider.java index ce434118..1e202408 100644 --- a/src/main/java/de/ellpeck/naturesaura/reg/IModelProvider.java +++ b/src/main/java/de/ellpeck/naturesaura/reg/IModelProvider.java @@ -2,6 +2,7 @@ package de.ellpeck.naturesaura.reg; import de.ellpeck.naturesaura.NaturesAura; import net.minecraft.block.Block; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -11,20 +12,9 @@ import java.util.Map; public interface IModelProvider { - default Map getModelLocations() { + default Map getModelLocations() { ItemStack stack = this instanceof Item ? new ItemStack((Item) this) : new ItemStack((Block) this); String name = ((IModItem) this).getBaseName(); - return Collections.singletonMap(stack, new ModelVariant(new ResourceLocation(NaturesAura.MOD_ID, name), "inventory")); - } - - class ModelVariant { - - public final ResourceLocation location; - public final String variant; - - public ModelVariant(ResourceLocation location, String variant) { - this.location = location; - this.variant = variant; - } + return Collections.singletonMap(stack, new ModelResourceLocation(new ResourceLocation(NaturesAura.MOD_ID, name), "inventory")); } } diff --git a/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java b/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java index a4b7b6b3..8e627265 100644 --- a/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java +++ b/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java @@ -1,8 +1,8 @@ package de.ellpeck.naturesaura.reg; import de.ellpeck.naturesaura.NaturesAura; -import de.ellpeck.naturesaura.reg.IModelProvider.ModelVariant; import net.minecraft.block.Block; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; @@ -70,11 +70,10 @@ public final class ModRegistry { } if (item instanceof IModelProvider) { - Map models = ((IModelProvider) item).getModelLocations(); + Map models = ((IModelProvider) item).getModelLocations(); for (ItemStack stack : models.keySet()) { - ModelVariant variant = models.get(stack); - NaturesAura.proxy.registerRenderer(stack, variant.location, variant.variant); + NaturesAura.proxy.registerRenderer(stack, models.get(stack)); } } diff --git a/src/main/resources/assets/naturesaura/models/item/book.json b/src/main/resources/assets/naturesaura/models/item/book.json new file mode 100644 index 00000000..ab85a0da --- /dev/null +++ b/src/main/resources/assets/naturesaura/models/item/book.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "naturesaura:items/book" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/patchouli_books/book/book.json b/src/main/resources/assets/naturesaura/patchouli_books/book/book.json index cbe5a1bb..b869b824 100644 --- a/src/main/resources/assets/naturesaura/patchouli_books/book/book.json +++ b/src/main/resources/assets/naturesaura/patchouli_books/book/book.json @@ -6,7 +6,7 @@ ], "creative_tab": "naturesaura", "advancements_tab": "naturesaura", - "book_texture": "patchouli:textures/gui/book_green", - "model": "patchouli:book_green", + "book_texture": "naturesaura:textures/gui/book", + "model": "naturesaura:book", "subtitle": "Haha yes" } \ No newline at end of file diff --git a/src/main/resources/assets/naturesaura/textures/gui/book.png b/src/main/resources/assets/naturesaura/textures/gui/book.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b7f5915b2cd8adbd3ef5cdf9f5ddb653fe0778 GIT binary patch literal 26095 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

j3ox`@!Ceu+LmT1 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%0D24mo>u{E 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 Sv;cc$gA>P28|E9>1^pigEqKHL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/naturesaura/textures/items/book.png b/src/main/resources/assets/naturesaura/textures/items/book.png new file mode 100644 index 0000000000000000000000000000000000000000..9e7a1f4f45f1b8c8003e8bddc5c9556d33e62ebc GIT binary patch literal 448 zcmV;x0YCnUP)004R= z004l4008;_004mL004C`008P>0026e000+nl3&F}00009a7bBm000XT000XT0n*)m z`~Uy|7<5HgbW?9;ba!ELWdLwtX>N2bZe?^JG%hhNF=Hy6O8@`?B1uF+R5(wilCeud zQ5426Nn3*m4f2N6dI*AIQxJ%>2ySgoL6JkylAwzq(jaaPl|yS&&>wl^JJ;{N>(PgU z7e0LN-Shi>*T-`ra#Rkk;`x~{d!alFp>{V7i6w!v0t+r@75SLfWVKACaZ}lqP+&m} zuNGDL{q!(IcxEMgK?~y-r{LaYGYJwET(y$0$)J%iWCWS=MM)(pz^0X;5fUCf29dYd zj&yFTnE($cv5*DF11F33doL)Qp6Kw;_k(U?C=bL8;OD;6`&K>41pj}NEr|uuh-<)u zJEy1BcYrs^zY$Af@N487aSa%=U{D@D2rFSD;Q6D6*b4Avc