[ci skip] Port to NeoForge 24w14a

Signed-off-by: shedaniel <daniel@shedaniel.me>
This commit is contained in:
shedaniel
2024-04-09 18:16:18 +09:00
parent d19cb9a8f1
commit 4e15fa3bbb
88 changed files with 5191 additions and 569 deletions

View File

@@ -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);
}

View File

@@ -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);
}
});*/
});
}
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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;
}
}
}