MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    TileEntity type XXX$TileEntityCustom has throw an exception trying to write state. It will not persist.

    Planifier Épinglé Verrouillé Déplacé Non résolu Sans suite
    1.12.2
    8 Messages 2 Publieurs 492 Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • A Hors-ligne
      Alatrick
      dernière édition par Alatrick

      Bonjour
      Je voulais créer un bloc basique qui émet de la lumière et j’ai cette erreur:

      [18:35:27] [Server thread/ERROR] [FML]: A TileEntity type fr.alatrick.admintoolmod.mcreator_megaTorch$TileEntityCustom has throw an exception trying to write state. It will not persist. Report this to the mod author
      java.lang.RuntimeException: class fr.alatrick.admintoolmod.mcreator_megaTorch$TileEntityCustom is missing a mapping! This is a bug!
      	at net.minecraft.tileentity.TileEntity.writeInternal(TileEntity.java:89) ~[TileEntity.class:?]
      	at net.minecraft.tileentity.TileEntity.writeToNBT(TileEntity.java:80) ~[TileEntity.class:?]
      	at net.minecraft.tileentity.TileEntityLockable.writeToNBT(TileEntityLockable.java:22) ~[TileEntityLockable.class:?]
      	at fr.alatrick.admintoolmod.mcreator_megaTorch$TileEntityCustom.writeToNBT(mcreator_megaTorch.java:165) ~[mcreator_megaTorch$TileEntityCustom.class:?]
      	at net.minecraft.world.chunk.storage.AnvilChunkLoader.writeChunkToNBT(AnvilChunkLoader.java:414) [AnvilChunkLoader.class:?]
      	at net.minecraft.world.chunk.storage.AnvilChunkLoader.saveChunk(AnvilChunkLoader.java:185) [AnvilChunkLoader.class:?]
      	at net.minecraft.world.gen.ChunkProviderServer.saveChunkData(ChunkProviderServer.java:214) [ChunkProviderServer.class:?]
      	at net.minecraft.world.gen.ChunkProviderServer.saveChunks(ChunkProviderServer.java:242) [ChunkProviderServer.class:?]
      	at net.minecraft.world.WorldServer.saveAllChunks(WorldServer.java:2730) [WorldServer.class:?]
      	at org.spongepowered.common.world.WorldManager.saveWorld(WorldManager.java:564) [WorldManager.class:?]
      	at net.minecraft.server.MinecraftServer.saveAllWorlds(MinecraftServer.java:4113) [MinecraftServer.class:?]
      	at net.minecraft.server.MinecraftServer.constant$getSaveTickInterval$zjo000(MinecraftServer.java:4065) [MinecraftServer.class:?]
      	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:762) [MinecraftServer.class:?]
      	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:592) [MinecraftServer.class:?]
      	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
      

      Comme je code coté plugin que je maîtrise pas trop Forge? c’est un logiciel qui a généré le code:

      import net.minecraft.util.ResourceLocation;
      import net.minecraftforge.fml.relauncher.SideOnly;
      import net.minecraftforge.fml.relauncher.Side;
      import net.minecraftforge.fml.common.registry.GameRegistry;
      import net.minecraftforge.fml.common.event.FMLInitializationEvent;
      import net.minecraftforge.client.model.ModelLoader;
      import net.minecraftforge.client.event.ModelRegistryEvent;
      
      import net.minecraft.world.World;
      import net.minecraft.util.math.BlockPos;
      import net.minecraft.util.NonNullList;
      import net.minecraft.util.EnumBlockRenderType;
      import net.minecraft.util.BlockRenderLayer;
      import net.minecraft.tileentity.TileEntityLockableLoot;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.item.ItemStack;
      import net.minecraft.item.ItemBlock;
      import net.minecraft.item.Item;
      import net.minecraft.inventory.ItemStackHelper;
      import net.minecraft.inventory.InventoryHelper;
      import net.minecraft.inventory.ContainerDispenser;
      import net.minecraft.inventory.Container;
      import net.minecraft.entity.player.InventoryPlayer;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.client.renderer.block.model.ModelResourceLocation;
      import net.minecraft.block.state.IBlockState;
      import net.minecraft.block.material.Material;
      import net.minecraft.block.SoundType;
      import net.minecraft.block.ITileEntityProvider;
      import net.minecraft.block.Block;
      
      import java.io.File;
      
      public class mcreator_megaTorch extends admintoolmod.ModElement {
      
      	@GameRegistry.ObjectHolder("admintoolmod:megatorch")
      	public static final Block block = null;
      
      	public mcreator_megaTorch(admintoolmod instance) {
      		super(instance);
      		instance.blocks.add(() -> new BlockCustom());
      		instance.items.add(() -> new ItemBlock(block).setRegistryName(block.getRegistryName()));
      	}
      
      	@Override
      	public void init(FMLInitializationEvent event) {
      		GameRegistry.registerTileEntity(TileEntityCustom.class, "admintoolmod:tileentitymegatorch");
      	}
      
      	@SideOnly(Side.CLIENT)
      	@Override
      	public void registerModels(ModelRegistryEvent event) {
      		ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), 0, new ModelResourceLocation("admintoolmod:megatorch", "inventory"));
      	}
      
      	public static class BlockCustom extends Block implements ITileEntityProvider {
      
      		public BlockCustom() {
      			super(Material.WOOD);
      			setRegistryName("megatorch");
      			setUnlocalizedName("megatorch");
      			setSoundType(SoundType.WOOD);
      			setHarvestLevel("pickaxe", 1);
      			setHardness(2F);
      			setResistance(10F);
      			setLightLevel(1F);
      			setLightOpacity(255);
      			setCreativeTab(mcreator_adminToolMod.tab);
      		}
      
      		@SideOnly(Side.CLIENT)
      		@Override
      		public BlockRenderLayer getBlockLayer() {
      			return BlockRenderLayer.SOLID;
      		}
      
      		@Override
      		public TileEntity createNewTileEntity(World worldIn, int meta) {
      			return new TileEntityCustom();
      		}
      
      		@Override
      		public boolean eventReceived(IBlockState state, World worldIn, BlockPos pos, int eventID, int eventParam) {
      			super.eventReceived(state, worldIn, pos, eventID, eventParam);
      			TileEntity tileentity = worldIn.getTileEntity(pos);
      			return tileentity == null ? false : tileentity.receiveClientEvent(eventID, eventParam);
      		}
      
      		@Override
      		public EnumBlockRenderType getRenderType(IBlockState state) {
      			return EnumBlockRenderType.MODEL;
      		}
      
      		@Override
      		public void breakBlock(World world, BlockPos pos, IBlockState state) {
      			TileEntity tileentity = world.getTileEntity(pos);
      			InventoryHelper.dropInventoryItems(world, pos, (TileEntityCustom) tileentity);
      			world.removeTileEntity(pos);
      			super.breakBlock(world, pos, state);
      		}
      
      		@Override
      		public boolean hasComparatorInputOverride(IBlockState state) {
      			return true;
      		}
      
      		@Override
      		public int getComparatorInputOverride(IBlockState blockState, World worldIn, BlockPos pos) {
      			TileEntity tileentity = worldIn.getTileEntity(pos);
      			if (tileentity instanceof TileEntityCustom)
      				return Container.calcRedstoneFromInventory((TileEntityCustom) tileentity);
      			else
      				return 0;
      		}
      	}
      
      	public static class TileEntityCustom extends TileEntityLockableLoot {
      
      		private NonNullList<ItemStack> stacks = NonNullList.<ItemStack> withSize(9, ItemStack.EMPTY);
      
      		@Override
      		public int getSizeInventory() {
      			return 9;
      		}
      
      		@Override
      		public boolean isEmpty() {
      			for (ItemStack itemstack : this.stacks)
      				if (!itemstack.isEmpty())
      					return false;
      			return true;
      		}
      
      		@Override
      		public boolean isItemValidForSlot(int index, ItemStack stack) {
      			return true;
      		}
      
      		@Override
      		public ItemStack getStackInSlot(int slot) {
      			return stacks.get(slot);
      		}
      
      		@Override
      		public String getName() {
      			return this.hasCustomName() ? this.customName : "container.megatorch";
      		}
      
      		@Override
      		public void readFromNBT(NBTTagCompound compound) {
      			super.readFromNBT(compound);
      			this.stacks = NonNullList.<ItemStack> withSize(this.getSizeInventory(), ItemStack.EMPTY);
      			if (!this.checkLootAndRead(compound))
      				ItemStackHelper.loadAllItems(compound, this.stacks);
      			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, this.stacks);
      			if (this.hasCustomName())
      				compound.setString("CustomName", this.customName);
      			return compound;
      		}
      
      		@Override
      		public int getInventoryStackLimit() {
      			return 64;
      		}
      
      		@Override
      		public String getGuiID() {
      			return "admintoolmod:megatorch";
      		}
      
      		@Override
      		public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn) {
      			this.fillWithLoot(playerIn);
      			return new ContainerDispenser(playerInventory, this);
      		}
      
      		@Override
      		protected NonNullList<ItemStack> getItems() {
      			return this.stacks;
      		}
      	}
      }
      
      

      Quelqu’un sait pourquoi j’ai ce problème ? Je n’ai pas réussi a le résoudre depuis plusieurs heures. J’ai lu que la TileEntity ne serait pas “déclaré”, mais il le fait ligne 48
      Pour mon plugin j’ai besoin d’une TileEntity ;(

      Je code des plugins Sponge, rien sur Forge ;(
      Tellement d'idées de plugin et si peut de temps pour tout faire!!!

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par robin4002

        Bonsoir,

        MCreator est un très mauvais logiciel générant un code erroné, ça ne m’étonnerait pas que ta fonction init ligne 47 ne sont en réalité jamais appelé (d’où le problème).

        Donc soit tu trouves comment déboguer ça (bonne chance) soit tu reprends ton code au propre dans un IDE et ça sera probablement plus simple pour déboguer.

        1 réponse Dernière réponse Répondre Citer 0
        • A Hors-ligne
          Alatrick
          dernière édition par Alatrick

          En fait je génère le code et je le mets dans IntelliJ et je le modifie, ça m’aide car je code plus des plugins Sponge et quand j’ai besoin d’un item juste pour l’apparence en gros je prends ce MCreator genre pour mettre le jour j’ai un item avec une texture de soleil et c’est bien mieux qu’un bâton^^.

          J’ai besoin de cette TileEntity pour stocker des choses dans le bloc si je peux pas je suis obligé de le faire en conf et c’est assez lourd

          Je code des plugins Sponge, rien sur Forge ;(
          Tellement d'idées de plugin et si peut de temps pour tout faire!!!

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            Dans ce cas il te reste à trouver pourquoi init n’est pas appelé.
            Mais franchement tu ferais mieux de ne pas utiliser mcreator, car il risque de te causer d’autres soucis.

            1 réponse Dernière réponse Répondre Citer 0
            • A Hors-ligne
              Alatrick
              dernière édition par

              J’ai mit ce code dans l’event FMLPreInitializationEvent de la main class et plus de problème on dirait:
              GameRegistry.registerTileEntity(mcreator_megaTorch.TileEntityCustom.class, “admintoolmod:tileentitymegatorch”);

              Je code pas sur forge malheureusement et j’ai pas trop le temps d’apprendre déja que parfois je galère sur Sponge. A moins que quelqu’un me recode tout. Je paye^^.
              Il y a mieux que mcreator?

              Je code des plugins Sponge, rien sur Forge ;(
              Tellement d'idées de plugin et si peut de temps pour tout faire!!!

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                Il y a mieux que mcreator?

                Développer soi-même le mod. C’est la seule meilleur chose qu’il y a.

                1 réponse Dernière réponse Répondre Citer 0
                • A Hors-ligne
                  Alatrick
                  dernière édition par

                  J’essaierais de regarder cela comme je fais tout coté serveur(même les craft) l’intérêt du mod c’est surtout d’avoir de nouveau item avec une nouvelle texture pour savoir directement en les voyants a quoi ils servent d’ou ma feignantise d’apprendre a coder sur Forge.
                  Ca ne devrait pas être difficile a refaire si j’ai un code d’exemple a modifier.

                  PS:
                  D’ailleurs quand je pose un bloc créé par ce logiciel j’ai pas de Keys.DIRECTION de disponible sur Sponge ce qui est assez embêtant. Je suppose que le bloc doit déclarer cela, mais jamais comprit comment faire:

                  Sponge requires block implementations to reveal the key/values available. It does not discover them automatically.
                  
                  You will need to implement the necessary MixinBlock / IMixinBlock methods.
                  See MixinBlockFurnace as an example of a block with a direction: https://github.com/SpongePowered/SpongeCommon/blob/a9423c7ec9f2b423b52c273f7e7a23818a8f3e41/src/main/java/org/spongepowered/common/mixin/core/block/MixinBlockFurnace.java#L69
                  

                  Donc c’est pas au mod d’implémenter cela ? Je suis pas très bon en anglais

                  Je code des plugins Sponge, rien sur Forge ;(
                  Tellement d'idées de plugin et si peut de temps pour tout faire!!!

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002R Hors-ligne
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                    dernière édition par

                    Visiblement il faut implémenter l’interface IMixinBlock et y implémenter la méthode getStateWithValue.

                    1 réponse Dernière réponse Répondre Citer 0
                    • 1 / 1
                    • Premier message
                      Dernier message
                    Design by Woryk
                    ContactMentions Légales

                    MINECRAFT FORGE FRANCE © 2024

                    Powered by NodeBB