25 août 2019, 21:23

EDIT: sujet pour forge recommanded (1.12.1 - 14.22.1.2478) compatible 1.12.2.

Bonjours, j’ai pas trouvé ce genre de mod en cherchant un peu, du coup je me suis dis qu’il serais mieux de le créer, donc j’ai déjà suivis un tuto pour avoir une base stable, j’ai pas encore ajouté des fonctions ou quoi que ce soit, juste de quoi démarrer mc via eclipse et l’afficher comme mod actif.

pour le moment, ça donne ça :
https://github.com/Mrcubix/Full-Inventory-Checker
eclipse.PNG

maintenant, je dois ajouter une loop qui va vérifier chaque slot de l’inventaire pour savoir s’il ils sont vide ou non (les 27 slots qu’on peut voir en appuyant sur le bind + les 9 de la hotbar).

En cherchant un peu sur les forum de forge, j’ai trouvé ceci :

public void invChecker() {

checkFreeSlot: {
	for(int i=0; i > 36; i++) {
		if(player.inventory.getStackInSlot(i).equals(ItemStack.EMPTY)) {
			p.sendMessage(new TextComponentString(Your inventory is full);
			break checkFreeSlot;
		}
	}
	
	//Failed check	
	return;
}

//Check passed, do something.
}

mais j’ai vu un autre post qui disait ça :

" InventoryPlayer has a method called .getFirstEmptyStack() it will return -1 if no slot is empty. Now for what you need, if it has to be only on the 27 slots not the hotbar, I guess you can loop yourself and check for ItemStack.isEmpty() if they never empty, then you know the inventory is full. "

et un autre qui disait ça :

" Grab the IItemHandler from the player, loop through all the slots and check if any of them has a non-empty stack in it. "

C’est bien beau, mais comment je suis sensé appliquer tous cela? la doc de forge est incomplète à ce sujet, et la plupart des blogs pour le modding que j’ai trouvé en 1.12 ne parlent pas de cela, (comme https://cubicoder.github.io/tutorials/1-12-2/tutorials/)

donc en résumé, j’ai besoin de check que chaque slot est plein, si c’est le cas, alors j’avertis l’utilisateur avec un message dans le chat (et possiblement un son).