添加并修改网络包

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;
import net.mcreator.target.init.*;
import net.mcreator.target.network.*;
import net.mcreator.target.network.message.*;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.common.MinecraftForge;
@ -88,5 +88,6 @@ public class TargetMod {
addNetworkMessage(FireModeMessage.class, FireModeMessage::buffer, FireModeMessage::new, FireModeMessage::handler);
addNetworkMessage(GunRecycleGuiButtonMessage.class, GunRecycleGuiButtonMessage::buffer, GunRecycleGuiButtonMessage::new, GunRecycleGuiButtonMessage::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 net.mcreator.target.TargetMod;
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.world.entity.player.Player;
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 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.minecraft.client.gui.GuiGraphics;
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 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.world.inventory.MortarGUIMenu;
import net.minecraft.client.gui.GuiGraphics;

View file

@ -1,5 +1,6 @@
package net.mcreator.target.event;
import net.mcreator.target.TargetMod;
import net.mcreator.target.entity.BocekarrowEntity;
import net.mcreator.target.entity.Target1Entity;
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.item.gun.GunItem;
import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.network.message.PlayerKillMessage;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
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.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.damagesource.DamageSource;
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.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.network.PacketDistributor;
@Mod.EventBusSubscriber
public class LivingEntityEventHandler {
@ -214,4 +218,16 @@ public class LivingEntityEventHandler {
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 net.mcreator.target.TargetMod;
import net.mcreator.target.network.DoubleJumpMessage;
import net.mcreator.target.network.FireModeMessage;
import net.mcreator.target.network.ReloadMessage;
import net.mcreator.target.network.ZoomMessage;
import net.mcreator.target.network.message.DoubleJumpMessage;
import net.mcreator.target.network.message.FireModeMessage;
import net.mcreator.target.network.message.ReloadMessage;
import net.mcreator.target.network.message.ZoomMessage;
import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraftforge.api.distmarker.Dist;

View file

@ -1,6 +1,9 @@
package net.mcreator.target.network;
import net.mcreator.target.network.message.GunsDataMessage;
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.network.NetworkEvent;
@ -8,9 +11,15 @@ import java.util.function.Supplier;
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) {
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.network.TargetModVariables;
import net.minecraft.core.BlockPos;
import net.minecraft.network.FriendlyByteBuf;
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.init.TargetModEntities;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.procedures.PressFireProcedure;
import net.mcreator.target.tools.GunsTool;
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.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.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.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
@ -32,5 +33,4 @@ public class GunsDataMessage {
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.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.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.world.entity.player.Player;
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.init.TargetModAttributes;
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.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerPlayer;