Bump Dev to newer versions

This commit is contained in:
Kam committed 2025-07-28 18:28:40 -04:00
1 parent 97c4b39836
commit f3973abed5
15 files changed
+220 -204

No files matched your search

+2 -2
View File
@@ -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"
}
@@ -49,8 +49,10 @@ public abstract class AbstractGeckoAPI {
public abstract void syncAnimForPlayer(IBlockScripted scriptedBlock, AnimationBuilder builder, IPlayer<EntityPlayerMP> 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);
}
@@ -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();
// }
}
@@ -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<AnimatableStackWrapper> {
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<AnimatableStackWrapper> {
//
// 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());
// }
//}
@@ -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<EntityCustomModel> {
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_);
}
}
@@ -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<TileEntityCustomMode
public RenderTileCustomModel() {
super(new TileModelCustom());
}
@Override
public void renderTileEntityAt(TileEntity p_147500_1_, double p_147500_2_, double p_147500_4_, double p_147500_6_, float p_147500_8_) {
// TODO: FIX RenderTileEntityAt
}
}
@@ -1,52 +1,54 @@
package com.goodbird.npcgecko.mixin.impl;
// TODO: Fix ScriptCustomItem
import com.goodbird.npcgecko.client.model.ItemModelCustom;
import com.goodbird.npcgecko.mixin.IScriptCustomItem;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import noppes.npcs.client.renderer.items.CustomItemRenderer;
import noppes.npcs.scripted.item.ScriptCustomItem;
import org.lwjgl.opengl.GL11;
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 software.bernie.geckolib3.item.AnimatableStackWrapper;
import software.bernie.geckolib3.renderers.geo.GeoItemStackRenderer;
@Mixin(CustomItemRenderer.class)
public class MixinCustomItemRenderer {
@Unique
private static GeoItemStackRenderer renderer = new GeoItemStackRenderer(new ItemModelCustom());
@Inject(method = "renderEntityCustomItem", cancellable = true, at=@At("HEAD"), remap = false)
public void renderEntityCustomItem(ScriptCustomItem scriptCustomItem, ItemStack itemStack, EntityItem entityItem, CallbackInfo ci) {
if(((IScriptCustomItem)scriptCustomItem).hasCustomModel()){
renderer.render(AnimatableStackWrapper.wrapItemStack(itemStack), itemStack);
ci.cancel();
}
}
@Inject(method = "renderInventoryCustomItem", cancellable = true, at=@At("HEAD"), remap = false)
public void renderInventoryCustomItem(ScriptCustomItem scriptCustomItem, CallbackInfo ci){
if(((IScriptCustomItem)scriptCustomItem).hasCustomModel()){
GL11.glPushMatrix();
GL11.glTranslated(-1.0, -1.0, 0.0);
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
renderer.render(AnimatableStackWrapper.wrapItemStack(scriptCustomItem.item), scriptCustomItem.item);
GL11.glPopMatrix();
ci.cancel();
}
}
@Inject(method = "renderItem3d", cancellable = true, at=@At("HEAD"), remap = false)
public void renderItem3d(ScriptCustomItem scriptCustomItem, EntityLivingBase entityLivingBase, ItemStack itemStack, CallbackInfo ci) {
if(((IScriptCustomItem)scriptCustomItem).hasCustomModel()){
renderer.render(AnimatableStackWrapper.wrapItemStack(itemStack), itemStack);
ci.cancel();
}
}
}
//package com.goodbird.npcgecko.mixin.impl;
//
//import com.goodbird.npcgecko.client.model.ItemModelCustom;
//import com.goodbird.npcgecko.mixin.IScriptCustomItem;
//import net.minecraft.entity.EntityLivingBase;
//import net.minecraft.entity.item.EntityItem;
//import net.minecraft.item.ItemStack;
//import noppes.npcs.client.renderer.items.CustomItemRenderer;
//import noppes.npcs.scripted.item.ScriptCustomItem;
//import org.lwjgl.opengl.GL11;
//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 software.bernie.geckolib3.item.AnimatableStackWrapper;
//import software.bernie.geckolib3.renderers.geo.GeoItemStackRenderer;
//
//@Mixin(CustomItemRenderer.class)
//public class MixinCustomItemRenderer {
// @Unique
// private static GeoItemStackRenderer renderer = new GeoItemStackRenderer(new ItemModelCustom());
//
// @Inject(method = "renderEntityCustomItem", cancellable = true, at=@At("HEAD"), remap = false)
// public void renderEntityCustomItem(ScriptCustomItem scriptCustomItem, ItemStack itemStack, EntityItem entityItem, CallbackInfo ci) {
// if(((IScriptCustomItem)scriptCustomItem).hasCustomModel()){
// renderer.render(AnimatableStackWrapper.wrapItemStack(itemStack), itemStack);
// ci.cancel();
// }
// }
//
// @Inject(method = "renderInventoryCustomItem", cancellable = true, at=@At("HEAD"), remap = false)
// public void renderInventoryCustomItem(ScriptCustomItem scriptCustomItem, CallbackInfo ci){
// if(((IScriptCustomItem)scriptCustomItem).hasCustomModel()){
// GL11.glPushMatrix();
// GL11.glTranslated(-1.0, -1.0, 0.0);
// GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
// renderer.render(AnimatableStackWrapper.wrapItemStack(scriptCustomItem.item), scriptCustomItem.item);
// GL11.glPopMatrix();
// ci.cancel();
// }
// }
//
// @Inject(method = "renderItem3d", cancellable = true, at=@At("HEAD"), remap = false)
// public void renderItem3d(ScriptCustomItem scriptCustomItem, EntityLivingBase entityLivingBase, ItemStack itemStack, CallbackInfo ci) {
// if(((IScriptCustomItem)scriptCustomItem).hasCustomModel()){
// renderer.render(AnimatableStackWrapper.wrapItemStack(itemStack), itemStack);
// ci.cancel();
// }
// }
//
//}
@@ -3,10 +3,9 @@ package com.goodbird.npcgecko.mixin.impl;
import com.goodbird.npcgecko.entity.EntityCustomModel;
import com.goodbird.npcgecko.mixin.IDataDisplay;
import com.goodbird.npcgecko.utils.NpcTextureUtils;
import net.minecraft.entity.Entity;
import kamkeel.npcs.addon.GeckoAddon;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.ResourceLocation;
import kamkeel.addon.GeckoAddon;
import noppes.npcs.entity.EntityNPCInterface;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
@@ -5,11 +5,10 @@ import com.goodbird.npcgecko.client.gui.SubGuiModelAnimation;
import com.goodbird.npcgecko.client.gui.SubGuiModelExtras;
import com.goodbird.npcgecko.entity.EntityCustomModel;
import com.goodbird.npcgecko.mixin.IDataDisplay;
import kamkeel.addon.client.GeckoAddonClient;
import kamkeel.npcs.addon.client.GeckoAddonClient;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.ModelBase;
import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.ResourceLocation;
import noppes.npcs.client.gui.model.GuiCreationScreen;
@@ -1,50 +1,52 @@
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<NBTTagCompound> 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<NBTTagCompound> 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;
// }
//}
@@ -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<CP
animList.appendTag(animTag);
}
compound.setTag("anims",animList);
Server.writeNBT(buffer,compound);
ByteBufUtils.writeNBT(buffer,compound);
}
public static AnimationBuilder readAnimBuilder(ByteBuf buffer) throws IOException {
AnimationBuilder builder = new AnimationBuilder();
NBTTagCompound compound = Server.readNBT(buffer);
NBTTagCompound compound = ByteBufUtils.readNBT(buffer);
NBTTagList animList = compound.getTagList("anims",10);
for(int i=0;i<animList.tagCount();i++){
NBTTagCompound animTag = animList.getCompoundTagAt(i);
@@ -6,6 +6,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;
@@ -70,12 +71,12 @@ public class CPacketSyncTileManualAnim implements IMessage, IMessageHandler<CPac
animList.appendTag(animTag);
}
compound.setTag("anims",animList);
Server.writeNBT(buffer,compound);
ByteBufUtils.writeNBT(buffer,compound);
}
public static AnimationBuilder readAnimBuilder(ByteBuf buffer) throws IOException {
AnimationBuilder builder = new AnimationBuilder();
NBTTagCompound compound = Server.readNBT(buffer);
NBTTagCompound compound = ByteBufUtils.readNBT(buffer);
NBTTagList animList = compound.getTagList("anims",10);
for(int i=0;i<animList.tagCount();i++){
NBTTagCompound animTag = animList.getCompoundTagAt(i);
-3
View File
@@ -8,12 +8,9 @@
"mixins": [
"MixinDataDisplay",
"MixinGeckoAddon",
"MixinItemScripted",
"MixinScriptCustomItem",
"TileScriptedMixin"
],
"client": [
"MixinCustomItemRenderer",
"MixinBlockScriptedRenderer",
"MixinGeckoAddonClient"
],