Bonjours à tous !
Aujourd’hui j’ai eu des problèmes en voulant codder un objet qui utilise une commande je rencontre 2 problèmes.
Le 1er c’est un objet qui exécute instantanée la commande, l’objet doit être garder et on peux l’utiliser autant de fois que l’on souhaite, le problème avec cette objet c’est que en solo sa fonctionne mais la command s’exécute 2fois de suite et en multijoueur sur un serveur il fait crash voici le rapport d’erreur :
// Shall we play a game?
Time: 19/03/14 21:16
Description: Ticking entity
java.lang.NullPointerException
at pixelbadge.Stats.func_77663_a(Stats.java:60)
at net.minecraft.item.ItemStack.func_77945_a(ItemStack.java:498)
at net.minecraft.entity.player.InventoryPlayer.func_70429_k(InventoryPlayer.java:359)
at net.minecraft.entity.player.EntityPlayer.func_70636_d(EntityPlayer.java:606)
at net.minecraft.client.entity.EntityPlayerSP.func_70636_d(EntityPlayerSP.java:307)
at net.minecraft.entity.EntityLivingBase.func_70071_h_(EntityLivingBase.java:1826)
at net.minecraft.entity.player.EntityPlayer.func_70071_h_(EntityPlayer.java:342)
at net.minecraft.client.entity.EntityClientPlayerMP.func_70071_h_(SourceFile:46)
at net.minecraft.world.World.func_72866_a(World.java:2350)
at net.minecraft.world.World.func_72870_g(World.java:2311)
at net.minecraft.world.World.func_72939_s(World.java:2157)
at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1921)
at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:910)
at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:838)
at net.minecraft.client.main.Main.main(SourceFile:101)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.minecraft.launchwrapper.Launch.launch(Launch.java:131)
at net.minecraft.launchwrapper.Launch.main(Launch.java:27)
le code est :
package pixelbadge;
import pixelmonfr.pixelmain;
import net.minecraft.command.ICommandManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.World;
public class Stats extends Item
{
private int timer;
public Stats(int par1)
{
super(par1);
this.setCreativeTab(pixelmain.pixelitems);
this.setMaxStackSize(1);
}
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
timer = 1;
return stack;
}
public void onUpdate(ItemStack stack, World world, Entity entity, int id, boolean isCurrent)
{
if(timer > -1 && entity instanceof EntityPlayer)
{
timer–;
}
if(timer == 0 && entity instanceof EntityPlayer)
{
ICommandManager icommandmanager = MinecraftServer.getServer().getCommandManager();
icommandmanager.executeCommand((EntityPlayer)entity, "/pokestats");
}
}
}
Et le second est un objet qui doit exécuter la command après un certains temps puis disparaître mais pareille il fait crash en multi, voici le code :
package pixelbadge;
import net.minecraft.command.ICommandManager;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.World;
import pixelmonfr.pixelmain;
public class oeufpichu extends Item
{
private int timer;
public oeufpichu(int par1)
{
super(par1);
this.setCreativeTab(pixelmain.pixelitems);
this.setMaxStackSize(1);
}
/**
* Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
*/
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
this.timer = 168000;
--stack.stackSize;
return stack;
}
/**
* Called each tick as long the item is on a player inventory. Uses by maps to check if is on a player hand and
* update it's contents.
*/
public void onUpdate(ItemStack stack, World world, Entity entity, int id, boolean isCurrent)
{
if (this.timer > -1 && entity instanceof EntityPlayer)
{
--this.timer;
}
if (this.timer == 0 && entity instanceof EntityPlayer)
{
ICommandManager icommandmanager = MinecraftServer.getServer().getCommandManager();
icommandmanager.executeCommand((EntityPlayer)entity, "/pokegive @p pichu lvl1");
}
}
}
Sa ne fait pas crash le serveur mais seulement la personne ^^
Je suis pas un expert en java mais je sais lire les tutos et des que j’ai un problème j’arrive à le résoudre seul mais la je sèche et je suis en 1.6.4.
Merci aux personnes qui m’aiderons, sur ce bonne soirée !