Problème pour déclaré un gui et le réutiliser
-
donc cette partie de code:
public String getGuiID() { return "minecraft:furnace"; }
dans mon tileentity et je voudre changer minecraft:furnace par mon gui mais il faut un truc de sa sytle monmod:mongui mais je sais pas comment fair pour déclaré mon gui car il font pas la même chose sur les tuto et code source que j’ai trouver sur le web. et j’ai cherche dans le code source du minecraft et j’ai rien trouvé.
-
Salut,
Avec forge pour associé un gui et un container a un tile entity il faut passer par la méthode player.openGui (dans le bloc) et par un gui handler.
La méthode getGuiID n’est pas nécessaire.Il y a un tutoriel ici sur le sujet : https://www.minecraftforgefrance.fr/showthread.php?tid=2082
Le code est obsolète (comme 1.7.10) mais le nom des interfaces et les méthodes en rapport avec les gui / container n’ont pas vraiment changé (il faudra juste remplacer les x, y et z dans la méthode openGui, à remplacer par pos.getX(), pos.getY() et pos.getZ() ). -
@‘robin4002’:
Salut,
Avec forge pour associé un gui et un container a un tile entity il faut passer par la méthode player.openGui (dans le bloc) et par un gui handler.
La méthode getGuiID n’est pas nécessaire.Il y a un tutoriel ici sur le sujet : https://www.minecraftforgefrance.fr/showthread.php?tid=2082
Le code est obsolète (comme 1.7.10) mais le nom des interfaces et les méthodes en rapport avec les gui / container n’ont pas vraiment changé (il faudra juste remplacer les x, y et z dans la méthode openGui, à remplacer par pos.getX(), pos.getY() et pos.getZ() ).j’ai des erreu dans le GuiHandler
package forgingaura.forgeyourworld.ffactory.handler; import forgingaura.forgeyourworld.ffactory.Container.ContainerSteampunkFurnace; import forgingaura.forgeyourworld.ffactory.gui.GuiSteampunkFurnace; import forgingaura.forgeyourworld.ffactory.tileentity.TileEntitySteampunkFurnace; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.fml.common.network.IGuiHandler; public class FactoryGuiHandler implements IGuiHandler { @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity tile = world.getTileEntity(x, y, z/*ici il dit que sa peux pas etre aplique au monde*/); if(tile instanceof TileEntitySteampunkFurnace) { return new ContainerSteampunkFurnace((TileEntitySteampunkFurnace /*il me dit que il peux par remplace entity.player.InventoryPlayer*/)tile, player.inventory); } return null; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity tile = world.getTileEntity(x, y, z/*ici il dit que sa peux pas etre aplique au monde*/); if(tile instanceof TileEntitySteampunkFurnace) { return new GuiSteampunkFurnace((TileEntitySteampunkFurnace /*[font=Courier Newil me dit que il peux par remplace entity.player.InventoryPlayer]*/)tile, player.inventory); } return null; } }
sinon il a pas posibiliter de fair l’autre methode
voila le code source du block, du container et du tileentity
le block: https://pastebin.com/b2zd3ZVS
le tile : https://pastebin.com/aicdJX9Y
le container: https://pastebin.com/ButCLNgw
et le gui : https://pastebin.com/brYUB4kK -
Il faut que tu utilises un BlockPos à la place de x, y, z.
Regarde les arguments de la méthode World#getTileEntity. Ça devrait te donner un truc du genre ```java
world.getTileEntity(new BlockPos(x, y, z)); -
sa marche mais j’ai toujour une ereurs avec
[size=smallreturn][size=small ][size=smallnew][size=small ][size=smallContainerSteampunkFurnace][size=small((][size=smallTileEntitySteampunkFurnace][size=small ][size=small/][size=smallil me dit que il peux par remplace entity.player.InventoryPlayer][size=small/][size=small)][size=smalltile][size=small,][size=smallplayer][size=small.][size=smallinventory][size=small);]et
[size=smallreturn][size=small ][size=smallnew][size=small ][size=smallGuiSteampunkFurnace][size=small((][size=smallTileEntitySteampunkFurnace][size=small ]%(#3f7f5f)[size=smallil me dit que il peux par remplace entity.player.InventoryPlayer]*/[size=small)][size=smalltile][size=small,][size=small player][size=small.][size=smallinventory][size=small);]