From 2515eff9b6d0b1e5c60db8407571a3667367e8bd Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Wed, 29 May 2024 02:12:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E6=BB=9AcustomClientFactory?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../target/entity/BocekArrowEntity.java | 5 ++ .../target/entity/GunGrenadeEntity.java | 5 ++ .../target/entity/MortarShellEntity.java | 6 +++ .../target/entity/ProjectileEntity.java | 5 ++ .../target/entity/RpgRocketEntity.java | 5 ++ .../entity/TaserBulletProjectileEntity.java | 5 ++ .../target/init/TargetModEntities.java | 12 ++--- .../java/net/mcreator/target/item/Hammer.java | 7 ++- .../net/mcreator/target/item/LightSaber.java | 9 +++- .../mcreator/target/item/gun/AK47Item.java | 4 +- .../mcreator/target/item/gun/Aa12Item.java | 4 +- .../net/mcreator/target/item/gun/Abekiri.java | 4 +- .../mcreator/target/item/gun/Devotion.java | 4 +- .../mcreator/target/item/gun/Hk416Item.java | 4 +- .../target/item/gun/HuntingRifle.java | 2 +- .../net/mcreator/target/item/gun/Kraber.java | 4 +- .../net/mcreator/target/item/gun/M4Item.java | 4 +- .../net/mcreator/target/item/gun/M60Item.java | 4 +- .../mcreator/target/item/gun/M98bItem.java | 4 +- .../mcreator/target/item/gun/Mk14Item.java | 4 +- .../net/mcreator/target/item/gun/RpkItem.java | 4 +- .../target/item/gun/SentinelItem.java | 4 +- .../net/mcreator/target/item/gun/SksItem.java | 4 +- .../net/mcreator/target/item/gun/SvdItem.java | 4 +- .../mcreator/target/item/gun/Trachelium.java | 2 +- .../mcreator/target/item/gun/VectorItem.java | 8 +-- .../net/mcreator/target/tools/GunReload.java | 51 ------------------- .../net/mcreator/target/tools/GunsTool.java | 48 +++++++++++++++++ 28 files changed, 127 insertions(+), 99 deletions(-) delete mode 100644 src/main/java/net/mcreator/target/tools/GunReload.java diff --git a/src/main/java/net/mcreator/target/entity/BocekArrowEntity.java b/src/main/java/net/mcreator/target/entity/BocekArrowEntity.java index b9d7190ab..f3378d553 100644 --- a/src/main/java/net/mcreator/target/entity/BocekArrowEntity.java +++ b/src/main/java/net/mcreator/target/entity/BocekArrowEntity.java @@ -27,6 +27,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.PlayMessages; import java.util.Optional; @@ -46,6 +47,10 @@ public class BocekArrowEntity extends AbstractArrow implements ItemSupplier { super(TargetModEntities.BOCEK_ARROW.get(), entity, level); } + public BocekArrowEntity(PlayMessages.SpawnEntity packet, Level world) { + super(TargetModEntities.BOCEK_ARROW.get(), world); + } + @Override public Packet getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); diff --git a/src/main/java/net/mcreator/target/entity/GunGrenadeEntity.java b/src/main/java/net/mcreator/target/entity/GunGrenadeEntity.java index c6c2713b9..5cb48552d 100644 --- a/src/main/java/net/mcreator/target/entity/GunGrenadeEntity.java +++ b/src/main/java/net/mcreator/target/entity/GunGrenadeEntity.java @@ -27,6 +27,7 @@ import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.PlayMessages; import java.util.Optional; @@ -46,6 +47,10 @@ public class GunGrenadeEntity extends ThrowableItemProjectile { this.damage = damage; } + public GunGrenadeEntity(PlayMessages.SpawnEntity spawnEntity, Level level) { + this(TargetModEntities.GUN_GRENADE.get(), level); + } + @Override public Packet getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); diff --git a/src/main/java/net/mcreator/target/entity/MortarShellEntity.java b/src/main/java/net/mcreator/target/entity/MortarShellEntity.java index f1d674f65..a23535c65 100644 --- a/src/main/java/net/mcreator/target/entity/MortarShellEntity.java +++ b/src/main/java/net/mcreator/target/entity/MortarShellEntity.java @@ -1,5 +1,6 @@ package net.mcreator.target.entity; +import net.mcreator.target.init.TargetModEntities; import net.mcreator.target.init.TargetModItems; import net.mcreator.target.tools.ParticleTool; import net.minecraft.core.particles.ParticleTypes; @@ -15,6 +16,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.network.PlayMessages; public class MortarShellEntity extends ThrowableItemProjectile { private float damage = 100f; @@ -36,6 +38,10 @@ public class MortarShellEntity extends ThrowableItemProjectile { this.damage = damage; } + public MortarShellEntity(PlayMessages.SpawnEntity spawnEntity, Level level) { + this(TargetModEntities.MORTAR_SHELL.get(), level); + } + @Override public Packet getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); diff --git a/src/main/java/net/mcreator/target/entity/ProjectileEntity.java b/src/main/java/net/mcreator/target/entity/ProjectileEntity.java index 1a2493979..05e67b4c7 100644 --- a/src/main/java/net/mcreator/target/entity/ProjectileEntity.java +++ b/src/main/java/net/mcreator/target/entity/ProjectileEntity.java @@ -38,6 +38,7 @@ import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.entity.IEntityAdditionalSpawnData; import net.minecraftforge.entity.PartEntity; import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.PlayMessages; import javax.annotation.Nullable; import java.util.ArrayList; @@ -65,6 +66,10 @@ public class ProjectileEntity extends Entity implements IEntityAdditionalSpawnDa super(TargetModEntities.PROJECTILE.get(), level); } + public ProjectileEntity(PlayMessages.SpawnEntity packet, Level world) { + super(TargetModEntities.PROJECTILE.get(), world); + } + public ProjectileEntity shooter(LivingEntity shooter) { this.shooter = shooter; return this; diff --git a/src/main/java/net/mcreator/target/entity/RpgRocketEntity.java b/src/main/java/net/mcreator/target/entity/RpgRocketEntity.java index 788788494..29fe71d34 100644 --- a/src/main/java/net/mcreator/target/entity/RpgRocketEntity.java +++ b/src/main/java/net/mcreator/target/entity/RpgRocketEntity.java @@ -27,6 +27,7 @@ import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.PlayMessages; import java.util.Optional; @@ -46,6 +47,10 @@ public class RpgRocketEntity extends ThrowableItemProjectile { this.damage = damage; } + public RpgRocketEntity(PlayMessages.SpawnEntity spawnEntity, Level level) { + this(TargetModEntities.RPG_ROCKET.get(), level); + } + @Override public Packet getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); diff --git a/src/main/java/net/mcreator/target/entity/TaserBulletProjectileEntity.java b/src/main/java/net/mcreator/target/entity/TaserBulletProjectileEntity.java index d5e4e30ac..abb5c50fc 100644 --- a/src/main/java/net/mcreator/target/entity/TaserBulletProjectileEntity.java +++ b/src/main/java/net/mcreator/target/entity/TaserBulletProjectileEntity.java @@ -23,6 +23,7 @@ import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.Vec3; import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.PlayMessages; import java.util.Optional; @@ -42,6 +43,10 @@ public class TaserBulletProjectileEntity extends ThrowableItemProjectile { this.damage = damage; } + public TaserBulletProjectileEntity(PlayMessages.SpawnEntity packet, Level level) { + this(TargetModEntities.TASER_BULLET_PROJECTILE.get(), level); + } + @Override public Packet getAddEntityPacket() { return NetworkHooks.getEntitySpawningPacket(this); diff --git a/src/main/java/net/mcreator/target/init/TargetModEntities.java b/src/main/java/net/mcreator/target/init/TargetModEntities.java index b2d4704a1..c2ef2f4c4 100644 --- a/src/main/java/net/mcreator/target/init/TargetModEntities.java +++ b/src/main/java/net/mcreator/target/init/TargetModEntities.java @@ -27,20 +27,20 @@ public class TargetModEntities { public static final RegistryObject> CLAYMORE = register("claymore", EntityType.Builder.of(ClaymoreEntity::new, MobCategory.CREATURE).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(ClaymoreEntity::new).fireImmune().sized(0.5f, 0.5f)); public static final RegistryObject> TASER_BULLET_PROJECTILE = register("projectile_taser_bullet_projectile", - EntityType.Builder.of(TaserBulletProjectileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64) + EntityType.Builder.of(TaserBulletProjectileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setCustomClientFactory(TaserBulletProjectileEntity::new) .setUpdateInterval(1).sized(0.5f, 0.5f)); public static final RegistryObject> GUN_GRENADE = register("projectile_gun_grenade", - EntityType.Builder.of(GunGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + EntityType.Builder.of(GunGrenadeEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(GunGrenadeEntity::new).sized(0.5f, 0.5f)); public static final RegistryObject> TARGET = register("target", EntityType.Builder.of(TargetEntity::new, MobCategory.CREATURE).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(TargetEntity::new).fireImmune().sized(0.875f, 2f)); public static final RegistryObject> RPG_ROCKET = register("projectile_rpg_rocket", - EntityType.Builder.of(RpgRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + EntityType.Builder.of(RpgRocketEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(RpgRocketEntity::new).sized(0.5f, 0.5f)); public static final RegistryObject> MORTAR_SHELL = register("projectile_mortar_shell", - EntityType.Builder.of(MortarShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + EntityType.Builder.of(MortarShellEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).setCustomClientFactory(MortarShellEntity::new).sized(0.5f, 0.5f)); public static final RegistryObject> BOCEK_ARROW = register("projectile_bocekarrow", - EntityType.Builder.of(BocekArrowEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); + EntityType.Builder.of(BocekArrowEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setCustomClientFactory(BocekArrowEntity::new).setTrackingRange(64).setUpdateInterval(1).sized(0.5f, 0.5f)); public static final RegistryObject> PROJECTILE = register("projectile", - EntityType.Builder.of(ProjectileEntity::new, MobCategory.MISC).setTrackingRange(512).sized(0.5f, 0.5f)); + EntityType.Builder.of(ProjectileEntity::new, MobCategory.MISC).setCustomClientFactory(ProjectileEntity::new).setTrackingRange(512).sized(0.5f, 0.5f)); private static RegistryObject> register(String registryname, EntityType.Builder entityTypeBuilder) { diff --git a/src/main/java/net/mcreator/target/item/Hammer.java b/src/main/java/net/mcreator/target/item/Hammer.java index 878bdd2d5..d21b96997 100644 --- a/src/main/java/net/mcreator/target/item/Hammer.java +++ b/src/main/java/net/mcreator/target/item/Hammer.java @@ -43,12 +43,11 @@ public class Hammer extends SwordItem { @Override public ItemStack getCraftingRemainingItem(ItemStack itemstack) { - ItemStack retval = new ItemStack(this); - retval.setDamageValue(itemstack.getDamageValue() + 1); - if (retval.getDamageValue() >= retval.getMaxDamage()) { + itemstack.setDamageValue(itemstack.getDamageValue() + 1); + if (itemstack.getDamageValue() >= itemstack.getMaxDamage()) { return ItemStack.EMPTY; } - return retval; + return itemstack; } @Override diff --git a/src/main/java/net/mcreator/target/item/LightSaber.java b/src/main/java/net/mcreator/target/item/LightSaber.java index a7871aa55..ab53e326d 100644 --- a/src/main/java/net/mcreator/target/item/LightSaber.java +++ b/src/main/java/net/mcreator/target/item/LightSaber.java @@ -54,7 +54,7 @@ public class LightSaber extends SwordItem implements GeoItem, AnimatedItem { transformType = type; } - private PlayState idlePredicate(AnimationState event) { + private PlayState idlePredicate(AnimationState event) { if (transformType != null && transformType.firstPerson()) { if (this.animationProcedure.equals("empty")) { event.getController().setAnimation(RawAnimation.begin().thenLoop("animation.lightsaber.idle")); @@ -64,7 +64,7 @@ public class LightSaber extends SwordItem implements GeoItem, AnimatedItem { return PlayState.STOP; } - private PlayState procedurePredicate(AnimationState event) { + private PlayState procedurePredicate(AnimationState event) { if (transformType != null && transformType.firstPerson()) { if (!this.animationProcedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) { event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationProcedure)); @@ -123,4 +123,9 @@ public class LightSaber extends SwordItem implements GeoItem, AnimatedItem { public void setAnimationProcedure(String procedure) { this.animationProcedure = procedure; } + + @Override + public boolean isDamageable(ItemStack stack) { + return false; + } } \ No newline at end of file diff --git a/src/main/java/net/mcreator/target/item/gun/AK47Item.java b/src/main/java/net/mcreator/target/item/gun/AK47Item.java index b9e35996e..d12e4518b 100644 --- a/src/main/java/net/mcreator/target/item/gun/AK47Item.java +++ b/src/main/java/net/mcreator/target/item/gun/AK47Item.java @@ -200,7 +200,7 @@ public class AK47Item extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE); + GunsTool.reload(entity, GunInfo.Type.RIFLE); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 51) { @@ -220,7 +220,7 @@ public class AK47Item extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE, true); + GunsTool.reload(entity, GunInfo.Type.RIFLE, true); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/Aa12Item.java b/src/main/java/net/mcreator/target/item/gun/Aa12Item.java index 565f939af..7ce6f7579 100644 --- a/src/main/java/net/mcreator/target/item/gun/Aa12Item.java +++ b/src/main/java/net/mcreator/target/item/gun/Aa12Item.java @@ -200,7 +200,7 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SHOTGUN); + GunsTool.reload(entity, GunInfo.Type.SHOTGUN); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 44) { @@ -220,7 +220,7 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SHOTGUN, true); + GunsTool.reload(entity, GunInfo.Type.SHOTGUN, true); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/Abekiri.java b/src/main/java/net/mcreator/target/item/gun/Abekiri.java index cb517be15..b74086a39 100644 --- a/src/main/java/net/mcreator/target/item/gun/Abekiri.java +++ b/src/main/java/net/mcreator/target/item/gun/Abekiri.java @@ -191,7 +191,7 @@ public class Abekiri extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SHOTGUN); + GunsTool.reload(entity, GunInfo.Type.SHOTGUN); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") == 1) { if (tag.getDouble("reload_time") == 83) { @@ -211,7 +211,7 @@ public class Abekiri extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SHOTGUN); + GunsTool.reload(entity, GunInfo.Type.SHOTGUN); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/Devotion.java b/src/main/java/net/mcreator/target/item/gun/Devotion.java index de5dcee3a..a91a6c2d5 100644 --- a/src/main/java/net/mcreator/target/item/gun/Devotion.java +++ b/src/main/java/net/mcreator/target/item/gun/Devotion.java @@ -188,7 +188,7 @@ public class Devotion extends GunItem implements GeoItem, AnimatedItem { itemTag.putDouble("reload_time", 0); } if (itemTag.getDouble("reload_time") == 1 && mainHandItemTag.getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE); + GunsTool.reload(entity, GunInfo.Type.RIFLE); } } else if (itemTag.getBoolean("reloading") && itemTag.getInt("ammo") > 0) { if (itemTag.getDouble("reload_time") == 70) { @@ -208,7 +208,7 @@ public class Devotion extends GunItem implements GeoItem, AnimatedItem { itemTag.putDouble("reload_time", 0); } if (itemTag.getDouble("reload_time") == 1 && mainHandItemTag.getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE, true); + GunsTool.reload(entity, GunInfo.Type.RIFLE, true); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/Hk416Item.java b/src/main/java/net/mcreator/target/item/gun/Hk416Item.java index 4184893ce..27fd8de76 100644 --- a/src/main/java/net/mcreator/target/item/gun/Hk416Item.java +++ b/src/main/java/net/mcreator/target/item/gun/Hk416Item.java @@ -197,7 +197,7 @@ public class Hk416Item extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE); + GunsTool.reload(entity, GunInfo.Type.RIFLE); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 53) { @@ -219,7 +219,7 @@ public class Hk416Item extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE, true); + GunsTool.reload(entity, GunInfo.Type.RIFLE, true); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/HuntingRifle.java b/src/main/java/net/mcreator/target/item/gun/HuntingRifle.java index 12be3e38f..6c2cac43c 100644 --- a/src/main/java/net/mcreator/target/item/gun/HuntingRifle.java +++ b/src/main/java/net/mcreator/target/item/gun/HuntingRifle.java @@ -189,7 +189,7 @@ public class HuntingRifle extends GunItem implements GeoItem, AnimatedItem { itemTag.putDouble("reload_time", 0); } if (itemTag.getDouble("reload_time") == 1 && mainHandItemTag.getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SNIPER); + GunsTool.reload(entity, GunInfo.Type.SNIPER); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/Kraber.java b/src/main/java/net/mcreator/target/item/gun/Kraber.java index 71ae3bab0..f7bfd1563 100644 --- a/src/main/java/net/mcreator/target/item/gun/Kraber.java +++ b/src/main/java/net/mcreator/target/item/gun/Kraber.java @@ -192,7 +192,7 @@ public class Kraber extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SNIPER); + GunsTool.reload(entity, GunInfo.Type.SNIPER); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 65) { @@ -212,7 +212,7 @@ public class Kraber extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SNIPER, true); + GunsTool.reload(entity, GunInfo.Type.SNIPER, true); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/M4Item.java b/src/main/java/net/mcreator/target/item/gun/M4Item.java index a9e356c21..d72177193 100644 --- a/src/main/java/net/mcreator/target/item/gun/M4Item.java +++ b/src/main/java/net/mcreator/target/item/gun/M4Item.java @@ -196,7 +196,7 @@ public class M4Item extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE); + GunsTool.reload(entity, GunInfo.Type.RIFLE); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 53) { @@ -216,7 +216,7 @@ public class M4Item extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE, true); + GunsTool.reload(entity, GunInfo.Type.RIFLE, true); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/M60Item.java b/src/main/java/net/mcreator/target/item/gun/M60Item.java index f862cfe70..c31e95494 100644 --- a/src/main/java/net/mcreator/target/item/gun/M60Item.java +++ b/src/main/java/net/mcreator/target/item/gun/M60Item.java @@ -181,7 +181,7 @@ public class M60Item extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE); + GunsTool.reload(entity, GunInfo.Type.RIFLE); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 111) { @@ -201,7 +201,7 @@ public class M60Item extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE); + GunsTool.reload(entity, GunInfo.Type.RIFLE); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/M98bItem.java b/src/main/java/net/mcreator/target/item/gun/M98bItem.java index 2c88b945b..e7953e2a9 100644 --- a/src/main/java/net/mcreator/target/item/gun/M98bItem.java +++ b/src/main/java/net/mcreator/target/item/gun/M98bItem.java @@ -192,7 +192,7 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SNIPER); + GunsTool.reload(entity, GunInfo.Type.SNIPER); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 57) { @@ -212,7 +212,7 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SNIPER, true); + GunsTool.reload(entity, GunInfo.Type.SNIPER, true); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/Mk14Item.java b/src/main/java/net/mcreator/target/item/gun/Mk14Item.java index 755a78821..c3c61d5f2 100644 --- a/src/main/java/net/mcreator/target/item/gun/Mk14Item.java +++ b/src/main/java/net/mcreator/target/item/gun/Mk14Item.java @@ -176,7 +176,7 @@ public class Mk14Item extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("gj", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE); + GunsTool.reload(entity, GunInfo.Type.RIFLE); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 45) { @@ -196,7 +196,7 @@ public class Mk14Item extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE, true); + GunsTool.reload(entity, GunInfo.Type.RIFLE, true); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/RpkItem.java b/src/main/java/net/mcreator/target/item/gun/RpkItem.java index 7b5e68080..c134300ed 100644 --- a/src/main/java/net/mcreator/target/item/gun/RpkItem.java +++ b/src/main/java/net/mcreator/target/item/gun/RpkItem.java @@ -196,7 +196,7 @@ public class RpkItem extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE); + GunsTool.reload(entity, GunInfo.Type.RIFLE); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 66) { @@ -216,7 +216,7 @@ public class RpkItem extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE, true); + GunsTool.reload(entity, GunInfo.Type.RIFLE, true); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/SentinelItem.java b/src/main/java/net/mcreator/target/item/gun/SentinelItem.java index 706c7150b..e870c264e 100644 --- a/src/main/java/net/mcreator/target/item/gun/SentinelItem.java +++ b/src/main/java/net/mcreator/target/item/gun/SentinelItem.java @@ -201,7 +201,7 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SNIPER); + GunsTool.reload(entity, GunInfo.Type.SNIPER); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 53) { @@ -221,7 +221,7 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SNIPER, true); + GunsTool.reload(entity, GunInfo.Type.SNIPER, true); } } if (tag.getDouble("firing") > 0) { diff --git a/src/main/java/net/mcreator/target/item/gun/SksItem.java b/src/main/java/net/mcreator/target/item/gun/SksItem.java index 72254693b..b90930b54 100644 --- a/src/main/java/net/mcreator/target/item/gun/SksItem.java +++ b/src/main/java/net/mcreator/target/item/gun/SksItem.java @@ -195,7 +195,7 @@ public class SksItem extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("gj", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE); + GunsTool.reload(entity, GunInfo.Type.RIFLE); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 51) { @@ -215,7 +215,7 @@ public class SksItem extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.RIFLE, true); + GunsTool.reload(entity, GunInfo.Type.RIFLE, true); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/SvdItem.java b/src/main/java/net/mcreator/target/item/gun/SvdItem.java index 912c0268d..32fef23df 100644 --- a/src/main/java/net/mcreator/target/item/gun/SvdItem.java +++ b/src/main/java/net/mcreator/target/item/gun/SvdItem.java @@ -169,7 +169,7 @@ public class SvdItem extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("gj", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SNIPER); + GunsTool.reload(entity, GunInfo.Type.SNIPER); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 55) { @@ -189,7 +189,7 @@ public class SvdItem extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && player.getMainHandItem().getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.SNIPER, true); + GunsTool.reload(entity, GunInfo.Type.SNIPER, true); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/Trachelium.java b/src/main/java/net/mcreator/target/item/gun/Trachelium.java index 47999d43a..cba588421 100644 --- a/src/main/java/net/mcreator/target/item/gun/Trachelium.java +++ b/src/main/java/net/mcreator/target/item/gun/Trachelium.java @@ -188,7 +188,7 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem { itemTag.putDouble("reload_time", 0); } if (itemTag.getDouble("reload_time") == 1 && mainHandItemTag.getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.HANDGUN); + GunsTool.reload(entity, GunInfo.Type.HANDGUN); } } } diff --git a/src/main/java/net/mcreator/target/item/gun/VectorItem.java b/src/main/java/net/mcreator/target/item/gun/VectorItem.java index f9d89a64a..f3f6adec4 100644 --- a/src/main/java/net/mcreator/target/item/gun/VectorItem.java +++ b/src/main/java/net/mcreator/target/item/gun/VectorItem.java @@ -6,10 +6,8 @@ import net.mcreator.target.TargetMod; import net.mcreator.target.client.renderer.item.VectorItemRenderer; import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModSounds; -import net.mcreator.target.init.TargetModTags; import net.mcreator.target.item.AnimatedItem; import net.mcreator.target.tools.GunInfo; -import net.mcreator.target.tools.GunReload; import net.mcreator.target.tools.GunsTool; import net.mcreator.target.tools.TooltipTool; import net.minecraft.client.Minecraft; @@ -34,8 +32,6 @@ import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.item.*; import net.minecraft.world.level.Level; import net.minecraftforge.client.extensions.common.IClientItemExtensions; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.ForgeRegistries; import software.bernie.geckolib.animatable.GeoItem; @@ -228,7 +224,7 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && mainHandItem.getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.HANDGUN); + GunsTool.reload(entity, GunInfo.Type.HANDGUN); } } else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) { if (tag.getDouble("reload_time") == 47) { @@ -249,7 +245,7 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem { tag.putDouble("reload_time", 0); } if (tag.getDouble("reload_time") == 1 && mainHandItem.getOrCreateTag().getDouble("id") == id) { - GunReload.reload(entity, GunInfo.Type.HANDGUN, true); + GunsTool.reload(entity, GunInfo.Type.HANDGUN, true); } } } diff --git a/src/main/java/net/mcreator/target/tools/GunReload.java b/src/main/java/net/mcreator/target/tools/GunReload.java deleted file mode 100644 index 2cfaff43d..000000000 --- a/src/main/java/net/mcreator/target/tools/GunReload.java +++ /dev/null @@ -1,51 +0,0 @@ -package net.mcreator.target.tools; - -import net.mcreator.target.network.TargetModVariables; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; - -public class GunReload { - public static void reload(Entity entity, GunInfo.Type type) { - reload(entity, type, false); - } - - public static void reload(Entity entity, GunInfo.Type type, boolean extraOne) { - if (!(entity instanceof LivingEntity living)) return; - - CompoundTag tag = living.getMainHandItem().getOrCreateTag(); - - int mag = tag.getInt("mag"); - int ammo = tag.getInt("ammo"); - int ammoToAdd = mag - ammo + (extraOne ? 1 : 0); - /* - * 空仓换弹的栓动武器应该在换单后取消待上膛标记 - */ - if (ammo == 0 && tag.getDouble("bolt_action_time") > 0) { - tag.putDouble("need_bolt_action", 0); - } - - int playerAmmo = entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).map(c -> switch (type) { - case RIFLE -> c.rifleAmmo; - case HANDGUN -> c.handgunAmmo; - case SHOTGUN -> c.shotgunAmmo; - case SNIPER -> c.sniperAmmo; - }).orElse(0); - - entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - var newAmmoCount = Math.max(0, playerAmmo - ammoToAdd); - switch (type) { - case RIFLE -> capability.rifleAmmo = newAmmoCount; - case HANDGUN -> capability.handgunAmmo = newAmmoCount; - case SHOTGUN -> capability.shotgunAmmo = newAmmoCount; - case SNIPER -> capability.sniperAmmo = newAmmoCount; - } - - capability.syncPlayerVariables(entity); - }); - tag.putInt("ammo", ammo + Math.min(ammoToAdd, playerAmmo)); - - tag.putBoolean("reloading", false); - tag.putBoolean("empty_reload", false); - } -} diff --git a/src/main/java/net/mcreator/target/tools/GunsTool.java b/src/main/java/net/mcreator/target/tools/GunsTool.java index c1a19e28b..8b9fa34f0 100644 --- a/src/main/java/net/mcreator/target/tools/GunsTool.java +++ b/src/main/java/net/mcreator/target/tools/GunsTool.java @@ -4,8 +4,11 @@ import com.google.gson.stream.JsonReader; import net.mcreator.target.TargetMod; import net.mcreator.target.network.TargetModVariables; import net.mcreator.target.network.message.GunsDataMessage; +import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraftforge.event.entity.player.PlayerEvent; @@ -23,6 +26,9 @@ public class GunsTool { public static HashMap> gunsData = new HashMap<>(); + /** + * 初始化数据,从data中读取数据json文件 + */ public static void initJsonData(ResourceManager manager) { for (var entry : manager.listResources("guns", file -> file.getPath().endsWith(".json")).entrySet()) { var id = entry.getKey(); @@ -87,4 +93,46 @@ public class GunsTool { initJsonData(event.getServer().getResourceManager()); } + public static void reload(Entity entity, GunInfo.Type type) { + reload(entity, type, false); + } + + public static void reload(Entity entity, GunInfo.Type type, boolean extraOne) { + if (!(entity instanceof LivingEntity living)) return; + + CompoundTag tag = living.getMainHandItem().getOrCreateTag(); + + int mag = tag.getInt("mag"); + int ammo = tag.getInt("ammo"); + int ammoToAdd = mag - ammo + (extraOne ? 1 : 0); + /* + * 空仓换弹的栓动武器应该在换单后取消待上膛标记 + */ + if (ammo == 0 && tag.getDouble("bolt_action_time") > 0) { + tag.putDouble("need_bolt_action", 0); + } + + int playerAmmo = entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).map(c -> switch (type) { + case RIFLE -> c.rifleAmmo; + case HANDGUN -> c.handgunAmmo; + case SHOTGUN -> c.shotgunAmmo; + case SNIPER -> c.sniperAmmo; + }).orElse(0); + + entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + var newAmmoCount = Math.max(0, playerAmmo - ammoToAdd); + switch (type) { + case RIFLE -> capability.rifleAmmo = newAmmoCount; + case HANDGUN -> capability.handgunAmmo = newAmmoCount; + case SHOTGUN -> capability.shotgunAmmo = newAmmoCount; + case SNIPER -> capability.sniperAmmo = newAmmoCount; + } + + capability.syncPlayerVariables(entity); + }); + tag.putInt("ammo", ammo + Math.min(ammoToAdd, playerAmmo)); + + tag.putBoolean("reloading", false); + tag.putBoolean("empty_reload", false); + } }