mirror of
https://github.com/architectury/architectury-api.git
synced 2026-03-30 05:05:19 -05:00
[ci skip] Port to NeoForge 24w14a
Signed-off-by: shedaniel <daniel@shedaniel.me>
This commit is contained in:
@@ -25,6 +25,7 @@ import dev.architectury.networking.NetworkManager;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.game.ClientGamePacketListener;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
@@ -56,7 +57,7 @@ public class TestEntity extends Cow {
|
||||
if (this.getLastAttacker() instanceof ServerPlayer player) {
|
||||
CompoundTag compoundTag = new CompoundTag();
|
||||
compoundTag.putString("DeathCauser", player.getStringUUID());
|
||||
FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.buffer());
|
||||
RegistryFriendlyByteBuf buf = new RegistryFriendlyByteBuf(Unpooled.buffer(), this.registryAccess());
|
||||
buf.writeNbt(compoundTag);
|
||||
NetworkManager.sendToPlayer(player, new ResourceLocation("architectury_test", "sync_data"), buf);
|
||||
}
|
||||
|
||||
@@ -27,13 +27,13 @@ import net.minecraft.world.level.storage.loot.entries.LootItem;
|
||||
|
||||
public class TestLoot {
|
||||
public static void init() {
|
||||
/*LootEvent.MODIFY_LOOT_TABLE.register((lootTables, id, context, builtin) -> {
|
||||
LootEvent.MODIFY_LOOT_TABLE.register((key, context, builtin) -> {
|
||||
// Check that the loot table is dirt and built-in
|
||||
if (builtin && Blocks.DIRT.getLootTable().equals(id)) {
|
||||
if (builtin && Blocks.DIRT.getLootTable().equals(key)) {
|
||||
// Create a loot pool with a single item entry of Items.DIAMOND
|
||||
LootPool.Builder pool = LootPool.lootPool().add(LootItem.lootTableItem(Items.DIAMOND));
|
||||
context.addPool(pool);
|
||||
}
|
||||
});*/
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ package dev.architectury.test.networking;
|
||||
import dev.architectury.networking.NetworkManager;
|
||||
import dev.architectury.networking.simple.BaseC2SMessage;
|
||||
import dev.architectury.networking.simple.MessageType;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.chat.Component;
|
||||
|
||||
public class ButtonClickedMessage extends BaseC2SMessage {
|
||||
@@ -35,7 +35,7 @@ public class ButtonClickedMessage extends BaseC2SMessage {
|
||||
buttonId = id;
|
||||
}
|
||||
|
||||
public ButtonClickedMessage(FriendlyByteBuf buf) {
|
||||
public ButtonClickedMessage(RegistryFriendlyByteBuf buf) {
|
||||
buttonId = buf.readVarInt();
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ public class ButtonClickedMessage extends BaseC2SMessage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(FriendlyByteBuf buf) {
|
||||
public void write(RegistryFriendlyByteBuf buf) {
|
||||
buf.writeVarInt(buttonId);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ import dev.architectury.networking.NetworkManager;
|
||||
import dev.architectury.networking.simple.BaseS2CMessage;
|
||||
import dev.architectury.networking.simple.MessageType;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.chat.Component;
|
||||
|
||||
public class SyncDataMessage extends BaseS2CMessage {
|
||||
@@ -38,7 +38,7 @@ public class SyncDataMessage extends BaseS2CMessage {
|
||||
serverData = tag;
|
||||
}
|
||||
|
||||
public SyncDataMessage(FriendlyByteBuf buf) {
|
||||
public SyncDataMessage(RegistryFriendlyByteBuf buf) {
|
||||
serverData = buf.readNbt();
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ public class SyncDataMessage extends BaseS2CMessage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(FriendlyByteBuf buf) {
|
||||
public void write(RegistryFriendlyByteBuf buf) {
|
||||
buf.writeNbt(serverData);
|
||||
}
|
||||
|
||||
|
||||
@@ -27,10 +27,16 @@ import dev.architectury.networking.transformers.SplitPacketTransformer;
|
||||
import dev.architectury.test.TestMod;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.network.RegistryFriendlyByteBuf;
|
||||
import net.minecraft.network.codec.ByteBufCodecs;
|
||||
import net.minecraft.network.codec.StreamCodec;
|
||||
import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.util.ExtraCodecs;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public interface TestModNet {
|
||||
SimpleNetworkManager NET = SimpleNetworkManager.create(TestMod.MOD_ID);
|
||||
@@ -41,6 +47,7 @@ public interface TestModNet {
|
||||
// An example Server to Client message
|
||||
MessageType SYNC_DATA = NET.registerS2C("sync_data", SyncDataMessage::new);
|
||||
ResourceLocation BIG_DATA = new ResourceLocation(TestMod.MOD_ID, "big_data");
|
||||
CustomPacketPayload.Type<BigDataPayload> BIG_DATA_PAYLOAD = new CustomPacketPayload.Type<>(new ResourceLocation(TestMod.MOD_ID, "big_data_payload"));
|
||||
String BIG_STRING = StringUtils.repeat('a', 100000);
|
||||
|
||||
static void initialize() {
|
||||
@@ -58,15 +65,40 @@ public interface TestModNet {
|
||||
throw new AssertionError(utf);
|
||||
}
|
||||
});
|
||||
NetworkManager.registerReceiver(NetworkManager.Side.C2S, BIG_DATA_PAYLOAD, new StreamCodec<>() {
|
||||
@Override
|
||||
public BigDataPayload decode(RegistryFriendlyByteBuf object) {
|
||||
return new BigDataPayload(object.readUtf(Integer.MAX_VALUE / 4));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void encode(RegistryFriendlyByteBuf object, BigDataPayload payload) {
|
||||
object.writeUtf(payload.data, Integer.MAX_VALUE / 4);
|
||||
}
|
||||
}, List.of(new SplitPacketTransformer()), (value, context) -> {
|
||||
if (value.data().equals(BIG_STRING)) {
|
||||
TestMod.SINK.accept("Network Split Packets worked");
|
||||
} else {
|
||||
throw new AssertionError(value.data());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
static void initializeClient() {
|
||||
ClientPlayerEvent.CLIENT_PLAYER_JOIN.register(player -> {
|
||||
FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.buffer());
|
||||
RegistryFriendlyByteBuf buf = new RegistryFriendlyByteBuf(Unpooled.buffer(), player.registryAccess());
|
||||
buf.writeUtf(BIG_STRING, Integer.MAX_VALUE / 4);
|
||||
// write twice
|
||||
buf.writeUtf(BIG_STRING, Integer.MAX_VALUE / 4);
|
||||
NetworkManager.sendToServer(BIG_DATA, buf);
|
||||
NetworkManager.sendToServer(new BigDataPayload(BIG_STRING));
|
||||
});
|
||||
}
|
||||
|
||||
record BigDataPayload(String data) implements CustomPacketPayload {
|
||||
@Override
|
||||
public Type<? extends CustomPacketPayload> type() {
|
||||
return TestModNet.BIG_DATA_PAYLOAD;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user