GUI/Block
-
Ton item est bien rendu comme un bloc dans l’inventaire mais tu ne vois que sur haut.
Appuies sur F5 et tu verra.Pour autoriser la transparance :
@SideOnly(Side.CLIENT) public BlockRenderLayer getBlockLayer() { return BlockRenderLayer.CUTOUT; }
à mettre dans la classe du bloc bien sûr.
-
et le Block Bound comment on le modifie ?
-
La boite de collision ?
-
ouiii
-
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
-
Quelle est la marche a suivre pour générer des minerais en 1.10 ?
-
La même que dans les versions précédentes.
-
Bonjour, j’ai tenté de créer un item de type sac avec un gui/container mais je comprend pas trop pourquoi il quand le click droit pour l’ouvrir le jeu crash
java.lang.NullPointerException: Unexpected error at net.minecraftforge.fml.common.network.NetworkRegistry.getLocalGuiContainer(NetworkRegistry.java:273) at net.minecraftforge.fml.common.network.internal.FMLNetworkHandler.openGui(FMLNetworkHandler.java:110) at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2723) at net.spyman.utils.common.items.ItemBag.onItemRightClick(ItemBag.java:22) at net.minecraft.item.ItemStack.useItemRightClick(ItemStack.java:176) at net.minecraft.client.multiplayer.PlayerControllerMP.processRightClick(PlayerControllerMP.java:527) at net.minecraft.client.Minecraft.rightClickMouse(Minecraft.java:1629) at net.minecraft.client.Minecraft.processKeyBinds(Minecraft.java:2281) at net.minecraft.client.Minecraft.runTickKeyboard(Minecraft.java:2058) at net.minecraft.client.Minecraft.runTick(Minecraft.java:1846) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1118) at net.minecraft.client.Minecraft.run(Minecraft.java:406) at net.minecraft.client.main.Main.main(Main.java:118) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) at GradleStart.main(GradleStart.java:26) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
%(#a9b7c6)[[font=Source Code Pro]public class ]%(#345f99)[ItemBag ]%(#0187df)[extends ]%(#345f99)[Item ]{ %(#0187df)[public ]%(#afb8c5)[ItemBag]() { } %(#278c3c)[*@Override *] %(#0187df)[public ]%(#345f99)[ActionResult]%(#aaa9a7)[<]%(#345f99)[ItemStack]%(#aaa9a7)[> ]%(#afb8c5)[onItemRightClick](%(#345f99)[ItemStack ]%(#278c3c)[*itemStack*]%(#aaa9a7)[, ]%(#345f99)[World ]%(#278c3c)[*world*]%(#aaa9a7)[, ]%(#345f99)[EntityPlayer ]%(#278c3c)[*player*]%(#aaa9a7)[, ]%(#345f99)[EnumHand ]%(#278c3c)[*hand*]) { %(#278c3c)[*player*].%(#afb8c5)[openGui](%(#345f99)[SpyUtil].%(#666965)[INSTANCE]%(#aaa9a7)[, ]%(#feff06)[0]%(#aaa9a7)[, ]%(#278c3c)[*world*]%(#aaa9a7)[, ](%(#0187df)[int]) %(#278c3c)[*player*].%(#666965)[posX]%(#aaa9a7)[, ](%(#0187df)[int]) %(#278c3c)[*player*].%(#666965)[posY]%(#aaa9a7)[, ](%(#0187df)[int]) %(#278c3c)[*player*].%(#666965)[posZ])%(#aaa9a7)[; ] %(#0187df)[return new ]%(#afb8c5)[ActionResult](%(#345f99)[EnumActionResult].%(#666965)[PASS]%(#aaa9a7)[, ]%(#278c3c)[*itemStack*])%(#aaa9a7)[; ] } }
%(#a9b7c6)[[font=Source Code Pro]public class ]%(#345f99)[InventoryItemBag ]%(#0187df)[implements ]%(#345f99)[IInventory ]{ %(#0187df)[public ]%(#345f99)[ItemStack][] %(#666965)[inventorySlots]%(#aaa9a7)[; ] %(#0187df)[public int ]%(#666965)[inventoryStackLimit ]%(#aaa9a7)[= ]%(#feff06)[64]%(#aaa9a7)[; ] %(#8242ff)[/** Use only a multiple of 9 (27, 54, 81, …) */ ] %(#0187df)[public int ]%(#666965)[inventorySize ]%(#aaa9a7)[= ]%(#feff06)[54]%(#aaa9a7)[; ] %(#0187df)[public ]%(#afb8c5)[InventoryItemBag](%(#345f99)[ItemStack ]%(#278c3c)[*container*]%(#aaa9a7)[, ]%(#0187df)[int ]%(#278c3c)[*size*]) { %(#0187df)[this].%(#666965)[inventorySize ]%(#aaa9a7)[= ]%(#278c3c)[*size*]%(#aaa9a7)[; ] %(#0187df)[this].%(#666965)[inventorySlots ]%(#aaa9a7)[= ]%(#0187df)[new ]%(#345f99)[ItemStack][%(#278c3c)[*size*]]%(#aaa9a7)[; ] %(#0187df)[if ](%(#aaa9a7)[!]%(#278c3c)[*container*].%(#afb8c5)[hasTagCompound]()) { %(#278c3c)[*container*].%(#afb8c5)[setTagCompound](%(#0187df)[new ]%(#afb8c5)[NBTTagCompound]())%(#aaa9a7)[; ] } %(#0187df)[this].%(#afb8c5)[readFromNBT](%(#278c3c)[*container*].%(#afb8c5)[getTagCompound]())%(#aaa9a7)[; ] } %(#0187df)[public void ]%(#afb8c5)[readFromNBT](%(#345f99)[NBTTagCompound ]%(#278c3c)[*comp*]) { %(#345f99)[NBTTagList ]%(#666965)[nbtlist ]%(#aaa9a7)[= ]%(#278c3c)[*comp*].%(#afb8c5)[getTagList](%(#ae6bdc)["Inventory"]%(#aaa9a7)[, ]%(#345f99)[Constants.NBT].%(#666965)[TAG_COMPOUND])%(#aaa9a7)[; ] %(#0187df)[for ](%(#0187df)[int ]%(#666965)_%(#aaa9a7)[= ]%(#feff06)[0]%(#aaa9a7)[; ]%(#666965)_%(#aaa9a7)[< ]%(#666965)[nbtlist].%(#afb8c5)[tagCount]()%(#aaa9a7)[; ]%(#666965)*%(#aaa9a7)[++]) { %(#345f99)[NBTTagCompound ]%(#666965)[comp1 ]%(#aaa9a7)[= ]%(#666965)[nbtlist].%(#afb8c5)[getCompoundTagAt](%(#666965)*)%(#aaa9a7)[; ] %(#0187df)[int ]%(#666965)[slot ]%(#aaa9a7)[= ]%(#666965)[comp1].%(#afb8c5)[getInteger](%(#ae6bdc)["Slot"])%(#aaa9a7)[; ] %(#0187df)[this].%(#666965)[inventorySlots][%(#666965)[slot]] %(#aaa9a7)[= ]%(#345f99)[ItemStack].%(#afb8c5)[loadItemStackFromNBT](%(#666965)[comp1])%(#aaa9a7)[; ] } } %(#0187df)[public void ]%(#afb8c5)[writeToNBT](%(#345f99)[NBTTagCompound ]%(#278c3c)[*comp*]) { %(#345f99)[NBTTagList ]%(#666965)[nbtlist ]%(#aaa9a7)[= ]%(#0187df)[new ]%(#afb8c5)[NBTTagList]()%(#aaa9a7)[; ] %(#0187df)[for ](%(#0187df)[int ]%(#666965)_%(#aaa9a7)[= ]%(#feff06)[0]%(#aaa9a7)[; ]%(#666965)_%(#aaa9a7)[< ]%(#0187df)[this].%(#666965)[inventorySize]%(#aaa9a7)[; ]%(#666965)*%(#aaa9a7)[++]) { %(#0187df)[if ](%(#0187df)[this].%(#666965)[inventorySlots][%(#666965)*] %(#aaa9a7)[!= ]%(#0187df)[null]) { %(#345f99)[NBTTagCompound ]%(#666965)[comp1 ]%(#aaa9a7)[= ]%(#0187df)[new ]%(#afb8c5)[NBTTagCompound]()%(#aaa9a7)[; ] %(#666965)[comp1].%(#afb8c5)[setInteger](%(#ae6bdc)["Slot"]%(#aaa9a7)[, ]%(#666965)*)%(#aaa9a7)[; ] %(#0187df)[this].%(#666965)[inventorySlots][%(#666965)*].%(#afb8c5)[writeToNBT](%(#666965)[comp1])%(#aaa9a7)[; ] %(#666965)[nbtlist].%(#afb8c5)[appendTag](%(#666965)[comp1])%(#aaa9a7)[; ] } } %(#278c3c)[*comp*].%(#afb8c5)[setTag](%(#ae6bdc)["Inventory"]%(#aaa9a7)[, ]%(#666965)[nbtlist])%(#aaa9a7)[; ] } %(#278c3c)[*@Override *] %(#0187df)[public int ]%(#afb8c5)[getSizeInventory]() { %(#0187df)[return this].%(#666965)[inventorySize]%(#aaa9a7)[; ] } %(#278c3c)[*@Nullable *]%(#278c3c)[* @Override *] %(#0187df)[public ]%(#345f99)[ItemStack ]%(#afb8c5)[getStackInSlot](%(#0187df)[int ]%(#278c3c)[*index*]) { %(#0187df)[return this].%(#666965)[inventorySlots][%(#278c3c)[*index*]]%(#aaa9a7)[; ] } %(#278c3c)[*@Nullable *]%(#278c3c)[* @Override *] %(#0187df)[public ]%(#345f99)[ItemStack ]%(#afb8c5)[decrStackSize](%(#0187df)[int ]%(#278c3c)[*index*]%(#aaa9a7)[, ]%(#0187df)[int ]%(#278c3c)[*count*]) { %(#0187df)[return null]%(#aaa9a7)[; ] } %(#278c3c)[*@Nullable *]%(#278c3c)[* @Override *] %(#0187df)[public ]%(#345f99)[ItemStack ]%(#afb8c5)[removeStackFromSlot](%(#0187df)[int ]%(#278c3c)[*index*]) { %(#0187df)[return null]%(#aaa9a7)[; ] } %(#278c3c)[*@Override *] %(#0187df)[public void ]%(#afb8c5)[setInventorySlotContents](%(#0187df)[int ]%(#278c3c)[*index*]%(#aaa9a7)[, ]%(#278c3c)[*@Nullable *]%(#345f99)[ItemStack ]%(#278c3c)[*stack*]) { } %(#278c3c)[*@Override *] %(#0187df)[public int ]%(#afb8c5)[getInventoryStackLimit]() { %(#0187df)[return this].%(#666965)[inventoryStackLimit]%(#aaa9a7)[; ] } %(#278c3c)[*@Override *] %(#0187df)[public void ]%(#afb8c5)[markDirty]() { } %(#278c3c)[*@Override *] %(#0187df)[public boolean ]%(#afb8c5)[isUseableByPlayer](%(#345f99)[EntityPlayer ]%(#278c3c)[*player*]) { %(#0187df)[return true]%(#aaa9a7)[; ] } %(#278c3c)[*@Override *] %(#0187df)[public void ]%(#afb8c5)[openInventory](%(#345f99)[EntityPlayer ]%(#278c3c)[*player*]) { } %(#278c3c)[*@Override *] %(#0187df)[public void ]%(#afb8c5)[closeInventory](%(#345f99)[EntityPlayer ]%(#278c3c)[*player*]) { } %(#278c3c)[*@Override *] %(#0187df)[public boolean ]%(#afb8c5)[isItemValidForSlot](%(#0187df)[int ]%(#278c3c)[*index*]%(#aaa9a7)[, ]%(#345f99)[ItemStack ]%(#278c3c)[*stack*]) { %(#0187df)[return ]%(#aaa9a7)[!](%(#278c3c)[*stack*].%(#afb8c5)[getItem]() %(#0187df)[instanceof ]%(#345f99)[ItemBag])%(#aaa9a7)[; ] } %(#278c3c)[*@Override *] %(#0187df)[public int ]%(#afb8c5)[getField](%(#0187df)[int ]%(#278c3c)[*id*]) { %(#0187df)[return ]%(#feff06)[0]%(#aaa9a7)[; ] } %(#278c3c)[*@Override *] %(#0187df)[public void ]%(#afb8c5)[setField](%(#0187df)[int ]%(#278c3c)[*id*]%(#aaa9a7)[, ]%(#0187df)[int ]%(#278c3c)[*value*]) { } %(#278c3c)[*@Override *] %(#0187df)[public int ]%(#afb8c5)[getFieldCount]() { %(#0187df)[return ]%(#feff06)[0]%(#aaa9a7)[; ] } %(#278c3c)[*@Override *] %(#0187df)[public void ]%(#afb8c5)____
-
J’ai un petit soucis : j’ai créer un item de type sac pour stocker des items mais il sauvegarde pas les items
public class InventoryItemBag implements IInventory { public ItemStack[] inventorySlots; public int inventoryStackLimit = 64; /** Use only a multiple of 9 (27, 54, 81, …) */ public int inventorySize = 54; public InventoryItemBag(ItemStack container, int size) { this.inventorySize = size; this.inventorySlots = new ItemStack; if (!container.hasTagCompound()) { container.setTagCompound(new NBTTagCompound()); } this.readFromNBT(container.getTagCompound()); } public void readFromNBT(NBTTagCompound comp) { NBTTagList nbtlist = comp.getTagList("Inventory", Constants.NBT.TAG_COMPOUND); for (int i = 0; i < nbtlist.tagCount(); i++) { NBTTagCompound comp1 = nbtlist.getCompoundTagAt(i); int slot = comp1.getInteger("Slot"); this.inventorySlots[slot] = ItemStack.loadItemStackFromNBT(comp1); } } public void writeToNBT(NBTTagCompound comp) { NBTTagList nbtlist = new NBTTagList(); for (int i = 0; i < this.inventorySize; i++) { if (this.inventorySlots != null) { NBTTagCompound comp1 = new NBTTagCompound(); comp1.setInteger("Slot", i); this.inventorySlots.writeToNBT(comp1); nbtlist.appendTag(comp1); } } comp.setTag("Inventory", nbtlist); } @Override public int getSizeInventory() { return this.inventorySize; } @Nullable @Override public ItemStack getStackInSlot(int index) { return this.inventorySlots[index]; } @Nullable @Override public ItemStack decrStackSize(int index, int count) { return null; } @Nullable @Override public ItemStack removeStackFromSlot(int index) { return null; } @Override public void setInventorySlotContents(int index, @Nullable ItemStack stack) { } @Override public int getInventoryStackLimit() { return this.inventoryStackLimit; } @Override public void markDirty() { } @Override public boolean isUseableByPlayer(EntityPlayer player) { return true; } @Override public void openInventory(EntityPlayer player) { } @Override public void closeInventory(EntityPlayer player) { } @Override public boolean isItemValidForSlot(int index, ItemStack stack) { return !(stack.getItem() instanceof ItemBag); } @Override public int getField(int id) { return 0; } @Override public void setField(int id, int value) { } @Override public int getFieldCount() { return 0; } @Override public void clear() { } @Override public String getName() { return "item.container.bag.gui"; } @Override public boolean hasCustomName() { return false; } @Override public ITextComponent getDisplayName() { return null; }
-
Comment fais-tu pour te retrouver avec ce formatage foireux du code ? Tu met tout en italique où quoi ?
-
c’est a dire ? la police? je n’y peut rien c’est quand je copie/colle dans le message, ça conserve ma police de programmation (Source Code Pro)
-
@‘SpyMan’:
c’est a dire ? la police? j’ai peut rien c’est quand je copie/colle dans le message, ça conserve ma police de programmation (Source Code Pro)
Tu peut sélectionner ton texte et cliquer sur “Supprimer formatage” pour enlever la police et les couleurs.
Sinon, pour ton code “setInventorySlotContents”, “removeStackFromSlot” et " decrStackSize" sont vides il faudrais peut-être mettre quelque chose…
Et dans ta fonction “readFromNBT”, il vaut mieux mettre “this.inventorySlots = new ItemStack” avant la boucle pour être sûr que l’item na garde pas les items qu’il avait avant que la fonction soit appelée (j’ai déjà eu ce problème avec une tileEntity et je n’y comprenais rien.) -
Comment faire pour que le joueur ne puisse plus déplacer l’item dans son inventaire un fois le gui ouvert car sinon cela cause des problèmes
-
Euh … Tu penses qu’on ne remarque pas que tu supprimes ton message et que tu remet le même à chaque fois pour que ça fasse une notification ?
-
oui la première fois c’était pour le up mais je sais pas pourquoi après quand je l’éditais il je ne voyais pas les changements et du coup je les recréer plusieurs fois et puis je sais pas et après ça a fini par apparaître
-
Normal, quand on modifie ça ne notifie pas, et heureusement.
-
Je parle pas de la notif, mais bien que quand je clickais sur le bouton “mettre a jour le message” mon texte ne changais point!