调整重复检测方法位置
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.Objects;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@EventBusSubscriber
|
||||
|
@ -324,14 +325,16 @@ public class LivingEventHandler {
|
|||
var laserCap = player.getCapability(ModCapabilities.LASER_CAPABILITY);
|
||||
if (laserCap != null) laserCap.stop();
|
||||
|
||||
var oldTag = NBTTool.getTag(oldStack);
|
||||
var newTag = NBTTool.getTag(newStack);
|
||||
if (player instanceof ServerPlayer serverPlayer
|
||||
&& (newStack.getItem() != oldStack.getItem()
|
||||
if (player instanceof ServerPlayer serverPlayer) {
|
||||
if (newStack.getItem() instanceof GunItem) {
|
||||
checkCopyGuns(newStack, player);
|
||||
}
|
||||
|
||||
if (newStack.getItem() != oldStack.getItem()
|
||||
|| (newStack.getItem() instanceof GunItem && !GunData.from(newStack).initialized())
|
||||
|| (oldStack.getItem() instanceof GunItem && !GunData.from(oldStack).initialized())
|
||||
|| (newStack.getItem() instanceof GunItem && oldStack.getItem() instanceof GunItem && !Objects.equals(GunsTool.getGunUUID(newTag), GunsTool.getGunUUID(oldTag)))
|
||||
)) {
|
||||
|| (oldStack.getItem() instanceof GunItem && !GunData.from(newStack).initialized())
|
||||
|| (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) {
|
||||
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) {
|
||||
gun.getReloadSound().forEach(sound -> {
|
||||
|
|
|
@ -108,27 +108,6 @@ public abstract class GunItem extends Item implements CustomRendererItem, GeoIte
|
|||
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
|
||||
@ParametersAreNonnullByDefault
|
||||
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);
|
||||
|
||||
if (living instanceof Player player && selected) {
|
||||
checkCopyGuns(stack, player);
|
||||
}
|
||||
|
||||
if (!data.initialized()) {
|
||||
data.initialize();
|
||||
if (level.getServer() != null && entity instanceof Player player && player.isCreative()) {
|
||||
|
|
Loading…
Add table
Reference in a new issue