Non résolu [Chest] Problème TileEntity chest sur serveur forge
-
Bonjour, je viens ici car je n’est trouver aucune réponse a mes 3h de recherches et ceci et ma dernière solution (j’espère que quelqu’un pourras m’aider.
Alors mon problèmes est que mon
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCopperChest.class, new RenderCopperChest());Fait crash mon serveur de test forge et je n’arrive pas a le régler.
L’erreur que me met le serveur (je ne peut pas l’upload via le site car sa ne veut pas)
https://image.noelshack.com/fichiers/2020/14/7/1586039710-crashs.png
La classe blockInitpublic static void init(){ kingonium_block = new BlockMod("kingonium_block", Material.IRON).setHardness(3.0f).setCreativeTab(Crown.crowntab); kingonium_ore = new BlockOreMod("kingonium_ore",4,1,2).setCreativeTab(Crown.crowntab).setHardness(5.0f); amethyste_ore = new BlockOreMod("amethyste_ore",3,1,2).setCreativeTab(Crown.crowntab).setHardness(5.0f); corograss = new BlockModGrass("coro_grass", Material.GROUND).setCreativeTab(Crown.crowntab).setHardness(0.3f); coro_leaves = new BlockLeaves("coro_leaves", Material.LEAVES).setCreativeTab(Crown.crowntab).setHardness(0.05f); coro_logs = new BlockModLog("coro_log", Material.WOOD).setCreativeTab(Crown.crowntab).setHardness(0.9f).setCreativeTab(Crown.crowntab); amethyste_block = new BlockMod("amethyste_block", Material.IRON).setHardness(3.0f).setCreativeTab(Crown.crowntab); coro_planks = new BlockModLog("coro_planks", Material.WOOD).setHardness(0.9f).setCreativeTab(Crown.crowntab); amethyste_stairs = new BlockCustomStairs("amethyste_stairs", amethyste_block.getDefaultState()).setHardness(2.0f); } @SubscribeEvent public static void registerBlocks(RegistryEvent.Register<Block> e){ e.getRegistry().registerAll(amethyste_stairs,coro_planks,coro_logs,amethyste_block,coro_leaves,corograss,kingonium_block,kingonium_ore,amethyste_ore); e.getRegistry().registerAll(BlockInit.BLOCKS.toArray(new Block[0])); TileEntityHandler.registerTileEntities(); } @SubscribeEvent public static void registerItemBlocks(RegistryEvent.Register<Item> e){ e.getRegistry().registerAll( new ItemBlock(amethyste_stairs).setRegistryName(amethyste_stairs.getRegistryName()),new ItemBlock(coro_planks).setRegistryName(coro_planks.getRegistryName()),new ItemBlock(corograss).setRegistryName(corograss.getRegistryName()),new ItemBlock(coro_logs).setRegistryName(coro_logs.getRegistryName()),new ItemBlock(amethyste_block).setRegistryName(amethyste_block.getRegistryName()),new ItemBlock(coro_leaves).setRegistryName(coro_leaves.getRegistryName()),new ItemBlock(kingonium_block).setRegistryName(kingonium_block.getRegistryName()), new ItemBlock(kingonium_ore).setRegistryName(kingonium_ore.getRegistryName()), new ItemBlock(BlockInit.COPPER_CHEST).setRegistryName(BlockInit.COPPER_CHEST.getRegistryName()), new ItemBlock(amethyste_ore).setRegistryName(amethyste_ore.getRegistryName())); } @SubscribeEvent public static void registerRenders(ModelRegistryEvent e){ registerRender(Item.getItemFromBlock(kingonium_block)); registerRender(Item.getItemFromBlock(kingonium_ore)); registerRender(Item.getItemFromBlock(amethyste_ore)); registerRender(Item.getItemFromBlock(BlockInit.COPPER_CHEST)); registerRender(Item.getItemFromBlock(corograss)); registerRender(Item.getItemFromBlock(coro_leaves)); registerRender(Item.getItemFromBlock(amethyste_block)); registerRender(Item.getItemFromBlock(coro_logs)); registerRender(Item.getItemFromBlock(coro_planks)); registerRender(Item.getItemFromBlock(amethyste_stairs)); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCopperChest.class, new RenderCopperChest()); }
Le gui
private static final ResourceLocation GUI_CHEST = new ResourceLocation(Crown.MODID + ":textures/gui/copper_chest.png"); private final InventoryPlayer playerInventory; private final TileEntityCopperChest te; public GuiCopperChest(InventoryPlayer playerInventory, TileEntityCopperChest chestInventory, EntityPlayer player) { super(new ContainerCopperChest(playerInventory, chestInventory, player)); this.playerInventory = playerInventory; this.te = chestInventory; xSize = 176; ySize = 256; } @Override protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { this.fontRenderer.drawString(this.te.getDisplayName().getUnformattedText(), 8, 6, 16086784); this.fontRenderer.drawString(this.playerInventory.getDisplayName().getUnformattedText(), 8, this.ySize - 92, 16086784); } @Override protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) { GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f); this.mc.getTextureManager().bindTexture(GUI_CHEST); this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize); } }
Le gui handler
public class GuiHandler implements IGuiHandler { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if(ID == Crown.GUI_COPPER_CHEST) return new ContainerCopperChest(player.inventory, (TileEntityCopperChest)world.getTileEntity(new BlockPos(x,y,z)), player); return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { if(ID == Crown.GUI_COPPER_CHEST) return new GuiCopperChest(player.inventory, (TileEntityCopperChest)world.getTileEntity(new BlockPos(x,y,z)), player); return null; } }
Le containerChest
public class ContainerCopperChest extends Container { private final int numRows; private final TileEntityCopperChest chestInventory; public ContainerCopperChest(InventoryPlayer playerInv, TileEntityCopperChest tileEntityCopperChest, EntityPlayer player) { this.chestInventory = tileEntityCopperChest; this.numRows = tileEntityCopperChest.getSizeInventory() / 9; tileEntityCopperChest.openInventory(player); for(int i = 0; i < this.numRows; ++i) { for(int j = 0; j < 9; ++j) { this.addSlotToContainer(new Slot(tileEntityCopperChest, j + i*9, 8 + j*18, 18 + i*18)); } } for(int y = 0; y < 3; y++) { for(int x = 0; x < 9; x++) { this.addSlotToContainer(new Slot(playerInv, x + y*9 + 9, 8 + x*18, 175 + y*18)); } } for(int x = 0; x < 9; x++) { this.addSlotToContainer(new Slot(playerInv, x, 8 + x*18, 233)); } } @Override public boolean canInteractWith(EntityPlayer playerIn) { return this.chestInventory.isUsableByPlayer(playerIn); } @Override public void onContainerClosed(EntityPlayer playerIn) { super.onContainerClosed(playerIn); chestInventory.closeInventory(playerIn); } @Override public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) { ItemStack itemstack = ItemStack.EMPTY; Slot slot = this.inventorySlots.get(index); if (slot != null && slot.getHasStack()) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if (index < this.numRows * 9) { if (!this.mergeItemStack(itemstack1, this.numRows * 9, this.inventorySlots.size(), true)) { return ItemStack.EMPTY; } } else if (!this.mergeItemStack(itemstack1, 0, this.numRows * 9, false)) { return ItemStack.EMPTY; } if (itemstack1.isEmpty()) { slot.putStack(ItemStack.EMPTY); } else { slot.onSlotChanged(); } } return itemstack; } public TileEntityCopperChest getChestInventory() { return this.chestInventory; } }
et le tileEntityCopperChest
public class TileEntityCopperChest extends TileEntityLockableLoot implements ITickable { private NonNullList<ItemStack> chestContents = NonNullList.<ItemStack>withSize(72, ItemStack.EMPTY); public int numPlayersUsing, ticksSinceSync; public float lidAngle, prevLidAngle; @Override public int getSizeInventory() { return 72; } @Override public int getInventoryStackLimit() { return 64; } @Override public boolean isEmpty() { for(ItemStack stack : this.chestContents) { if(!stack.isEmpty()) return false; } return true; } @Override public String getName() { return this.hasCustomName() ? this.customName : "container.copper_chest"; } @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); this.chestContents = NonNullList.<ItemStack>withSize(this.getSizeInventory(), ItemStack.EMPTY); if(!this.checkLootAndRead(compound)) ItemStackHelper.loadAllItems(compound, chestContents); if(compound.hasKey("CustomName", 8)) this.customName = compound.getString("CustomName"); } @Override public NBTTagCompound writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); if(!this.checkLootAndWrite(compound)) ItemStackHelper.saveAllItems(compound, chestContents); if(compound.hasKey("CustomName", 8)) compound.setString("CustomName", this.customName); return compound; } @Override public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn) { return new ContainerCopperChest(playerInventory, this, playerIn); } @Override public String getGuiID() { return Crown.MODID + ":copper_chest"; } @Override protected NonNullList<ItemStack> getItems() { return this.chestContents; } @Override public void update() { if (!this.world.isRemote && this.numPlayersUsing != 0 && (this.ticksSinceSync + pos.getX() + pos.getY() + pos.getZ()) % 200 == 0) { this.numPlayersUsing = 0; float f = 5.0F; for (EntityPlayer entityplayer : this.world.getEntitiesWithinAABB(EntityPlayer.class, new AxisAlignedBB((double)((float)pos.getX() - 5.0F), (double)((float)pos.getY() - 5.0F), (double)((float)pos.getZ() - 5.0F), (double)((float)(pos.getX() + 1) + 5.0F), (double)((float)(pos.getY() + 1) + 5.0F), (double)((float)(pos.getZ() + 1) + 5.0F)))) { if (entityplayer.openContainer instanceof ContainerCopperChest) { if (((ContainerCopperChest)entityplayer.openContainer).getChestInventory() == this) { ++this.numPlayersUsing; } } } } this.prevLidAngle = this.lidAngle; float f1 = 0.1F; if (this.numPlayersUsing > 0 && this.lidAngle == 0.0F) { double d1 = (double)pos.getX() + 0.5D; double d2 = (double)pos.getZ() + 0.5D; this.world.playSound((EntityPlayer)null, d1, (double)pos.getY() + 0.5D, d2, SoundEvents.BLOCK_IRON_TRAPDOOR_OPEN, SoundCategory.BLOCKS, 0.5F, this.world.rand.nextFloat() * 0.1F + 0.9F); } if (this.numPlayersUsing == 0 && this.lidAngle > 0.0F || this.numPlayersUsing > 0 && this.lidAngle < 1.0F) { float f2 = this.lidAngle; if (this.numPlayersUsing > 0) { this.lidAngle += 0.1F; } else { this.lidAngle -= 0.1F; } if (this.lidAngle > 1.0F) { this.lidAngle = 1.0F; } float f3 = 0.5F; if (this.lidAngle < 0.5F && f2 >= 0.5F) { double d3 = (double)pos.getX() + 0.5D; double d0 = (double)pos.getZ() + 0.5D; this.world.playSound((EntityPlayer)null, d3, (double)pos.getY() + 0.5D, d0, SoundEvents.BLOCK_IRON_TRAPDOOR_CLOSE, SoundCategory.BLOCKS, 0.5F, this.world.rand.nextFloat() * 0.1F + 0.9F); } if (this.lidAngle < 0.0F) { this.lidAngle = 0.0F; } } } @Override public void openInventory(EntityPlayer player) { ++this.numPlayersUsing; this.world.addBlockEvent(pos, this.getBlockType(), 1, this.numPlayersUsing); this.world.notifyNeighborsOfStateChange(pos, this.getBlockType(), false); } @Override public void closeInventory(EntityPlayer player) { --this.numPlayersUsing; this.world.addBlockEvent(pos, this.getBlockType(), 1, this.numPlayersUsing); this.world.notifyNeighborsOfStateChange(pos, this.getBlockType(), false); } }
-
Hello !
Je t’avoue que moi je débute du coup tu dois te dire mais pourquoi te répondre dans ce cas xD ?
Il y a peu d’activité et de personne qualifier pour répondre sur ce forum, j’attends moi même une réponse à mon problème ^^'.Cela dit, même si je comprend pas trop, en faisant une recherche j’ai trouvé un sujet qui traitais d’un cas similaire:
https://www.minecraftforgefrance.fr/topic/109/rendu-complexe-de-bloc-via-tesr/20?_=1586069805765J’ai aucune idée si tu l’as déjà vue ou si ça peut t’aider, mais au cas ou, si tu ne l’as pas vue, peut être que tu y trouvera une réponse,
désolé de pas pouvoir t’aider plus ! -
Bonjour,
@Nokiyx a dit dans [Chest] Problème TileEntity chest sur serveur forge :
@SubscribeEvent
public static void registerRenders(ModelRegistryEvent e){Ajoutes un @SideOnly(Side.CLIENT) ici et cela devrait régler le problème.
-
C’est bon sa fonctionne merci robin et merci plop aussi mais enfaite le SideOnly(Side.Client) sert que pour ce qui est côtés client si je comprend bien
-
Ah j’ai oublié mon autre question est que mon coffre quand je le place ils se met toujours dans le même sens ils ne veut pas faire une rotation voici mon blockstates
{ "variants": { "normal": { "model": "crown:kingonium_block" } "facing=east": { "model": "crown:copper_chest" }, "facing=west": { "model": "crown:copper_chest" }, "facing=north": { "model": "crown:copper_chest" }, "facing=south": { "model": "crown:copper_chest" } }
-
@SideOnly sert à indiquer à forge de supprimer la fonction si le runtime n’est pas celui indiqué.
Donc quand tu mets un @SideOnly(Side.CLIENT) la fonction qui se trouve en dessous est supprimé lors du chargement de mod.Pour la rotation, il faut ajouter dans le code de ton TileEntitySpecialRenderer un GlStateManager.rotate en fonction du bloc state.
-
@SideOnly(Side.CLIENT) public class RenderCopperChest extends TileEntitySpecialRenderer<TileEntityCopperChest> { private static final ResourceLocation TEXTURE = new ResourceLocation(Crown.MODID + ":textures/block/copper_chest.png"); private final ModelCopperChest MODEL = new ModelCopperChest(); @Override public void render(TileEntityCopperChest te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { GlStateManager.enableDepth(); GlStateManager.depthFunc(515); GlStateManager.depthMask(true); ModelCopperChest model = MODEL; if (destroyStage >= 0) { this.bindTexture(DESTROY_STAGES[destroyStage]); GlStateManager.matrixMode(5890); GlStateManager.pushMatrix(); GlStateManager.scale(4.0F, 4.0F, 1.0F); GlStateManager.translate(0.0625F, 0.0625F, 0.0625F); GlStateManager.matrixMode(5888); } else this.bindTexture(TEXTURE); GlStateManager.pushMatrix(); GlStateManager.enableRescaleNormal(); GlStateManager.translate((float)x, (float)y + 1.0F, (float)z + 1.0F); GlStateManager.scale(1.0F, -1.0F, -1.0F); GlStateManager.translate(0.5F, 0.5F, 0.5F); GlStateManager.translate(-0.5F, -0.5F, -0.5F); float f = te.prevLidAngle + (te.lidAngle - te.prevLidAngle) * partialTicks; f = 1.0F - f; f = 1.0F - f * f * f; model.chestLid.rotateAngleX = -(f * ((float)Math.PI / 2F)); model.renderAll(); GlStateManager.disableRescaleNormal(); GlStateManager.popMatrix(); GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); if (destroyStage >= 0) { GlStateManager.matrixMode(5890); GlStateManager.popMatrix(); GlStateManager.matrixMode(5888); } } }
J’ai le GlStateManager et normalement ils doit faire la rotation mais ils ne le fait pas
-
Hum non, je ne vois aucun GlStateManager.rotate dans ton code.
-
Alors j’ai oublier j’ai une classe model
extends ModelBase { public ModelRenderer chestKnob; public ModelRenderer chestLid; public ModelRenderer chestBelow; public ModelCopperChest() { this.textureWidth = 64; this.textureHeight = 64; this.chestBelow = new ModelRenderer(this, 0, 19); this.chestBelow.setRotationPoint(1.0F, 6.0F, 1.0F); this.chestBelow.addBox(0.0F, 0.0F, 0.0F, 14, 10, 14, 0.0F); this.chestKnob = new ModelRenderer(this, 0, 0); this.chestKnob.setRotationPoint(8.0F, 7.0F, 15.0F); this.chestKnob.addBox(-1.0F, -2.0F, -15.0F, 2, 4, 1, 0.0F); this.chestLid = new ModelRenderer(this, 0, 0); this.chestLid.setRotationPoint(1.0F, 7.0F, 15.0F); this.chestLid.addBox(0.0F, -5.0F, -14.0F, 14, 5, 14, 0.0F); } public void renderAll() { this.chestKnob.rotateAngleX = this.chestLid.rotateAngleX; this.chestLid.render(0.0625F); this.chestKnob.render(0.0625F); this.chestBelow.render(0.0625F); } }
-
Pour la rotation moi j’ai ça par exemple pour un block à moi:
{ "variants": { "facing=east,half=bottom,shape=straight,hside=left,sneak=false": { "model": "cubeplus:block/acacia_planks_stairs_4steps" }, "facing=west,half=bottom,shape=straight,hside=left,sneak=false": { "model": "cubeplus:block/acacia_planks_stairs_4steps", "y": 180, "uvlock": true }, "facing=south,half=bottom,shape=straight,hside=left,sneak=false": { "model": "cubeplus:block/acacia_planks_stairs_4steps", "y": 90, "uvlock": true }, "facing=north,half=bottom,shape=straight,hside=left,sneak=false": { "model": "cubeplus:block/acacia_planks_stairs_4steps", "y": 270, "uvlock": true },
Du coup pour toi ça devrais donner un truc du genre:
{ "variants": { "normal": { "model": "crown:kingonium_block" } "facing=east": { "model": "crown:copper_chest" }, "facing=west": { "model": "crown:copper_chest", "y": 180, "uvlock": true }, "facing=north": { "model": "crown:copper_chest", "y": 270, "uvlock": true }, "facing=south": { "model": "crown:copper_chest", "y": 90, "uvlock": true } }
A supposer que le facing=east sois la position de base !
-
Maintenant j’ai cette erreur je pense que le chest je vais le supprimer si sa continue
FML]: Exception loading model for variant crown:copper_chest#normal for blockstate "crown:copper_chest" net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model crown:copper_chest#normal with loader VariantLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:235) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:223) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:150) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:560) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:422) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_231] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_231] at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?] at GradleStart.main(GradleStart.java:25) [start/:?] Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1175) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?] ... 21 more [18:08:01] [Client thread/ERROR] [FML]: Exception loading blockstate for the variant crown:copper_chest#normal: java.lang.Exception: Could not load model definition for variant crown:copper_chest at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:269) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:121) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:223) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:150) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:560) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:422) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_231] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_231] at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?] at GradleStart.main(GradleStart.java:25) [start/:?] Caused by: java.lang.RuntimeException: Encountered an exception when loading model definition of 'crown:copper_chest' from: 'crown:blockstates/copper_chest.json' in resourcepack: 'FMLFileResourcePack:Crown Mod' at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:246) ~[ModelBakery.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:265) ~[ModelLoader.class:?] ... 20 more Caused by: com.google.gson.JsonSyntaxException: java.io.EOFException: End of input at line 7 column 6 path $.null at com.google.gson.Gson.fromJson(Gson.java:897) ~[Gson.class:?] at com.google.gson.Gson.fromJson(Gson.java:852) ~[Gson.class:?] at com.google.gson.Gson.fromJson(Gson.java:801) ~[Gson.class:?] at com.google.gson.Gson.fromJson(Gson.java:773) ~[Gson.class:?] at net.minecraftforge.client.model.BlockStateLoader.load(BlockStateLoader.java:80) ~[BlockStateLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBlockDefinition.parseFromReader(ModelBlockDefinition.java:42) ~[ModelBlockDefinition.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:242) ~[ModelBakery.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:265) ~[ModelLoader.class:?] ... 20 more Caused by: java.io.EOFException: End of input at line 7 column 6 path $.null at com.google.gson.stream.JsonReader.nextNonWhitespace(JsonReader.java:1393) ~[JsonReader.class:?] at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:482) ~[JsonReader.class:?] at com.google.gson.stream.JsonReader.hasNext(JsonReader.java:414) ~[JsonReader.class:?] at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:214) ~[ReflectiveTypeAdapterFactory$Adapter.class:?] at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?] at com.google.gson.Gson.fromJson(Gson.java:852) ~[Gson.class:?] at com.google.gson.Gson.fromJson(Gson.java:801) ~[Gson.class:?] at com.google.gson.Gson.fromJson(Gson.java:773) ~[Gson.class:?] at net.minecraftforge.client.model.BlockStateLoader.load(BlockStateLoader.java:80) ~[BlockStateLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBlockDefinition.parseFromReader(ModelBlockDefinition.java:42) ~[ModelBlockDefinition.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:242) ~[ModelBakery.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:265) ~[ModelLoader.class:?] ... 20 more
-
Tu peux envoyer le contenu de
assets/crown/blockstates/copper_chest.json
?
Le contenu json semble invalide. -
Tien
{ "variants": { "normal": { "model": "crown:copper_chest" } "facing=east": { "model": "crown:copper_chest" }, "facing=west": { "model": "crown:copper_chest", "y": 180, "uvlock": true }, "facing=north": { "model": "crown:copper_chest", "y": 270, "uvlock": true }, "facing=south": { "model": "crown:copper_chest", "y": 90, "uvlock": true } }
-
Il manque une dernière accolade de fermeture (tout à la fin) et une virgule à la fin de la ligne 3
-
{ "variants": { "normal": { "model": "crown:copper_chest" }, "facing=east": { "model": "crown:copper_chest" }, "facing=west": { "model": "crown:copper_chest", "y": 180, "uvlock": true }, "facing=north": { "model": "crown:copper_chest", "y": 270, "uvlock": true }, "facing=south": { "model": "crown:copper_chest", "y": 90, "uvlock": true } } }
Comme ça ?
-
Alors j’ai essayer mais quand je met j’ai ça et le bloc na plus de texture
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model crown:copper_chest#normal with loader VariantLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:235) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:223) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:150) ~[ModelLoader.class:?] at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?] at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?] at net.minecraft.client.Minecraft.init(Minecraft.java:560) [Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:422) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_241] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_241] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_241] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_241] at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?] at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_241] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_241] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_241] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_241] at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?] at GradleStart.main(GradleStart.java:25) [start/:?] Caused by: net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model crown:block/copper_chest with loader VanillaLoader.INSTANCE, skipping at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader$WeightedRandomModel.<init>(ModelLoader.java:658) ~[ModelLoader$WeightedRandomModel.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1176) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?] ... 21 more Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected name at line 5 column 6 path $.textures.texture at com.google.gson.internal.Streams.parse(Streams.java:60) ~[Streams.class:?] at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:65) ~[TreeTypeAdapter.class:?] at net.minecraft.util.JsonUtils.gsonDeserialize(JsonUtils.java:435) ~[JsonUtils.class:?] at net.minecraft.client.renderer.block.model.ModelBlock.deserialize(ModelBlock.java:51) ~[ModelBlock.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:338) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.access$1400(ModelLoader.java:115) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:861) ~[ModelLoader$VanillaLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader$WeightedRandomModel.<init>(ModelLoader.java:658) ~[ModelLoader$WeightedRandomModel.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1176) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?] ... 21 more Caused by: com.google.gson.stream.MalformedJsonException: Expected name at line 5 column 6 path $.textures.texture at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1559) ~[JsonReader.class:?] at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:505) ~[JsonReader.class:?] at com.google.gson.stream.JsonReader.hasNext(JsonReader.java:414) ~[JsonReader.class:?] at com.google.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:738) ~[TypeAdapters$29.class:?] at com.google.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:739) ~[TypeAdapters$29.class:?] at com.google.gson.internal.bind.TypeAdapters$29.read(TypeAdapters.java:714) ~[TypeAdapters$29.class:?] at com.google.gson.internal.Streams.parse(Streams.java:48) ~[Streams.class:?] at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:65) ~[TreeTypeAdapter.class:?] at net.minecraft.util.JsonUtils.gsonDeserialize(JsonUtils.java:435) ~[JsonUtils.class:?] at net.minecraft.client.renderer.block.model.ModelBlock.deserialize(ModelBlock.java:51) ~[ModelBlock.class:?] at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:338) ~[ModelBakery.class:?] at net.minecraftforge.client.model.ModelLoader.access$1400(ModelLoader.java:115) ~[ModelLoader.class:?] at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:861) ~[ModelLoader$VanillaLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?] at net.minecraftforge.client.model.ModelLoader$WeightedRandomModel.<init>(ModelLoader.java:658) ~[ModelLoader$WeightedRandomModel.class:?] at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1176) ~[ModelLoader$VariantLoader.class:?] at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?] ... 21 more
-
Ce que tu as envoyé est bien valide (tu peux vérifier ici : https://jsonlint.com/ )
par contre les logs indique toujours que ce n’est pas le cas. Vérifies que le fichier est bien modifié et sauvegardé. -
Il est modifié et sauvegarde mais je n’arrive plus a y comprendre
-
Ce message a été supprimé ! -
Alors mon bloc ne tourne toujours pas j’ai corriger mon model qui été défectueux et toujours aucun rotation