Créer un gui et un container sur un bloc (type coffre)
-
Dans ton paquet, depuis le joueur tu peux avoir l’instance du container (player.openContainer) et grâce au container tu peux avoir l’instance de l’entité de bloc. Ensuite avec l’entité de bloc c’est facile de supprimer / ajouter des items.
-
Ok donc je fais que quand je cliques sur le bouton ca envoies un paquet et quand le serveur recoit se paquet alors ca check tout ca et si c’est bon ca donne l’objet et supprime les autres et sinon ca fait rien … C’est ca?
-
Ok donc je fais que quand je cliques sur le bouton ca envoies un paquet et quand le serveur recoit se paquet alors ca check tout ca et si c’est bon ca donne l’objet et supprime les autres et sinon ca fait rien … C’est ca?
-
Oui c’est ça.
-
Est ce possible de faire une case la ou on peut rien mettre (le joueur) comme la sortie d’un item dans le four, et une endroit la ou peut mettre que un type d’objet comme le fuel mais la c’est pas du fuel (ici une fiole)?
-
Oui, regarde dans le tile entity du four, il y a la fonction isItemValidForSlot, c’est elle qui gère ça.
-
J’ai fais ce code mais rien ne se passes:
this.addSlotToContainer(new Slot(teChaudron, 20, 8, 90)).isItemValid(new ItemStack(ModHarryPotter.itemFiole)); -
Non, c’est dans le tile entity que tu dois mettre ça.
public boolean isItemValidForSlot(int slot, ItemStack stack) { if(slot == 1 && stack.getItem() == ModHarryPotter.itemFiole) { return true; } else if(slot == 0) { return true; } return false; }Par exemple. (vérifie les arguments de la fonction, je ne suis pas sûr de ce que j’ai mit).
-
Il n’y a pas d’erreur de code mais, ca ne marche pas: je peux mettre tout les items dedans mon slot 1…
-
Regarde aussi du côté de la fonction
public ItemStack transferStackInSlot(EntityPlayer player, int slotId)
dans la classe de ton container :
https://github.com/FFMT/Privatizer/blob/master/privatizer_src/fr/mcnanotech/privatizer/common/ContainerPrivateFurnace.java#L126-L133
(code du four) -
Je ne comprends a quoi ca me sert le transferstackinslot… C’est pour empecher de mettre d’autres items que ma fiole (ModHarryPotter.itemFiole)?
-
transferStackInSlot gère le shift + clic. Il faut donc que tu le bloque si l’item va dans un slot ou il ne devrait pas aller (c’est ce que fait les conditions que j’ai surligné).
-
Ah mais j’ai pas compris comment l’adapter à mon code
(je sais je suis chiant, des fois j’ai besoin qu’on m’explique sinon je comprends rien ^^) -
Bha par exemple tu remplace :
if(FurnaceRecipes.smelting().getSmeltingResult(itemstack1) != null)
par :
if(itemstack1 != null && (itemstack1.getItem() == ClassePrincipale.itemQuiPeutAllerDedans || itemstack1.getItem() == ClassePrincipale.autreItem)) -
Ah ok! Merci de ton aide Robin! Qu’est ce que je ferais sans toi !

-
J’ai mis ca :
else if(slotId == 21 && slotId != 0) { if(itemstack1 != null && (itemstack1.getItem() == ModHarryPotter.itemFiole)){ if(!this.mergeItemStack(itemstack1, 0, 1, false)) { return null; } } }dans cette fonction:
public ItemStack transferStackInSlot(EntityPlayer player, int slotId) { ItemStack itemstack = null; Slot slot = (Slot)this.inventorySlots.get(slotId); if(slot != null && slot.getHasStack()) { ItemStack itemstack1 = slot.getStack(); itemstack = itemstack1.copy(); if(slotId < 9) { if(!this.mergeItemStack(itemstack1, 9, this.inventorySlots.size(), true)) { return null; } } else if(!this.mergeItemStack(itemstack1, 0, 9, false)) { return null; } else if(slotId == 21) { if(itemstack1 != null && (itemstack1.getItem() == ModHarryPotter.itemFiole)){ if(!this.mergeItemStack(itemstack1, 0, 1, false)) { return null; } } } if(itemstack1.stackSize == 0) { slot.putStack((ItemStack)null); } else { slot.onSlotChanged(); } } return itemstack; } -
J’ai fais tout ce que vous m’avez mais ça marche pas vous pouvez m’aider ?
-
Envoie toute tes classes avec juste ça je ne peux rien faire. Je ne sais même pas à quoi ressemble ton tile entity, et comme le tileentity est lier avec container …
-
Je t’envoies mon src en message privé.
-
Envoie l’essentiel, j’ai pas le temps pour le moment.