• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Non résolu Probleme packet

    Support pour les moddeurs
    1.12.2
    2
    2
    120
    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.
    • ZunF1x
      ZunF1x dernière édition par

      Bonsoir, j’ai fait une machine ou il y a un bouton pour l’allumer, du coup j’ai un boolean dans mon tile entity et j’ai un packet qui est envoyé du gui quand on clique sur le bouton pour modifier cette valeur. Le probleme est que pour envoyer mon packet dans mon gui, j’utilise ZunCraft.network.sendToServer(new Packet(!this.tile.isOn(), this.tile.pos)); mais quand je print la valeur tile.isOn() depuis le gui, la valeur retourner est toujours false. J’ai mis un println dans mon packet pour voir si la valeur contenu dans l’IMessage et la valeur contenu dans le tileentity était les memes. J’ai mis un sysout de tile.isOn() et de message.isOn et sa confirme ce que je disais a propos du gui qui retourne faux tout le temps, le sysout tile.isOn renvoyait true et le sysout message.isOn renvoyait true aussi mais souvenez vous, quand j’envoi mon packet, j’envoi le contraire de tile.isOn() a savoir le contraire de false donc true. Pourtant j’ai visionner le tutoriel de robin et il n’avait pas ce probleme. Merci de votre aide ^^

      Ma classe TileEntity:

      public class TileEntityReactor extends TileEnergizedLockable implements IEnergyStorage, IEnergyReceiver, IEnergyProvider, ITickable {
      
          NonNullList<ItemStack> stacks = NonNullList.<ItemStack>withSize(1, ItemStack.EMPTY);
      
          private boolean isOn = false;
      
          public TileEntityReactor() {
              super(new EnergyStorage(2147483647));
          }
      
          @Override
          public void readFromNBT(NBTTagCompound nbt) {
              super.readFromNBT(nbt);
      
              isOn = nbt.getBoolean("IsOn");
          }
      
          @Override
          public NBTTagCompound writeToNBT(NBTTagCompound nbt) {
              super.writeToNBT(nbt);
      
              nbt.setBoolean("IsOn", isOn);
      
              return nbt;
          }
      
          @Override
          public int getField(int id) {
              switch (id) {
      
              }
      
              return 0;
          }
      
          @Override
          public void setField(int id, int value) {
              switch (id) {
      
              }
          }
      
          @Override
          public int getFieldCount() {
              return 0;
          }
      
          @Override
          public int getSizeInventory() {
              return this.stacks.size();
          }
      
          @Override
          public ItemStack getStackInSlot(int index) {
              return this.stacks.get(index);
          }
      
          @Override
          public ItemStack decrStackSize(int index, int count) {
              return ItemStackHelper.getAndSplit(this.stacks, index, count);
          }
      
          @Override
          public ItemStack removeStackFromSlot(int index) {
              return ItemStackHelper.getAndRemove(stacks, index);
          }
      
          @Override
          public void setInventorySlotContents(int index, ItemStack stack) {
              this.stacks.set(index, stack);
      
              if (stack.getCount() > this.getInventoryStackLimit()) {
                  stack.setCount(this.getInventoryStackLimit());
              }
          }
      
          @Override
          public int getInventoryStackLimit() {
              return 64;
          }
      
          @Override
          public boolean isEmpty() {
              for (ItemStack stack : this.stacks) {
                  if (!stack.isEmpty()) {
                      return false;
                  }
              }
              return true;
          }
      
          @Override
          public void clear() {
              for (int i = 0; i < this.stacks.size(); i++) {
                  this.stacks.set(i, ItemStack.EMPTY);
              }
          }
      
          @Override
          public void openInventory(EntityPlayer player) {
          }
      
          @Override
          public void closeInventory(EntityPlayer player) {
          }
      
          @Override
          public Container createContainer(InventoryPlayer playerInventory, EntityPlayer playerIn) {
              return null;
          }
      
          @Override
          public String getGuiID() {
              return null;
          }
      
          public boolean isUsableByPlayer(EntityPlayer player) {
              return this.world.getTileEntity(this.pos) != this ? false : player
                      .getDistanceSq((double) this.pos.getX() + 0.5D,
                              (double) this.pos.getY() + 0.5D,
                              (double) this.pos.getZ() + 0.5D) <= 64.0D;
          }
      
          @Override
          public boolean isItemValidForSlot(int index, ItemStack stack) {
              return true;
          }
      
          @Override
          public boolean hasCustomName() {
              return false;
          }
      
          @Override
          public String getName() {
              return "Coucou";
          }
      
          public boolean isOn() {
              return isOn;
          }
      
          public void setOn(boolean isOn) {
              this.isOn = isOn;
          }
      
          @Override
          public SPacketUpdateTileEntity getUpdatePacket() {
              NBTTagCompound nbtTagCompound = new NBTTagCompound();
              this.writeToNBT(nbtTagCompound);
              return new SPacketUpdateTileEntity(pos, 0, nbtTagCompound);
          }
      
          @Override
          public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
              this.readFromNBT(pkt.getNbtCompound());
              this.markDirty();
          }
      
          @Override
          public void update() {
              if (!world.isRemote) {
                  inputEnergy();
                  outputEnergy();
      
                  if (isOn()) {
      
                  }
              }
          }
      
          @Override
          public int extractEnergy(EnumFacing enumFacing, int i, boolean b) {
              return this.extractEnergy(i, b);
          }
      
          @Override
          public int receiveEnergy(EnumFacing enumFacing, int i, boolean b) {
              return this.receiveEnergy(i, b);
          }
      
          @Override
          public int receiveEnergy(int i, boolean b) {
              return storage.receiveEnergy(i, b);
          }
      
          @Override
          public int extractEnergy(int i, boolean b) {
              return storage.extractEnergy(i, b);
          }
      
          @Override
          public int getEnergyStored() {
              return storage.getEnergyStored();
          }
      
          @Override
          public int getMaxEnergyStored() {
              return storage.getMaxEnergyStored();
          }
      
          @Override
          public boolean canConnectEnergy(EnumFacing enumFacing) {
              return true;
          }
      }
      

      Ma classe gui:

      public class GuiReactor extends GuiContainerBase {
      
          private TileEntityReactor tile;
      
          private static final ResourceLocation BACKGROUND_TEXTURE = new ResourceLocation(Constants.MODID, "textures/gui/container/reactor.png");
      
          private boolean isOn;
      
          public GuiReactor(InventoryPlayer inventoryPlayer, TileEntityReactor tile) {
              super(new ContainerReactor(inventoryPlayer, tile));
      
              this.tile = tile;
      
              this.ySize = 180;
          }
      
          @Override
          public void initGui() {
              super.initGui();
      
              this.buttonList.add(new GuiButtonOn(guiLeft + 129, guiTop + 47));
          }
      
          @Override
          protected void actionPerformed(GuiButton button) throws IOException {
              if (button.id == 0) {
                  ZunCraft.network.sendToServer(new PacketSetOn(!tile.isOn(), tile.getPos()));
              }
      
              super.actionPerformed(button);
          }
      
          public void drawScreen(int mouseX, int mouseY, float partialTicks) {
              this.drawDefaultBackground();
              super.drawScreen(mouseX, mouseY, partialTicks);
              this.renderHoveredToolTip(mouseX, mouseY);
          }
      
          @Override
          protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY) {
              this.mc.getTextureManager().bindTexture(BACKGROUND_TEXTURE);
              this.drawTexturedModalRect(guiLeft, guiTop, 0, 0, this.xSize, this.ySize);
      
              drawPowerJauge(guiLeft + 8, guiTop + 8);
      
              drawJauge(guiLeft + 146, guiTop + 8, 3000, 3000);
              drawJauge(guiLeft + 158, guiTop + 8, Integer.MAX_VALUE, this.tile.storage.getMaxEnergyStored());
      
              drawString(fontRenderer, "Is Active: " + this.tile.isOn(), guiLeft + 38, guiTop + 46, 0xffffff);
          }
      
          public void drawPowerJauge(int x, int y) {
              int energy = Integer.MAX_VALUE / 2;
              int scaledEnergy = (int) (84f / this.tile.storage.getMaxEnergyStored() * energy);
              this.drawTexturedModalRect(x, y + (84 - scaledEnergy), 176, (84 - scaledEnergy), 28, scaledEnergy);
      
              addHoveringText("Coucou mec", x, y, x + 28, y + 84);
          }
      
          public void drawJauge(int x, int y, int value, int maxValue) {
              int barWidth = 8;
              int barHeight = 84;
      
              int scaledTemperature = (int) (80f / maxValue * value);
              this.drawTexturedModalRect(x - 1, y + (80 - scaledTemperature), 204, 0, 10, 4);
      
              addHoveringText(value + "°C / " + maxValue + "°C", x, y, x + barWidth, y + barHeight);
          }
      }
      

      Ma classe packet:

      public class PacketSetOn implements IMessage {
      
          private boolean isOn;
          private int x, y, z;
      
          public PacketSetOn() {
      
          }
      
          public PacketSetOn(boolean isOn, BlockPos pos) {
              this.isOn = isOn;
              this.x = pos.getX();
              this.y = pos.getY();
              this.z = pos.getZ();
          }
      
          @Override
          public void fromBytes(ByteBuf buf) {
              isOn = buf.readBoolean();
              x = buf.readInt();
              y = buf.readInt();
              z = buf.readInt();
          }
      
          @Override
          public void toBytes(ByteBuf buf) {
              buf.writeBoolean(this.isOn);
              buf.writeInt(this.x);
              buf.writeInt(this.y);
              buf.writeInt(this.z);
          }
      
          public static class Handler implements IMessageHandler<PacketSetOn, IMessage> {
      
              @Override
              public IMessage onMessage(PacketSetOn message, MessageContext ctx) {
                  EntityPlayerMP player = ctx.getServerHandler().player;
                  TileEntity te = player.world.getTileEntity(new BlockPos(message.x, message.y, message.z));
      
                  if (te instanceof TileEntityReactor) {
                      TileEntityReactor ter = ((TileEntityReactor) te);
                      ter.setOn(message.isOn);
      
                      System.out.println("Message: " + message.isOn);
                      System.out.println("In Tile: " + ter.isOn());
      
                      ter.markDirty();
                  }
      
                  return null;
              }
          }
      }
      
      1 réponse Dernière réponse Répondre Citer 0
      • P
        PlagueZ dernière édition par PlagueZ

        Le nbt tag isOn de la machine et dans quel état si ca se trouve ton paquet fait bien bouger les données mais les écrit jamais dans le nbt tag ?

        Je suppose que tu utilise le nbt tag isOn pour stocker ta valeur dans le block j’ai lu ton code en diagonal j’avoue x) et donc si son état de départ est false et que ca change jamais puis que tu le lit ils seras toujours false

        “Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire wo…

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

        MINECRAFT FORGE FRANCE © 2018

        Powered by NodeBB