添加雷达网络包

This commit is contained in:
17146 2024-12-26 01:03:44 +08:00
parent 6a5ee2677d
commit 9682e6f9b2
5 changed files with 97 additions and 2 deletions

View file

@ -156,6 +156,8 @@ public class ModUtils {
addNetworkMessage(SwitchScopeMessage.class, SwitchScopeMessage::encode, SwitchScopeMessage::decode, SwitchScopeMessage::handler); addNetworkMessage(SwitchScopeMessage.class, SwitchScopeMessage::encode, SwitchScopeMessage::decode, SwitchScopeMessage::handler);
addNetworkMessage(SetFiringParametersMessage.class, SetFiringParametersMessage::encode, SetFiringParametersMessage::decode, SetFiringParametersMessage::handler); addNetworkMessage(SetFiringParametersMessage.class, SetFiringParametersMessage::encode, SetFiringParametersMessage::decode, SetFiringParametersMessage::handler);
addNetworkMessage(ContainerDataMessage.class, ContainerDataMessage::encode, ContainerDataMessage::decode, ContainerDataMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT)); addNetworkMessage(ContainerDataMessage.class, ContainerDataMessage::encode, ContainerDataMessage::decode, ContainerDataMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT));
addNetworkMessage(RadarChangeModeMessage.class, RadarChangeModeMessage::encode, RadarChangeModeMessage::decode, RadarChangeModeMessage::handler);
addNetworkMessage(RadarSetParametersMessage.class, RadarSetParametersMessage::encode, RadarSetParametersMessage::decode, RadarSetParametersMessage::handler);
event.enqueueWork(() -> BrewingRecipeRegistry.addRecipe(Ingredient.of(PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.WATER)), event.enqueueWork(() -> BrewingRecipeRegistry.addRecipe(Ingredient.of(PotionUtils.setPotion(new ItemStack(Items.POTION), Potions.WATER)),
Ingredient.of(Items.LIGHTNING_ROD), PotionUtils.setPotion(new ItemStack(Items.POTION), ModPotion.SHOCK.get()))); Ingredient.of(Items.LIGHTNING_ROD), PotionUtils.setPotion(new ItemStack(Items.POTION), ModPotion.SHOCK.get())));

View file

@ -3,6 +3,8 @@ package com.atsuishio.superbwarfare.client.screens;
import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.block.entity.FuMO25BlockEntity; import com.atsuishio.superbwarfare.block.entity.FuMO25BlockEntity;
import com.atsuishio.superbwarfare.menu.FuMO25Menu; import com.atsuishio.superbwarfare.menu.FuMO25Menu;
import com.atsuishio.superbwarfare.network.message.RadarChangeModeMessage;
import com.atsuishio.superbwarfare.network.message.RadarSetParametersMessage;
import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.AbstractButton; import net.minecraft.client.gui.components.AbstractButton;
import net.minecraft.client.gui.narration.NarrationElementOutput; import net.minecraft.client.gui.narration.NarrationElementOutput;
@ -113,7 +115,7 @@ public class FuMO25Screen extends AbstractContainerScreen<FuMO25Menu> {
@Override @Override
public void onPress() { public void onPress() {
ModUtils.PACKET_HANDLER.sendToServer(new RadarSetParametersMessage((byte) 0));
} }
@Override @Override
@ -138,7 +140,7 @@ public class FuMO25Screen extends AbstractContainerScreen<FuMO25Menu> {
@Override @Override
public void onPress() { public void onPress() {
ModUtils.PACKET_HANDLER.sendToServer(new RadarChangeModeMessage((byte) this.mode));
} }
@Override @Override

View file

@ -157,6 +157,10 @@ public class FuMO25Menu extends EnergyMenu {
return this.containerData.get(1); return this.containerData.get(1);
} }
public void setFuncType(byte type) {
this.containerData.set(1, type);
}
public long getTime() { public long getTime() {
return this.containerData.get(2); return this.containerData.get(2);
} }

View file

@ -0,0 +1,45 @@
package com.atsuishio.superbwarfare.network.message;
import com.atsuishio.superbwarfare.menu.FuMO25Menu;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier;
public class RadarChangeModeMessage {
private final byte mode;
public RadarChangeModeMessage(byte mode) {
this.mode = mode;
}
public static void encode(RadarChangeModeMessage message, FriendlyByteBuf buffer) {
buffer.writeByte(message.mode);
}
public static RadarChangeModeMessage decode(FriendlyByteBuf buffer) {
return new RadarChangeModeMessage(buffer.readByte());
}
public static void handler(RadarChangeModeMessage message, Supplier<NetworkEvent.Context> ctx) {
ctx.get().enqueueWork(() -> {
byte mode = message.mode;
if (mode < 1 || mode > 4) return;
ServerPlayer player = ctx.get().getSender();
if (player == null) return;
AbstractContainerMenu menu = player.containerMenu;
if (menu instanceof FuMO25Menu fuMO25Menu) {
if (!player.containerMenu.stillValid(player)) {
return;
}
fuMO25Menu.setFuncType(mode);
}
});
ctx.get().setPacketHandled(true);
}
}

View file

@ -0,0 +1,42 @@
package com.atsuishio.superbwarfare.network.message;
import com.atsuishio.superbwarfare.menu.FuMO25Menu;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier;
public class RadarSetParametersMessage {
private final byte mode;
public RadarSetParametersMessage(byte mode) {
this.mode = mode;
}
public static void encode(RadarSetParametersMessage message, FriendlyByteBuf buffer) {
buffer.writeByte(message.mode);
}
public static RadarSetParametersMessage decode(FriendlyByteBuf buffer) {
return new RadarSetParametersMessage(buffer.readByte());
}
public static void handler(RadarSetParametersMessage message, Supplier<NetworkEvent.Context> ctx) {
ctx.get().enqueueWork(() -> {
ServerPlayer player = ctx.get().getSender();
if (player == null) return;
AbstractContainerMenu menu = player.containerMenu;
if (menu instanceof FuMO25Menu fuMO25Menu) {
if (!player.containerMenu.stillValid(player)) {
return;
}
fuMO25Menu.setPosToParameters();
}
});
ctx.get().setPacketHandled(true);
}
}