コード例 #1
0
  // patch method
  @Overwrite
  public void processVanilla250Packet(C17PacketCustomPayload p_147349_1_) {
    PacketBuffer packetbuffer;
    ItemStack itemstack;
    ItemStack itemstack1;

    if ("MC|BEdit".equals(p_147349_1_.func_149559_c())) {
      packetbuffer = new PacketBuffer(Unpooled.wrappedBuffer(p_147349_1_.func_149558_e()));

      try {
        itemstack = packetbuffer.readItemStackFromBuffer();

        if (itemstack == null) {
          return;
        }

        if (!ItemWritableBook.func_150930_a(itemstack.getTagCompound())) {
          throw new IOException("Invalid book tag!");
        }

        itemstack1 = playerEntity.inventory.getCurrentItem();

        if (itemstack1 != null) {
          if (itemstack.getItem() == Items.writable_book
              && itemstack.getItem() == itemstack1.getItem()) {
            itemstack1.setTagInfo("pages", itemstack.getTagCompound().getTagList("pages", 8));
          }

          return;
        }
      } catch (Exception exception4) {
        logger.error("Couldn\'t handle book info", exception4);
        return;
      } finally {
        packetbuffer.release();
      }

      return;
    } else if ("MC|BSign".equals(p_147349_1_.func_149559_c())) {
      packetbuffer = new PacketBuffer(Unpooled.wrappedBuffer(p_147349_1_.func_149558_e()));

      try {
        itemstack = packetbuffer.readItemStackFromBuffer();

        if (itemstack != null) {
          if (!ItemEditableBook.validBookTagContents(itemstack.getTagCompound())) {
            throw new IOException("Invalid book tag!");
          }

          itemstack1 = playerEntity.inventory.getCurrentItem();

          if (itemstack1 == null) {
            return;
          }

          if (itemstack.getItem() == Items.written_book
              && itemstack1.getItem() == Items.writable_book) {
            itemstack1.setTagInfo("author", new NBTTagString(playerEntity.getCommandSenderName()));
            itemstack1.setTagInfo(
                "title", new NBTTagString(itemstack.getTagCompound().getString("title")));
            itemstack1.setTagInfo("pages", itemstack.getTagCompound().getTagList("pages", 8));
            itemstack1.func_150996_a(Items.written_book);
          }

          return;
        }
      } catch (Exception exception3) {
        logger.error("Couldn\'t sign book", exception3);
        return;
      } finally {
        packetbuffer.release();
      }

      return;
    } else {
      DataInputStream datainputstream;
      int i;

      if ("MC|TrSel".equals(p_147349_1_.func_149559_c())) {
        try {
          datainputstream =
              new DataInputStream(new ByteArrayInputStream(p_147349_1_.func_149558_e()));
          i = datainputstream.readInt();
          Container container = playerEntity.openContainer;

          if (container instanceof ContainerMerchant) {
            ((ContainerMerchant) container).setCurrentRecipeIndex(i);
          }
        } catch (Exception exception2) {
          logger.error("Couldn\'t select trade", exception2);
        }
      } else if ("MC|AdvCdm".equals(p_147349_1_.func_149559_c())) {
        if (!serverController.isCommandBlockEnabled()) {
          playerEntity.addChatMessage(
              new ChatComponentTranslation("advMode.notEnabled", new Object[0]));
        } else if (PermissionManager.checkPermission(playerEntity, "mc.cmdblocks")
            && playerEntity.capabilities.isCreativeMode) {
          packetbuffer = new PacketBuffer(Unpooled.wrappedBuffer(p_147349_1_.func_149558_e()));

          try {
            byte b0 = packetbuffer.readByte();
            CommandBlockLogic commandblocklogic = null;

            if (b0 == 0) {
              TileEntity tileentity =
                  playerEntity.worldObj.getTileEntity(
                      packetbuffer.readInt(), packetbuffer.readInt(), packetbuffer.readInt());

              if (tileentity instanceof TileEntityCommandBlock) {
                commandblocklogic = ((TileEntityCommandBlock) tileentity).func_145993_a();
              }
            } else if (b0 == 1) {
              Entity entity = playerEntity.worldObj.getEntityByID(packetbuffer.readInt());

              if (entity instanceof EntityMinecartCommandBlock) {
                commandblocklogic = ((EntityMinecartCommandBlock) entity).func_145822_e();
              }
            }

            String s1 = packetbuffer.readStringFromBuffer(packetbuffer.readableBytes());

            if (commandblocklogic != null) {
              commandblocklogic.func_145752_a(s1);
              commandblocklogic.func_145756_e();
              playerEntity.addChatMessage(
                  new ChatComponentTranslation("advMode.setCommand.success", new Object[] {s1}));
            }
          } catch (Exception exception1) {
            logger.error("Couldn\'t set command block", exception1);
          } finally {
            packetbuffer.release();
          }
        } else {
          playerEntity.addChatMessage(
              new ChatComponentTranslation("advMode.notAllowed", new Object[0]));
        }
      } else if ("MC|Beacon".equals(p_147349_1_.func_149559_c())) {
        if (playerEntity.openContainer instanceof ContainerBeacon) {
          try {
            datainputstream =
                new DataInputStream(new ByteArrayInputStream(p_147349_1_.func_149558_e()));
            i = datainputstream.readInt();
            int j = datainputstream.readInt();
            ContainerBeacon containerbeacon = (ContainerBeacon) playerEntity.openContainer;
            Slot slot = containerbeacon.getSlot(0);

            if (slot.getHasStack()) {
              slot.decrStackSize(1);
              TileEntityBeacon tileentitybeacon = containerbeacon.func_148327_e();
              tileentitybeacon.setPrimaryEffect(i);
              tileentitybeacon.setSecondaryEffect(j);
              tileentitybeacon.markDirty();
            }
          } catch (Exception exception) {
            logger.error("Couldn\'t set beacon", exception);
          }
        }
      } else if ("MC|ItemName".equals(p_147349_1_.func_149559_c())
          && playerEntity.openContainer instanceof ContainerRepair) {
        ContainerRepair containerrepair = (ContainerRepair) playerEntity.openContainer;

        if (p_147349_1_.func_149558_e() != null && p_147349_1_.func_149558_e().length >= 1) {
          String s =
              ChatAllowedCharacters.filerAllowedCharacters(
                  new String(p_147349_1_.func_149558_e(), Charsets.UTF_8));

          if (s.length() <= 30) {
            containerrepair.updateItemName(s);
          }
        } else {
          containerrepair.updateItemName("");
        }
      }
    }
  }
コード例 #2
0
  /** Process the contents of this packet */
  public void handle(NetHandlerPlayServer handler) {
    PacketThreadUtil.processPacket(this, handler, handler.playerEntity.getWorldForPlayer());
    PacketBuffer var2;
    ItemStack var3;
    ItemStack var4;

    if ("MC|BEdit".equals(this.channel)) {
      var2 = new PacketBuffer(Unpooled.wrappedBuffer(this.data));

      try {
        var3 = var2.readItemStackFromBuffer();

        if (var3 == null) return;

        if (!ItemWritableBook.validBookPageTagContents(var3.getTagCompound())) {
          throw new IOException("Invalid book tag!");
        }

        var4 = handler.playerEntity.inventory.getCurrentItem();

        if (var4 != null) {
          if (var3.getItem() == Items.writable_book && var3.getItem() == var4.getItem()) {
            var4.setTagInfo("pages", var3.getTagCompound().getTagList("pages", 8));
          }
        }
      } catch (Exception ignored) {
      } finally {
        var2.release();
      }

    } else if ("MC|BSign".equals(this.channel)) {
      var2 = new PacketBuffer(Unpooled.wrappedBuffer(this.data));

      try {
        var3 = var2.readItemStackFromBuffer();

        if (var3 == null) {
          return;
        }

        if (!ItemEditableBook.validBookTagContents(var3.getTagCompound())) {
          throw new IOException("Invalid book tag!");
        }

        var4 = handler.playerEntity.inventory.getCurrentItem();

        if (var4 != null) {
          if (var3.getItem() == Items.written_book && var4.getItem() == Items.writable_book) {
            var4.setTagInfo("author", new NBTTagString(handler.playerEntity.getName()));
            var4.setTagInfo("title", new NBTTagString(var3.getTagCompound().getString("title")));
            var4.setTagInfo("pages", var3.getTagCompound().getTagList("pages", 8));
            var4.setItem(Items.written_book);
          }
        }
      } catch (Exception ignored) {
      } finally {
        var2.release();
      }
    } else if ("MC|TrSel".equals(this.channel)) {
      try {
        int var40 = this.data.readInt();
        Container container = handler.playerEntity.openContainer;

        if (container instanceof ContainerMerchant) {
          ((ContainerMerchant) container).setCurrentRecipeIndex(var40);
        }
      } catch (Exception ignored) {
      }
    } else if ("MC|AdvCdm".equals(this.channel)) {
      if (!handler.serverController.isCommandBlockEnabled()) {
        handler.playerEntity.addChatMessage(new FormattedTextTranslation("advMode.notEnabled"));
      } else if (handler.playerEntity.canCommandSenderUseCommand(2, "")
          && handler.playerEntity.capabilities.isCreativeMode) {
        var2 = this.data;

        try {
          byte var43 = var2.readByte();
          CommandBlockLogic var46 = null;

          if (var43 == 0) {
            var46 =
                $.bind(
                    handler.playerEntity.world.getTileEntity(
                        new BlockPos(var2.readInt(), var2.readInt(), var2.readInt()),
                        TileEntityCommandBlock.class),
                    TileEntityCommandBlock::getCommandBlockLogic);
          } else if (var43 == 1) {
            var46 =
                $.bind(
                    handler.playerEntity.world.getEntityByID(
                        var2.readInt(), EntityMinecartCommandBlock.class),
                    EntityMinecartCommandBlock::getCommandBlockLogic);
          }

          String var49 = var2.readString(var2.readableBytes());
          boolean var6 = var2.readBoolean();

          if (var46 != null) {
            var46.setCommand(var49);
            var46.setCommandFeedback(var6);

            if (!var6) {
              var46.func_145750_b(null);
            }

            var46.markForUpdate();
            handler.playerEntity.addChatMessage(
                new FormattedTextTranslation("advMode.setCommand.success", var49));
          }
        } catch (Exception ignored) {
        } finally {
          var2.release();
        }
      } else {
        handler.playerEntity.addChatMessage(new FormattedTextTranslation("advMode.notAllowed"));
      }
    } else if ("MC|Beacon".equals(this.channel)) {
      if (handler.playerEntity.openContainer instanceof ContainerBeacon) {
        try {
          var2 = this.data;
          int var44 = var2.readInt();
          int var47 = var2.readInt();
          ContainerBeacon var50 = (ContainerBeacon) handler.playerEntity.openContainer;
          Slot var51 = var50.getSlot(0);

          if (var51.hasStack()) {
            var51.decreaseStackSize(1);
            IInventory var7 = var50.getTileEntity();
            var7.setField(1, var44);
            var7.setField(2, var47);
            var7.markDirty();
          }
        } catch (Exception ignored) {
        }
      }
    } else if ("MC|ItemName".equals(this.channel)
        && handler.playerEntity.openContainer instanceof ContainerAnvil) {
      ContainerAnvil container = (ContainerAnvil) handler.playerEntity.openContainer;

      if (this.data != null && this.data.readableBytes() >= 1) {
        String data = ChatAllowedCharacters.filterAllowedCharacters(this.data.readString(32767));

        if (data.length() <= 30) {
          container.updateItemName(data);
        }
      } else {
        container.updateItemName("");
      }
    }
  }