diff --git a/src/main/java/net/mcreator/target/entity/RpgRocketEntity.java b/src/main/java/net/mcreator/target/entity/RpgRocketEntity.java index 3cb41f6a0..d8586c4e7 100644 --- a/src/main/java/net/mcreator/target/entity/RpgRocketEntity.java +++ b/src/main/java/net/mcreator/target/entity/RpgRocketEntity.java @@ -4,9 +4,7 @@ import net.mcreator.target.headshot.BoundingBoxManager; import net.mcreator.target.headshot.IHeadshotBox; import net.mcreator.target.init.TargetModEntities; import net.mcreator.target.network.TargetModVariables; -import net.mcreator.target.procedures.RocketHitProcedure; -import net.mcreator.target.procedures.RpgRocketDanSheWuFeiXingShiMeiKeFaShengProcedure; -import net.mcreator.target.procedures.RpgRocketDanSheWuJiZhongFangKuaiShiProcedure; +import net.mcreator.target.procedures.MedexpProcedure; import net.minecraft.commands.CommandSource; import net.minecraft.commands.CommandSourceStack; import net.minecraft.network.protocol.Packet; @@ -74,14 +72,23 @@ public class RpgRocketEntity extends AbstractArrow implements ItemSupplier { entity.setArrowCount(entity.getArrowCount() - 1); } + public static RpgRocketEntity shoot(Level world, LivingEntity entity, RandomSource random, float power, double damage, int knockback) { + RpgRocketEntity entityArrow = new RpgRocketEntity(TargetModEntities.RPG_ROCKET.get(), entity, world); + entityArrow.shoot(entity.getViewVector(1).x, entity.getViewVector(1).y, entity.getViewVector(1).z, power * 2, 0); + entityArrow.setSilent(true); + entityArrow.setCritArrow(false); + entityArrow.setBaseDamage(damage); + entityArrow.setKnockback(knockback); + world.addFreshEntity(entityArrow); + return entityArrow; + } + @Override protected void onHitEntity(EntityHitResult result) { - final Vec3 position = this.position(); Entity entity = result.getEntity(); if (this.getOwner() instanceof LivingEntity living) { - double _setval = 25; living.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.hitind = _setval; + capability.hitind = 25; capability.syncPlayerVariables(living); }); if (!living.level().isClientSide() && living.getServer() != null) { @@ -89,7 +96,15 @@ public class RpgRocketEntity extends AbstractArrow implements ItemSupplier { living.getName().getString(), living.getDisplayName(), living.level().getServer(), living), "playsound target:indication voice @a ~ ~ ~ 1 1"); } } - RocketHitProcedure.execute(this.level(), this); + if (this.getPersistentData().getDouble("time") > 0) { + if (this.level() instanceof ServerLevel level) { + level.explode(this, this.getX(), this.getY(), this.getZ(), 4, Level.ExplosionInteraction.NONE); + + MedexpProcedure.execute(level, this.getX(), this.getY(), this.getZ()); + this.discard(); + } + } + if (entity instanceof LivingEntity) { entity.invulnerableTime = 0; } @@ -134,23 +149,22 @@ public class RpgRocketEntity extends AbstractArrow implements ItemSupplier { this.discard(); } - @Override - public void onHitBlock(BlockHitResult blockHitResult) { - super.onHitBlock(blockHitResult); - RpgRocketDanSheWuJiZhongFangKuaiShiProcedure.execute(this.level(), this); - } - @Override public boolean isNoGravity() { return true; } @Override - public void tick() { - super.tick(); - RpgRocketDanSheWuFeiXingShiMeiKeFaShengProcedure.execute(this); - if (this.tickCount > 100) { - this.discard(); + public void onHitBlock(BlockHitResult blockHitResult) { + super.onHitBlock(blockHitResult); + + if (this.getPersistentData().getDouble("time") > 0) { + if (this.level() instanceof ServerLevel level) { + level.explode(this, this.getX(), this.getY(), this.getZ(), 6, Level.ExplosionInteraction.NONE); + MedexpProcedure.execute(level, this.getX(), this.getY(), this.getZ()); + } + if (!this.level().isClientSide()) + this.discard(); } } @@ -158,15 +172,39 @@ public class RpgRocketEntity extends AbstractArrow implements ItemSupplier { return shoot(world, entity, source, 1f, 5, 5); } - public static RpgRocketEntity shoot(Level world, LivingEntity entity, RandomSource random, float power, double damage, int knockback) { - RpgRocketEntity entityarrow = new RpgRocketEntity(TargetModEntities.RPG_ROCKET.get(), entity, world); - entityarrow.shoot(entity.getViewVector(1).x, entity.getViewVector(1).y, entity.getViewVector(1).z, power * 2, 0); - entityarrow.setSilent(true); - entityarrow.setCritArrow(false); - entityarrow.setBaseDamage(damage); - entityarrow.setKnockback(knockback); - world.addFreshEntity(entityarrow); - return entityarrow; + @Override + public void tick() { + super.tick(); + + this.getPersistentData().putDouble("time", (1 + this.getPersistentData().getDouble("time"))); + double life = this.getPersistentData().getDouble("time"); + if (life == 4) { + if (!this.level().isClientSide() && this.getServer() != null) { + this.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, this.position(), this.getRotationVector(), this.level() instanceof ServerLevel ? (ServerLevel) this.level() : null, 4, + this.getName().getString(), this.getDisplayName(), this.level().getServer(), this), "particle minecraft:campfire_cosy_smoke ~ ~ ~ 0.8 0.8 0.8 0.01 50 force"); + } + } + if (life >= 4) { + this.setDeltaMovement(new Vec3((1.04 * this.getDeltaMovement().x()), (1.04 * this.getDeltaMovement().y() - 0.02), (1.04 * this.getDeltaMovement().z()))); + + if (!this.level().isClientSide() && this.getServer() != null) { + this.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, this.position(), this.getRotationVector(), this.level() instanceof ServerLevel ? (ServerLevel) this.level() : null, 4, + this.getName().getString(), this.getDisplayName(), this.level().getServer(), this), "particle minecraft:smoke ~ ~ ~ 0 0 0 0 2 force"); + this.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, this.position(), this.getRotationVector(), this.level() instanceof ServerLevel ? (ServerLevel) this.level() : null, 4, + this.getName().getString(), this.getDisplayName(), this.level().getServer(), this), "particle minecraft:campfire_cosy_smoke ~ ~ ~ 0 0 0 0 2 force"); + } + } + if (life >= 90) { + if (!this.level().isClientSide() && this.getServer() != null) { + MedexpProcedure.execute(this.level(), this.getX(), this.getY(), this.getZ()); + } + if (!this.level().isClientSide()) + this.discard(); + } + + if (this.tickCount > 100) { + this.discard(); + } } public static RpgRocketEntity shoot(LivingEntity entity, LivingEntity target) { diff --git a/src/main/java/net/mcreator/target/item/common/ammo/Rocket.java b/src/main/java/net/mcreator/target/item/common/ammo/Rocket.java index ff7f4d825..d6a725a9e 100644 --- a/src/main/java/net/mcreator/target/item/common/ammo/Rocket.java +++ b/src/main/java/net/mcreator/target/item/common/ammo/Rocket.java @@ -3,15 +3,18 @@ package net.mcreator.target.item.common.ammo; import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Multimap; import net.mcreator.target.client.renderer.item.RocketItemRenderer; +import net.mcreator.target.init.TargetModItems; import net.mcreator.target.item.AnimatedItem; -import net.mcreator.target.procedures.RocketShiTiBeiGongJuJiZhongShiProcedure; +import net.mcreator.target.procedures.MedexpProcedure; import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.*; import net.minecraft.world.level.Level; import net.minecraftforge.client.extensions.common.IClientItemExtensions; @@ -111,7 +114,19 @@ public class Rocket extends Item implements GeoItem, AnimatedItem { @Override public boolean hurtEnemy(ItemStack itemstack, LivingEntity entity, LivingEntity sourceentity) { boolean retval = super.hurtEnemy(itemstack, entity, sourceentity); - RocketShiTiBeiGongJuJiZhongShiProcedure.execute(entity.level(), sourceentity); + + if (Math.random() >= 0.25) return retval; + + if (entity.level() instanceof ServerLevel level) { + level.explode(sourceentity, sourceentity.getX(), sourceentity.getY() + 1, sourceentity.getZ(), 6, Level.ExplosionInteraction.NONE); + level.explode(null, sourceentity.getX(), sourceentity.getY() + 1, sourceentity.getZ(), 6, Level.ExplosionInteraction.NONE); + + MedexpProcedure.execute(level, sourceentity.getX(), sourceentity.getY(), sourceentity.getZ()); + } + if (sourceentity instanceof Player player) { + player.getInventory().clearOrCountMatchingItems(p -> TargetModItems.ROCKET.get() == p.getItem(), 1, player.inventoryMenu.getCraftSlots()); + } + return retval; } diff --git a/src/main/java/net/mcreator/target/procedures/MedexpProcedure.java b/src/main/java/net/mcreator/target/procedures/MedexpProcedure.java index 89dcd00bd..9f0f200df 100644 --- a/src/main/java/net/mcreator/target/procedures/MedexpProcedure.java +++ b/src/main/java/net/mcreator/target/procedures/MedexpProcedure.java @@ -1,52 +1,39 @@ package net.mcreator.target.procedures; +import net.mcreator.target.init.TargetModSounds; import net.minecraft.commands.CommandSource; import net.minecraft.commands.CommandSourceStack; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundSource; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.phys.Vec2; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.registries.ForgeRegistries; public class MedexpProcedure { public static void execute(LevelAccessor world, double x, double y, double z) { - if (world instanceof Level _level) { - if (!_level.isClientSide()) { - _level.playSound(null, BlockPos.containing(x, y + 1, z), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:exp")), SoundSource.BLOCKS, 12, 1); + if (world instanceof Level level) { + if (!level.isClientSide()) { + level.playSound(null, BlockPos.containing(x, y + 1, z), TargetModSounds.EXP.get(), SoundSource.BLOCKS, 12, 1); + level.playSound(null, BlockPos.containing(x, y + 1, z), TargetModSounds.EXPFAR.get(), SoundSource.BLOCKS, 28, 1); + level.playSound(null, BlockPos.containing(x, y + 1, z), TargetModSounds.EXPVERYFAR.get(), SoundSource.BLOCKS, 48, 1); } else { - _level.playLocalSound(x, (y + 1), z, ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:exp")), SoundSource.BLOCKS, 12, 1, false); + level.playLocalSound(x, (y + 1), z, TargetModSounds.EXP.get(), SoundSource.BLOCKS, 12, 1, false); + level.playLocalSound(x, (y + 1), z, TargetModSounds.EXPFAR.get(), SoundSource.BLOCKS, 28, 1, false); + level.playLocalSound(x, (y + 1), z, TargetModSounds.EXPVERYFAR.get(), SoundSource.BLOCKS, 48, 1, false); } } - if (world instanceof Level _level) { - if (!_level.isClientSide()) { - _level.playSound(null, BlockPos.containing(x, y + 1, z), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:expfar")), SoundSource.BLOCKS, 28, 1); - } else { - _level.playLocalSound(x, (y + 1), z, ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:expfar")), SoundSource.BLOCKS, 28, 1, false); - } - } - if (world instanceof Level _level) { - if (!_level.isClientSide()) { - _level.playSound(null, BlockPos.containing(x, y + 1, z), ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:expveryfar")), SoundSource.BLOCKS, 48, 1); - } else { - _level.playLocalSound(x, (y + 1), z, ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:expveryfar")), SoundSource.BLOCKS, 48, 1, false); - } - } - if (world instanceof ServerLevel _level) - _level.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, new Vec3(x, (y + 1), z), Vec2.ZERO, _level, 4, "", Component.literal(""), _level.getServer(), null).withSuppressedOutput(), + if (world instanceof ServerLevel level) { + level.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, new Vec3(x, (y + 1), z), Vec2.ZERO, level, 4, "", Component.literal(""), level.getServer(), null).withSuppressedOutput(), "particle minecraft:campfire_cosy_smoke ~ ~ ~ 0.4 1 0.4 0.02 80 force"); - if (world instanceof ServerLevel _level) - _level.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, new Vec3(x, (y + 1), z), Vec2.ZERO, _level, 4, "", Component.literal(""), _level.getServer(), null).withSuppressedOutput(), + level.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, new Vec3(x, (y + 1), z), Vec2.ZERO, level, 4, "", Component.literal(""), level.getServer(), null).withSuppressedOutput(), "particle minecraft:large_smoke ~ ~1 ~ 0.4 1 0.4 0.02 100 force"); - if (world instanceof ServerLevel _level) - _level.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, new Vec3(x, (y + 1), z), Vec2.ZERO, _level, 4, "", Component.literal(""), _level.getServer(), null).withSuppressedOutput(), + level.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, new Vec3(x, (y + 1), z), Vec2.ZERO, level, 4, "", Component.literal(""), level.getServer(), null).withSuppressedOutput(), "particle minecraft:campfire_cosy_smoke ~ ~ ~ 2 0.001 2 0.01 100 force"); - if (world instanceof ServerLevel _level) - _level.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, new Vec3(x, (y + 1), z), Vec2.ZERO, _level, 4, "", Component.literal(""), _level.getServer(), null).withSuppressedOutput(), + level.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, new Vec3(x, (y + 1), z), Vec2.ZERO, level, 4, "", Component.literal(""), level.getServer(), null).withSuppressedOutput(), "particle target:firestar ~ ~ ~ 0 0 0 0.2 100 force"); + } } } diff --git a/src/main/java/net/mcreator/target/procedures/PressFireProcedure.java b/src/main/java/net/mcreator/target/procedures/PressFireProcedure.java index 59d9bcefa..12748b43a 100644 --- a/src/main/java/net/mcreator/target/procedures/PressFireProcedure.java +++ b/src/main/java/net/mcreator/target/procedures/PressFireProcedure.java @@ -14,7 +14,7 @@ public class PressFireProcedure { TaserfireProcedure.execute(player); M79fireProcedure.execute(player); M98bfireProcedure.execute(player); - RpgfireProcedure.execute(player); + RpgFireProcedure.execute(player); KraberfireProcedure.execute(player); MinigunfireProcedure.execute(player); SentinelFireProcedure.execute(player); diff --git a/src/main/java/net/mcreator/target/procedures/RocketHitProcedure.java b/src/main/java/net/mcreator/target/procedures/RocketHitProcedure.java deleted file mode 100644 index 6ebbcb9b2..000000000 --- a/src/main/java/net/mcreator/target/procedures/RocketHitProcedure.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.mcreator.target.procedures; - -import net.minecraft.commands.CommandSource; -import net.minecraft.commands.CommandSourceStack; -import net.minecraft.network.chat.Component; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.phys.Vec2; -import net.minecraft.world.phys.Vec3; - -public class RocketHitProcedure { - public static void execute(LevelAccessor world, Entity immediatesourceentity) { - if (immediatesourceentity == null) - return; - if (immediatesourceentity.getPersistentData().getDouble("time") > 0) { - if (world instanceof Level _level && !_level.isClientSide()) - _level.explode(immediatesourceentity, (immediatesourceentity.getX()), (immediatesourceentity.getY()), (immediatesourceentity.getZ()), 4, Level.ExplosionInteraction.NONE); - if (world instanceof ServerLevel _level) - _level.getServer().getCommands().performPrefixedCommand( - new CommandSourceStack(CommandSource.NULL, new Vec3((immediatesourceentity.getX()), (immediatesourceentity.getY()), (immediatesourceentity.getZ())), Vec2.ZERO, _level, 4, "", Component.literal(""), _level.getServer(), null) - .withSuppressedOutput(), - "target:mediumexp"); - if (!immediatesourceentity.level().isClientSide()) - immediatesourceentity.discard(); - } - } -} diff --git a/src/main/java/net/mcreator/target/procedures/RocketShiTiBeiGongJuJiZhongShiProcedure.java b/src/main/java/net/mcreator/target/procedures/RocketShiTiBeiGongJuJiZhongShiProcedure.java deleted file mode 100644 index 8b849abeb..000000000 --- a/src/main/java/net/mcreator/target/procedures/RocketShiTiBeiGongJuJiZhongShiProcedure.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.mcreator.target.procedures; - -import net.mcreator.target.init.TargetModItems; -import net.minecraft.commands.CommandSource; -import net.minecraft.commands.CommandSourceStack; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; - -public class RocketShiTiBeiGongJuJiZhongShiProcedure { - public static void execute(LevelAccessor world, Entity sourceentity) { - if (sourceentity == null) - return; - if (Math.random() < 0.25) { - if (world instanceof Level _level && !_level.isClientSide()) - _level.explode(sourceentity, (sourceentity.getX()), (sourceentity.getY() + 1), (sourceentity.getZ()), 6, Level.ExplosionInteraction.NONE); - if (world instanceof Level _level && !_level.isClientSide()) - _level.explode(null, (sourceentity.getX()), (sourceentity.getY() + 1), (sourceentity.getZ()), 6, Level.ExplosionInteraction.NONE); - if (sourceentity instanceof Player _player) { - ItemStack _stktoremove = new ItemStack(TargetModItems.ROCKET.get()); - _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); - } - { - Entity _ent = sourceentity; - if (!_ent.level().isClientSide() && _ent.getServer() != null) { - _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4, - _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "target:mediumexp"); - } - } - } - } -} diff --git a/src/main/java/net/mcreator/target/procedures/RpgFireProcedure.java b/src/main/java/net/mcreator/target/procedures/RpgFireProcedure.java new file mode 100644 index 000000000..06e8aaf62 --- /dev/null +++ b/src/main/java/net/mcreator/target/procedures/RpgFireProcedure.java @@ -0,0 +1,81 @@ +package net.mcreator.target.procedures; + +import net.mcreator.target.entity.RpgRocketEntity; +import net.mcreator.target.init.TargetModAttributes; +import net.mcreator.target.init.TargetModEntities; +import net.mcreator.target.init.TargetModItems; +import net.mcreator.target.init.TargetModSounds; +import net.mcreator.target.network.TargetModVariables; +import net.minecraft.commands.CommandSource; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.Projectile; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +public class RpgFireProcedure { + public static void execute(Player player) { + if (player.isSpectator()) return; + + ItemStack mainHandItem = player.getMainHandItem(); + CompoundTag tag = mainHandItem.getOrCreateTag(); + + if (mainHandItem.getItem() == TargetModItems.RPG.get() && tag.getDouble("reloading") == 0 && !player.getCooldowns().isOnCooldown(mainHandItem.getItem()) + && tag.getDouble("ammo") > 0) { + player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.recoilhorizon = Math.random() < 0.5 ? -1 : 1; + capability.recoil = 0.1; + capability.firing = 1; + capability.syncPlayerVariables(player); + }); + + Level projectileLevel = player.level(); + if (!projectileLevel.isClientSide()) { + Projectile projectile = getArrow(player, projectileLevel, tag); + projectile.setPos(player.getX(), player.getEyeY() - 0.1, player.getZ()); + projectile.shoot(player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, (float) tag.getDouble("velocity"), + (float) player.getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue()); + projectileLevel.addFreshEntity(projectile); + } + + if (player.getServer() != null) { + player.getServer().getCommands().performPrefixedCommand( + new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4, player.getName().getString(), player.getDisplayName(), + player.level().getServer(), player), + ("particle minecraft:cloud" + (" " + (player.getX() + 1.8 * player.getLookAngle().x)) + (" " + (player.getY() + player.getBbHeight() - 0.1 + 1.8 * player.getLookAngle().y)) + + (" " + (player.getZ() + 1.8 * player.getLookAngle().z)) + " 0.4 0.4 0.4 0.005 30 force @s")); + } + if (tag.getDouble("ammo") == 1) { + tag.putDouble("empty", 1); + } + player.getCooldowns().addCooldown(mainHandItem.getItem(), 10); + if (!player.level().isClientSide() && player.getServer() != null) { + player.level().playSound(null, player.blockPosition(), TargetModSounds.RPG_FIRE_1P.get(), SoundSource.PLAYERS, 2, 1); + player.level().playSound(null, player.blockPosition(), TargetModSounds.RPG_FIRE_3P.get(), SoundSource.PLAYERS, 4, 1); + player.level().playSound(null, player.blockPosition(), TargetModSounds.RPG_FAR.get(), SoundSource.PLAYERS, 8, 1); + player.level().playSound(null, player.blockPosition(), TargetModSounds.RPG_VERYFAR.get(), SoundSource.PLAYERS, 16, 1); + } + tag.putDouble("fireanim", 2); + tag.putDouble("ammo", tag.getDouble("ammo") - 1); + } + } + + private static Projectile getArrow(Player player, Level projectileLevel, CompoundTag tag) { + return new Object() { + public Projectile getArrow(Level level, Entity shooter, float damage, int knockback) { + AbstractArrow entityToSpawn = new RpgRocketEntity(TargetModEntities.RPG_ROCKET.get(), level); + entityToSpawn.setOwner(shooter); + entityToSpawn.setBaseDamage(damage); + entityToSpawn.setKnockback(knockback); + entityToSpawn.setSilent(true); + return entityToSpawn; + } + }.getArrow(projectileLevel, player, (float) ((tag.getDouble("damage") / tag.getDouble("velocity")) * (1 + 0.05 * tag.getDouble("level"))), 0); + } + +} diff --git a/src/main/java/net/mcreator/target/procedures/RpgRocketDanSheWuFeiXingShiMeiKeFaShengProcedure.java b/src/main/java/net/mcreator/target/procedures/RpgRocketDanSheWuFeiXingShiMeiKeFaShengProcedure.java deleted file mode 100644 index 892ac6489..000000000 --- a/src/main/java/net/mcreator/target/procedures/RpgRocketDanSheWuFeiXingShiMeiKeFaShengProcedure.java +++ /dev/null @@ -1,54 +0,0 @@ -package net.mcreator.target.procedures; - -import net.minecraft.commands.CommandSource; -import net.minecraft.commands.CommandSourceStack; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.phys.Vec3; - -public class RpgRocketDanSheWuFeiXingShiMeiKeFaShengProcedure { - public static void execute(Entity immediatesourceentity) { - if (immediatesourceentity == null) - return; - double life = 0; - immediatesourceentity.getPersistentData().putDouble("time", (1 + immediatesourceentity.getPersistentData().getDouble("time"))); - life = immediatesourceentity.getPersistentData().getDouble("time"); - if (life == 4) { - { - Entity _ent = immediatesourceentity; - if (!_ent.level().isClientSide() && _ent.getServer() != null) { - _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4, - _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "particle minecraft:campfire_cosy_smoke ~ ~ ~ 0.8 0.8 0.8 0.01 50 force"); - } - } - } - if (life >= 4) { - immediatesourceentity.setDeltaMovement(new Vec3((1.04 * immediatesourceentity.getDeltaMovement().x()), (1.04 * immediatesourceentity.getDeltaMovement().y() - 0.02), (1.04 * immediatesourceentity.getDeltaMovement().z()))); - { - Entity _ent = immediatesourceentity; - if (!_ent.level().isClientSide() && _ent.getServer() != null) { - _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4, - _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "particle minecraft:smoke ~ ~ ~ 0 0 0 0 2 force"); - } - } - { - Entity _ent = immediatesourceentity; - if (!_ent.level().isClientSide() && _ent.getServer() != null) { - _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4, - _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "particle minecraft:campfire_cosy_smoke ~ ~ ~ 0 0 0 0 2 force"); - } - } - } - if (life >= 90) { - { - Entity _ent = immediatesourceentity; - if (!_ent.level().isClientSide() && _ent.getServer() != null) { - _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4, - _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "target:mediumexp"); - } - } - if (!immediatesourceentity.level().isClientSide()) - immediatesourceentity.discard(); - } - } -} diff --git a/src/main/java/net/mcreator/target/procedures/RpgRocketDanSheWuJiZhongFangKuaiShiProcedure.java b/src/main/java/net/mcreator/target/procedures/RpgRocketDanSheWuJiZhongFangKuaiShiProcedure.java deleted file mode 100644 index 14e0b2bff..000000000 --- a/src/main/java/net/mcreator/target/procedures/RpgRocketDanSheWuJiZhongFangKuaiShiProcedure.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.mcreator.target.procedures; - -import net.minecraft.commands.CommandSource; -import net.minecraft.commands.CommandSourceStack; -import net.minecraft.network.chat.Component; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; -import net.minecraft.world.phys.Vec2; -import net.minecraft.world.phys.Vec3; - -public class RpgRocketDanSheWuJiZhongFangKuaiShiProcedure { - public static void execute(LevelAccessor world, Entity immediatesourceentity) { - if (immediatesourceentity == null) - return; - if (immediatesourceentity.getPersistentData().getDouble("time") > 0) { - if (world instanceof Level _level && !_level.isClientSide()) - _level.explode(immediatesourceentity, (immediatesourceentity.getX()), (immediatesourceentity.getY()), (immediatesourceentity.getZ()), 6, Level.ExplosionInteraction.NONE); - if (world instanceof ServerLevel _level) - _level.getServer().getCommands().performPrefixedCommand( - new CommandSourceStack(CommandSource.NULL, new Vec3((immediatesourceentity.getX()), (immediatesourceentity.getY()), (immediatesourceentity.getZ())), Vec2.ZERO, _level, 4, "", Component.literal(""), _level.getServer(), null) - .withSuppressedOutput(), - "target:mediumexp"); - if (!immediatesourceentity.level().isClientSide()) - immediatesourceentity.discard(); - } - } -} diff --git a/src/main/java/net/mcreator/target/procedures/RpgWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java b/src/main/java/net/mcreator/target/procedures/RpgWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java index 568fcc2cf..f35e09a8c 100644 --- a/src/main/java/net/mcreator/target/procedures/RpgWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java +++ b/src/main/java/net/mcreator/target/procedures/RpgWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java @@ -3,6 +3,7 @@ package net.mcreator.target.procedures; import net.mcreator.target.init.TargetModItems; import net.minecraft.commands.CommandSource; import net.minecraft.commands.CommandSourceStack; +import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; @@ -11,50 +12,43 @@ import net.minecraft.world.item.ItemStack; public class RpgWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure { public static void execute(Entity entity, ItemStack itemstack) { - if (entity == null) - return; - double ammo1 = 0; - double id = 0; - id = itemstack.getOrCreateTag().getDouble("id"); - ammo1 = 1 - itemstack.getOrCreateTag().getDouble("ammo"); - if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") != itemstack.getOrCreateTag().getDouble("id")) { - itemstack.getOrCreateTag().putDouble("emptyreload", 0); - itemstack.getOrCreateTag().putDouble("reloading", 0); - itemstack.getOrCreateTag().putDouble("reloadtime", 0); + if (entity == null) return; + CompoundTag tag = itemstack.getOrCreateTag(); + double id = tag.getDouble("id"); + if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") != tag.getDouble("id")) { + tag.putDouble("emptyreload", 0); + tag.putDouble("reloading", 0); + tag.putDouble("reloadtime", 0); } - if (itemstack.getOrCreateTag().getDouble("reloading") == 1) { - if (itemstack.getOrCreateTag().getDouble("reloadtime") == 91) { + if (tag.getDouble("reloading") == 1) { + if (tag.getDouble("reloadtime") == 91) { entity.getPersistentData().putDouble("id", id); - { - Entity _ent = entity; - if (!_ent.level().isClientSide() && _ent.getServer() != null) { - _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4, - _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:rpg_reload player @s ~ ~ ~ 100 1"); - } + if (entity.getServer() != null) { + entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), entity.level() instanceof ServerLevel ? (ServerLevel) entity.level() : null, 4, + entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:rpg_reload player @s ~ ~ ~ 100 1"); } } if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == itemstack.getItem() && (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") == id) { - if (itemstack.getOrCreateTag().getDouble("reloadtime") > 0) { - itemstack.getOrCreateTag().putDouble("reloadtime", (itemstack.getOrCreateTag().getDouble("reloadtime") - 1)); + if (tag.getDouble("reloadtime") > 0) { + tag.putDouble("reloadtime", (tag.getDouble("reloadtime") - 1)); } } else { - itemstack.getOrCreateTag().putDouble("reloading", 0); - itemstack.getOrCreateTag().putDouble("reloadtime", 0); - itemstack.getOrCreateTag().putDouble("emptyreload", 0); + tag.putDouble("reloading", 0); + tag.putDouble("reloadtime", 0); + tag.putDouble("emptyreload", 0); } - if (itemstack.getOrCreateTag().getDouble("reloadtime") == 84) { - itemstack.getOrCreateTag().putDouble("empty", 0); + if (tag.getDouble("reloadtime") == 84) { + tag.putDouble("empty", 0); } - if (itemstack.getOrCreateTag().getDouble("reloadtime") == 1 && (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") == id) { - if (itemstack.getOrCreateTag().getDouble("maxammo") >= 0) { - itemstack.getOrCreateTag().putDouble("ammo", 1); + if (tag.getDouble("reloadtime") == 1 && (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") == id) { + if (tag.getDouble("maxammo") >= 0) { + tag.putDouble("ammo", 1); if (entity instanceof Player _player) { - ItemStack _stktoremove = new ItemStack(TargetModItems.ROCKET.get()); - _player.getInventory().clearOrCountMatchingItems(p -> _stktoremove.getItem() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); + _player.getInventory().clearOrCountMatchingItems(p -> TargetModItems.ROCKET.get() == p.getItem(), 1, _player.inventoryMenu.getCraftSlots()); } - itemstack.getOrCreateTag().putDouble("reloading", 0); - itemstack.getOrCreateTag().putDouble("emptyreload", 0); + tag.putDouble("reloading", 0); + tag.putDouble("emptyreload", 0); } } } diff --git a/src/main/java/net/mcreator/target/procedures/RpgfireProcedure.java b/src/main/java/net/mcreator/target/procedures/RpgfireProcedure.java deleted file mode 100644 index adcc485de..000000000 --- a/src/main/java/net/mcreator/target/procedures/RpgfireProcedure.java +++ /dev/null @@ -1,77 +0,0 @@ -package net.mcreator.target.procedures; - -import net.mcreator.target.entity.RpgRocketEntity; -import net.mcreator.target.init.TargetModAttributes; -import net.mcreator.target.init.TargetModEntities; -import net.mcreator.target.init.TargetModItems; -import net.mcreator.target.network.TargetModVariables; -import net.minecraft.commands.CommandSource; -import net.minecraft.commands.CommandSourceStack; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.entity.projectile.AbstractArrow; -import net.minecraft.world.entity.projectile.Projectile; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; - -public class RpgfireProcedure { - public static void execute(Entity entity) { - if (entity == null) return; - if (entity instanceof Player player && !player.isSpectator()) { - ItemStack usehand = player.getMainHandItem(); - if (usehand.getItem() == TargetModItems.RPG.get() && usehand.getOrCreateTag().getDouble("reloading") == 0 && !(entity instanceof Player _plrCldCheck4 && _plrCldCheck4.getCooldowns().isOnCooldown(usehand.getItem())) - && usehand.getOrCreateTag().getDouble("ammo") > 0) { - entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.recoilhorizon = Math.random() < 0.5 ? -1 : 1; - capability.recoil = 0.1; - capability.firing = 1; - capability.syncPlayerVariables(entity); - }); - - Level projectileLevel = entity.level(); - if (!projectileLevel.isClientSide()) { - Projectile _entityToSpawn = new Object() { - public Projectile getArrow(Level level, Entity shooter, float damage, int knockback) { - AbstractArrow entityToSpawn = new RpgRocketEntity(TargetModEntities.RPG_ROCKET.get(), level); - entityToSpawn.setOwner(shooter); - entityToSpawn.setBaseDamage(damage); - entityToSpawn.setKnockback(knockback); - entityToSpawn.setSilent(true); - return entityToSpawn; - } - }.getArrow(projectileLevel, entity, (float) ((usehand.getOrCreateTag().getDouble("damage") / usehand.getOrCreateTag().getDouble("velocity")) * (1 + 0.05 * usehand.getOrCreateTag().getDouble("level"))), 0); - _entityToSpawn.setPos(entity.getX(), entity.getEyeY() - 0.1, entity.getZ()); - _entityToSpawn.shoot(entity.getLookAngle().x, entity.getLookAngle().y, entity.getLookAngle().z, (float) usehand.getOrCreateTag().getDouble("velocity"), - (float) ((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue()); - projectileLevel.addFreshEntity(_entityToSpawn); - } - - if (!entity.level().isClientSide() && entity.getServer() != null) { - entity.getServer().getCommands().performPrefixedCommand( - new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), entity.level() instanceof ServerLevel ? (ServerLevel) entity.level() : null, 4, entity.getName().getString(), entity.getDisplayName(), - entity.level().getServer(), entity), - ("particle minecraft:cloud" + (" " + (entity.getX() + 1.8 * entity.getLookAngle().x)) + (" " + (entity.getY() + entity.getBbHeight() - 0.1 + 1.8 * entity.getLookAngle().y)) - + (" " + (entity.getZ() + 1.8 * entity.getLookAngle().z)) + " 0.4 0.4 0.4 0.005 30 force @s")); - } - if (usehand.getOrCreateTag().getDouble("ammo") == 1) { - usehand.getOrCreateTag().putDouble("empty", 1); - } - player.getCooldowns().addCooldown(usehand.getItem(), 10); - if (!entity.level().isClientSide() && entity.getServer() != null) { - entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), entity.level() instanceof ServerLevel ? (ServerLevel) entity.level() : null, 4, - entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:rpg_fire_1p player @s ~ ~ ~ 2 1"); - entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), entity.level() instanceof ServerLevel ? (ServerLevel) entity.level() : null, 4, - entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:rpg_fire_3p player @a ~ ~ ~ 4 1"); - entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), entity.level() instanceof ServerLevel ? (ServerLevel) entity.level() : null, 4, - entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:rpg_far player @a ~ ~ ~ 8 1"); - entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), entity.level() instanceof ServerLevel ? (ServerLevel) entity.level() : null, 4, - entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:rpg_veryfar player @a ~ ~ ~ 16 1"); - } - usehand.getOrCreateTag().putDouble("fireanim", 2); - usehand.getOrCreateTag().putDouble("ammo", (usehand.getOrCreateTag().getDouble("ammo") - 1)); - } - } - } -} diff --git a/src/main/java/net/mcreator/target/procedures/RpkWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java b/src/main/java/net/mcreator/target/procedures/RpkWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java index e1c65b4d0..2ec7aa24d 100644 --- a/src/main/java/net/mcreator/target/procedures/RpkWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java +++ b/src/main/java/net/mcreator/target/procedures/RpkWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure.java @@ -9,10 +9,8 @@ import net.minecraft.world.item.ItemStack; public class RpkWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure { public static void execute(Entity entity, ItemStack itemstack) { - if (entity == null) - return; - double id = 0; - id = itemstack.getOrCreateTag().getDouble("id"); + if (entity == null) return; + double id = itemstack.getOrCreateTag().getDouble("id"); if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getOrCreateTag().getDouble("id") != itemstack.getOrCreateTag().getDouble("id")) { itemstack.getOrCreateTag().putDouble("emptyreload", 0); itemstack.getOrCreateTag().putDouble("reloading", 0); @@ -21,12 +19,9 @@ public class RpkWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure { if (itemstack.getOrCreateTag().getDouble("reloading") == 1 && itemstack.getOrCreateTag().getDouble("ammo") == 0) { if (itemstack.getOrCreateTag().getDouble("reloadtime") == 57) { entity.getPersistentData().putDouble("id", id); - { - Entity _ent = entity; - if (!_ent.level().isClientSide() && _ent.getServer() != null) { - _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4, - _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:rpk_reload_empty player @s ~ ~ ~ 100 1"); - } + if (!entity.level().isClientSide() && entity.getServer() != null) { + entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), entity.level() instanceof ServerLevel ? (ServerLevel) entity.level() : null, 4, + entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:rpk_reload_empty player @s ~ ~ ~ 100 1"); } } if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == itemstack.getItem() @@ -45,12 +40,9 @@ public class RpkWuPinZaiBeiBaoZhongShiMeiKeFaShengProcedure { } else if (itemstack.getOrCreateTag().getDouble("reloading") == 1 && itemstack.getOrCreateTag().getDouble("ammo") > 0) { if (itemstack.getOrCreateTag().getDouble("reloadtime") == 41) { entity.getPersistentData().putDouble("id", id); - { - Entity _ent = entity; - if (!_ent.level().isClientSide() && _ent.getServer() != null) { - _ent.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, _ent.position(), _ent.getRotationVector(), _ent.level() instanceof ServerLevel ? (ServerLevel) _ent.level() : null, 4, - _ent.getName().getString(), _ent.getDisplayName(), _ent.level().getServer(), _ent), "playsound target:rpk_reload_normal player @s ~ ~ ~ 100 1"); - } + if (!entity.level().isClientSide() && entity.getServer() != null) { + entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), entity.level() instanceof ServerLevel ? (ServerLevel) entity.level() : null, 4, + entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:rpk_reload_normal player @s ~ ~ ~ 100 1"); } } if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == itemstack.getItem() diff --git a/src/main/java/net/mcreator/target/procedures/WeaponDrawProcedure.java b/src/main/java/net/mcreator/target/procedures/WeaponDrawProcedure.java index ae7315d8a..c8d16e3aa 100644 --- a/src/main/java/net/mcreator/target/procedures/WeaponDrawProcedure.java +++ b/src/main/java/net/mcreator/target/procedures/WeaponDrawProcedure.java @@ -2,49 +2,48 @@ package net.mcreator.target.procedures; import net.mcreator.target.init.TargetModItems; import net.mcreator.target.network.TargetModVariables; +import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; public class WeaponDrawProcedure { - public static void execute(Entity entity, ItemStack itemstack) { - if (entity == null) - return; - ItemStack stack = ItemStack.EMPTY; - if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == itemstack.getItem()) { - if (itemstack.getOrCreateTag().getDouble("draw") < 2) { - itemstack.getOrCreateTag().putDouble("draw", (itemstack.getOrCreateTag().getDouble("draw") + 1)); + public static void execute(Entity entity, ItemStack itemStack) { + if (entity == null) return; + CompoundTag tag = itemStack.getOrCreateTag(); + Item mainHandItem = (entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem(); + if (mainHandItem == itemStack.getItem()) { + if (tag.getDouble("draw") < 2) { + tag.putDouble("draw", (tag.getDouble("draw") + 1)); } } else { - itemstack.getOrCreateTag().putDouble("draw", 0); + tag.putDouble("draw", 0); } - if (itemstack.getOrCreateTag().getDouble("draw") == 1) { - { - boolean _setval = false; - entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { - capability.zooming = _setval; - capability.syncPlayerVariables(entity); - }); - } + if (tag.getDouble("draw") == 1) { + entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { + capability.zooming = false; + capability.syncPlayerVariables(entity); + }); if (entity instanceof Player _player) - _player.getCooldowns().addCooldown(itemstack.getItem(), 16); - if (itemstack.getItem() == TargetModItems.RPG.get() && itemstack.getOrCreateTag().getDouble("ammo") == 0) { - itemstack.getOrCreateTag().putDouble("empty", 1); + _player.getCooldowns().addCooldown(itemStack.getItem(), 16); + if (itemStack.getItem() == TargetModItems.RPG.get() && tag.getDouble("ammo") == 0) { + tag.putDouble("empty", 1); } - if (itemstack.getItem() == TargetModItems.SKS.get() && itemstack.getOrCreateTag().getDouble("ammo") == 0) { - itemstack.getOrCreateTag().putDouble("gj", 1); + if (itemStack.getItem() == TargetModItems.SKS.get() && tag.getDouble("ammo") == 0) { + tag.putDouble("gj", 1); } } - if ((entity instanceof LivingEntity _livEnt ? _livEnt.getMainHandItem() : ItemStack.EMPTY).getItem() == itemstack.getItem()) { - if (itemstack.getOrCreateTag().getDouble("drawtime") < 16) { - itemstack.getOrCreateTag().putDouble("drawtime", (itemstack.getOrCreateTag().getDouble("drawtime") + 1)); + if (mainHandItem == itemStack.getItem()) { + if (tag.getDouble("drawtime") < 16) { + tag.putDouble("drawtime", (tag.getDouble("drawtime") + 1)); } } else { - itemstack.getOrCreateTag().putDouble("drawtime", 0); + tag.putDouble("drawtime", 0); } - if (itemstack.getOrCreateTag().getDouble("fireanim") > 0) { - itemstack.getOrCreateTag().putDouble("fireanim", (itemstack.getOrCreateTag().getDouble("fireanim") - 1)); + if (tag.getDouble("fireanim") > 0) { + tag.putDouble("fireanim", (tag.getDouble("fireanim") - 1)); } } }