-
Salut,
Main.instance est null, surement car l’annotation@Mod.Instancen’est plus au-dessus de cette dernière. -
je veriffy
-
@Mod.Instance("familygame") public static Main instance;pourtemp sy ses bizard
Voicy tous mon Main.java
package fr.thexrayfr.familygame; import fr.thexrayfr.familygame.blocks.FamilyBlocks; import fr.thexrayfr.familygame.gui.GuiHandler; import fr.thexrayfr.familygame.init.FamilygameRecipe; import fr.thexrayfr.familygame.items.FamilyItems; import fr.thexrayfr.familygame.tile.*; import fr.thexrayfr.familygame.util.ObjectRegistry; import fr.thexrayfr.familygame.world.FamilyWorldGen; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.common.registry.GameRegistry; @Mod(modid = "familygame", name = "Family-Game", version = "8.5.1", acceptedMinecraftVersions = "[1.12.2]") public class Main { public static final String MODID = "familygame"; public static final CreativeTabs TABFAMILYGAME = new CreativeTabs("tab_familygame") { public ItemStack getTabIconItem() { return new ItemStack(Item.getItemFromBlock(FamilyBlocks.KITCHEN_FURNITURE_1_DIORITE_OAK)); } }; public static final CreativeTabs TABFAMILYGAMETOOLS = new CreativeTabs("tab_familygame_tools") { public ItemStack getTabIconItem() { return new ItemStack(FamilyItems.PALADIUM_HELMET); } }; public static final CreativeTabs TABFAMILYGAMEKITCHEN = new CreativeTabs("tab_familygame_kitchen") { public ItemStack getTabIconItem() { return new ItemStack(Item.getItemFromBlock(FamilyBlocks.KITCHEN_FURNITURE_1_DIORITE_OAK)); } }; public static final CreativeTabs TABFAMILYGAMEPAINT = new CreativeTabs("tab_familygame_paint") { public ItemStack getTabIconItem() { return new ItemStack(Item.getItemFromBlock(FamilyBlocks.YL_PAINT)); } }; @Mod.Instance("familygame") public static Main instance; @SidedProxy(clientSide = "fr.thexrayfr.familygame.proxy.FamilyClient", serverSide = "fr.thexrayfr.familygame.proxy.FamilyServer") public static FamilyCommon proxy; private ObjectRegistry registry; @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { proxy.preInit(event.getSuggestedConfigurationFile()); this.registry = new ObjectRegistry("familygame"); FamilyBlocks.init(this.registry); FamilyItems.init(this.registry); GameRegistry.registerWorldGenerator(new FamilyWorldGen(), 3); } @Mod.EventHandler public void init(FMLInitializationEvent event) { proxy.init(); FamilygameRecipe.init(); NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandler()); GameRegistry.registerTileEntity(TileEntityCrate.class, String.valueOf(new ResourceLocation("familygame", "TileEntityCrate"))); GameRegistry.registerTileEntity(TileEntityCratePlus.class, String.valueOf(new ResourceLocation("familygame", "TileEntityCratePlus"))); GameRegistry.registerTileEntity(TileEntityTable.class, String.valueOf(new ResourceLocation("familygame", "TileEntityTable"))); GameRegistry.registerTileEntity(TileEntityBarrel.class, String.valueOf(new ResourceLocation("familygame", "TileEntityBarrel"))); GameRegistry.registerTileEntity(TileEntityKitchen.class, String.valueOf(new ResourceLocation("familygame", "TileEntityKitchen"))); } } -
Ah non au temps pour moi, j’ai mal lu le rapport de crash.
C’est un item de l’inventaire associé au gui qui est null.
Il faut utiliser des NonNullList en 1.12. -
et comment on utilisa sa svp je débute un peut en java

-
Regardes dans le code du tile entity du coffre.
-
ok je vais regarder
-
dans le tile ya pas de onBlockActivated
et dans la clase du block chest sa resemble a sa!
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { if (worldIn.isRemote) { return true; } else { ILockableContainer ilockablecontainer = this.getLockableContainer(worldIn, pos); if (ilockablecontainer != null) { playerIn.displayGUIChest(ilockablecontainer); if (this.chestType == BlockChest.Type.BASIC) { playerIn.addStat(StatList.CHEST_OPENED); } else if (this.chestType == BlockChest.Type.TRAP) { playerIn.addStat(StatList.TRAPPED_CHEST_TRIGGERED); } } return true; } }ses pas du tous la même chose
-
Le problème ne se trouve pas dans ton bloc mais dans ton tile entity.
-
package fr.thexrayfr.familygame.tile; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; public class TileEntityBarrel extends TileEntityStorage { public int getSizeInventory() { return 18; } @Override public boolean isEmpty() { return false; } @Override public ItemStack getStackInSlot(int index) { return null; } @Override public ItemStack decrStackSize(int index, int count) { return null; } @Override public ItemStack removeStackFromSlot(int index) { return null; } @Override public int getInventoryStackLimit() { return 0; } @Override public boolean isUsableByPlayer(EntityPlayer player) { return false; } @Override public void openInventory(EntityPlayer player) { } @Override public void closeInventory(EntityPlayer player) { } @Override public boolean isItemValidForSlot(int index, ItemStack stack) { return false; } @Override public int getField(int id) { return 0; } @Override public void setField(int id, int value) { } @Override public int getFieldCount() { return 0; } @Override public void clear() { } public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); ItemStackHelper.loadAllItems(compound, this.stacks); } public NBTTagCompound writeToNBT(NBTTagCompound compound) { ItemStackHelper.saveAllItems(compound, this.stacks); return super.writeToNBT(compound); } @Override public String getName() { return null; } @Override public boolean hasCustomName() { return false; } }il ma demander quand je lais mise a joue d’importer ca donc apret
-
TileEntityStorage contient quoi ?
Et tu as pleins de fonction non implémenté qui retourne null, ce n’est pas bon. getStackInSlot, decrStackSize, removeStackFromSlot etc.
-
package fr.thexrayfr.familygame.tile; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.NonNullList; public abstract class TileEntityStorage extends TileEntity implements IInventory { public NonNullList<ItemStack> stacks = NonNullList.withSize(getSizeInventory(), ItemStack.EMPTY); public String getName() { return null; } public boolean hasCustomName() { return false; } public boolean isEmpty() { for (ItemStack itemstack : this.stacks) { if (!itemstack.isEmpty()) { return false; } } return true; } public ItemStack getStackInSlot(int index) { return (ItemStack)this.stacks.get(index); } public ItemStack decrStackSize(int index, int count) { return ItemStackHelper.getAndSplit(this.stacks, index, count); } public ItemStack removeStackFromSlot(int index) { this.stacks.set(index, ItemStack.EMPTY); return getStackInSlot(index); } public void setInventorySlotContents(int index, ItemStack stack) { this.stacks.set(index, stack); } public int getInventoryStackLimit() { return 64; } public boolean isUsableByPlayer(EntityPlayer player) { if (this.world.getTileEntity(this.pos) != this) { return false; } return player.getDistanceSq(this.pos.getX() + 0.5D, this.pos.getY() + 0.5D, this.pos.getZ() + 0.5D) <= 64.0D; } public void openInventory(EntityPlayer player) {} public void closeInventory(EntityPlayer player) {} public boolean isItemValidForSlot(int index, ItemStack stack) { return true; } public int getField(int id) { return 0; } public void setField(int id, int value) {} public int getFieldCount() { return 0; } public void clear() { this.stacks.clear(); } } -
jais fait le ménage
package fr.thexrayfr.familygame.tile; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ItemStackHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; public class TileEntityBarrel extends TileEntityStorage { public int getSizeInventory() { return 18; } @Override public boolean isEmpty() { return false; } @Override public int getInventoryStackLimit() { return 0; } @Override public boolean isUsableByPlayer(EntityPlayer player) { return false; } @Override public void openInventory(EntityPlayer player) { } @Override public void closeInventory(EntityPlayer player) { } @Override public boolean isItemValidForSlot(int index, ItemStack stack) { return false; } @Override public int getField(int id) { return 0; } @Override public void setField(int id, int value) { } @Override public int getFieldCount() { return 0; } @Override public void clear() { } public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); ItemStackHelper.loadAllItems(compound, this.stacks); } public NBTTagCompound writeToNBT(NBTTagCompound compound) { ItemStackHelper.saveAllItems(compound, this.stacks); return super.writeToNBT(compound); } @Override public boolean hasCustomName() { return false; } } -
déja sa crash plus sa ouvre et referme le gui
-
-
Ta fonction
isUsableByPlayerretourne toujours faux, c’est pour ça que cela ne fonctionne pas. -
une petite vidéo pour te montrer se qui se passe
-
ses bon le hui s’ouvre mes maintenant ses le snift clique qui pose problème
-
ses pas du au:
public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) { ItemStack itemstack = ItemStack.EMPTY; Slot slot = (Slot) this.inventorySlots.get(index); if ((slot != null) && (slot.getHasStack())) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if (index < 9) { if (!mergeItemStack(itemstack1, 18, this.inventorySlots.size(), true)) { return ItemStack.EMPTY; } } else if (!mergeItemStack(itemstack1, 0, 18, false)) { return ItemStack.EMPTY; } if (itemstack1.isEmpty()) { slot.putStack(ItemStack.EMPTY); } else { slot.onSlotChanged(); } } return itemstack; }???
-
Si c’est bien cette fonction qui gère le shift clic.