MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Synchro entre plusieurs joueurs non faites (partielle)

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.x
    7 Messages 3 Publieurs 1.4k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • FlowF Hors-ligne
      Flow
      dernière édition par

      Bonjour, je reviens avec un problème sur la synchro des clients ^^ En fait faisant une machine qui vend des items, je cherche à stocker les données côté serveur et côté client dans le tile entity. Pour la personne qui crée la machine pas de soucis tout est bien afficher en revanche pour une autre personne déjà présente les infos ne sont pas afficher, enfin si partiellement grâce à l’aide de AymericRed j’ai rajouté le

          @Override
          public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) 
          {
          readFromNBT(pkt.getNbtCompound());
          }
      

      Mais je n’ai qu’une partie qui s’affiche (cf. image), c’est à dire le nom …

      Le problème est que je ne vois pas pourquoi les autres données ne sont pas synchronisées ^^ Et du coup je ne sais pas ou je dois regarder pour ce genre d’infos, je vous met mes classes et merci à ceux qui m’aideront ^^

      Le gui de création de la machine :

      package fr.fifou.economy.gui;
      
      import java.awt.Color;
      import java.io.IOException;
      
      import net.minecraft.client.gui.GuiButton;
      import net.minecraft.client.gui.GuiTextField;
      import net.minecraft.client.gui.inventory.GuiContainer;
      import net.minecraft.client.resources.I18n;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.entity.player.InventoryPlayer;
      import net.minecraft.init.Blocks;
      import net.minecraft.server.MinecraftServer;
      import net.minecraft.util.ResourceLocation;
      import net.minecraft.util.math.BlockPos;
      import net.minecraft.util.text.TextComponentString;
      import net.minecraft.util.text.TextComponentTranslation;
      import net.minecraft.util.text.TextFormatting;
      import net.minecraft.world.World;
      import net.minecraftforge.fml.client.config.GuiButtonExt;
      import net.minecraftforge.fml.common.FMLCommonHandler;
      
      import org.lwjgl.opengl.GL11;
      
      import fr.fifou.economy.ModEconomy;
      import fr.fifou.economy.blocks.tileentity.TileEntityBlockSeller;
      import fr.fifou.economy.blocks.tileentity.TileEntityBlockVault;
      import fr.fifou.economy.containers.ContainerSeller;
      import fr.fifou.economy.packets.PacketCardChange;
      import fr.fifou.economy.packets.PacketSellerCreated;
      
      public class GuiSeller extends GuiContainer
      {
      private TileEntityBlockSeller tile;
      
      public GuiSeller(InventoryPlayer playerInventory, TileEntityBlockSeller tile) 
      {
      super(new ContainerSeller(playerInventory, tile));
      this.tile = tile;
      
      }
      
      private static final ResourceLocation background = new ResourceLocation(ModEconomy.MODID ,"textures/gui/screen/gui_seller.png");
      protected int xSize = 176;
      protected int ySize = 168;
      protected int guiLeft;
      protected int guiTop;
      
      private GuiButtonExt validate;
      private GuiButtonExt five;
      private GuiButtonExt ten;
      private GuiButtonExt twenty;
      private GuiButtonExt fifty;
      private GuiButtonExt hundreed;
      private GuiButtonExt twoHundreed;
      private GuiButtonExt fiveHundreed;
      private GuiButtonExt unlimitedStack;
      
      private static int cost;
      private boolean admin = false;
      
      @Override
      public void updateScreen() 
      {
      super.updateScreen();
      
      }
      
      @Override
      public void initGui() 
      {
      super.initGui();
      World worldIn = mc.world;
      EntityPlayer player = mc.player;
      if(tile.getCreated() == false)
      {
      this.buttonList.add(this.validate = new GuiButtonExt(1, width / 2 + 46, height / 2 - 33, 35, 20, I18n.format("title.validate")));
      this.buttonList.add(this.five = new GuiButtonExt(2, width / 2 - 122, height / 2 - 66, 35, 20, "5"));
      this.buttonList.add(this.ten = new GuiButtonExt(3, width / 2- 122, height / 2 -47, 35, 20, "10"));
      this.buttonList.add(this.twenty = new GuiButtonExt(4, width / 2 - 122, height / 2 - 28, 35, 20, "20"));
      this.buttonList.add(this.fifty = new GuiButtonExt(5, width / 2 - 122, height / 2 -9, 35, 20, "50"));
      this.buttonList.add(this.hundreed = new GuiButtonExt(6, width / 2 - 122, height / 2 + 10, 35, 20, "100"));
      this.buttonList.add(this.twoHundreed = new GuiButtonExt(7, width / 2 - 122, height / 2 +29, 35, 20, "200"));
      this.buttonList.add(this.fiveHundreed = new GuiButtonExt(8, width / 2 - 122, height / 2 + 48, 35, 20, "500"));
      this.buttonList.add(this.unlimitedStack = new GuiButtonExt(9, width /2 + 2, height / 2 + 83, 80, 13, I18n.format("title.unlimited")));
      
      }
      }
      
      @Override
      protected void actionPerformed(GuiButton button) throws IOException 
      {
      super.actionPerformed(button);
      World worldIn = mc.world;
      EntityPlayer playerIn = mc.player;
      if(tile != null)
      {
      if(button == this.unlimitedStack)
      {
      if(this.admin == false)
      {
      this.admin = true;
      tile.setAdmin(true);
      playerIn.sendMessage(new TextComponentString(I18n.format("title.unlimitedStack")));
      }
      else if(this.admin == true)
      {
      this.admin = false;
      tile.setAdmin(false);
      playerIn.sendMessage(new TextComponentString(I18n.format("title.limitedStack")));
      }
      System.out.println(this.admin);
      }
      if(button == this.five)
      {
      tile.setCost(5);
      this.cost = 5;
      }
      else if(button == this.ten)
      {
      tile.setCost(10);
      this.cost = 10;
      }
      else if(button == this.twenty)
      {
      tile.setCost(20);
      this.cost = 20;
      }
      else if(button == this.fifty)
      {
      tile.setCost(50);
      this.cost = 50;
      }
      else if(button == this.hundreed)
      {
      tile.setCost(100);
      this.cost = 100;
      }
      else if(button == this.twoHundreed)
      {
      tile.setCost(200);
      this.cost = 200;
      }
      else if(button == this.fiveHundreed)
      {
      tile.setCost(500);
      this.cost = 500;
      }
      else if(button == this.validate)
      {
      if(!(tile.getCost() == 0)) // IF TILE HAS NOT A COST OF 0 THEN WE PASS TO THE OTHER
      {
      if(!tile.getStackInSlot(0).getDisplayName().equals("Air")) // IF SLOT 0 IS NOT BLOCKS.AIR, WE PASS
      {
      if(this.admin == false) //ADMIN HASN'T SET : UNLIMITED STACK
      {
      tile.setAdmin(false);
      tile.setCreated(true); // CLIENT SET CREATED AT TRUE
      final int x = tile.getPos().getX(); // GET X
      final int y = tile.getPos().getY(); // GET Y
      final int z = tile.getPos().getZ(); // GET Z
      int amount = tile.getStackInSlot(0).getCount(); // GET COUNT IN TILE THANKS TO STACK IN SLOT
      String name = tile.getStackInSlot(0).getDisplayName(); // GET ITEM NAME IN TILE THANKS TO STACK IN SLOT
      tile.setAmount(amount); //CLIENT SET AMOUNT
      tile.setItem(name); // CLIENT SET ITEM NAME
      playerIn.closeScreen(); // CLOSE SCREEN
      ModEconomy.network.sendToServer(new PacketSellerCreated(true, this.cost, name, amount, x,y,z, false)); // SEND SERVER PACKET FOR CREATED, COST, NAME, AMOUNT, X,Y,Z ARE TILE COORDINATES
      tile.markDirty();
      }
      else if(this.admin == true) //ADMIN HAS SET : UNLIMITED STACK
      {
      tile.setAdmin(true);
      tile.setCreated(true); // CLIENT SET CREATED AT TRUE
      final int x = tile.getPos().getX(); // GET X
      final int y = tile.getPos().getY(); // GET Y
      final int z = tile.getPos().getZ(); // GET Z
      int amount = tile.getStackInSlot(0).getCount(); // GET COUNT IN TILE THANKS TO STACK IN SLOT
      String name = tile.getStackInSlot(0).getDisplayName(); // GET ITEM NAME IN TILE THANKS TO STACK IN SLOT
      tile.setAmount(amount); //CLIENT SET AMOUNT
      tile.setItem(name); // CLIENT SET ITEM NAME
      playerIn.closeScreen(); // CLOSE SCREEN
      ModEconomy.network.sendToServer(new PacketSellerCreated(true, this.cost, name, amount, x,y,z, true)); // SEND SERVER PACKET FOR CREATED, COST, NAME, AMOUNT, X,Y,Z ARE TILE COORDINATES
      tile.markDirty();
      }
      
      }
      else // PROVIDE PLAYER TO SELL AIR
      {
      playerIn.sendMessage(new TextComponentString(I18n.format("title.sellAir")));
      }
      }
      else // IT MEANS THAT PLAYER HAS NOT SELECTED A COST
      {
      playerIn.sendMessage(new TextComponentString(I18n.format("title.noCost")));
      }
      }
      }
      
      }
      
      @Override
      public boolean doesGuiPauseGame() 
      {
      return false;
      }
      
      @Override
      protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) 
      {
      fontRenderer.drawString(new TextComponentTranslation(I18n.format("title.block_seller")).getFormattedText(), 8, 5, Color.DARK_GRAY.getRGB());
      fontRenderer.drawString(new TextComponentTranslation("Inventory").getFormattedText(), 8, 73, Color.DARK_GRAY.getRGB());
      }
      
      @Override
      protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) 
      {
        this.drawDefaultBackground();
            GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 
            this.mc.getTextureManager().bindTexture(background); 
            int k = (this.width - this.xSize) / 2; 
            int l = (this.height - this.ySize) / 2;
            this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize); 
      }
      }
      

      Le gui d’achat

      package fr.fifou.economy.gui;
      
      import java.awt.Color;
      import java.awt.Graphics;
      import java.awt.image.BufferedImage;
      import java.io.IOException;
      import java.util.UUID;
      import javax.imageio.ImageIO;
      
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.gui.FontRenderer;
      import net.minecraft.client.gui.GuiButton;
      import net.minecraft.client.gui.GuiScreen;
      import net.minecraft.client.gui.inventory.GuiContainer;
      import net.minecraft.client.renderer.GlStateManager;
      import net.minecraft.client.renderer.OpenGlHelper;
      import net.minecraft.client.renderer.RenderHelper;
      import net.minecraft.client.renderer.entity.RenderManager;
      import net.minecraft.client.resources.I18n;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.entity.item.EntityItem;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.entity.player.InventoryPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.ResourceLocation;
      import net.minecraft.util.text.TextComponentString;
      import net.minecraft.util.text.TextComponentTranslation;
      import net.minecraft.util.text.TextFormatting;
      import net.minecraft.world.World;
      import net.minecraftforge.fml.client.config.GuiButtonExt;
      
      import org.lwjgl.opengl.GL11;
      
      import fr.fifou.economy.ModEconomy;
      import fr.fifou.economy.blocks.tileentity.TileEntityBlockSeller;
      import fr.fifou.economy.containers.ContainerSeller;
      import fr.fifou.economy.items.ItemCreditcard;
      import fr.fifou.economy.packets.PacketCardChange;
      import fr.fifou.economy.packets.PacketCardChangeAdmin;
      import fr.fifou.economy.packets.PacketCardChangeSeller;
      import fr.fifou.economy.packets.PacketSellerCreated;
      import fr.fifou.economy.packets.PacketSellerFundsTotal;
      
      public class GuiSellerBuy extends GuiScreen
      {
      private TileEntityBlockSeller tile;
      
      public GuiSellerBuy(TileEntityBlockSeller tile) 
      {
      this.tile = tile;
      
      }
      
      private static final ResourceLocation background = new ResourceLocation(ModEconomy.MODID ,"textures/gui/screen/gui_item.png");
      protected int xSize = 256;
      protected int ySize = 124;
      protected int guiLeft;
      protected int guiTop;
      
      private GuiButtonExt slot1;
      private GuiButtonExt takeFunds;
      private String owner = "";
      private String itemName = "";
      private int cost;
      private int amount;
      private int fundsTotalRecovery;
      
      @Override
      public void updateScreen() 
      {
      super.updateScreen();
      amount = tile.getAmount();
      fundsTotalRecovery = tile.getFundsTotal();
      tile.setFundsTotal(fundsTotalRecovery);
      tile.setAmount(amount);
      tile.markDirty();
      }
      
      @Override
      public void initGui() 
      {
      this.guiLeft = (this.width - this.xSize) / 2;
         this.guiTop = (this.height - this.ySize) / 2;
      World worldIn = mc.world;
      EntityPlayer player = mc.player;
      if(tile != null)
      {
      this.owner = tile.getOwnerName();
      this.itemName = tile.getItem();
      this.cost = tile.getCost();
      this.buttonList.add(this.slot1 = new GuiButtonExt(1, width / 2 - 50, height / 2 + 27, 100, 20, I18n.format("title.buy")));
      String sellerOwner = tile.getOwner();
      String worldPlayer = player.getUniqueID().toString();
      if(sellerOwner.equals(worldPlayer))
      {
      this.buttonList.add(this.takeFunds = new GuiButtonExt(2, width / 2 + 20, height / 2 - 74, 100, 13, I18n.format("title.recover")));
      }
      
      }
      }
      
      @Override
      public boolean doesGuiPauseGame() 
      {
      return false;
      }
      
      @Override
      protected void actionPerformed(GuiButton button) throws IOException 
      {
      super.actionPerformed(button);
      
      World worldIn = mc.world;
      EntityPlayer player = mc.player;
      if(tile != null) // WE CHECK IF TILE IS NOT NULL FOR AVOID CRASH
      {
      if(button == this.slot1) //IF PLAYER BUY
      {
      for(int i = 0; i < player.inventory.getSizeInventory(); i++) // WE CHECK FOR THE CREDIT CARD IN PLAYER'S INVENTORY
      {
      if(player.inventory.getStackInSlot(i) != null) //IF SLOT "i" IS NOT NULL
      {
      if(player.inventory.getStackInSlot(i).getItem() instanceof ItemCreditcard) // AND THE ITEM IS THE CREDIT CARD
      {
      ItemStack hasCardIS = player.inventory.getStackInSlot(i); // WE CREATE A NEW ITEM STACK WITH THE CARD IN SLOT
      if(hasCardIS.hasTagCompound() && hasCardIS.getTagCompound().hasKey("Owner")) // CHECK IF CARD HAS OWNER
      {
      String playerCardO = hasCardIS.getTagCompound().getString("OwnerUUID"); // GET THE OWNER UUID IN CARD'S NBT
      String playerInWorld = player.getUniqueID().toString(); // GET THE PLAYER UUID IN WORLD
      
      if(playerCardO.equals(playerInWorld)) // IF THEY ARE THE SAME WE PASS
      {
      if(hasCardIS.getTagCompound().getInteger("Funds") >= tile.getCost()) //IF FUNDS IN CARD ARE SUPERIOR OR EQUAL TO THE COST WE PASS
      {
      if(hasCardIS.getTagCompound().getBoolean("Linked") == true)
      {
      if(tile.getAmount() >= 1)
      {
      boolean admin = tile.getAdmin();
      if(admin == false)
      {
      int fundTotal = tile.getFundsTotal(); // WE GET THE TOTAL FUNDS
      tile.setFundsTotal(fundTotal + tile.getCost()); // CLIENT ADD TOTAL FUNDS + THE COST OF THE ITEM
      final int x = tile.getPos().getX(); // GET X COORDINATES
      final int y = tile.getPos().getY(); // GET Y COORDINATES
      final int z = tile.getPos().getZ(); // GET Z COORDINATES
      final int cost = tile.getCost(); // GET COST OF THE TILE ENTITY
      int amount = tile.getAmount(); // GET AMOUNT OF THE TILE ENTITY
      tile.setAmount(amount -1); // CLIENT SET AMOUNT MINUS ONE EACH TIME HE BUY
      ModEconomy.network.sendToServer(new PacketSellerFundsTotal((fundTotal + tile.getCost()), x,y,z, amount, false)); //SENDING PACKET TO LET SERVER KNOW CHANGES WITH TOTAL FUNDS, COORDINATES AND AMOUNT
      ModEconomy.network.sendToServer(new PacketCardChangeSeller(cost)); // SENDING ANOTHER PACKET TO UPDATE CLIENT'S CARD IN SERVER KNOWLEDGE
      tile.markDirty();
      }
      else if(admin == true)
      {
      int fundTotal = tile.getFundsTotal(); // WE GET THE TOTAL FUNDS
      tile.setFundsTotal(fundTotal + tile.getCost()); // CLIENT ADD TOTAL FUNDS + THE COST OF THE ITEM
      final int x = tile.getPos().getX(); // GET X COORDINATES
      final int y = tile.getPos().getY(); // GET Y COORDINATES
      final int z = tile.getPos().getZ(); // GET Z COORDINATES
      final int cost = tile.getCost(); // GET COST OF THE TILE ENTITY
      int amount = tile.getAmount(); // GET AMOUNT OF THE TILE ENTITY
      tile.setAmount(amount); // CLIENT SET AMOUNT MINUS ONE EACH TIME HE BUY
      ModEconomy.network.sendToServer(new PacketSellerFundsTotal((fundTotal + tile.getCost()), x,y,z, amount, false)); //SENDING PACKET TO LET SERVER KNOW CHANGES WITH TOTAL FUNDS, COORDINATES AND AMOUNT
      ModEconomy.network.sendToServer(new PacketCardChangeSeller(cost)); // SENDING ANOTHER PACKET TO UPDATE CLIENT'S CARD IN SERVER KNOWLEDGE
      tile.markDirty();
      }
      }
      }
      else // ELSE WE SEND HIM A MESSAGE TO TELL HE DON'T HAVE THE UPGRADE
      {
      player.sendMessage(new TextComponentString(I18n.format("title.noUpgrade")));
      }
      }
      else // ELSE WE SEND HIM A MESSAGE TO TELL THEY DON'T HAVE ENOUGH FUNDS
      {
      player.sendMessage(new TextComponentString(I18n.format("title.noEnoughFunds")));
      }
      }
      else // ELSE WE SEND HIM A MESSAGE TO TELL HIM IT'S NOT HIS CARD
      {
      player.sendMessage(new TextComponentString(I18n.format("title.noSameCardBuy")));
      }
      }
      }
      }
      }
      }
      else if(button == this.takeFunds)
      {
      for(int i = 0; i < player.inventory.getSizeInventory(); i++) // WE CHECK FOR THE CREDIT CARD IN PLAYER'S INVENTORY
      {
      if(player.inventory.getStackInSlot(i) != null) //IF SLOT "i" IS NOT NULL
      {
      if(player.inventory.getStackInSlot(i).getItem() instanceof ItemCreditcard) // AND THE ITEM IS THE CREDIT CARD
      {
      ItemStack hasCardIS = player.inventory.getStackInSlot(i); // WE CREATE A NEW ITEM STACK WITH THE CARD IN SLOT
      if(hasCardIS.hasTagCompound() && hasCardIS.getTagCompound().hasKey("Owner"))
      {
      final int x = tile.getPos().getX(); // GET X COORDINATES
      final int y = tile.getPos().getY(); // GET Y COORDINATES
      final int z = tile.getPos().getZ(); // GET Z COORDINATES
      tile.setFundsTotal(0);
      tile.markDirty();
      ModEconomy.network.sendToServer(new PacketSellerFundsTotal(fundsTotalRecovery, x,y,z, amount, true)); //SENDING PACKET TO LET SERVER KNOW CHANGES WITH TOTAL FUNDS, COORDINATES AND AMOUNT
      }
      }
      }
      }
      }
      }
      }
      
      @Override
      public void drawScreen(int mouseX, int mouseY, float partialTicks)
      {
      this.drawDefaultBackground();
      // added
             this.mc.getTextureManager().bindTexture(background);
             int i = this.guiLeft;
             int j = this.guiTop;
             this.drawTexturedModalRect(i, j, 0, 0, this.xSize, this.ySize);
      this.fontRenderer.drawString(TextFormatting.BOLD + I18n.format("title.seller") + owner, (this.width / 2 - 120), (this.height / 2 - 50), 0x000);
      this.fontRenderer.drawString(TextFormatting.BOLD + I18n.format("title.item") + itemName, (this.width / 2 - 120), (this.height / 2 - 40), 0x000);
      this.fontRenderer.drawString(TextFormatting.BOLD + I18n.format("title.cost") + cost, (this.width / 2 - 120), (this.height / 2 - 30), 0x000);
      this.fontRenderer.drawString(TextFormatting.BOLD + I18n.format("title.amount") + amount, (this.width / 2 - 120), (this.height / 2 - 20), 0x000);
      this.fontRenderer.drawString(TextFormatting.BOLD + I18n.format("title.fundsToRecover") + fundsTotalRecovery, (this.width / 2 - 120), (this.height / 2 - 10), 0x000);
      super.drawScreen(mouseX, mouseY, partialTicks);
         }
      
      }
      

      Le tile entity :

      package fr.fifou.economy.blocks.tileentity;
      
      import javax.annotation.Nullable;
      
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.network.NetworkManager;
      import net.minecraft.network.play.server.SPacketUpdateTileEntity;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.util.EnumFacing;
      import net.minecraftforge.common.capabilities.Capability;
      import net.minecraftforge.items.CapabilityItemHandler;
      import net.minecraftforge.items.ItemStackHandler;
      
      public class TileEntityBlockSeller extends TileEntity 
      {
      ItemStackHandler inventory_seller = new ItemStackHandler(1); //STACK HANDLER FOR ONE SLOT = 0 
      private String owner = ""; 
      private String ownerName = "";
      private int funds_total;
      private int cost;
      private boolean created;
      private int amount;
      private String item = "";
      private boolean admin;
      
      public TileEntityBlockSeller()
      {
      
      }
      
      public ItemStackHandler getHandler()
      {
      return inventory_seller;
      
      }
      
      public TileEntityBlockSeller(String ownerUUID, String ownerName, int costS, int amountS, String itemS ,int fundsTotalS, boolean createdS, boolean adminS)
      {
      this.owner = ownerUUID; //STORE OWNER UUID
      this.ownerName = ownerName;
      this.cost = costS; //STORE COST
      this.amount = amountS; //STORE AMOUNT
      this.item = itemS; //STORE ITEM NAME
      this.funds_total = fundsTotalS; //STORE FUNDS TOTAL
      this.created = createdS; //STORE CREATED BOOLEAN
      this.admin = adminS;
      }
      
          public SPacketUpdateTileEntity getUpdatePacket()
          {
              return new SPacketUpdateTileEntity(this.pos, 1, this.getUpdateTag());
          }
      
          public NBTTagCompound getUpdateTag()
          {
              return this.writeToNBT(new NBTTagCompound());
          }
      
          @Override
          public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) 
          {
          readFromNBT(pkt.getNbtCompound());
          }
      
      public ItemStack getStackInSlot(int slot)
      {
      return inventory_seller.getStackInSlot(slot);
      }
      
      public ItemStack removeStackInSlot(int slot)
      {
      return inventory_seller.getStackInSlot(slot).splitStack(1);
      }
      
      public void setAdmin(Boolean adminS)
      {
      this.admin = adminS;
      }
      
      public boolean getAdmin()
      {
      return this.admin;
      }
      
          public void setOwner(String string)
          {
              this.owner = string;
          }
      
          public String getOwner()
          {
              return this.owner;
          }
      
          public void setOwnerName(String stringName)
          {
          this.ownerName = stringName;
          }
      
          public String getOwnerName()
          {
          return this.ownerName;
          }
      
          public void setCost(int costS)
          {
          this.cost = costS;
          }
      
          public int getCost()
          {
              return this.cost;
          }
      
          public void setFundsTotal(int fundsS)
          {
          this.funds_total = fundsS;
          }
      
          public int getFundsTotal()
          {
          return this.funds_total;
          }
          public void setCreated(boolean createdS)
          {
          this.created = createdS;
          }
      
          public boolean getCreated()
          {
              return this.created;
          }
      
          public void setItem(String itemS)
          {
          this.item = itemS;
          }
      
          public String getItem()
          {
          return this.item;
          }
      
          public void setAmount(int amountS)
          {
          this.amount = amountS;
          }
      
          public int getAmount()
          {
          return this.amount;
          }
      
      @Override
      public NBTTagCompound writeToNBT(NBTTagCompound compound) 
      {
      compound.setTag("inventory", inventory_seller.serializeNBT());
      compound.setString("ownerS", this.owner);
      compound.setString("ownerName", this.ownerName);
      compound.setInteger("cost", this.cost);
      compound.setInteger("amount", this.amount);
      compound.setString("item", this.item);
      compound.setInteger("funds_total", this.funds_total);
      compound.setBoolean("created", this.created);
      compound.setBoolean("admin", this.admin);
      return super.writeToNBT(compound);
      }
      
      @Override
      public void readFromNBT(NBTTagCompound compound) 
      {
      super.readFromNBT(compound);
      inventory_seller.deserializeNBT(compound.getCompoundTag("inventory"));
      this.owner = compound.getString("ownerS");
      this.ownerName = compound.getString("ownerName");
      this.cost = compound.getInteger("cost");
      this.amount = compound.getInteger("amount");
      this.item = compound.getString("item");
      this.funds_total = compound.getInteger("funds_total");
      this.created = compound.getBoolean("created");
      this.admin = compound.getBoolean("admin");
      }
      }
      
      

      Si vous avez besoins des packets, demandez moi 😉 Merci.

      Oui ce gif est drôle.

      1 réponse Dernière réponse Répondre Citer 0
      • AymericRedA Hors-ligne
        AymericRed
        dernière édition par

        Après la réception de ton packet, essayes de faire “tontileentity.markDirty()” et normalement ça sera bon. Si ça ne marche toujours pas envoies le code du packet.

        Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

        AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

        Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
        Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

        1 réponse Dernière réponse Répondre Citer 1
        • robin4002R Hors-ligne
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
          dernière édition par

          Salut,
          Ou world.markBlockForUpdate.

          (elle est où la balise de version ?)
          EDIt : ho, je viens de voir qu’il y a une option pour forcer le fait de mettre un préfixe de version, je viens l’activer.

          1 réponse Dernière réponse Répondre Citer 1
          • AymericRedA Hors-ligne
            AymericRed
            dernière édition par

            @robin4002:

            Ou world.markBlockForUpdate.

            (elle est où la balise de version ?)

            Le problème c’est qu’il n’y a pas cette fonction selon les versions justement ^^

            Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

            AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

            Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
            Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

            1 réponse Dernière réponse Répondre Citer 0
            • FlowF Hors-ligne
              Flow
              dernière édition par

              @robin4002:

              Salut,
              Ou world.markBlockForUpdate.

              (elle est où la balise de version ?)
              EDIt : ho, je viens de voir qu’il y a une option pour forcer le fait de mettre un préfixe de version, je viens l’activer.

              Merci à chaque fois j’oublie punaise ! Pourtant je sais qu’il faut la mettre ^^

              Après la réception du packet, c’est à dire dans le tile entity ? oO

              Oui ce gif est drôle.

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                Tu ne risques plus de l’oublier maintenant car cela fera une erreur si elle manque.

                C’est world.markBlockForUpdateRange(pos, pos) en 1.12 il me semble.
                Oui dans le tile entity.

                EDIT : perdu : https://github.com/kevin68/The-Spotlight-Mod/blob/master/src/fr/mcnanotech/kevin_68/thespotlightmod/TileEntitySpotLight.java#L220
                this.world.notifyBlockUpdate(getPos(), state, state, 3);

                1 réponse Dernière réponse Répondre Citer 0
                • FlowF Hors-ligne
                  Flow
                  dernière édition par

                  D’acc tant mieux car c’est vrai que c’est important, désoler de l’avoir oublier 😞

                  D’acc je teste ce à la fin du tile entity du coup 🙂


                  Toujours pas /:

                  EDIT EDIT: C’était

                  @Override
                  public void markDirty() 
                  {
                  IBlockState state = this.world.getBlockState(getPos());
                      this.world.notifyBlockUpdate(getPos(), state, state, 3);
                  }
                  ``` en 1.12, je n'ai que extends tileentity ^^ Du coup ca marche :)
                  Merci à vous !

                  Oui ce gif est drôle.

                  1 réponse Dernière réponse Répondre Citer 0
                  • 1 / 1
                  • Premier message
                    Dernier message
                  Design by Woryk
                  ContactMentions Légales

                  MINECRAFT FORGE FRANCE © 2024

                  Powered by NodeBB