Skip to content

Commit

Permalink
优化和调整网络包的内容。
Browse files Browse the repository at this point in the history
  • Loading branch information
Glyceryl6 committed Aug 21, 2024
1 parent 5a28bca commit 443b415
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 80 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.hiedacamellia.whispergrove.core.event;

import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.network.event.RegisterPayloadHandlersEvent;
import net.neoforged.neoforge.network.registration.PayloadRegistrar;
import org.hiedacamellia.whispergrove.WhisperGrove;
import org.hiedacamellia.whispergrove.core.network.PlayerVisceraS2CPacket;

@EventBusSubscriber(modid = WhisperGrove.MODID, bus = EventBusSubscriber.Bus.MOD)
public class WGModBusEvent {

@SubscribeEvent
public static void register(final RegisterPayloadHandlersEvent event) {
final PayloadRegistrar registrar = event.registrar("1");
registrar.playToClient(PlayerVisceraS2CPacket.TYPE,
PlayerVisceraS2CPacket.STREAM_CODEC,
PlayerVisceraS2CPacket::handleData);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package org.hiedacamellia.whispergrove.core.network;

import io.netty.buffer.ByteBuf;
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.neoforged.neoforge.attachment.AttachmentType;
import net.neoforged.neoforge.network.handling.IPayloadContext;
import net.neoforged.neoforge.registries.NeoForgeRegistries;
import org.hiedacamellia.whispergrove.WhisperGrove;
import org.hiedacamellia.whispergrove.content.common.viscera.Viscera;

public record PlayerVisceraS2CPacket(ResourceLocation name, Double yin, Double yang) implements CustomPacketPayload {

public static final Type<PlayerVisceraS2CPacket> TYPE = new Type<>(WhisperGrove.prefix("network.viscera"));
public static final StreamCodec<ByteBuf, PlayerVisceraS2CPacket> STREAM_CODEC = StreamCodec.composite(
ResourceLocation.STREAM_CODEC, PlayerVisceraS2CPacket::name,
ByteBufCodecs.DOUBLE, PlayerVisceraS2CPacket::yin,
ByteBufCodecs.DOUBLE, PlayerVisceraS2CPacket::yang,
PlayerVisceraS2CPacket::new);

@Override
public Type<? extends CustomPacketPayload> type() {
return TYPE;
}

@SuppressWarnings("unchecked")
public static void handleData(PlayerVisceraS2CPacket packet, IPayloadContext context) {
context.enqueueWork(() -> {
AttachmentType<Viscera> type = (AttachmentType<Viscera>) NeoForgeRegistries.ATTACHMENT_TYPES.get(packet.name);
if (type != null) {
context.player().setData(type, new Viscera(packet.name, packet.yin, packet.yang));
}
});
}

}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package org.hiedacamellia.whispergrove.registers;

import net.neoforged.neoforge.attachment.AttachmentType;
import net.neoforged.neoforge.registries.DeferredHolder;
import net.neoforged.neoforge.registries.DeferredRegister;
import net.neoforged.neoforge.registries.NeoForgeRegistries;
import org.hiedacamellia.whispergrove.WhisperGrove;
import org.hiedacamellia.whispergrove.content.common.viscera.Viscera;
import org.hiedacamellia.whispergrove.core.codec.WGCodec;
import org.hiedacamellia.whispergrove.core.codec.record.*;

Expand All @@ -13,14 +15,7 @@ public class WGAttachment {
// Create the DeferredRegister for attachment types
public static final DeferredRegister<AttachmentType<?>> ATTACHMENTS = DeferredRegister.create(NeoForgeRegistries.ATTACHMENT_TYPES, WhisperGrove.MODID);

// // Serialization via INBTSerializable
// private static final Supplier<AttachmentType<ItemStackHandler>> HANDLER = ATTACHMENTS.register(
// "handler", () -> AttachmentType.serializable(() -> new ItemStackHandler(1)).build()
// );
// // Serialization via codec
// private static final Supplier<AttachmentType<Integer>> MANA = ATTACHMENTS.register(
// "mana", () -> AttachmentType.builder(() -> 0).serialize(Codec.INT).build()
// );
public static final DeferredHolder<AttachmentType<?>, AttachmentType<Viscera>> HEART_ = registerViscera("heart");

//Heart
public static final Supplier<AttachmentType<Heart>> HEART = ATTACHMENTS.register(
Expand Down Expand Up @@ -54,4 +49,10 @@ public class WGAttachment {
public static final Supplier<AttachmentType<NameMap>> NAMEMAP = ATTACHMENTS.register(
"namemap", () -> AttachmentType.builder(() -> new NameMap(null)).serialize(WGCodec.NAMEMAP_CODEC).build()
);
}

private static DeferredHolder<AttachmentType<?>, AttachmentType<Viscera>> registerViscera(String name) {
Viscera viscera = new Viscera(WhisperGrove.prefix(name), 100.0D, 100.0D);
return ATTACHMENTS.register(name, () -> AttachmentType.builder(() -> viscera).serialize(Viscera.CODEC).build());
}

}

0 comments on commit 443b415

Please sign in to comment.