diff --git a/dependencies.gradle b/dependencies.gradle index 28e3910..aaf6b7b 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -37,6 +37,6 @@ dependencies { runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.5.4-GTNH:dev") runtimeOnlyNonPublishable("curse.maven:Nashorn-374413:2924946") - implementation rfg.deobf(name: "CustomNPC-Plus-1.9.2") - implementation name: "geckolib-unofficial-1.7.10-1.0.6-dev" + implementation rfg.deobf(name: "CustomNPC-Plus-1.10.2-beta4") + implementation name: "geckolib3-1.0.4-beta" } diff --git a/lib/CustomNPC-Plus-1.9.2.jar b/lib/CustomNPC-Plus-1.10.2-beta4.jar similarity index 78% rename from lib/CustomNPC-Plus-1.9.2.jar rename to lib/CustomNPC-Plus-1.10.2-beta4.jar index 2bff8b5..9d52506 100644 Binary files a/lib/CustomNPC-Plus-1.9.2.jar and b/lib/CustomNPC-Plus-1.10.2-beta4.jar differ diff --git a/lib/geckolib-unofficial-1.7.10-1.0.6-dev.jar b/lib/geckolib3-1.0.4-beta.jar similarity index 76% rename from lib/geckolib-unofficial-1.7.10-1.0.6-dev.jar rename to lib/geckolib3-1.0.4-beta.jar index 92704aa..28616a9 100644 Binary files a/lib/geckolib-unofficial-1.7.10-1.0.6-dev.jar and b/lib/geckolib3-1.0.4-beta.jar differ diff --git a/src/main/java/com/goodbird/npcgecko/api/AbstractGeckoAPI.java b/src/main/java/com/goodbird/npcgecko/api/AbstractGeckoAPI.java index 65d7789..1344147 100644 --- a/src/main/java/com/goodbird/npcgecko/api/AbstractGeckoAPI.java +++ b/src/main/java/com/goodbird/npcgecko/api/AbstractGeckoAPI.java @@ -49,8 +49,10 @@ public abstract class AbstractGeckoAPI { public abstract void syncAnimForPlayer(IBlockScripted scriptedBlock, AnimationBuilder builder, IPlayer player); public abstract void syncAnimForAll(IBlockScripted scriptedBlock, AnimationBuilder builder); - public abstract void setModel(ScriptCustomItem item, String model); - public abstract void setTexture(ScriptCustomItem item, String texture); - public abstract void setAnimationFile(ScriptCustomItem item, String animation); - public abstract void setIdleAnimation(ScriptCustomItem item, String animation); + // TODO: Fix ScriptCustomItem + +// public abstract void setModel(ScriptCustomItem item, String model); +// public abstract void setTexture(ScriptCustomItem item, String texture); +// public abstract void setAnimationFile(ScriptCustomItem item, String animation); +// public abstract void setIdleAnimation(ScriptCustomItem item, String animation); } diff --git a/src/main/java/com/goodbird/npcgecko/api/GeckoAPI.java b/src/main/java/com/goodbird/npcgecko/api/GeckoAPI.java index 793a3ba..1e1e0b0 100644 --- a/src/main/java/com/goodbird/npcgecko/api/GeckoAPI.java +++ b/src/main/java/com/goodbird/npcgecko/api/GeckoAPI.java @@ -120,39 +120,39 @@ public class GeckoAPI extends AbstractGeckoAPI { NetworkHandler.sendToAll(new CPacketSyncTileManualAnim(scriptedBlock.getMCTileEntity(), builder)); } - private CustomItemModelData getOrCreateCIMD(ScriptCustomItem item){ - IScriptCustomItem scriptCustomItem = (IScriptCustomItem) item; - if(!scriptCustomItem.hasCustomModel()){ - scriptCustomItem.setCustomModelData(new CustomItemModelData()); - } - return scriptCustomItem.getCustomModelData(); - } - - @Override - public void setModel(ScriptCustomItem item, String model) { - CustomItemModelData data = getOrCreateCIMD(item); - data.setModel(model); - item.saveItemData(); - } - - @Override - public void setTexture(ScriptCustomItem item, String texture) { - CustomItemModelData data = getOrCreateCIMD(item); - data.setTexture(texture); - item.saveItemData(); - } - - @Override - public void setAnimationFile(ScriptCustomItem item, String animation) { - CustomItemModelData data = getOrCreateCIMD(item); - data.setAnimFile(animation); - item.saveItemData(); - } - - @Override - public void setIdleAnimation(ScriptCustomItem item, String animation) { - CustomItemModelData data = getOrCreateCIMD(item); - data.setIdleAnim(animation); - item.saveItemData(); - } +// private CustomItemModelData getOrCreateCIMD(ScriptCustomItem item){ +// IScriptCustomItem scriptCustomItem = (IScriptCustomItem) item; +// if(!scriptCustomItem.hasCustomModel()){ +// scriptCustomItem.setCustomModelData(new CustomItemModelData()); +// } +// return scriptCustomItem.getCustomModelData(); +// } +// +// @Override +// public void setModel(ScriptCustomItem item, String model) { +// CustomItemModelData data = getOrCreateCIMD(item); +// data.setModel(model); +// item.saveItemData(); +// } +// +// @Override +// public void setTexture(ScriptCustomItem item, String texture) { +// CustomItemModelData data = getOrCreateCIMD(item); +// data.setTexture(texture); +// item.saveItemData(); +// } +// +// @Override +// public void setAnimationFile(ScriptCustomItem item, String animation) { +// CustomItemModelData data = getOrCreateCIMD(item); +// data.setAnimFile(animation); +// item.saveItemData(); +// } +// +// @Override +// public void setIdleAnimation(ScriptCustomItem item, String animation) { +// CustomItemModelData data = getOrCreateCIMD(item); +// data.setIdleAnim(animation); +// item.saveItemData(); +// } } diff --git a/src/main/java/com/goodbird/npcgecko/client/model/ItemModelCustom.java b/src/main/java/com/goodbird/npcgecko/client/model/ItemModelCustom.java index 033cbdc..1685fe2 100644 --- a/src/main/java/com/goodbird/npcgecko/client/model/ItemModelCustom.java +++ b/src/main/java/com/goodbird/npcgecko/client/model/ItemModelCustom.java @@ -1,53 +1,53 @@ -package com.goodbird.npcgecko.client.model; +// TODO: Fix ScriptCustomItem -import com.goodbird.npcgecko.data.CustomItemModelData; -import com.goodbird.npcgecko.mixin.IScriptCustomItem; -import net.minecraft.util.ResourceLocation; -import noppes.npcs.api.item.IItemStack; -import noppes.npcs.scripted.NpcAPI; -import noppes.npcs.scripted.item.ScriptCustomItem; -import software.bernie.geckolib3.item.AnimatableStackWrapper; -import software.bernie.geckolib3.model.AnimatedGeoModel; -import software.bernie.geckolib3.resource.GeckoLibCache; - -public class ItemModelCustom extends AnimatedGeoModel { - - private CustomItemModelData getModelData(AnimatableStackWrapper animatable){ - IItemStack istack = NpcAPI.Instance().getIItemStack(animatable.getStack()); - if(!(istack instanceof ScriptCustomItem)) return null; - return ((IScriptCustomItem)istack).getCustomModelData(); - } - - @Override - public ResourceLocation getAnimationFileLocation(AnimatableStackWrapper animatable) { - CustomItemModelData data = getModelData(animatable); - if(data==null || !GeckoLibCache.getInstance().getAnimations().containsKey(new ResourceLocation(data.getAnimFile()))){ - return new ResourceLocation("npcgecko","animations/none.animations.json"); - } - return new ResourceLocation(data.getAnimFile()); - } - - @Override - public ResourceLocation getModelLocation(AnimatableStackWrapper animatable) { - CustomItemModelData data = getModelData(animatable); - if(data==null || !GeckoLibCache.getInstance().getGeoModels().containsKey(new ResourceLocation(data.getModel()))){ - return new ResourceLocation("npcgecko","geo/modelnotfound.geo.json"); - } - if(!GeckoLibCache.getInstance().getAnimations().containsKey(new ResourceLocation(data.getAnimFile()))){ - return new ResourceLocation("npcgecko","geo/animfilenotfound.geo.json"); - } - return new ResourceLocation(data.getModel()); - } - - @Override - public ResourceLocation getTextureLocation(AnimatableStackWrapper animatable) { - CustomItemModelData data = getModelData(animatable); - if(data==null || !GeckoLibCache.getInstance().getGeoModels().containsKey(new ResourceLocation(data.getModel()))){ - return new ResourceLocation("npcgecko","textures/model/alphabet.png"); - } - if(!GeckoLibCache.getInstance().getAnimations().containsKey(new ResourceLocation(data.getAnimFile()))){ - return new ResourceLocation("npcgecko","textures/model/alphabet.png"); - } - return new ResourceLocation(data.getTexture()); - } -} +//package com.goodbird.npcgecko.client.model; +// +//import com.goodbird.npcgecko.data.CustomItemModelData; +//import com.goodbird.npcgecko.mixin.IScriptCustomItem; +//import net.minecraft.util.ResourceLocation; +//import noppes.npcs.api.item.IItemStack; +//import noppes.npcs.scripted.NpcAPI; +//import noppes.npcs.scripted.item.ScriptCustomItem; +//import software.bernie.geckolib3.resource.GeckoLibCache; +// +//public class ItemModelCustom extends AnimatedGeoModel { +// +// private CustomItemModelData getModelData(AnimatableStackWrapper animatable){ +// IItemStack istack = NpcAPI.Instance().getIItemStack(animatable.getStack()); +// if(!(istack instanceof ScriptCustomItem)) return null; +// return ((IScriptCustomItem)istack).getCustomModelData(); +// } +// +// @Override +// public ResourceLocation getAnimationFileLocation(AnimatableStackWrapper animatable) { +// CustomItemModelData data = getModelData(animatable); +// if(data==null || !GeckoLibCache.getInstance().getAnimations().containsKey(new ResourceLocation(data.getAnimFile()))){ +// return new ResourceLocation("npcgecko","animations/none.animations.json"); +// } +// return new ResourceLocation(data.getAnimFile()); +// } +// +// @Override +// public ResourceLocation getModelLocation(AnimatableStackWrapper animatable) { +// CustomItemModelData data = getModelData(animatable); +// if(data==null || !GeckoLibCache.getInstance().getGeoModels().containsKey(new ResourceLocation(data.getModel()))){ +// return new ResourceLocation("npcgecko","geo/modelnotfound.geo.json"); +// } +// if(!GeckoLibCache.getInstance().getAnimations().containsKey(new ResourceLocation(data.getAnimFile()))){ +// return new ResourceLocation("npcgecko","geo/animfilenotfound.geo.json"); +// } +// return new ResourceLocation(data.getModel()); +// } +// +// @Override +// public ResourceLocation getTextureLocation(AnimatableStackWrapper animatable) { +// CustomItemModelData data = getModelData(animatable); +// if(data==null || !GeckoLibCache.getInstance().getGeoModels().containsKey(new ResourceLocation(data.getModel()))){ +// return new ResourceLocation("npcgecko","textures/model/alphabet.png"); +// } +// if(!GeckoLibCache.getInstance().getAnimations().containsKey(new ResourceLocation(data.getAnimFile()))){ +// return new ResourceLocation("npcgecko","textures/model/alphabet.png"); +// } +// return new ResourceLocation(data.getTexture()); +// } +//} diff --git a/src/main/java/com/goodbird/npcgecko/client/renderer/RenderCustomModel.java b/src/main/java/com/goodbird/npcgecko/client/renderer/RenderCustomModel.java index 919bb05..29008ae 100644 --- a/src/main/java/com/goodbird/npcgecko/client/renderer/RenderCustomModel.java +++ b/src/main/java/com/goodbird/npcgecko/client/renderer/RenderCustomModel.java @@ -5,7 +5,9 @@ import com.goodbird.npcgecko.entity.EntityCustomModel; import com.mojang.realmsclient.gui.ChatFormatting; import net.geckominecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; import org.lwjgl.opengl.GL11; import software.bernie.geckolib3.core.util.Color; @@ -139,4 +141,9 @@ public class RenderCustomModel extends GeoEntityRenderer { public boolean isBoneRenderOverriden(EntityCustomModel entity, GeoBone bone) { return bone.name.equals("held_item") || bone.name.equals("left_held_item"); } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return super.getTextureLocation((EntityCustomModel) p_110775_1_); + } } diff --git a/src/main/java/com/goodbird/npcgecko/client/renderer/RenderTileCustomModel.java b/src/main/java/com/goodbird/npcgecko/client/renderer/RenderTileCustomModel.java index c10f567..db86d35 100644 --- a/src/main/java/com/goodbird/npcgecko/client/renderer/RenderTileCustomModel.java +++ b/src/main/java/com/goodbird/npcgecko/client/renderer/RenderTileCustomModel.java @@ -2,6 +2,7 @@ package com.goodbird.npcgecko.client.renderer; import com.goodbird.npcgecko.client.model.TileModelCustom; import com.goodbird.npcgecko.tile.TileEntityCustomModel; +import net.minecraft.tileentity.TileEntity; import software.bernie.example.client.model.tile.BotariumModel; import software.bernie.geckolib3.renderers.geo.GeoBlockRenderer; @@ -9,5 +10,10 @@ public class RenderTileCustomModel extends GeoBlockRenderer cir) { - if(customNPC_Gecko_Addon$customModelData!=null){ - NBTTagCompound modelDataTag = new NBTTagCompound(); - customNPC_Gecko_Addon$customModelData.writeToNBT(modelDataTag); - nbttagcompound.setTag("GeckoModelData", modelDataTag); - } - } - - @Inject(method = "setItemNBT", at = @At("HEAD"), remap = false) - public void readFromNBT(NBTTagCompound nbttagcompound, CallbackInfo ci){ - if(nbttagcompound.hasKey("GeckoModelData")){ - customNPC_Gecko_Addon$customModelData = new CustomItemModelData(); - customNPC_Gecko_Addon$customModelData.readFromNBT(nbttagcompound.getCompoundTag("GeckoModelData")); - } - } - - @Unique - public CustomItemModelData getCustomModelData(){ - return customNPC_Gecko_Addon$customModelData; - } - - @Override - public void setCustomModelData(CustomItemModelData data) { - customNPC_Gecko_Addon$customModelData = data; - } - - @Unique - public boolean hasCustomModel() { - return customNPC_Gecko_Addon$customModelData!=null; - } -} +// TODO: Fix ScriptCustomItem +//package com.goodbird.npcgecko.mixin.impl; +// +//import com.goodbird.npcgecko.data.CustomItemModelData; +//import com.goodbird.npcgecko.mixin.IScriptCustomItem; +//import net.minecraft.nbt.NBTTagCompound; +//import noppes.npcs.scripted.item.ScriptCustomItem; +//import org.spongepowered.asm.mixin.Mixin; +//import org.spongepowered.asm.mixin.Unique; +//import org.spongepowered.asm.mixin.injection.At; +//import org.spongepowered.asm.mixin.injection.Inject; +//import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +//import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +// +//@Mixin(ScriptCustomItem.class) +//public class MixinScriptCustomItem implements IScriptCustomItem { +// @Unique +// private CustomItemModelData customNPC_Gecko_Addon$customModelData; +// +// @Inject(method = "getItemNBT", at = @At("HEAD"), remap = false) +// public void writeToNBT(NBTTagCompound nbttagcompound, CallbackInfoReturnable cir) { +// if(customNPC_Gecko_Addon$customModelData!=null){ +// NBTTagCompound modelDataTag = new NBTTagCompound(); +// customNPC_Gecko_Addon$customModelData.writeToNBT(modelDataTag); +// nbttagcompound.setTag("GeckoModelData", modelDataTag); +// } +// } +// +// @Inject(method = "setItemNBT", at = @At("HEAD"), remap = false) +// public void readFromNBT(NBTTagCompound nbttagcompound, CallbackInfo ci){ +// if(nbttagcompound.hasKey("GeckoModelData")){ +// customNPC_Gecko_Addon$customModelData = new CustomItemModelData(); +// customNPC_Gecko_Addon$customModelData.readFromNBT(nbttagcompound.getCompoundTag("GeckoModelData")); +// } +// } +// +// @Unique +// public CustomItemModelData getCustomModelData(){ +// return customNPC_Gecko_Addon$customModelData; +// } +// +// @Override +// public void setCustomModelData(CustomItemModelData data) { +// customNPC_Gecko_Addon$customModelData = data; +// } +// +// @Unique +// public boolean hasCustomModel() { +// return customNPC_Gecko_Addon$customModelData!=null; +// } +//} diff --git a/src/main/java/com/goodbird/npcgecko/network/CPacketSyncManualAnim.java b/src/main/java/com/goodbird/npcgecko/network/CPacketSyncManualAnim.java index 4003b8e..625120e 100644 --- a/src/main/java/com/goodbird/npcgecko/network/CPacketSyncManualAnim.java +++ b/src/main/java/com/goodbird/npcgecko/network/CPacketSyncManualAnim.java @@ -5,6 +5,7 @@ import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import io.netty.buffer.ByteBuf; +import kamkeel.npcs.util.ByteBufUtils; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; @@ -59,12 +60,12 @@ public final class CPacketSyncManualAnim implements IMessage, IMessageHandler