前提
Minecraft JavaEditionでModを作っています。(1.8.9)
Playerの座標を手に入れたのち、UDPで送信しているのですが下部のデータしか受信できません。
Playerを動かしても、値は変わりませんでした。
pythonで受信はしました。
受信データ
b'-3864401'
該当のソースコード
CoordinateEvent.java
java
1import net.minecraft.client.Minecraft; 2import net.minecraft.util.MathHelper; 3import net.minecraftforge.client.event.RenderGameOverlayEvent; 4import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; 5 6import java.io.IOException; 7import java.net.DatagramPacket; 8import java.net.DatagramSocket; 9import java.net.InetSocketAddress; 10 11 12public class CoordinateEvent { 13 private static Minecraft mc; 14 int myPosX; 15 int myPosY; 16 int myPosZ; 17 18 public CoordinateEvent(Minecraft minecraft){ 19 mc = minecraft; 20 } 21 22 private void playerCoords(){ 23 this.myPosX = MathHelper.floor_double(mc.thePlayer.posX); 24 this.myPosY = MathHelper.floor_double(mc.thePlayer.posY); 25 this.myPosZ = MathHelper.floor_double(mc.thePlayer.posZ); 26 } 27 28 @SubscribeEvent 29 public void sendPacketEvent(RenderGameOverlayEvent event) throws IOException { 30 playerCoords(); 31 String x = String.valueOf(this.myPosX); 32 String y = String.valueOf(this.myPosY); 33 String z = String.valueOf(this.myPosZ); 34 StringBuffer buf = new StringBuffer(); 35 buf.append(x); 36 buf.append(y); 37 buf.append(z); 38 String sendData = buf.toString(); 39 byte[] data = sendData.getBytes("UTF-8"); 40 DatagramSocket sock = new DatagramSocket(); 41 DatagramPacket packet = new DatagramPacket(data,data.length,new InetSocketAddress("localhost",12156)); 42 sock.send(packet); 43 sock.close(); 44 } 45}
ExampleMod.java
java
1import net.minecraft.client.Minecraft; 2import net.minecraft.init.Blocks; 3import net.minecraftforge.common.MinecraftForge; 4import net.minecraftforge.fml.common.Mod; 5import net.minecraftforge.fml.common.Mod.EventHandler; 6import net.minecraftforge.fml.common.event.FMLInitializationEvent; 7import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; 8 9@Mod(modid = ExampleMod.MODID, version = ExampleMod.VERSION) 10public class ExampleMod 11{ 12 public static final String MODID = "examplemod"; 13 public static final String VERSION = "1.0"; 14 15 @EventHandler 16 public void init(FMLInitializationEvent event) { 17 // some example code 18 System.out.println("DIRT BLOCK >> "+Blocks.dirt.getUnlocalizedName()); 19 20 } 21 22 @EventHandler 23 public void preInit(FMLPreInitializationEvent event){ 24 MinecraftForge.EVENT_BUS.register(new CoordinateEvent(Minecraft.getMinecraft())); 25 } 26}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。