84 lines
2.9 KiB
Java
84 lines
2.9 KiB
Java
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<String, DefaultGunData> 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");
|
|
}
|
|
}
|