package com.atsuishio.superbwarfare.tools; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.data.CustomData; import com.atsuishio.superbwarfare.data.gun.DefaultGunData; import com.atsuishio.superbwarfare.network.message.receive.GunsDataMessage; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.event.OnDatapackSyncEvent; import net.neoforged.neoforge.event.entity.player.PlayerEvent; import net.neoforged.neoforge.network.PacketDistributor; import javax.annotation.Nullable; import java.util.HashMap; import java.util.UUID; @EventBusSubscriber(modid = Mod.MODID) public class GunsTool { public static HashMap gunsData = CustomData.GUN; @SubscribeEvent public static void onPlayerLogin(PlayerEvent.PlayerLoggedInEvent event) { if (event.getEntity() instanceof ServerPlayer player) { var server = player.getServer(); if (server != null && server.isSingleplayerOwner(player.getGameProfile())) { return; } PacketDistributor.sendToPlayer(player, GunsDataMessage.create()); } } @SubscribeEvent public static void onDataPackSync(OnDatapackSyncEvent event) { var server = event.getPlayerList().getServer(); var message = GunsDataMessage.create(); for (var player : event.getRelevantPlayers().toList()) { if (server.isSingleplayerOwner(player.getGameProfile())) { continue; } PacketDistributor.sendToPlayer(player, message); } } public static void setGunIntTag(final CompoundTag tag, String name, int num) { var data = tag.getCompound("GunData"); data.putInt(name, num); tag.put("GunData", data); } public static int getGunIntTag(final CompoundTag tag, String name) { return getGunIntTag(tag, name, 0); } public static int getGunIntTag(final CompoundTag tag, String name, int defaultValue) { var data = tag.getCompound("GunData"); if (!data.contains(name)) return defaultValue; return data.getInt(name); } public static double getGunDoubleTag(final CompoundTag tag, String name) { return getGunDoubleTag(tag, name, 0); } public static double getGunDoubleTag(final CompoundTag tag, String name, double defaultValue) { var data = tag.getCompound("GunData"); if (!data.contains(name)) return defaultValue; return data.getDouble(name); } @Nullable public static UUID getGunUUID(final CompoundTag tag) { if (!tag.contains("GunData")) return null; CompoundTag data = tag.getCompound("GunData"); if (!data.hasUUID("UUID")) return null; return data.getUUID("UUID"); } }