28 juin 2017, 20:19

Bonsoir, ce soir je cherche à faire un coffre sécurisé accessible par mot de passe du coup d’abbord je regarde lorsque le block est cliqué(activé) si il a un tag alors j’effectue des actions en revanche si il n’y en a pas alors j’ouvre un gui pour créer un nouveau coffre sécurisé en demandant un mot de passe :

@Override
public boolean onBlockActivated(World worldIn, BlockPos pos,IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) 
{

    EntityPlayer player = Minecraft.getMinecraft().player;
    TileEntity te = new TileEntityBlockVault();
    if(te.getTileData().hasKey("Owner"))
    {

    this.setBlockUnbreakable();
    this.setResistance(20000.0F);
    }
    else
    {
    System.out.println(te.getTileData().hasKey("Owner"));
    if (worldIn.isRemote)
            {
    playerIn.openGui(ModEconomy.instance, GuiHandler.BLOCK_VAULT_NEW, worldIn, 0, 0, 0);
            }
    }

         return true;
     }

Jusque la tout va bien je peut écrire, mon texte s’envoi quand je clique sur le bouton, du coup j’utilise des packets mais je pense qu’il y a un souci car après avoir créer un tag lors d’un second click il me ré ouvre le même gui alors qu’il devrait fait les actions que je demande (cf.     this.setBlockUnbreakable(); this.setResistance(20000.0F); )

Du coup est-ce que mon packet est juste ?
 ```java
package fr.fifou.economy.packets;

import fr.fifou.economy.blocks.tileentity.TileEntityBlockVault;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fml.common.network.ByteBufUtils;
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 PacketVaultCreated  implements IMessage {

private static String pass;
public PacketVaultCreated() 
{

}

public PacketVaultCreated(String pass)
{
this.pass = pass;
}

@Override
public void fromBytes(ByteBuf buf) 
{
this.pass = buf.toString();
}

@Override
public void toBytes(ByteBuf buf) 
{
ByteBufUtils.writeUTF8String(buf, this.pass);
}

public static class Handler implements IMessageHandler <packetvaultcreated, imessage=“”>{

@Override
public IMessage onMessage(PacketVaultCreated message, MessageContext ctx) 
{
EntityPlayer player = ctx.getServerHandler().playerEntity;
String owner = player.getUniqueID().toString();
TileEntity te = new TileEntityBlockVault();
if(te.getTileData().hasNoTags())
{
new NBTTagCompound();
te.getTileData().setString(“Owner”, owner);
te.getTileData().setString(“password”, pass);
}
player.closeScreen();
return null;
}
}
}