Skip to content
3 changes: 3 additions & 0 deletions src/main/java/net/orcinus/galosphere/Galosphere.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import net.orcinus.galosphere.init.GMemoryModuleTypes;
import net.orcinus.galosphere.init.GMenuTypes;
import net.orcinus.galosphere.init.GMobEffects;
import net.orcinus.galosphere.init.GNetwork;
import net.orcinus.galosphere.init.GParticleTypes;
import net.orcinus.galosphere.init.GPlacedFeatures;
import net.orcinus.galosphere.init.GPotions;
Expand Down Expand Up @@ -69,6 +70,7 @@ public void onInitialize() {
GRecipeSerializers.init();
GStructureProcessorTypes.init();
GVanillaIntegration.init();
GNetwork.init();

SpawnPlacements.register(GEntityTypes.SPARKLE, SpawnPlacementTypes.ON_GROUND, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Sparkle::checkSparkleSpawnRules);
SpawnPlacements.register(GEntityTypes.SPECTRE, SpawnPlacementTypes.NO_RESTRICTIONS, Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, Spectre::checkSpectreSpawnRules);
Expand All @@ -82,3 +84,4 @@ public static ResourceLocation id(String path) {
}

}

4 changes: 2 additions & 2 deletions src/main/java/net/orcinus/galosphere/GalosphereClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ public void onInitializeClient() {
EntityModelLayerRegistry.registerModelLayer(GModelLayers.PRESERVED, PreservedModel::createBodyLayer);

GEvents.clientInit();
GNetwork.init();
GNetwork.initClient();

ItemProperties.register(Items.CROSSBOW, Galosphere.id("glow_flare"), (stack, world, entity, i) -> {
ChargedProjectiles chargedProjectiles = stack.get(DataComponents.CHARGED_PROJECTILES);
Expand Down Expand Up @@ -185,4 +185,4 @@ public float unclampedCall(ItemStack itemStack, @Nullable ClientLevel clientLeve
ItemProperties.register(GItems.SALTBOUND_TABLET, Galosphere.id("using"), (stack, world, entity, i) -> entity != null && entity.getUseItem().getItem() instanceof SaltboundTabletItem ? 1 : 0);
ItemProperties.register(GItems.SALTBOUND_TABLET, Galosphere.id("cooldown"), (stack, world, entity, i) -> entity instanceof Player player && player.getCooldowns().isOnCooldown(GItems.SALTBOUND_TABLET) ? 1 : 0);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import net.orcinus.galosphere.blocks.GlowInkClumpsBlock;
import net.orcinus.galosphere.init.GBlockEntityTypes;
import net.orcinus.galosphere.init.GBlocks;
import net.orcinus.galosphere.network.SendParticlesPacket;
import net.orcinus.galosphere.network.ServerPacketTypes;

public class GlowInkClumpsBlockEntity extends BlockEntity {
private static int delay = 0;
Expand Down Expand Up @@ -57,7 +57,7 @@ private static void generateGlowInk(Level world, BlockPos pos, BlockState origin
if (delay == 0) {
if (!world.isClientSide()) {
for (ServerPlayer serverPlayer : PlayerLookup.tracking((ServerLevel) world, offset)) {
ServerPlayNetworking.send(serverPlayer, new SendParticlesPacket(offset));
ServerPlayNetworking.send(serverPlayer, new ServerPacketTypes.ServerSendParticlesPacket(offset));
}
}
int age = 0;
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/net/orcinus/galosphere/entities/Spectre.java
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
import net.orcinus.galosphere.init.GSensorTypes;
import net.orcinus.galosphere.init.GSoundEvents;
import net.orcinus.galosphere.items.components.SpectreBound;
import net.orcinus.galosphere.network.SendPerspectivePacket;
import net.orcinus.galosphere.network.ServerPacketTypes;
import org.jetbrains.annotations.Nullable;

import java.util.Optional;
Expand Down Expand Up @@ -378,7 +378,7 @@ public void setCamera(Player player) {
if (!this.level().isClientSide()) {
((SpectreBoundSpyglass)player).setUsingSpectreBoundedSpyglass(true);
this.setManipulatorUUID(player.getUUID());
ServerPlayNetworking.send((ServerPlayer) player, new SendPerspectivePacket(player.getUUID(), this.getId()));
ServerPlayNetworking.send((ServerPlayer) player, new ServerPacketTypes.ServerSendPerspectivePacket(player.getUUID(), this.getId()));
player.playNotifySound(GSoundEvents.SPECTRE_MANIPULATE_BEGIN, getSoundSource(), 1, 1);
}
}
Expand All @@ -397,4 +397,4 @@ public boolean fromBottle() {
public void setFromBottle(boolean fromBottle) {
this.entityData.set(FROM_BOTTLE, fromBottle);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import net.orcinus.galosphere.init.GItems;
import net.orcinus.galosphere.init.GSoundEvents;
import net.orcinus.galosphere.mixin.access.FireworkRocketEntityAccessor;
import net.orcinus.galosphere.network.SendPerspectivePacket;
import net.orcinus.galosphere.network.ServerPacketTypes;
import org.jetbrains.annotations.Nullable;

public class SpectreFlare extends ThrowableLaunchedProjectile {
Expand Down Expand Up @@ -75,7 +75,7 @@ private void spawnSpectatorVision(Vec3 vec3) {
serverPlayer.playNotifySound(GSoundEvents.SPECTRE_MANIPULATE_BEGIN, getSoundSource(), 1, 1);
world.addFreshEntity(spectatorVision);
((SpectreBoundSpyglass)serverPlayer).setUsingSpectreBoundedSpyglass(true);
ServerPlayNetworking.send(serverPlayer, new SendPerspectivePacket(serverPlayer.getUUID(), spectatorVision.getId()));
ServerPlayNetworking.send(serverPlayer, new ServerPacketTypes.ServerSendPerspectivePacket(serverPlayer.getUUID(), spectatorVision.getId()));
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/net/orcinus/galosphere/init/GEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
import net.orcinus.galosphere.api.SpectreBoundSpyglass;
import net.orcinus.galosphere.blocks.LumiereComposterBlock;
import net.orcinus.galosphere.config.GalosphereConfig;
import net.orcinus.galosphere.network.BarometerPacket;
import net.orcinus.galosphere.network.ServerPacketTypes;
import net.orcinus.galosphere.util.BannerRendererUtil;
import net.orcinus.galosphere.util.PreservedShulkerBox;

Expand Down Expand Up @@ -73,7 +73,7 @@ private static void registerServerTickEvents() {
level.getPlayers((player) -> player.level() != null).forEach((player) -> {
ServerLevelData levelData = (ServerLevelData) level.getLevelData();
int rainTime = levelData.getClearWeatherTime() > 0 ? levelData.getClearWeatherTime() : levelData.getRainTime();
ServerPlayNetworking.send(player, new BarometerPacket(rainTime));
ServerPlayNetworking.send(player, new ServerPacketTypes.ServerBarometerPacket(rainTime));
});
});
}
Expand Down
28 changes: 11 additions & 17 deletions src/main/java/net/orcinus/galosphere/init/GNetwork.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,22 @@

import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
import net.orcinus.galosphere.network.BarometerPacket;
import net.orcinus.galosphere.network.PlayCooldownSoundPacket;
import net.orcinus.galosphere.network.SendParticlesPacket;
import net.orcinus.galosphere.network.SendPerspectivePacket;
import net.orcinus.galosphere.network.ServerPacketTypes;

public class GNetwork {

@Environment(EnvType.CLIENT)
public static void init() {
PayloadTypeRegistry.playS2C().register(SendParticlesPacket.TYPE, SendParticlesPacket.STREAM_CODEC);
ClientPlayNetworking.registerGlobalReceiver(SendParticlesPacket.TYPE, SendParticlesPacket::receive);

PayloadTypeRegistry.playS2C().register(SendPerspectivePacket.TYPE, SendPerspectivePacket.STREAM_CODEC);
ClientPlayNetworking.registerGlobalReceiver(SendPerspectivePacket.TYPE, SendPerspectivePacket::receive);

PayloadTypeRegistry.playS2C().register(BarometerPacket.TYPE, BarometerPacket.STREAM_CODEC);
ClientPlayNetworking.registerGlobalReceiver(BarometerPacket.TYPE, BarometerPacket::receive);
// Register server-safe packet types
ServerPacketTypes.register();
}

PayloadTypeRegistry.playS2C().register(PlayCooldownSoundPacket.TYPE, PlayCooldownSoundPacket.STREAM_CODEC);
ClientPlayNetworking.registerGlobalReceiver(PlayCooldownSoundPacket.TYPE, PlayCooldownSoundPacket::receive);
@Environment(EnvType.CLIENT)
public static void initClient() {
// Register client-side packet handlers
net.orcinus.galosphere.network.SendParticlesPacket.register();
net.orcinus.galosphere.network.SendPerspectivePacket.register();
net.orcinus.galosphere.network.BarometerPacket.register();
net.orcinus.galosphere.network.PlayCooldownSoundPacket.register();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ServerItemCooldowns;
import net.orcinus.galosphere.init.GItems;
import net.orcinus.galosphere.network.PlayCooldownSoundPacket;
import net.orcinus.galosphere.network.ServerPacketTypes;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
Expand All @@ -23,7 +23,7 @@ public class ServerItemCooldownsMixin {
@Inject(at = @At("TAIL"), method = "onCooldownEnded")
private void G$removeCooldown(Item item, CallbackInfo ci) {
if (item.equals(GItems.SALTBOUND_TABLET)) {
ServerPlayNetworking.send(this.player, new PlayCooldownSoundPacket());
ServerPlayNetworking.send(this.player, new ServerPacketTypes.ServerPlayCooldownSoundPacket());
}
}

Expand Down
25 changes: 20 additions & 5 deletions src/main/java/net/orcinus/galosphere/network/BarometerPacket.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,17 @@

public record BarometerPacket(int time) implements CustomPacketPayload {
public static final Type<BarometerPacket> TYPE = new Type<>(Galosphere.id("barometer_info"));
public static final StreamCodec<FriendlyByteBuf, BarometerPacket> STREAM_CODEC = CustomPacketPayload.codec(BarometerPacket::write, BarometerPacket::new);
public static final StreamCodec<FriendlyByteBuf, BarometerPacket> STREAM_CODEC = new StreamCodec<FriendlyByteBuf, BarometerPacket>() {
@Override
public BarometerPacket decode(FriendlyByteBuf buf) {
return new BarometerPacket(buf.readInt());
}

private BarometerPacket(FriendlyByteBuf buf) {
this(buf.readInt());
}
@Override
public void encode(FriendlyByteBuf buf, BarometerPacket packet) {
buf.writeInt(packet.time());
}
};

public void write(FriendlyByteBuf friendlyByteBuf) {
friendlyByteBuf.writeInt(this.time);
Expand All @@ -29,4 +35,13 @@ public void receive(ClientPlayNetworking.Context context) {
public Type<? extends CustomPacketPayload> type() {
return TYPE;
}
}

public static void register() {
// Register receiver for the server packet type
ClientPlayNetworking.registerGlobalReceiver(net.orcinus.galosphere.network.ServerPacketTypes.BAROMETER_TYPE, (packet, context) -> {
// Convert server packet to client packet and handle
BarometerPacket clientPacket = new BarometerPacket(packet.time());
clientPacket.receive(context);
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,17 @@

public record PlayCooldownSoundPacket() implements CustomPacketPayload {
public static final Type<PlayCooldownSoundPacket> TYPE = new Type<>(Galosphere.id("play_cooldown_sound"));
public static final StreamCodec<FriendlyByteBuf, PlayCooldownSoundPacket> STREAM_CODEC = CustomPacketPayload.codec(PlayCooldownSoundPacket::write, PlayCooldownSoundPacket::new);
public static final StreamCodec<FriendlyByteBuf, PlayCooldownSoundPacket> STREAM_CODEC = new StreamCodec<FriendlyByteBuf, PlayCooldownSoundPacket>() {
@Override
public PlayCooldownSoundPacket decode(FriendlyByteBuf buf) {
return new PlayCooldownSoundPacket();
}

private PlayCooldownSoundPacket(FriendlyByteBuf buf) {
this();
}
@Override
public void encode(FriendlyByteBuf buf, PlayCooldownSoundPacket packet) {
// No data to encode for this packet
}
};

public void write(FriendlyByteBuf friendlyByteBuf) {
}
Expand All @@ -31,4 +37,13 @@ public void receive(ClientPlayNetworking.Context context) {
public Type<? extends CustomPacketPayload> type() {
return TYPE;
}

public static void register() {
// Register receiver for the server packet type (packet type already registered by ServerPacketTypes)
ClientPlayNetworking.registerGlobalReceiver(net.orcinus.galosphere.network.ServerPacketTypes.PLAY_COOLDOWN_SOUND_TYPE, (packet, context) -> {
// Convert server packet to client packet and handle
PlayCooldownSoundPacket clientPacket = new PlayCooldownSoundPacket();
clientPacket.receive(context);
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,17 @@

public record SendParticlesPacket(BlockPos blockPos) implements CustomPacketPayload {
public static final Type<SendParticlesPacket> TYPE = new Type<>(Galosphere.id("send_particles"));
public static final StreamCodec<FriendlyByteBuf, SendParticlesPacket> STREAM_CODEC = CustomPacketPayload.codec(SendParticlesPacket::write, SendParticlesPacket::new);
public static final StreamCodec<FriendlyByteBuf, SendParticlesPacket> STREAM_CODEC = new StreamCodec<FriendlyByteBuf, SendParticlesPacket>() {
@Override
public SendParticlesPacket decode(FriendlyByteBuf buf) {
return new SendParticlesPacket(buf.readBlockPos());
}

private SendParticlesPacket(FriendlyByteBuf friendlyByteBuf) {
this(friendlyByteBuf.readBlockPos());
}
@Override
public void encode(FriendlyByteBuf buf, SendParticlesPacket packet) {
buf.writeBlockPos(packet.blockPos());
}
};

public void write(FriendlyByteBuf friendlyByteBuf) {
friendlyByteBuf.writeBlockPos(this.blockPos);
Expand Down Expand Up @@ -50,4 +56,13 @@ public void receive(ClientPlayNetworking.Context context) {
public Type<? extends CustomPacketPayload> type() {
return TYPE;
}
}

public static void register() {
// Register receiver for the server packet type (packet type already registered by ServerPacketTypes)
ClientPlayNetworking.registerGlobalReceiver(net.orcinus.galosphere.network.ServerPacketTypes.SEND_PARTICLES_TYPE, (packet, context) -> {
// Convert server packet to client packet and handle
SendParticlesPacket clientPacket = new SendParticlesPacket(packet.blockPos());
clientPacket.receive(context);
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,18 @@

public record SendPerspectivePacket(UUID uuid, int id) implements CustomPacketPayload {
public static final Type<SendPerspectivePacket> TYPE = new Type<>(Galosphere.id("send_perspective"));
public static final StreamCodec<FriendlyByteBuf, SendPerspectivePacket> STREAM_CODEC = CustomPacketPayload.codec(SendPerspectivePacket::write, SendPerspectivePacket::new);
public static final StreamCodec<FriendlyByteBuf, SendPerspectivePacket> STREAM_CODEC = new StreamCodec<FriendlyByteBuf, SendPerspectivePacket>() {
@Override
public SendPerspectivePacket decode(FriendlyByteBuf buf) {
return new SendPerspectivePacket(buf.readUUID(), buf.readInt());
}

private SendPerspectivePacket(FriendlyByteBuf buf) {
this(buf.readUUID(), buf.readInt());
}
@Override
public void encode(FriendlyByteBuf buf, SendPerspectivePacket packet) {
buf.writeUUID(packet.uuid());
buf.writeInt(packet.id());
}
};

public void write(FriendlyByteBuf friendlyByteBuf) {
friendlyByteBuf.writeUUID(this.uuid);
Expand All @@ -44,4 +51,13 @@ public void receive(ClientPlayNetworking.Context context) {
public Type<? extends CustomPacketPayload> type() {
return TYPE;
}

public static void register() {
// Register receiver for the server packet type (packet type already registered by ServerPacketTypes)
ClientPlayNetworking.registerGlobalReceiver(net.orcinus.galosphere.network.ServerPacketTypes.SEND_PERSPECTIVE_TYPE, (packet, context) -> {
// Convert server packet to client packet and handle
SendPerspectivePacket clientPacket = new SendPerspectivePacket(packet.uuid(), packet.id());
clientPacket.receive(context);
});
}
}
Loading