____tbvns____ пре 5 месеци
родитељ
комит
f82042c567

+ 11 - 0
src/client/java/xyz/tbvns/rogue_block/client/Rogue_blockClient.java

@@ -3,6 +3,7 @@ package xyz.tbvns.rogue_block.client;
 import net.fabricmc.api.ClientModInitializer;
 import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientEntityEvents;
 import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
+import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
 import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents;
 import net.fabricmc.fabric.api.event.lifecycle.v1.ServerWorldEvents;
 import net.kyori.adventure.audience.Audience;
@@ -13,8 +14,11 @@ import net.minecraft.client.gui.screen.world.CreateWorldScreen;
 import net.minecraft.world.gen.chunk.FlatChunkGenerator;
 import net.minecraft.world.gen.chunk.FlatChunkGeneratorConfig;
 import xyz.tbvns.rogue_block.Packets.PacketManager;
+import xyz.tbvns.rogue_block.Packets.registeredPackets.BytesPacket;
 import xyz.tbvns.rogue_block.client.Events.ClientTickEvent;
 
+import java.util.Arrays;
+
 public class Rogue_blockClient implements ClientModInitializer {
 
     public static final FabricClientAudiences audiences =  FabricClientAudiences.builder().build();
@@ -24,5 +28,12 @@ public class Rogue_blockClient implements ClientModInitializer {
         PacketManager.setup();
 
         ClientTickEvents.START_WORLD_TICK.register(new ClientTickEvent());
+
+        ClientPlayNetworking.registerGlobalReceiver(BytesPacket.ID, (payload, context) -> {
+            context.client().execute(() -> {
+                BytesPacket packet = (BytesPacket) payload;
+                System.out.println(Arrays.toString(packet.bytes()));
+            });
+        });
     }
 }

+ 4 - 0
src/main/java/xyz/tbvns/rogue_block/Events/PlayerJoinEvents.java

@@ -4,7 +4,9 @@ import net.fabricmc.fabric.api.networking.v1.PacketSender;
 import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
 import net.minecraft.server.MinecraftServer;
 import net.minecraft.server.network.ServerPlayNetworkHandler;
+import xyz.tbvns.rogue_block.Managers.DataManager;
 import xyz.tbvns.rogue_block.Managers.WorldManager;
+import xyz.tbvns.rogue_block.Packets.PacketManager;
 import xyz.tbvns.rogue_block.Utils;
 
 public class PlayerJoinEvents implements ServerPlayConnectionEvents.Join {
@@ -13,5 +15,7 @@ public class PlayerJoinEvents implements ServerPlayConnectionEvents.Join {
 
         //Delay the tp to prevent issues
         Utils.delay(1000, () -> WorldManager.teleportToLobbyWorld(serverPlayNetworkHandler.player));
+
+        PacketManager.sendUpgradePacket(serverPlayNetworkHandler.player, DataManager.getPlayerState(serverPlayNetworkHandler.player));
     }
 }

+ 0 - 11
src/main/java/xyz/tbvns/rogue_block/Managers/DataManager.java

@@ -29,22 +29,11 @@ public class DataManager extends PersistentState {
     static Kryo kryo = new Kryo();
     public static void setup() {
         kryo.setRegistrationRequired(false);
-
-        kryo.register(ArrayList.class);
-        kryo.register(Savable.class);
-
-        Reflections reflections = new Reflections("xyz.tbvns.rogue_block.Managers.registeredSavable");
-        Set<Class<? extends Savable>> passiveUpgrade = reflections.getSubTypesOf(Savable.class);
-        for (Class<? extends Savable> element : passiveUpgrade) {
-            kryo.register(element);
-        }
     }
 
     public static PlayerData readPlayerData(byte[] buffer) {
-        System.out.println(Arrays.toString(buffer));
         ByteBuffer byteBuffer = ByteBuffer.wrap(buffer, 0, 1000);
         buffer = byteBuffer.array();
-        System.out.println(Arrays.toString(buffer));
         Input input = new Input(buffer);
         PlayerData playerData = kryo.readObject(input, PlayerData.class);
         input.close();

+ 21 - 16
src/main/java/xyz/tbvns/rogue_block/Packets/PacketManager.java

@@ -1,37 +1,42 @@
 package xyz.tbvns.rogue_block.Packets;
 
 import com.esotericsoftware.kryo.kryo5.Kryo;
-import com.esotericsoftware.kryo.kryo5.io.ByteBufferOutputStream;
 import com.esotericsoftware.kryo.kryo5.io.Input;
 import com.esotericsoftware.kryo.kryo5.io.Output;
-import org.reflections.Reflections;
-import xyz.tbvns.rogue_block.Upgrades.PassiveUpgrade;
+import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
+import net.minecraft.server.network.ServerPlayerEntity;
+import xyz.tbvns.rogue_block.Managers.registeredSavable.PlayerData;
+import xyz.tbvns.rogue_block.Packets.registeredPackets.BytesPacket;
 
 import java.nio.ByteBuffer;
-import java.util.Set;
 
 public class PacketManager {
     static Kryo kryo = new Kryo();
     public static void setup() {
-        Reflections reflections = new Reflections("xyz.tbvns.rogue_block.Packets.registeredPackets");
-        Set<Class<? extends Packet>> passiveUpgrade = reflections.getSubTypesOf(Packet.class);
-        for (Class<? extends Packet> element : passiveUpgrade) {
-            kryo.register(element);
-        }
+        kryo.setRegistrationRequired(false);
     }
 
-    public static Packet read(ByteBuffer buffer) {
-        Input input = new Input(buffer.array());
-        Packet packet = kryo.readObject(input, Packet.class);
+    public static PlayerData readPlayerData(byte[] buffer) {
+        ByteBuffer byteBuffer = ByteBuffer.wrap(buffer, 0, 1000);
+        buffer = byteBuffer.array();
+        Input input = new Input(buffer);
+        PlayerData packet = kryo.readObject(input, PlayerData.class);
         input.close();
         return packet;
     }
 
-    public static ByteBuffer write(Packet packet) {
-        Output output = new Output(new ByteBufferOutputStream());
-        kryo.writeObject(output, packet);
-        ByteBuffer buffer = ((ByteBufferOutputStream) output.getOutputStream()).getByteBuffer();
+    public static ByteBuffer writeUpgradePacket(PlayerData object) {
+        Output output = new Output(1000);
+        kryo.writeObject(output, object);
+        ByteBuffer buffer = ByteBuffer.wrap(output.getBuffer());
         output.close();
         return buffer;
     }
+
+    public static void sendUpgradePacket(ServerPlayerEntity entity, PlayerData data) {
+        BytesPacket packet = new BytesPacket(writeUpgradePacket(data).array());
+        entity.server.execute(() -> {
+            ServerPlayNetworking.send(entity, packet);
+        });
+    }
 }

+ 23 - 0
src/main/java/xyz/tbvns/rogue_block/Packets/registeredPackets/BytesPacket.java

@@ -0,0 +1,23 @@
+package xyz.tbvns.rogue_block.Packets.registeredPackets;
+
+import net.minecraft.network.RegistryByteBuf;
+import net.minecraft.network.codec.PacketCodec;
+import net.minecraft.network.codec.PacketCodecs;
+import net.minecraft.network.packet.CustomPayload;
+import net.minecraft.util.Identifier;
+import xyz.tbvns.rogue_block.Rogue_block;
+
+//TODO: replace that with @Data and @AllArgsConstructor
+public record BytesPacket(byte[] bytes) implements CustomPayload {
+    public static final Id ID = new Id<BytesPacket>(Identifier.of(Rogue_block.MOD_ID, "upgrade_packet"));
+    public static final PacketCodec<RegistryByteBuf, BytesPacket> CODEC = PacketCodec.tuple(PacketCodecs.BYTE_ARRAY, BytesPacket::getBytes, BytesPacket::new);
+
+    public byte[] getBytes() {
+        return bytes;
+    }
+
+    @Override
+    public Id<? extends CustomPayload> getId() {
+        return new Id<BytesPacket>(Identifier.of(Rogue_block.MOD_ID, "upgrade_packet"));
+    }
+}

+ 0 - 22
src/main/java/xyz/tbvns/rogue_block/Packets/registeredPackets/UpgradePacket.java

@@ -1,22 +0,0 @@
-package xyz.tbvns.rogue_block.Packets.registeredPackets;
-
-import xyz.tbvns.rogue_block.Packets.Packet;
-import xyz.tbvns.rogue_block.Upgrades.Upgrade;
-
-import java.util.List;
-//TODO: replace that with @Data and @AllArgsConstructor
-public class UpgradePacket implements Packet {
-    public UpgradePacket(List<Class<? extends Upgrade>> boughtUpgrades) {
-        this.boughtUpgrades = boughtUpgrades;
-    }
-
-    public List<Class<? extends Upgrade>> getBoughtUpgrades() {
-        return boughtUpgrades;
-    }
-
-    public void setBoughtUpgrades(List<Class<? extends Upgrade>> boughtUpgrades) {
-        this.boughtUpgrades = boughtUpgrades;
-    }
-
-    private List<Class<? extends Upgrade>> boughtUpgrades;
-}

+ 4 - 0
src/main/java/xyz/tbvns/rogue_block/Rogue_block.java

@@ -4,12 +4,14 @@ import net.fabricmc.api.ModInitializer;
 import net.fabricmc.fabric.api.entity.event.v1.ServerLivingEntityEvents;
 import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
 import net.fabricmc.fabric.api.event.player.UseBlockCallback;
+import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
 import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
 import xyz.tbvns.rogue_block.Events.PlayerJoinEvents;
 import xyz.tbvns.rogue_block.Events.PlayerStartButtonEvent;
 import xyz.tbvns.rogue_block.Events.ServerStartEvent;
 import xyz.tbvns.rogue_block.Managers.DataManager;
 import xyz.tbvns.rogue_block.Packets.PacketManager;
+import xyz.tbvns.rogue_block.Packets.registeredPackets.BytesPacket;
 import xyz.tbvns.rogue_block.Upgrades.UpgradesManager;
 
 public class Rogue_block implements ModInitializer {
@@ -21,6 +23,8 @@ public class Rogue_block implements ModInitializer {
         UseBlockCallback.EVENT.register(new PlayerStartButtonEvent());
         ServerLifecycleEvents.SERVER_STARTED.register(new ServerStartEvent());
 
+        PayloadTypeRegistry.playS2C().register(BytesPacket.ID, BytesPacket.CODEC);
+
         UpgradesManager.loadUpgrades();
         PacketManager.setup();
         DataManager.setup();