Inventaire et réduction de slot
-
Ah oui en effet. Dans ce cas il faudrait le modifier une première fois à la connexion. Normalement c’est possible.
-
Et Ouai

Du coup je présume que c’est un peu pareil, sauf dans l’event PlayerLoggedInEvent ?
@SubscribeEvent public void onJoin(PlayerLoggedInEvent event) { if(event.player instanceof EntityPlayer) { event.player.inventoryContainer.inventorySlots.clear(); } }Mais je ne suis pas sur du . clear(), et aucune idée de comment y mettre la new list

-
Là tu les as seulement clear, il faudrait aussi remettre quelque chose dedans ^^
-
Oui, je sais, comme dit ci haut, je ne sais pas vraiment comment recréer une new liste, avec quel fonction, y’en a pas mal et je ne les comprend pas toute ^^"
Sinon, je présume que c’est un truc du genre ?
private ItemStack[] inventory = new ItemStack[9]; //////////////////////////////////////////////////// event.player.inventoryContainer.inventorySlots.clear(); event.player.inventoryContainer.inventorySlots.toArray(inventory);A mon avis, ça dois être qqch comme ça car quand j’ouvre l’inventaire du player en créative ça crash du au java.lang.IndexOutOfBoundsException

-
inventorySlots contient une liste de slot.
Donc c’est des slot qu’il faut mettre dedans. -
private Slot[] inventory = new Slot[9]Si c’est le cas, le
System.out.println( event.player.inventoryContainer.inventorySlots.size());reste sur 45 ^^’
-
Car il est set sur 45 à chaque ouverture du container. C’est pour ça que je t’ai dit d’utiliser aussi l’event pour l’ouverture du container.
-
Mais même sans ouvrir le Container ni rien, elle est égale a 45.
public Slot[] inventory = new Slot[9];@SubscribeEvent public void onJoin(PlayerLoggedInEvent event) { EntityPlayerMP playerMP = (EntityPlayerMP)event.player; boolean flag = playerMP.theItemInWorldManager.isCreative(); if(event.player instanceof EntityPlayer) { if(flag == false) { event.player.inventoryContainer.inventorySlots.clear(); event.player.inventoryContainer.inventorySlots.toArray(inventory); } } }@SubscribeEvent public void playerOpenContainerEvent(PlayerOpenContainerEvent event) { EntityPlayer player = (EntityPlayer)event.entity; int test = player.openContainer.windowId; EntityPlayerMP playerMP = (EntityPlayerMP)event.entityPlayer; boolean flag = playerMP.theItemInWorldManager.isCreative(); if(event.entityPlayer instanceof EntityPlayer) { if(flag == false) { event.entityPlayer.inventoryContainer.inventorySlots.clear(); event.entityPlayer.inventoryContainer.inventorySlots.toArray(inventory); } } }[15:43:32] [Server thread/INFO] [STDOUT]: [kujaroth.common.EventHandlerTuto:PlayerTickEvent:101]: taille : 0 [15:43:32] [Client thread/INFO] [STDOUT]: [kujaroth.common.EventHandlerTuto:PlayerTickEvent:101]: taille : 45J’ai surement foiré quelque part

-
C’est peut-être remit sur 45 ailleurs alors. Mais je ne sais pas où

Par contre ton “public Slot[] inventory = new Slot[9];” c’est une très bonne idée pour causé des npe x) -
Bon, dans PlayerTickEvent la liste est bien clear, mais impossible de lui affecter l’autre

Je crois que le plus simple serait :
@Override private int storeItemStack(ItemStack itemstack) { for (int i = 0; i < neufPourLaBarreEnMain; ++i) { if (this.inventory* != null && this.inventory*.getItem() == itemstack.getItem() && this.inventory*.isStackable() && this.inventory*.stackSize < this.inventory*.getMaxStackSize() && this.inventory*.stackSize < this.getInventoryStackLimit() && (!this.inventory*.getHasSubtypes() || this.inventory*.getItemDamage() == itemstack.getItemDamage()) && ItemStack.areItemStackTagsEqual(this.inventory*, itemstack)) { return i; } } return -1; }Non ? Bon, bien évidement, il ne veux pas @Override
Patch ? 
EDIT : Hum… Sinon… Il ne serais pas plus simple de remplir ses slots avec un objet pour les rendre inaccessible ? Remplir le surplus d’inventaire avec un item quelconque

Par contre, aucune idée de comment ajouter un item dans un slot spécifique… (ni enlever un item d’un slot spécifique)
Est il possible aussi d’actualisé l’image d’un GUI sans le fermé ouvrir ? Ou Mettre deux texture sur un GUI ?
-
@‘Kujaroth’:
Est il possible aussi d’actualisé l’image d’un GUI sans le fermé ouvrir ? Ou Mettre deux texture sur un GUI ?
GuiScreenEvent, il y a un event pour le rendu. Suffit de le cancel et de faire ton propre rendu.
Par contre je n’ai pas comprit l’intérêt de ta fonction storeItemStack.
-
Merci

storeItemStack pour n’utilisé que la barre en main pour stocker.
Mais ducoup je vais “tricher” en remplissant le surplus d’inventaire avec des items, mais je ne sais pas comment ajouter automatiquement un item dans un slot

-
Comment ça automatiquement ?
-
@‘robin4002’:
Comment ça automatiquement ?
Dans un event. Avec un code qui ajoute un item dans un spot spécifier.
En faite, j ai juste besoin du code, et j utiliserait 2 boucles for pour les remplir

-
player.inventory.setInventorySlotContents(index, stack)
-
Bien ce qu il me semblait, je dois convertir un item en itemstack.