MFF

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

    Le gui ne s'ouvre pas

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.2
    6 Messages 3 Publieurs 271 Vues 3 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.
    • HybrideeeH Hors-ligne
      Hybrideee
      dernière édition par

      bonsoir, j’ai essayer de faire un bloc de type four en regardant un tutoriel, sauf qu’il ne fonctionne pas. Le bloc est bien là, comme je veux, je fais clic droit, mais le gui ne s’ouvre pas. J’ai des erreurs dans la console mais je ne vois pas d’où ça viens… J’ai peut être loupé quelque chose ?

      J’ai cette erreur là :

      [21:09:25] [Server thread/FATAL] [minecraft/MinecraftServer]: Error executing task
      java.util.concurrent.ExecutionException: java.lang.NullPointerException
      	at java.util.concurrent.FutureTask.report(Unknown Source) ~[?:1.8.0_241]
      	at java.util.concurrent.FutureTask.get(Unknown Source) ~[?:1.8.0_241]
      	at net.minecraft.util.Util.runTask(Util.java:54) [Util.class:?]
      	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:798) [MinecraftServer.class:?]
      	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:743) [MinecraftServer.class:?]
      	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?]
      	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:592) [MinecraftServer.class:?]
      	at java.lang.Thread.run(Unknown Source) [?:1.8.0_241]
      Caused by: java.lang.NullPointerException
      	at com.galaxia.mod.machinery.ContainerSinteringFurnace.<init>(ContainerSinteringFurnace.java:23) ~[ContainerSinteringFurnace.class:?]
      	at com.galaxia.mod.machinery.GuiHandler.getServerGuiElement(GuiHandler.java:15) ~[GuiHandler.class:?]
      	at net.minecraftforge.fml.common.network.NetworkRegistry.getRemoteGuiContainer(NetworkRegistry.java:253) ~[NetworkRegistry.class:?]
      	at net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:88) ~[FMLNetworkHandler.class:?]
      	at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2809) ~[EntityPlayer.class:?]
      	at com.galaxia.mod.machinery.BlockSinteringFurnace.onBlockActivated(BlockSinteringFurnace.java:64) ~[BlockSinteringFurnace.class:?]
      	at net.minecraft.server.management.PlayerInteractionManager.processRightClickBlock(PlayerInteractionManager.java:475) ~[PlayerInteractionManager.class:?]
      	at net.minecraft.network.NetHandlerPlayServer.processTryUseItemOnBlock(NetHandlerPlayServer.java:769) ~[NetHandlerPlayServer.class:?]
      	at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:68) ~[CPacketPlayerTryUseItemOnBlock.class:?]
      	at net.minecraft.network.play.client.CPacketPlayerTryUseItemOnBlock.processPacket(CPacketPlayerTryUseItemOnBlock.java:13) ~[CPacketPlayerTryUseItemOnBlock.class:?]
      	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) ~[PacketThreadUtil$1.class:?]
      	at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:1.8.0_241]
      	at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:1.8.0_241]
      	at net.minecraft.util.Util.runTask(Util.java:53) ~[Util.class:?]
      

      Les class dont t’il est question :

      package com.galaxia.mod.machinery;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.entity.player.InventoryPlayer;
      import net.minecraft.inventory.Container;
      import net.minecraft.inventory.IContainerListener;
      import net.minecraft.inventory.Slot;
      import net.minecraft.item.ItemStack;
      import net.minecraftforge.fml.relauncher.Side;
      import net.minecraftforge.fml.relauncher.SideOnly;
      import net.minecraftforge.items.CapabilityItemHandler;
      import net.minecraftforge.items.IItemHandler;
      import net.minecraftforge.items.SlotItemHandler;
      
      public class ContainerSinteringFurnace extends Container
      {
      	private final TileEntitySinteringFurnace tileentity;
      	private int cookTime, totalCookTime, burnTime, currentBurnTime;
      	
      	public ContainerSinteringFurnace(InventoryPlayer player, TileEntitySinteringFurnace tileentity) 
      	{
      		this.tileentity = tileentity;
      		IItemHandler handler = tileentity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
      		
      		this.addSlotToContainer(new SlotItemHandler(handler, 0, 26, 11));
      		this.addSlotToContainer(new SlotItemHandler(handler, 1, 26, 59));
      		this.addSlotToContainer(new SlotItemHandler(handler, 2, 7, 35));
      		this.addSlotToContainer(new SlotItemHandler(handler, 3, 81, 36));
      		
      		for(int y = 0; y < 3; y++)
      		{
      			for(int x = 0; x < 9; x++)
      			{
      				this.addSlotToContainer(new Slot(player, x + y*9 + 9, 8 + x*18, 84 + y*18));
      			}
      		}
      		
      		for(int x = 0; x < 9; x++)
      		{
      			this.addSlotToContainer(new Slot(player, x, 8 + x * 18, 142));
      		}
      	}
      	
      	@Override
      	public void detectAndSendChanges() 
      	{
      		super.detectAndSendChanges();
      		
      		for(int i = 0; i < this.listeners.size(); ++i) 
      		{
      			IContainerListener listener = (IContainerListener)this.listeners.get(i);
      			
      			if(this.cookTime != this.tileentity.getField(2)) listener.sendWindowProperty(this, 2, this.tileentity.getField(2));
      			if(this.burnTime != this.tileentity.getField(0)) listener.sendWindowProperty(this, 0, this.tileentity.getField(0));
      			if(this.currentBurnTime != this.tileentity.getField(1)) listener.sendWindowProperty(this, 1, this.tileentity.getField(1));
      			if(this.totalCookTime != this.tileentity.getField(3)) listener.sendWindowProperty(this, 3, this.tileentity.getField(3));
      		}
      		
      		this.cookTime = this.tileentity.getField(2);
      		this.burnTime = this.tileentity.getField(0);
      		this.currentBurnTime = this.tileentity.getField(1);
      		this.totalCookTime = this.tileentity.getField(3);
      	}
      	
      	@Override
      	@SideOnly(Side.CLIENT)
      	public void updateProgressBar(int id, int data) 
      	{
      		this.tileentity.setField(id, data);
      	}
      	
      	@Override
      	public boolean canInteractWith(EntityPlayer playerIn) 
      	{
      		return this.tileentity.isUsableByPlayer(playerIn);
      	}
      	
      	@Override
      	public ItemStack transferStackInSlot(EntityPlayer playerIn, int index) 
      	{
      		ItemStack stack = ItemStack.EMPTY;
      		Slot slot = (Slot)this.inventorySlots.get(index);
      		
      		if(slot != null && slot.getHasStack()) 
      		{
      			ItemStack stack1 = slot.getStack();
      			stack = stack1.copy();
      			
      			if(index == 3) 
      			{
      				if(!this.mergeItemStack(stack1, 4, 40, true)) return ItemStack.EMPTY;
      				slot.onSlotChange(stack1, stack);
      			}
      			else if(index != 2 && index != 1 && index != 0) 
      			{		
      				Slot slot1 = (Slot)this.inventorySlots.get(index + 1);
      				
      				if(!SinteringFurnaceRecipes.getInstance().getSinteringResult(stack1, slot1.getStack()).isEmpty())
      				{
      					if(!this.mergeItemStack(stack1, 0, 2, false)) 
      					{
      						return ItemStack.EMPTY;
      					}
      					else if(TileEntitySinteringFurnace.isItemFuel(stack1))
      					{
      						if(!this.mergeItemStack(stack1, 2, 3, false)) return ItemStack.EMPTY;
      					}
      					else if(TileEntitySinteringFurnace.isItemFuel(stack1))
      					{
      						if(!this.mergeItemStack(stack1, 2, 3, false)) return ItemStack.EMPTY;
      					}
      					else if(TileEntitySinteringFurnace.isItemFuel(stack1))
      					{
      						if(!this.mergeItemStack(stack1, 2, 3, false)) return ItemStack.EMPTY;
      					}
      					else if(index >= 4 && index < 31)
      					{
      						if(!this.mergeItemStack(stack1, 31, 40, false)) return ItemStack.EMPTY;
      					}
      					else if(index >= 31 && index < 40 && !this.mergeItemStack(stack1, 4, 31, false))
      					{
      						return ItemStack.EMPTY;
      					}
      				}
      			} 
      			else if(!this.mergeItemStack(stack1, 4, 40, false)) 
      			{
      				return ItemStack.EMPTY;
      			}
      			if(stack1.isEmpty())
      			{
      				slot.putStack(ItemStack.EMPTY);
      			}
      			else
      			{
      				slot.onSlotChanged();
      
      			}
      			if(stack1.getCount() == stack.getCount()) return ItemStack.EMPTY;
      			slot.onTake(playerIn, stack1);
      		}
      		return stack;
      	}
      }
      
      
      
      package com.galaxia.mod.machinery;
      
      import com.galaxia.mod.References;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.util.math.BlockPos;
      import net.minecraft.world.World;
      import net.minecraftforge.fml.common.network.IGuiHandler;
      
      public class GuiHandler implements IGuiHandler
      {
      	@Override
      	public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) 
      	{
      		if(ID == References.GUI_SINTERING_FURNACE) return new ContainerSinteringFurnace(player.inventory, (TileEntitySinteringFurnace)world.getTileEntity(new BlockPos(x,y,z)));
      		return null;
      	}
      	
      	@Override
      	public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) 
      	{
      		if(ID == References.GUI_SINTERING_FURNACE) return new GuiSinteringFurnace(player.inventory, (TileEntitySinteringFurnace)world.getTileEntity(new BlockPos(x,y,z)));
      
      		return null;
      	}
      }
      
      
      package com.galaxia.mod.machinery;
      
      import java.util.Random;
      
      import com.galaxia.mod.Galaxia;
      import com.galaxia.mod.References;
      import com.galaxia.mod.init.BlocksMod;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.BlockHorizontal;
      import net.minecraft.block.ITileEntityProvider;
      import net.minecraft.block.SoundType;
      import net.minecraft.block.material.Material;
      import net.minecraft.block.properties.IProperty;
      import net.minecraft.block.properties.PropertyBool;
      import net.minecraft.block.properties.PropertyDirection;
      import net.minecraft.block.state.BlockStateContainer;
      import net.minecraft.block.state.IBlockState;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.util.EnumBlockRenderType;
      import net.minecraft.util.EnumFacing;
      import net.minecraft.util.EnumHand;
      import net.minecraft.util.Mirror;
      import net.minecraft.util.Rotation;
      import net.minecraft.util.math.BlockPos;
      import net.minecraft.world.World;
      
      public class BlockSinteringFurnace extends Block {
      
      	public static final PropertyDirection FACING = BlockHorizontal.FACING;
      	public static final PropertyBool BURNING = PropertyBool.create("burning");
      	
      	public BlockSinteringFurnace(String name) {
      		
      		super(Material.IRON);
      		setSoundType(SoundType.METAL);
      		setUnlocalizedName(name);
      		setRegistryName(name);
      		setResistance(2.0F);
      	    setHardness(0.5F);
      	    setCreativeTab(Galaxia.galaxiatab);
      	    this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(BURNING, false));
      	}
      	
      	public Item getItemDropped(IBlockState state, Random rand, int fortune)
      	{
      		return Item.getItemFromBlock(BlocksMod.sintering_furnace);
      	}
      	
      	public ItemStack getItem(World worldIn, BlockPos pos, IBlockState state)
      	{
      		return new ItemStack(BlocksMod.sintering_furnace);
      	}
      	
      	@Override
      	public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn,
      			EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
      		if(!worldIn.isRemote)
      		{
      			playerIn.openGui(Galaxia.instance, References.GUI_SINTERING_FURNACE, worldIn, pos.getX(), pos.getY(), pos.getZ());
      		}
      		return true;
      	}
      	
      	public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state) 
      	{
      		if (!worldIn.isRemote) 
              {
                  IBlockState north = worldIn.getBlockState(pos.north());
                  IBlockState south = worldIn.getBlockState(pos.south());
                  IBlockState west = worldIn.getBlockState(pos.west());
                  IBlockState east = worldIn.getBlockState(pos.east());
                  EnumFacing face = (EnumFacing)state.getValue(FACING);
      
                  if (face == EnumFacing.NORTH && north.isFullBlock() && !south.isFullBlock()) face = EnumFacing.SOUTH;
                  else if (face == EnumFacing.SOUTH && south.isFullBlock() && !north.isFullBlock()) face = EnumFacing.NORTH;
                  else if (face == EnumFacing.WEST && west.isFullBlock() && !east.isFullBlock()) face = EnumFacing.EAST;
                  else if (face == EnumFacing.EAST && east.isFullBlock() && !west.isFullBlock()) face = EnumFacing.WEST;
                  worldIn.setBlockState(pos, state.withProperty(FACING, face), 2);
              }
      	}
      	
      	public static void setState(boolean active, World worldIn, BlockPos pos) 
      	{
      		IBlockState state = worldIn.getBlockState(pos);
      		TileEntity tileentity = worldIn.getTileEntity(pos);
      		
      		//if(active) worldIn.setBlockState(pos, BlockInit.SINTERING_FURNACE.getDefaultState().withProperty(FACING, state.getValue(FACING)).withProperty(BURNING, true), 3);
      		//else worldIn.setBlockState(pos, BlockInit.SINTERING_FURNACE.getDefaultState().withProperty(FACING, state.getValue(FACING)).withProperty(BURNING, false), 3);
      		
      		if(tileentity != null) 
      		{
      			tileentity.validate();
      			worldIn.setTileEntity(pos, tileentity);
      		}
      	}
      	
      	@Override
      	public boolean hasTileEntity(IBlockState state) 
      	{
      		return true;
      	}
      	
      	
      	@Override
      	public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer, EnumHand hand) 
      	{
      		return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
      	}
      	
      	@Override
      	public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack) 
      	{
      		worldIn.setBlockState(pos, this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()), 2);
      	}
      	
      	@Override
      	public EnumBlockRenderType getRenderType(IBlockState state) 
      	{
      		return EnumBlockRenderType.MODEL;
      	}
      	
      	@Override
      	public IBlockState withRotation(IBlockState state, Rotation rot)
      	{
      		return state.withProperty(FACING, rot.rotate((EnumFacing)state.getValue(FACING)));
      	}
      	
      	@Override
      	public IBlockState withMirror(IBlockState state, Mirror mirrorIn) 
      	{
      		return state.withRotation(mirrorIn.toRotation((EnumFacing)state.getValue(FACING)));
      	}
      	
      	@Override
      	protected BlockStateContainer createBlockState() 
      	{
      		return new BlockStateContainer(this, new IProperty[] {BURNING,FACING});
      	}
      	
      	@Override
      	public IBlockState getStateFromMeta(int meta) 
      	{
      		EnumFacing facing = EnumFacing.getFront(meta);
      		if(facing.getAxis() == EnumFacing.Axis.Y) facing = EnumFacing.NORTH;
      		return this.getDefaultState().withProperty(FACING, facing);
      	}
      	
      	@Override
      	public int getMetaFromState(IBlockState state) 
      	{
      		return ((EnumFacing)state.getValue(FACING)).getIndex();
      	}
      
      	public TileEntity createNewTileEntity(World world, IBlockState state) {
      		
      		return new TileEntitySinteringFurnace();
      	}
      
      }
      
      

      Si ont peut m’aider pour ça…
      merci.

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

        Bonsoir,

        visiblement l’erreur vient de cette ligne :

        IItemHandler handler = tileentity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
        

        de ta class ContainerSinteringFurnace. L’erreur est un java.lang.NullPointerException, je suppose du coup que ta tileentity vaut null :face_with_raised_eyebrow: Es-tu sûr qu’il y a une TileEntity aux positions de ton bloc ?

        Les petits mods d'Epharos : [Trading Players] -> https://www.minecraftforgefrance.fr/topic/6023/trading-players-les-petits-mods-d-epharos

        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 la classe de ton bloc, ajoutes un @Override au-dessus de la méthode createNewTileEntity. Cela passe ou cela fait une erreur de compilation ?

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

            -Oui…
            -Si je rajoute @Override, ça me met une erreur en me disant de supprimer ce @Override (mais le jeu se lance quand même, même si ça ne change rien)

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

              Bon j’ai modifié une ligne du gui je l’ai passé de 0 a 1 et ça marche…
              Bon merci qunad même ^^!

              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

                Si tu as une erreur sur createNewTileEntity en ajoutant @Override cela veut dire que tu n’as pas le bon nom de fonction, donc ton tile entity n’est pas créé et vaut null. D’où le NPE.

                Cherches dans la classe Block de minecraft le bon nom de fonction.

                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