调整重复检测方法位置
This commit is contained in:
parent
0333ee50eb
commit
600a7c55b5
2 changed files with 92 additions and 92 deletions
|
@ -50,6 +50,7 @@ import net.neoforged.neoforge.network.PacketDistributor;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@EventBusSubscriber
|
@EventBusSubscriber
|
||||||
|
@ -324,14 +325,16 @@ public class LivingEventHandler {
|
||||||
var laserCap = player.getCapability(ModCapabilities.LASER_CAPABILITY);
|
var laserCap = player.getCapability(ModCapabilities.LASER_CAPABILITY);
|
||||||
if (laserCap != null) laserCap.stop();
|
if (laserCap != null) laserCap.stop();
|
||||||
|
|
||||||
var oldTag = NBTTool.getTag(oldStack);
|
if (player instanceof ServerPlayer serverPlayer) {
|
||||||
var newTag = NBTTool.getTag(newStack);
|
if (newStack.getItem() instanceof GunItem) {
|
||||||
if (player instanceof ServerPlayer serverPlayer
|
checkCopyGuns(newStack, player);
|
||||||
&& (newStack.getItem() != oldStack.getItem()
|
}
|
||||||
|
|
||||||
|
if (newStack.getItem() != oldStack.getItem()
|
||||||
|| (newStack.getItem() instanceof GunItem && !GunData.from(newStack).initialized())
|
|| (newStack.getItem() instanceof GunItem && !GunData.from(newStack).initialized())
|
||||||
|| (oldStack.getItem() instanceof GunItem && !GunData.from(oldStack).initialized())
|
|| (oldStack.getItem() instanceof GunItem && !GunData.from(newStack).initialized())
|
||||||
|| (newStack.getItem() instanceof GunItem && oldStack.getItem() instanceof GunItem && !Objects.equals(GunsTool.getGunUUID(newTag), GunsTool.getGunUUID(oldTag)))
|
|| (newStack.getItem() instanceof GunItem && oldStack.getItem() instanceof GunItem && !Objects.equals(GunsTool.getGunUUID(NBTTool.getTag(newStack)), GunsTool.getGunUUID(NBTTool.getTag(oldStack))))
|
||||||
)) {
|
) {
|
||||||
if (oldStack.getItem() instanceof GunItem oldGun) {
|
if (oldStack.getItem() instanceof GunItem oldGun) {
|
||||||
stopGunReloadSound(serverPlayer, oldGun);
|
stopGunReloadSound(serverPlayer, oldGun);
|
||||||
|
|
||||||
|
@ -403,6 +406,28 @@ public class LivingEventHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void checkCopyGuns(ItemStack stack, Player player) {
|
||||||
|
var data = GunData.from(stack);
|
||||||
|
if (!data.initialized()) return;
|
||||||
|
if (data.data == null) return;
|
||||||
|
var uuid = data.data.getUUID("UUID");
|
||||||
|
|
||||||
|
for (var item : player.getInventory().items) {
|
||||||
|
if (item.equals(stack)) continue;
|
||||||
|
if (item.getItem() instanceof GunItem) {
|
||||||
|
var itemData = GunData.from(item);
|
||||||
|
var dataTag = itemData.data;
|
||||||
|
if (dataTag == null) continue;
|
||||||
|
if (!dataTag.hasUUID("UUID")) continue;
|
||||||
|
if (dataTag.getUUID("UUID").equals(uuid)) {
|
||||||
|
data.data.putUUID("UUID", UUID.randomUUID());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void stopGunReloadSound(ServerPlayer player, GunItem gun) {
|
private static void stopGunReloadSound(ServerPlayer player, GunItem gun) {
|
||||||
gun.getReloadSound().forEach(sound -> {
|
gun.getReloadSound().forEach(sound -> {
|
||||||
|
|
|
@ -108,27 +108,6 @@ public abstract class GunItem extends Item implements CustomRendererItem, GeoIte
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkCopyGuns(ItemStack stack, Player player) {
|
|
||||||
var data = GunData.from(stack);
|
|
||||||
if (!data.initialized()) return;
|
|
||||||
if (data.data == null) return;
|
|
||||||
var uuid = data.data.getUUID("UUID");
|
|
||||||
|
|
||||||
for (var item : player.getInventory().items) {
|
|
||||||
if (item.equals(stack)) continue;
|
|
||||||
if (item.getItem() instanceof GunItem) {
|
|
||||||
var itemData = GunData.from(item);
|
|
||||||
var dataTag = itemData.data;
|
|
||||||
if (dataTag == null) continue;
|
|
||||||
if (!dataTag.hasUUID("UUID")) continue;
|
|
||||||
if (dataTag.getUUID("UUID").equals(uuid)) {
|
|
||||||
data.data.putUUID("UUID", UUID.randomUUID());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ParametersAreNonnullByDefault
|
@ParametersAreNonnullByDefault
|
||||||
public void inventoryTick(ItemStack stack, Level level, Entity entity, int slot, boolean selected) {
|
public void inventoryTick(ItemStack stack, Level level, Entity entity, int slot, boolean selected) {
|
||||||
|
@ -140,10 +119,6 @@ public abstract class GunItem extends Item implements CustomRendererItem, GeoIte
|
||||||
|
|
||||||
var data = GunData.from(stack);
|
var data = GunData.from(stack);
|
||||||
|
|
||||||
if (living instanceof Player player && selected) {
|
|
||||||
checkCopyGuns(stack, player);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!data.initialized()) {
|
if (!data.initialized()) {
|
||||||
data.initialize();
|
data.initialize();
|
||||||
if (level.getServer() != null && entity instanceof Player player && player.isCreative()) {
|
if (level.getServer() != null && entity instanceof Player player && player.isCreative()) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue