添加并修改网络包

This commit is contained in:
17146 2024-05-19 00:39:01 +08:00
parent 88244fe54b
commit 1a177045a9
17 changed files with 97 additions and 19 deletions

View file

@ -1,7 +1,7 @@
package net.mcreator.target; package net.mcreator.target;
import net.mcreator.target.init.*; import net.mcreator.target.init.*;
import net.mcreator.target.network.*; import net.mcreator.target.network.message.*;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
@ -88,5 +88,6 @@ public class TargetMod {
addNetworkMessage(FireModeMessage.class, FireModeMessage::buffer, FireModeMessage::new, FireModeMessage::handler); addNetworkMessage(FireModeMessage.class, FireModeMessage::buffer, FireModeMessage::new, FireModeMessage::handler);
addNetworkMessage(GunRecycleGuiButtonMessage.class, GunRecycleGuiButtonMessage::buffer, GunRecycleGuiButtonMessage::new, GunRecycleGuiButtonMessage::handler); addNetworkMessage(GunRecycleGuiButtonMessage.class, GunRecycleGuiButtonMessage::buffer, GunRecycleGuiButtonMessage::new, GunRecycleGuiButtonMessage::handler);
addNetworkMessage(ReloadMessage.class, ReloadMessage::buffer, ReloadMessage::new, ReloadMessage::handler); addNetworkMessage(ReloadMessage.class, ReloadMessage::buffer, ReloadMessage::new, ReloadMessage::handler);
addNetworkMessage(PlayerKillMessage.class, PlayerKillMessage::encode, PlayerKillMessage::decode, PlayerKillMessage::handler, Optional.of(NetworkDirection.PLAY_TO_CLIENT));
} }
} }

View file

@ -3,7 +3,7 @@ package net.mcreator.target.client;
import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.platform.InputConstants;
import net.mcreator.target.TargetMod; import net.mcreator.target.TargetMod;
import net.mcreator.target.init.TargetModTags; import net.mcreator.target.init.TargetModTags;
import net.mcreator.target.network.FireMessage; import net.mcreator.target.network.message.FireMessage;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;

View file

@ -2,7 +2,7 @@ package net.mcreator.target.client.gui;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.mcreator.target.TargetMod; import net.mcreator.target.TargetMod;
import net.mcreator.target.network.GunRecycleGuiButtonMessage; import net.mcreator.target.network.message.GunRecycleGuiButtonMessage;
import net.mcreator.target.world.inventory.GunRecycleGuiMenu; import net.mcreator.target.world.inventory.GunRecycleGuiMenu;
import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.components.Button;

View file

@ -2,7 +2,7 @@ package net.mcreator.target.client.gui;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.mcreator.target.TargetMod; import net.mcreator.target.TargetMod;
import net.mcreator.target.network.MortarGUIButtonMessage; import net.mcreator.target.network.message.MortarGUIButtonMessage;
import net.mcreator.target.tools.TraceTool; import net.mcreator.target.tools.TraceTool;
import net.mcreator.target.world.inventory.MortarGUIMenu; import net.mcreator.target.world.inventory.MortarGUIMenu;
import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.GuiGraphics;

View file

@ -1,5 +1,6 @@
package net.mcreator.target.event; package net.mcreator.target.event;
import net.mcreator.target.TargetMod;
import net.mcreator.target.entity.BocekarrowEntity; import net.mcreator.target.entity.BocekarrowEntity;
import net.mcreator.target.entity.Target1Entity; import net.mcreator.target.entity.Target1Entity;
import net.mcreator.target.init.TargetModDamageTypes; import net.mcreator.target.init.TargetModDamageTypes;
@ -7,6 +8,7 @@ import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModTags; import net.mcreator.target.init.TargetModTags;
import net.mcreator.target.item.gun.GunItem; import net.mcreator.target.item.gun.GunItem;
import net.mcreator.target.network.TargetModVariables; import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.network.message.PlayerKillMessage;
import net.minecraft.commands.CommandSource; import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
import net.minecraft.core.registries.Registries; import net.minecraft.core.registries.Registries;
@ -14,6 +16,7 @@ import net.minecraft.network.protocol.game.ClientboundStopSoundPacket;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.damagesource.DamageTypes;
@ -30,6 +33,7 @@ import net.minecraftforge.event.entity.living.LivingHurtEvent;
import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.Event;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.network.PacketDistributor;
@Mod.EventBusSubscriber @Mod.EventBusSubscriber
public class LivingEntityEventHandler { public class LivingEntityEventHandler {
@ -214,4 +218,16 @@ public class LivingEntityEventHandler {
server.players().forEach(p -> p.connection.send(clientboundstopsoundpacket)); server.players().forEach(p -> p.connection.send(clientboundstopsoundpacket));
}); });
} }
@SubscribeEvent
public static void handlePlayerKillEntity(LivingDeathEvent event) {
LivingEntity entity = event.getEntity();
DamageSource source = event.getSource();
if (source.getDirectEntity() instanceof ServerPlayer player) {
if (source.is(TargetModDamageTypes.GUNFIRE)) {
TargetMod.PACKET_HANDLER.send(PacketDistributor.PLAYER.with(() -> player), new PlayerKillMessage(player.getId(), entity.getId()));
}
}
}
} }

View file

@ -2,10 +2,10 @@ package net.mcreator.target.init;
import com.mojang.blaze3d.platform.InputConstants; import com.mojang.blaze3d.platform.InputConstants;
import net.mcreator.target.TargetMod; import net.mcreator.target.TargetMod;
import net.mcreator.target.network.DoubleJumpMessage; import net.mcreator.target.network.message.DoubleJumpMessage;
import net.mcreator.target.network.FireModeMessage; import net.mcreator.target.network.message.FireModeMessage;
import net.mcreator.target.network.ReloadMessage; import net.mcreator.target.network.message.ReloadMessage;
import net.mcreator.target.network.ZoomMessage; import net.mcreator.target.network.message.ZoomMessage;
import net.minecraft.client.KeyMapping; import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;

View file

@ -1,6 +1,9 @@
package net.mcreator.target.network; package net.mcreator.target.network;
import net.mcreator.target.network.message.GunsDataMessage;
import net.mcreator.target.tools.GunsTool; import net.mcreator.target.tools.GunsTool;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraftforge.fml.LogicalSide; import net.minecraftforge.fml.LogicalSide;
import net.minecraftforge.network.NetworkEvent; import net.minecraftforge.network.NetworkEvent;
@ -8,9 +11,15 @@ import java.util.function.Supplier;
public class ClientPacketHandler { public class ClientPacketHandler {
public static void handleGunsDataMessage(GunsDataMessage message, Supplier<NetworkEvent.Context> ctx) { public static void handleGunsDataMessage(GunsDataMessage message, Supplier<NetworkEvent.Context> ctx) {
if (ctx.get().getDirection().getReceptionSide() == LogicalSide.CLIENT) { if (ctx.get().getDirection().getReceptionSide() == LogicalSide.CLIENT) {
GunsTool.gunsData = message.gunsData; GunsTool.gunsData = message.gunsData;
} }
} }
public static void handlePlayerKillMessage(Player attacker, Entity target, Supplier<NetworkEvent.Context> ctx) {
if (ctx.get().getDirection().getReceptionSide() == LogicalSide.CLIENT) {
System.out.println(attacker + " killed " + target);
}
}
} }

View file

@ -1,6 +1,7 @@
package net.mcreator.target.network; package net.mcreator.target.network.message;
import net.mcreator.target.init.TargetModSounds; import net.mcreator.target.init.TargetModSounds;
import net.mcreator.target.network.TargetModVariables;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;

View file

@ -1,8 +1,9 @@
package net.mcreator.target.network; package net.mcreator.target.network.message;
import net.mcreator.target.entity.BocekarrowEntity; import net.mcreator.target.entity.BocekarrowEntity;
import net.mcreator.target.init.TargetModEntities; import net.mcreator.target.init.TargetModEntities;
import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.procedures.PressFireProcedure; import net.mcreator.target.procedures.PressFireProcedure;
import net.mcreator.target.tools.GunsTool; import net.mcreator.target.tools.GunsTool;
import net.minecraft.commands.CommandSource; import net.minecraft.commands.CommandSource;

View file

@ -1,4 +1,4 @@
package net.mcreator.target.network; package net.mcreator.target.network.message;
import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModSounds; import net.mcreator.target.init.TargetModSounds;

View file

@ -1,4 +1,4 @@
package net.mcreator.target.network; package net.mcreator.target.network.message;
import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModTags; import net.mcreator.target.init.TargetModTags;

View file

@ -1,5 +1,6 @@
package net.mcreator.target.network; package net.mcreator.target.network.message;
import net.mcreator.target.network.ClientPacketHandler;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.DistExecutor;
@ -32,5 +33,4 @@ public class GunsDataMessage {
ctx.get().setPacketHandled(true); ctx.get().setPacketHandled(true);
} }
} }

View file

@ -1,4 +1,4 @@
package net.mcreator.target.network; package net.mcreator.target.network.message;
import net.mcreator.target.init.TargetModAttributes; import net.mcreator.target.init.TargetModAttributes;
import net.mcreator.target.tools.TraceTool; import net.mcreator.target.tools.TraceTool;

View file

@ -0,0 +1,49 @@
package net.mcreator.target.network.message;
import net.mcreator.target.network.ClientPacketHandler;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier;
public class PlayerKillMessage {
public final int attackerId;
public final int targetId;
public PlayerKillMessage(int attackerId, int targetId) {
this.attackerId = attackerId;
this.targetId = targetId;
}
public static void encode(PlayerKillMessage message, FriendlyByteBuf buffer) {
buffer.writeInt(message.attackerId);
buffer.writeInt(message.targetId);
}
public static PlayerKillMessage decode(FriendlyByteBuf buffer) {
int attackerId = buffer.readInt();
int targetId = buffer.readInt();
return new PlayerKillMessage(attackerId, targetId);
}
public static void handler(PlayerKillMessage message, Supplier<NetworkEvent.Context> ctx) {
ctx.get().enqueueWork(() -> {
ClientLevel level = Minecraft.getInstance().level;
if (level != null) {
Player player = level.getEntity(message.attackerId) instanceof Player ? (Player) level.getEntity(message.attackerId) : null;
Entity target = level.getEntity(message.targetId);
if (player != null && target != null) {
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> ClientPacketHandler.handlePlayerKillMessage(player, target, ctx));
}
}
});
ctx.get().setPacketHandled(true);
}
}

View file

@ -1,4 +1,4 @@
package net.mcreator.target.network; package net.mcreator.target.network.message;
import net.mcreator.target.procedures.PlayerReloadProcedure; import net.mcreator.target.procedures.PlayerReloadProcedure;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;

View file

@ -1,5 +1,6 @@
package net.mcreator.target.network; package net.mcreator.target.network.message;
import net.mcreator.target.network.TargetModVariables;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;

View file

@ -5,7 +5,7 @@ import net.mcreator.target.TargetMod;
import net.mcreator.target.entity.ProjectileEntity; import net.mcreator.target.entity.ProjectileEntity;
import net.mcreator.target.init.TargetModAttributes; import net.mcreator.target.init.TargetModAttributes;
import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.network.GunsDataMessage; import net.mcreator.target.network.message.GunsDataMessage;
import net.mcreator.target.network.TargetModVariables; import net.mcreator.target.network.TargetModVariables;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;