类net.minecraft.util.PacketByteBuf源码实例Demo

下面列出了怎么用net.minecraft.util.PacketByteBuf的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: patchwork-api   文件: IndexedMessageCodec.java
void consume(PacketByteBuf payload, int payloadIndex, NetworkEvent.Context context) {
	if (payload == null) {
		LOGGER.error(SIMPLENET, "Received empty payload on channel {}", channelName);
		return;
	}

	short discriminator = payload.readUnsignedByte();
	final MessageHandler<?> messageHandler = indices.get(discriminator);

	if (messageHandler == null) {
		LOGGER.error(SIMPLENET, "Received invalid discriminator byte {} on channel {}", discriminator, channelName);
		return;
	}

	tryDecode(payload, context, payloadIndex, messageHandler);
}
 
源代码2 项目: fabric-carpet   文件: ClientNetworkHandler.java
private static void onHi(PacketByteBuf data)
{
    synchronized (CarpetClient.sync)
    {
        CarpetClient.setCarpet();
        CarpetClient.serverCarpetVersion = data.readString(64);
        if (CarpetSettings.carpetVersion.equals(CarpetClient.serverCarpetVersion))
        {
            CarpetSettings.LOG.info("Joined carpet server with matching carpet version");
        }
        else
        {
            CarpetSettings.LOG.warn("Joined carpet server with another carpet version: "+CarpetClient.serverCarpetVersion);
        }
        if (CarpetClient.getPlayer() != null)
            respondHello();

    }
}
 
源代码3 项目: patchwork-api   文件: FMLPlayMessages.java
private SpawnEntity(PacketByteBuf buf) {
	this.entity = null;

	this.typeId = buf.readVarInt();
	this.entityId = buf.readInt();
	this.uuid = buf.readUuid();
	this.posX = buf.readDouble();
	this.posY = buf.readDouble();
	this.posZ = buf.readDouble();
	this.pitch = buf.readByte();
	this.yaw = buf.readByte();
	this.headYaw = buf.readByte();
	this.velX = buf.readShort();
	this.velY = buf.readShort();
	this.velZ = buf.readShort();

	this.buf = buf;
}
 
源代码4 项目: patchwork-api   文件: FMLPlayMessages.java
public static void encode(SpawnEntity msg, PacketByteBuf buf) {
	buf.writeVarInt(msg.typeId);
	buf.writeInt(msg.entityId);
	buf.writeUuid(msg.uuid);
	buf.writeDouble(msg.posX);
	buf.writeDouble(msg.posY);
	buf.writeDouble(msg.posZ);
	buf.writeByte(msg.pitch);
	buf.writeByte(msg.yaw);
	buf.writeByte(msg.headYaw);
	buf.writeShort(msg.velX);
	buf.writeShort(msg.velY);
	buf.writeShort(msg.velZ);

	if (msg.entity instanceof IEntityAdditionalSpawnData) {
		((IEntityAdditionalSpawnData) msg.entity).writeSpawnData(buf);
	}
}
 
源代码5 项目: Sandbox   文件: VelocityUtil.java
public static boolean checkIntegrity(final PacketByteBuf buf) {
    final byte[] signature = new byte[32];
    buf.readBytes(signature);

    final byte[] data = new byte[buf.readableBytes()];
    buf.getBytes(buf.readerIndex(), data);

    try {
        final Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(new SecretKeySpec(SandboxConfig.velocityKey.get().getBytes(), "HmacSHA256"));
        final byte[] mySignature = mac.doFinal(data);
        if (!MessageDigest.isEqual(signature, mySignature)) {
            return false;
        }
    } catch (final InvalidKeyException | NoSuchAlgorithmException e) {
        throw new AssertionError(e);
    }

    int version = buf.readVarInt();
    if (version != 1) {
        throw new IllegalStateException("Unsupported forwarding version " + version + ", wanted " + 1);
    }

    return true;
}
 
源代码6 项目: Sandbox   文件: MixinServerLoginNetworkHandler.java
@Inject(method = "onQueryResponse", at = @At("HEAD"), cancellable = true)
public void onQueryResponse(LoginQueryResponseC2SPacket packet, CallbackInfo info) {
    if (SandboxConfig.velocity.get() && velocityId == ((CustomPayloadPacket.LoginQueryPacket) packet).getQueryId()) {
        PacketByteBuf buf = ((CustomPayloadPacket.LoginQueryPacket) packet).getBuffer();
        if (buf == null) {
            this.disconnect(new LiteralText("This server requires you to log in through a proxy"));
            info.cancel();
            return;
        }
        if (!VelocityUtil.checkIntegrity(buf)) {
            this.disconnect(new LiteralText("Unable to verify player details"));
            info.cancel();
            return;
        }

        ((ClientConnectionInternal) this.client).setSocketAddress(new InetSocketAddress(VelocityUtil.readAddress(buf), ((InetSocketAddress) this.client.getAddress()).getPort()));
        this.profile = VelocityUtil.createProfile(buf);
        velocityConn = true;
        acceptPlayer();
        info.cancel();
    }
}
 
源代码7 项目: Sandbox   文件: MixinClientPlayNetworkHandler.java
@Inject(method = "onCustomPayload", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/NetworkThreadUtils;forceMainThread(Lnet/minecraft/network/Packet;Lnet/minecraft/network/listener/PacketListener;Lnet/minecraft/util/thread/ThreadExecutor;)V", shift = At.Shift.AFTER, remap = false), cancellable = true)
public void onCustomPayload(CustomPayloadS2CPacket s2c, CallbackInfo info) {
    CustomPayloadPacket customPayloadPacket = (CustomPayloadPacket) s2c;
    PacketByteBuf data = null;
    try {
        Identifier channel = customPayloadPacket.channel();
        if (!channel.getNamespace().equals("minecraft")) { //Override non-vanilla packets
            Class<? extends Packet> packetClass = NetworkManager.get(channel);
            if (packetClass != null) {
                data = customPayloadPacket.data();
                Packet packet = packetClass.getConstructor().newInstance();
                packet.read(data);
                packet.apply();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (data != null) {
            data.release();
            info.cancel();
        }
    }
}
 
源代码8 项目: the-hallow   文件: HallowedTreasureChestEntity.java
@Override
public Packet<?> createSpawnPacket() {
	PacketByteBuf packet = new PacketByteBuf(Unpooled.buffer());
	
	packet.writeDouble(getX());
	packet.writeDouble(getY());
	packet.writeDouble(getZ());
	
	packet.writeBoolean(shouldReplace);
	packet.writeFloat(rotation);
	
	packet.writeInt(getEntityId());
	
	return ServerSidePacketRegistry.INSTANCE.toPacket(ENTITY_ID, packet);
}
 
源代码9 项目: the-hallow   文件: FluidRecipeSerializer.java
@Override
public FluidRecipe read(Identifier id, PacketByteBuf buf) {
	int size = buf.readInt();

	ArrayList<Ingredient> ingredients = new ArrayList<>();
	for(int i = 0; i < size; i++) {
		ingredients.add(Ingredient.fromPacket(buf));
	}

	return new FluidRecipe(ingredients, buf.readItemStack(), id, type, this);
}
 
源代码10 项目: patchwork-api   文件: IndexedMessageCodec.java
private static <M> int tryEncode(PacketByteBuf target, M message, MessageHandler<M> codec) {
	if (codec.encoder != null) {
		target.writeByte(codec.index & 0xff);
		codec.encoder.accept(message, target);
	}

	if (codec.loginIndexGetter != null) {
		return codec.loginIndexGetter.apply(message);
	} else {
		return Integer.MIN_VALUE;
	}
}
 
源代码11 项目: patchwork-api   文件: IndexedMessageCodec.java
public <M> int build(M message, PacketByteBuf target) {
	MessageHandler<M> codec = findMessageType(message);

	if (codec == null) {
		LOGGER.error(SIMPLENET, "Received invalid message {} on channel {}", message.getClass().getName(), channelName);
		throw new IllegalArgumentException("Invalid message " + message.getClass().getName());
	}

	return tryEncode(target, message, codec);
}
 
源代码12 项目: patchwork-api   文件: IndexedMessageCodec.java
MessageHandler(int index, Class<M> messageType, BiConsumer<M, PacketByteBuf> encoder, Function<PacketByteBuf, M> decoder, BiConsumer<M, Supplier<NetworkEvent.Context>> messageConsumer) {
	this.index = index;
	this.messageType = messageType;
	this.encoder = encoder;
	this.decoder = decoder;
	this.messageConsumer = messageConsumer;
	this.loginIndexGetter = null;
	this.loginIndexSetter = null;
	indices.put((short) (index & 0xff), this);
	types.put(messageType, this);
}
 
@Override
public Packet<?> getEntitySpawningPacket(Entity entity) {
	FMLPlayMessages.SpawnEntity message = new FMLPlayMessages.SpawnEntity(entity);
	PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer());

	buf.writeByte(SPAWN_ENTITY);
	FMLPlayMessages.SpawnEntity.encode(message, buf);

	return ServerSidePacketRegistry.INSTANCE.toPacket(IDENTIFIER, buf);
}
 
@Override
public void sendContainerOpenPacket(ServerPlayerEntity player, NameableContainerFactory factory, Consumer<PacketByteBuf> extraDataWriter) {
	if (player.world.isClient) {
		return;
	}

	player.method_14247();

	ContainerSyncAccess access = (ContainerSyncAccess) player;
	int openContainerId = access.patchwork$getNewContainerSyncId();

	PacketByteBuf extraData = new PacketByteBuf(Unpooled.buffer());
	extraDataWriter.accept(extraData);

	// reset to beginning in case modders read for whatever reason
	extraData.readerIndex(0);

	PacketByteBuf output = new PacketByteBuf(Unpooled.buffer());
	output.writeVarInt(extraData.readableBytes());
	output.writeBytes(extraData);

	if (output.readableBytes() > 32600 || output.readableBytes() < 1) {
		throw new IllegalArgumentException("Invalid PacketByteBuf for openGui, found " + output.readableBytes() + " bytes");
	}

	Container c = factory.createMenu(openContainerId, player.inventory, player);
	ContainerType<?> type = c.getType();

	FMLPlayMessages.OpenContainer msg = new FMLPlayMessages.OpenContainer(type, openContainerId, factory.getDisplayName(), output);
	Packet<?> packet = PatchworkPlayNetworkingMessages.getOpenContainerPacket(msg);

	player.networkHandler.sendPacket(packet);
	player.container = c;
	player.container.addListener(player);

	// TODO MinecraftForge.EVENT_BUS.post(new PlayerContainerEvent.Open(player, c));
}
 
private static Packet<?> getOpenContainerPacket(FMLPlayMessages.OpenContainer message) {
	PacketByteBuf buf = new PacketByteBuf(Unpooled.buffer());

	buf.writeByte(OPEN_CONTAINER);
	FMLPlayMessages.OpenContainer.encode(message, buf);

	return ServerSidePacketRegistry.INSTANCE.toPacket(IDENTIFIER, buf);
}
 
源代码16 项目: Sandbox   文件: AddonS2CPacket.java
@Override
public void read(PacketByteBuf var1) {
    count = var1.readInt();
    prefix = var1.readString(Short.MAX_VALUE);
    if (count > 0) {
        addons = new ArrayList<>();
    } else {
        addons = Collections.emptyList();
    }
    for (int i = 0; i < count; i++) {
        String suffix = var1.readString(Short.MAX_VALUE);
        String hash = var1.readString(Short.MAX_VALUE);
        addons.add(new Pair<>(suffix, hash));
    }
}
 
源代码17 项目: fabric-carpet   文件: ClientNetworkHandler.java
public static void handleData(PacketByteBuf data, ClientPlayerEntity player)
{
    if (data != null)
    {
        int id = data.readVarInt();
        if (id == CarpetClient.HI)
            onHi(data);
        if (id == CarpetClient.DATA)
            onSyncData(data, player);
    }
}
 
源代码18 项目: Sandbox   文件: VelocityUtil.java
private static void readProperties(final PacketByteBuf buf, final GameProfile profile) {
    if (buf.readableBytes() < 4)
        return;
    final int properties = buf.readInt();
    for (int i1 = 0; i1 < properties; i1++) {
        final String name = buf.readString(32767);
        final String value = buf.readString(32767);
        final String signature = buf.readBoolean() ? buf.readString(32767) : null;
        profile.getProperties().put(name, new Property(name, value, signature));
    }
}
 
源代码19 项目: Sandbox   文件: VelocityUtil.java
public static LoginQueryRequestS2CPacket create(int id) {
    LoginQueryRequestS2CPacket packet = new LoginQueryRequestS2CPacket();
    try {
        ReflectionHelper.setPrivateField(LoginQueryRequestS2CPacket.class, packet, "queryId", id);
        ReflectionHelper.setPrivateField(LoginQueryRequestS2CPacket.class, packet, "channel", PLAYER_INFO_CHANNEL);
        ReflectionHelper.setPrivateField(LoginQueryRequestS2CPacket.class, packet, "payload", new PacketByteBuf(Unpooled.buffer()));
    } catch (IllegalAccessException | NoSuchFieldException e) {
        e.printStackTrace();
    }
    return packet;
}
 
源代码20 项目: fabric-carpet   文件: ClientNetworkHandler.java
public static void respondHello()
{
    CarpetClient.getPlayer().networkHandler.sendPacket(new CustomPayloadC2SPacket(
            CarpetClient.CARPET_CHANNEL,
            (new PacketByteBuf(Unpooled.buffer())).writeVarInt(CarpetClient.HELLO).writeString(CarpetSettings.carpetVersion)
    ));
}
 
源代码21 项目: fabric-carpet   文件: ClientNetworkHandler.java
private static void onSyncData(PacketByteBuf data, ClientPlayerEntity player)
{
    CompoundTag compound = data.readCompoundTag();
    if (compound == null) return;
    for (String key: compound.getKeys())
    {
        if (dataHandlers.containsKey(key))
            dataHandlers.get(key).accept(player, compound.get(key));
        else
            CarpetSettings.LOG.error("Unknown carpet data: "+key);
    }
}
 
源代码22 项目: bleachhack-1.14   文件: MixinPacketInflater.java
@Inject(at = @At("HEAD"), method = "decode(Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List;)V", cancellable = true)
protected void decode(ChannelHandlerContext channelHandlerContext_1, ByteBuf byteBuf_1, List<Object> list_1, CallbackInfo info) throws Exception {
	
	if (!ModuleManager.getModule(AntiChunkBan.class).isToggled()) return;
	
	info.cancel();
	
	if (byteBuf_1.readableBytes() != 0) {
         PacketByteBuf packetByteBuf_1 = new PacketByteBuf(byteBuf_1);
         int int_1 = packetByteBuf_1.readVarInt();
         if (int_1 == 0) {
            list_1.add(packetByteBuf_1.readBytes(packetByteBuf_1.readableBytes()));
         } else {
            if (int_1 > 51200000) {
               throw new DecoderException("Badly compressed packet - size of " + (int_1 / 1000000) + "MB is larger than protocol maximum of 50 MB");
            }

            byte[] bytes_1 = new byte[packetByteBuf_1.readableBytes()];
            packetByteBuf_1.readBytes(bytes_1);
            this.inflater.setInput(bytes_1);
            byte[] bytes_2 = new byte[int_1];
            this.inflater.inflate(bytes_2);
            list_1.add(Unpooled.wrappedBuffer(bytes_2));
            this.inflater.reset();
         }

      }
}
 
源代码23 项目: bleachhack-1.14   文件: MixinPacketInflater.java
@Inject(at = @At("HEAD"), method = "decode(Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Ljava/util/List;)V", cancellable = true)
protected void decode(ChannelHandlerContext channelHandlerContext_1, ByteBuf byteBuf_1, List<Object> list_1, CallbackInfo info) throws Exception {
	
	if (!ModuleManager.getModule(AntiChunkBan.class).isToggled()) return;
	
	info.cancel();
	
	if (byteBuf_1.readableBytes() != 0) {
         PacketByteBuf packetByteBuf_1 = new PacketByteBuf(byteBuf_1);
         int int_1 = packetByteBuf_1.readVarInt();
         if (int_1 == 0) {
            list_1.add(packetByteBuf_1.readBytes(packetByteBuf_1.readableBytes()));
         } else {
            if (int_1 > 51200000) {
               throw new DecoderException("Badly compressed packet - size of " + (int_1 / 1000000) + "MB is larger than protocol maximum of 50 MB");
            }

            byte[] bytes_1 = new byte[packetByteBuf_1.readableBytes()];
            packetByteBuf_1.readBytes(bytes_1);
            this.inflater.setInput(bytes_1);
            byte[] bytes_2 = new byte[int_1];
            this.inflater.inflate(bytes_2);
            list_1.add(Unpooled.wrappedBuffer(bytes_2));
            this.inflater.reset();
         }

      }
}
 
源代码24 项目: fabric-carpet   文件: ServerNetworkHandler.java
public static void handleData(PacketByteBuf data, ServerPlayerEntity player)
{
    if (data != null)
    {
        int id = data.readVarInt();
        if (id == CarpetClient.HELLO)
            onHello(player, data);
        if (id == CarpetClient.DATA)
            onClientData(player, data);
    }
}
 
源代码25 项目: fabric-carpet   文件: ServerNetworkHandler.java
public static void onPlayerJoin(ServerPlayerEntity playerEntity)
{
    if (!playerEntity.networkHandler.connection.isLocal())
    {
        playerEntity.networkHandler.sendPacket(new CustomPayloadS2CPacket(
                CarpetClient.CARPET_CHANNEL,
                (new PacketByteBuf(Unpooled.buffer())).writeVarInt(CarpetClient.HI).writeString(CarpetSettings.carpetVersion)
        ));
    }
    else
    {
        validCarpetPlayers.add(playerEntity);
    }

}
 
源代码26 项目: fabric-carpet   文件: ServerNetworkHandler.java
public static void onHello(ServerPlayerEntity playerEntity, PacketByteBuf packetData)
{

    validCarpetPlayers.add(playerEntity);
    String clientVersion = packetData.readString(64);
    remoteCarpetPlayers.put(playerEntity, clientVersion);
    if (clientVersion.equals(CarpetSettings.carpetVersion))
        CarpetSettings.LOG.info("Player "+playerEntity.getName().getString()+" joined with a matching carpet client");
    else
        CarpetSettings.LOG.warn("Player "+playerEntity.getName().getString()+" joined with another carpet version: "+clientVersion);
    DataBuilder data = DataBuilder.create().withTickRate();
    CarpetServer.settingsManager.getRules().forEach(data::withRule);
    playerEntity.networkHandler.sendPacket(new CustomPayloadS2CPacket(CarpetClient.CARPET_CHANNEL, data.build() ));
}
 
源代码27 项目: fabric-carpet   文件: ServerNetworkHandler.java
private static void onClientData(ServerPlayerEntity player, PacketByteBuf data)
{
    CompoundTag compound = data.readCompoundTag();
    if (compound == null) return;
    for (String key: compound.getKeys())
    {
        if (dataHandlers.containsKey(key))
            dataHandlers.get(key).accept(player, compound.get(key));
        else
            CarpetSettings.LOG.warn("Unknown carpet client data: "+key);
    }
}
 
源代码28 项目: the-hallow   文件: FluidRecipeSerializer.java
@Override
public void write(PacketByteBuf buf, FluidRecipe recipe) {
	buf.writeInt(recipe.getIngredients().size());
	recipe.getIngredients().forEach(ingredient -> ingredient.write(buf));
	buf.writeItemStack(recipe.getOutput());
}
 
源代码29 项目: the-hallow   文件: InfusionRecipeSerializer.java
@Override
public void write(PacketByteBuf buffer, InfusionRecipe recipe) {
	recipe.getTarget().write(buffer);
	recipe.getInput().write(buffer);
	buffer.writeItemStack(recipe.getOutput());
}
 
源代码30 项目: the-hallow   文件: InfusionRecipeSerializer.java
@Override
public InfusionRecipe read(Identifier ID, PacketByteBuf buffer) {
	return new InfusionRecipe(ID, Ingredient.fromPacket(buffer), Ingredient.fromPacket(buffer), buffer.readItemStack());
}
 
 类所在包
 同包方法