-
Dans ton cas, tu ne peux pas utiliser MinecraftServer.
Il faut juste que tu revois la façon dont tu organises ton code. -
aussi
private boolean isMousePressed = false; private float[] cooldownList; private Spells[] spellList; private int currentSpell = 0;c’est variables ci auront les memes valeurs pour tout les Item de ce type DANS TOUT LE JEU
car les class d’item et de block de minecraft sont des Singleton (= on une seul instance et ne doivent pas en avoir plusieurs)donc si SpyMan a cet item en jeu et l’utilise alors MysteriousDev aussi aura le meme item avec les meme valeurs a ces variables
si tu veux stocké des données sur un item passe par les NBT de l’itemstack en question
-
Ce message a été supprimé ! -
Merci pour vos suggestions, j’en ai tenu compte et je me heurte a un autre problème, c’est que pour passer les cooldown en nbt normalement j’ai besoin d’une classe NBTTagFloatArray(ou un truc similaire) et le soucis c’est que ça n’éxiste pas … Selon vous comment je pourrais faire pour palier a ce problème ?
Merci d’avance.
Cordialement
Mysterious Devs -
tu stock chaque float associé a une id et voila, pour recup le bon float tu prend son id
-
@SpyMan tu parle de sauvegarder dans une HasmMap donc ?
-
non dans les NBT
-
J’ai un autre un problème qui est que j’ai des pertes de packets (il sert a envoyer au serveur l’information si le joueur fait un clic gauche ou pas) et le problème c’est qu’en jeu le clic gauche marche 1 fois sur 40, merci d’avance
package mysteriousdevs.spellp.packet; import io.netty.buffer.ByteBuf; import mysteriousdevs.spellp.Main; import mysteriousdevs.spellp.init.ModItems; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumHand; import net.minecraft.util.IThreadListener; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler; import net.minecraftforge.fml.common.network.simpleimpl.MessageContext; public class PacketLeftClick implements IMessage { public boolean IsLeftClick; public PacketLeftClick() {} public PacketLeftClick(boolean LeftClick) { this.IsLeftClick = LeftClick; } @Override public void fromBytes(ByteBuf buf) { this.IsLeftClick = buf.readBoolean(); } @Override public void toBytes(ByteBuf buf) { buf.writeBoolean(this.IsLeftClick); } public static class Handler implements IMessageHandler<PacketLeftClick, IMessage> { @Override public IMessage onMessage(PacketLeftClick message, MessageContext ctx) { IThreadListener thread = Main.proxy.getListener(ctx); EntityPlayer player = Main.proxy.getPlayer(ctx); thread.addScheduledTask(() -> { if( player != null ) { if( player.getHeldItem(EnumHand.MAIN_HAND) != ItemStack.EMPTY ) { ItemStack stack = player.getHeldItem(EnumHand.MAIN_HAND); if(stack.getItem() == ModItems.IopSword) { if(!stack.hasTagCompound()) stack.setTagCompound(new NBTTagCompound()); stack.getTagCompound().setBoolean("leftClick", message.IsLeftClick); } } } }); return null; } } } -
si tu veut juste faire du code quand le joueur attaque avec ton épée t’a pas besoin de crée un packet tu peut override onEntitySwing dans ta class d’item
-
@Wind_Blade a dit dans Internal Sever Error avec un item :
si tu veut juste faire du code quand le joueur attaque avec ton épée t’a pas besoin de crée un packet tu peut override onEntitySwing dans ta class d’item
Ce que je veux faire en gros c’est quand le joueur fait clique gauche (dans les airs ou sur un block) ça change de sort donc est ce que ça marche même dans le vide ?
-
Tout est bon, tout est passé en NBT et les problèmes de clique gauche sont réglés , merci beaucoup a vous tous pour votre aide.
