Parcourir la source

再次启用命名牌发包相关的代码

LTCatt il y a 6 ans
Parent
commit
e9fb5d44b6

+ 5 - 3
src/main/java/com/hexdragon/enchrebirth/item/name_tag/NameTagScreen.java

@@ -1,6 +1,8 @@
 package com.hexdragon.enchrebirth.item.name_tag;
 
 import com.hexdragon.enchrebirth.Main;
+import com.hexdragon.util.network.NameTagPacket;
+import com.hexdragon.util.network.Networking;
 import com.mojang.blaze3d.matrix.MatrixStack;
 import net.minecraft.client.gui.screen.Screen;
 import net.minecraft.client.gui.widget.TextFieldWidget;
@@ -69,9 +71,9 @@ public class NameTagScreen extends Screen {
 
     // 在关闭 GUI 时根据文本框内容更新命名牌的 DisplayName
     public void onClose() {
-        minecraft.player.getHeldItem(hand).setDisplayName(new StringTextComponent(textField.getText()));
-        // 之前以为要用网络包发包给服务端,看上去是我想多了,不过还是留在这里,之后写需要发包的东西的时候还能用
-        // Networking.INSTANCE.sendToServer(new NameTagPacket(textField.getText(), (byte) (hand == Hand.MAIN_HAND ? 0 : 1)));
+        // 必须通过网络发包的方式提交更新,否则只是客户端 “认为” 名字变了,把物品换个格子就又改回去了
+        // minecraft.player.getHeldItem(hand).setDisplayName(new StringTextComponent(textField.getText()));
+        Networking.INSTANCE.sendToServer(new NameTagPacket(textField.getText(), (byte) (hand == Hand.MAIN_HAND ? 0 : 1)));
     }
 
     // 让游戏在打开 GUI 时不会暂停

+ 6 - 5
src/main/java/com/hexdragon/enchrebirth/registry/RegClient.java

@@ -4,6 +4,7 @@ import com.hexdragon.enchrebirth.Main;
 import com.hexdragon.enchrebirth.block.anvil.AnvilRenderer;
 import com.hexdragon.enchrebirth.block.anvil.AnvilScreenRe;
 import com.hexdragon.enchrebirth.block.grindstone.GrindstoneScreenRe;
+import com.hexdragon.util.network.Networking;
 import net.minecraft.client.gui.ScreenManager;
 import net.minecraftforge.api.distmarker.Dist;
 import net.minecraftforge.api.distmarker.OnlyIn;
@@ -11,6 +12,7 @@ import net.minecraftforge.eventbus.api.SubscribeEvent;
 import net.minecraftforge.fml.client.registry.ClientRegistry;
 import net.minecraftforge.fml.common.Mod;
 import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
+import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
 
 @Mod.EventBusSubscriber(modid = Main.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) @OnlyIn(Dist.CLIENT)
 public class RegClient {
@@ -31,10 +33,9 @@ public class RegClient {
         ClientRegistry.bindTileEntityRenderer(RegMain.tileEntityDamagedNetheriteAnvil.get(), (AnvilRenderer::new));
     }
 
-
-    //    @SubscribeEvent public static void onCommonSetup(FMLCommonSetupEvent event) {
-    //        // 注册数据包
-    //        Networking.registerMessage();
-    //    }
+    @SubscribeEvent public static void onCommonSetup(FMLCommonSetupEvent event) {
+        // 注册数据包
+        Networking.registerMessage();
+    }
 
 }

+ 0 - 1
src/main/java/com/hexdragon/util/network/NameTagPacket.java

@@ -11,7 +11,6 @@ import net.minecraftforge.fml.network.NetworkEvent;
 
 import java.util.function.Supplier;
 
-// 废弃的代码,如果之后要写发包的话可以拿来用
 public class NameTagPacket {
     private byte hand;
     private String message;

+ 1 - 1
src/main/java/com/hexdragon/util/network/Networking.java

@@ -4,7 +4,7 @@ import net.minecraft.util.ResourceLocation;
 import net.minecraftforge.fml.network.NetworkRegistry;
 import net.minecraftforge.fml.network.simple.SimpleChannel;
 
-// 废弃的代码,如果之后要写发包的话可以拿来用
+// TODO : 重新整理一下网络相关的代码
 public class Networking {
     public static SimpleChannel INSTANCE;
     private static int ID = 0;