Преглед изворни кода

More network changes, now the data is synced

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

+ 9 - 4
src/client/java/xyz/tbvns/rogue_block/client/Gui/UpgradeScreen.java

@@ -14,6 +14,7 @@ import net.minecraft.text.Text;
 import org.jetbrains.annotations.NotNull;
 import xyz.tbvns.rogue_block.Upgrades.Upgrade;
 import xyz.tbvns.rogue_block.Upgrades.UpgradesManager;
+import xyz.tbvns.rogue_block.client.Networking.NetworkManager;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -57,14 +58,18 @@ public class UpgradeScreen extends BaseOwoScreen<FlowLayout> {
 
     @Override
     public void render(DrawContext context, int mouseX, int mouseY, float delta) {
-        if (toolTip != null && !toolTip.equals(Text.empty())) {
-            setTooltip(toolTip);
-        }
-
+        context.drawText(textRenderer, Text.of("Points: " + NetworkManager.playerData.getPoints()), 10, 10, new Color(255, 255, 255, 255).argb(), true);
         for (UpgradeComponent component : components) {
             component.drawLine(context);
         }
         super.render(context, mouseX, mouseY, delta);
+        for (UpgradeComponent component : components) {
+            component.drawLine(context);
+        }
+
+        if (toolTip != null && !toolTip.equals(Text.empty())) {
+            setTooltip(toolTip);
+        }
     }
 
     @Override

+ 18 - 0
src/client/java/xyz/tbvns/rogue_block/client/Networking/NetworkManager.java

@@ -0,0 +1,18 @@
+package xyz.tbvns.rogue_block.client.Networking;
+
+import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
+import xyz.tbvns.rogue_block.Managers.registeredSavable.PlayerData;
+import xyz.tbvns.rogue_block.Packets.PacketManager;
+import xyz.tbvns.rogue_block.Packets.registeredPackets.BytesPacket;
+
+public class NetworkManager {
+    public static PlayerData playerData;
+    public static void setup() {
+        ClientPlayNetworking.registerGlobalReceiver(BytesPacket.ID, (payload, context) -> {
+            context.client().execute(() -> {
+                BytesPacket packet = (BytesPacket) payload;
+                playerData = PacketManager.readPlayerData(packet.getBytes());
+            });
+        });
+    }
+}

+ 2 - 7
src/client/java/xyz/tbvns/rogue_block/client/Rogue_blockClient.java

@@ -16,6 +16,7 @@ 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 xyz.tbvns.rogue_block.client.Networking.NetworkManager;
 
 import java.util.Arrays;
 
@@ -28,12 +29,6 @@ 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()));
-            });
-        });
+        NetworkManager.setup();
     }
 }

+ 4 - 2
src/main/java/xyz/tbvns/rogue_block/Managers/DataManager.java

@@ -29,10 +29,11 @@ public class DataManager extends PersistentState {
     static Kryo kryo = new Kryo();
     public static void setup() {
         kryo.setRegistrationRequired(false);
+        kryo.setReferences(true);
     }
 
     public static PlayerData readPlayerData(byte[] buffer) {
-        ByteBuffer byteBuffer = ByteBuffer.wrap(buffer, 0, 1000);
+        ByteBuffer byteBuffer = ByteBuffer.wrap(buffer, 0, 100000);
         buffer = byteBuffer.array();
         Input input = new Input(buffer);
         PlayerData playerData = kryo.readObject(input, PlayerData.class);
@@ -41,7 +42,7 @@ public class DataManager extends PersistentState {
     }
 
     public static ByteBuffer write(PlayerData object) {
-        Output output = new Output(1000);
+        Output output = new Output(100000);
         kryo.writeObject(output, object);
         ByteBuffer buffer = ByteBuffer.wrap(output.getBuffer());
         output.close();
@@ -68,6 +69,7 @@ public class DataManager extends PersistentState {
             if (playerData == null) {
                 playerData = new PlayerData();
             }
+
             UUID uuid = UUID.fromString(key);
             dataManager.players.put(uuid, playerData);
         });

+ 3 - 0
src/main/java/xyz/tbvns/rogue_block/Managers/Savable.java

@@ -1,4 +1,7 @@
 package xyz.tbvns.rogue_block.Managers;
 
+import net.minecraft.server.network.ServerPlayerEntity;
+
 public interface Savable {
+    default void syncWithClient(ServerPlayerEntity entity) {}
 }

+ 12 - 7
src/main/java/xyz/tbvns/rogue_block/Managers/registeredSavable/PlayerData.java

@@ -1,26 +1,26 @@
 package xyz.tbvns.rogue_block.Managers.registeredSavable;
 
+import net.minecraft.server.network.ServerPlayerEntity;
 import xyz.tbvns.rogue_block.Managers.Savable;
+import xyz.tbvns.rogue_block.Packets.PacketManager;
 import xyz.tbvns.rogue_block.Upgrades.Upgrade;
 
 import java.util.ArrayList;
 import java.util.List;
 
 public class PlayerData implements Savable {
-
     private int points = 0;
-
     private List<Class<? extends Upgrade>> upgrades = new ArrayList<>();
+    public void setPoints(int points) {
+        this.points = points;
+    }
 
-    public int addPoints(int amount) {
+    public int addPoints(ServerPlayerEntity entity, int amount) {
         points += amount;
+        syncWithClient(entity);
         return points;
     }
 
-    public void setPoints(int points) {
-        this.points = points;
-    }
-
     public int getPoints() {
         return points;
     }
@@ -29,4 +29,9 @@ public class PlayerData implements Savable {
     public List<Class<? extends Upgrade>> getUpgrades() {
         return upgrades;
     }
+
+    @Override
+    public void syncWithClient(ServerPlayerEntity entity) {
+        PacketManager.sendUpgradePacket(entity, this);
+    }
 }

+ 3 - 2
src/main/java/xyz/tbvns/rogue_block/Packets/PacketManager.java

@@ -14,10 +14,11 @@ public class PacketManager {
     static Kryo kryo = new Kryo();
     public static void setup() {
         kryo.setRegistrationRequired(false);
+        kryo.setReferences(true);
     }
 
     public static PlayerData readPlayerData(byte[] buffer) {
-        ByteBuffer byteBuffer = ByteBuffer.wrap(buffer, 0, 1000);
+        ByteBuffer byteBuffer = ByteBuffer.wrap(buffer, 0, 100000);
         buffer = byteBuffer.array();
         Input input = new Input(buffer);
         PlayerData packet = kryo.readObject(input, PlayerData.class);
@@ -26,7 +27,7 @@ public class PacketManager {
     }
 
     public static ByteBuffer writeUpgradePacket(PlayerData object) {
-        Output output = new Output(1000);
+        Output output = new Output(100000);
         kryo.writeObject(output, object);
         ByteBuffer buffer = ByteBuffer.wrap(output.getBuffer());
         output.close();

+ 1 - 1
src/main/java/xyz/tbvns/rogue_block/mixin/MixinAchievementReward.java

@@ -16,7 +16,7 @@ public class MixinAchievementReward {
         AdvancementRewards advancementRewards = ((AdvancementRewards) ((Object) this));
         int point = advancementRewards.experience() / 10;
         if (point == 0) return;
-        DataManager.getPlayerState(player).addPoints(point);
+        DataManager.getPlayerState(player).addPoints(player, point);
         player.sendMessage(Text.of("§aReceived §b§l" + point + "§r§a points for completing an achievement.§r§7(Total: " + DataManager.getPlayerState(player).getPoints() + ")"));
     }
 }

+ 2 - 2
src/main/java/xyz/tbvns/rogue_block/mixin/MixinPlayerDeath.java

@@ -22,9 +22,9 @@ public abstract class MixinPlayerDeath {
         ServerPlayerEntity entity = ((ServerPlayerEntity) (Object) this);
         entity.setHealth(20);
 
-        WorldManager.teleportToLobbyWorld(((ServerPlayerEntity) (Object) this));
+        WorldManager.teleportToLobbyWorld(entity);
 
-        System.out.println(DataManager.getPlayerState(((ServerPlayerEntity) (Object) this)).addPoints(10));
+        System.out.println(DataManager.getPlayerState(entity).addPoints(entity, 10));
 
         ci.cancel();
     }