diff --git a/src/main/java/net/mcreator/target/client/layer/TaserLayer.java b/src/main/java/net/mcreator/target/client/layer/TaserLayer.java new file mode 100644 index 000000000..388075b4d --- /dev/null +++ b/src/main/java/net/mcreator/target/client/layer/TaserLayer.java @@ -0,0 +1,28 @@ +package net.mcreator.target.client.layer; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.mcreator.target.item.gun.Taser; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public class TaserLayer extends GeoRenderLayer { + private static final ResourceLocation LAYER = new ResourceLocation("target", "textures/item/tasergun_e.png"); + + public TaserLayer(GeoRenderer itemGeoRenderer) { + super(itemGeoRenderer); + } + + @Override + public void render(PoseStack poseStack, Taser animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int light, int packedOverlay) { + + RenderType glowRenderType = RenderType.entityTranslucent(LAYER); + getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, 255, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1); + } +} diff --git a/src/main/java/net/mcreator/target/client/model/item/TaserItemModel.java b/src/main/java/net/mcreator/target/client/model/item/TaserItemModel.java index ecc4e1981..126cf7d50 100644 --- a/src/main/java/net/mcreator/target/client/model/item/TaserItemModel.java +++ b/src/main/java/net/mcreator/target/client/model/item/TaserItemModel.java @@ -1,16 +1,19 @@ package net.mcreator.target.client.model.item; import net.mcreator.target.item.gun.Taser; -import net.mcreator.target.network.TargetModVariables; +import net.mcreator.target.tools.ItemNBTTool; import net.minecraft.client.Minecraft; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.Mth; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import software.bernie.geckolib.core.animatable.model.CoreGeoBone; import software.bernie.geckolib.core.animation.AnimationState; import software.bernie.geckolib.model.GeoModel; public class TaserItemModel extends GeoModel { + + public static final String TAG_POWER = "Power"; @Override public ResourceLocation getAnimationResource(Taser animatable) { return new ResourceLocation("target", "animations/taser.animation.json"); @@ -30,9 +33,25 @@ public class TaserItemModel extends GeoModel { public void setCustomAnimations(Taser animatable, long instanceId, AnimationState animationState) { CoreGeoBone gun = getAnimationProcessor().getBone("bone"); CoreGeoBone shen = getAnimationProcessor().getBone("shen"); + CoreGeoBone bar = getAnimationProcessor().getBone("bar"); + CoreGeoBone bar2 = getAnimationProcessor().getBone("bar2"); + CoreGeoBone screen = getAnimationProcessor().getBone("screen"); + CoreGeoBone screen2 = getAnimationProcessor().getBone("screen2"); Player player = Minecraft.getInstance().player; + ItemStack stack = player.getMainHandItem(); + bar.setScaleX((float) ItemNBTTool.getInt(stack, TAG_POWER, 1200) / 1200); + bar2.setScaleX((float) ItemNBTTool.getInt(stack, TAG_POWER, 1200) / 1200); + + if (ItemNBTTool.getInt(stack, TAG_POWER, 1200) >= 400) { + screen.setHidden(false); + screen2.setHidden(true); + } else { + screen.setHidden(true); + screen2.setHidden(false); + } + double fp = player.getPersistentData().getDouble("fire_pos"); double fr = player.getPersistentData().getDouble("fire_rot"); diff --git a/src/main/java/net/mcreator/target/client/renderer/item/TaserItemRenderer.java b/src/main/java/net/mcreator/target/client/renderer/item/TaserItemRenderer.java index 2671b7c73..ec88ec790 100644 --- a/src/main/java/net/mcreator/target/client/renderer/item/TaserItemRenderer.java +++ b/src/main/java/net/mcreator/target/client/renderer/item/TaserItemRenderer.java @@ -1,5 +1,6 @@ package net.mcreator.target.client.renderer.item; +import net.mcreator.target.client.layer.TaserLayer; import net.mcreator.target.item.gun.Taser; import net.mcreator.target.client.model.item.TaserItemModel; import net.minecraft.resources.ResourceLocation; @@ -8,6 +9,7 @@ import software.bernie.geckolib.renderer.GeoItemRenderer; public class TaserItemRenderer extends GeoItemRenderer { public TaserItemRenderer() { super(new TaserItemModel()); + this.addRenderLayer(new TaserLayer(this)); } @Override diff --git a/src/main/java/net/mcreator/target/enchantment/LongerWireEnchantment.java b/src/main/java/net/mcreator/target/enchantment/LongerWireEnchantment.java new file mode 100644 index 000000000..1365e3fa8 --- /dev/null +++ b/src/main/java/net/mcreator/target/enchantment/LongerWireEnchantment.java @@ -0,0 +1,35 @@ + +package net.mcreator.target.enchantment; + +import net.mcreator.target.init.TargetModItems; +import net.mcreator.target.tools.EnchantmentCategoryTool; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.enchantment.Enchantment; + +public class LongerWireEnchantment extends Enchantment { + public LongerWireEnchantment(EquipmentSlot... slots) { + super(Rarity.UNCOMMON, EnchantmentCategoryTool.TASER, slots); + } + + @Override + public int getMinCost(int pLevel) { + return 8 + 6 * pLevel; + } + + @Override + public int getMaxCost(int pLevel) { + return super.getMaxCost(pLevel) + 20; + } + + @Override + public int getMaxLevel() { + return 5; + } + + @Override + public boolean canApplyAtEnchantingTable(ItemStack itemstack) { + return Ingredient.of(new ItemStack(TargetModItems.TASER.get())).test(itemstack); + } +} diff --git a/src/main/java/net/mcreator/target/enchantment/SuperRechargeEnchantment.java b/src/main/java/net/mcreator/target/enchantment/SuperRechargeEnchantment.java new file mode 100644 index 000000000..bab7625fc --- /dev/null +++ b/src/main/java/net/mcreator/target/enchantment/SuperRechargeEnchantment.java @@ -0,0 +1,35 @@ + +package net.mcreator.target.enchantment; + +import net.mcreator.target.init.TargetModItems; +import net.mcreator.target.tools.EnchantmentCategoryTool; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.enchantment.Enchantment; + +public class SuperRechargeEnchantment extends Enchantment { + public SuperRechargeEnchantment(EquipmentSlot... slots) { + super(Rarity.UNCOMMON, EnchantmentCategoryTool.TASER, slots); + } + + @Override + public int getMinCost(int pLevel) { + return 10 + 5 * pLevel; + } + + @Override + public int getMaxCost(int pLevel) { + return super.getMaxCost(pLevel) + 25; + } + + @Override + public int getMaxLevel() { + return 3; + } + + @Override + public boolean canApplyAtEnchantingTable(ItemStack itemstack) { + return Ingredient.of(new ItemStack(TargetModItems.TASER.get())).test(itemstack); + } +} diff --git a/src/main/java/net/mcreator/target/entity/TaserBulletProjectileEntity.java b/src/main/java/net/mcreator/target/entity/TaserBulletProjectileEntity.java index 945d5b7be..6e2d18d73 100644 --- a/src/main/java/net/mcreator/target/entity/TaserBulletProjectileEntity.java +++ b/src/main/java/net/mcreator/target/entity/TaserBulletProjectileEntity.java @@ -30,11 +30,7 @@ import java.util.Optional; public class TaserBulletProjectileEntity extends ThrowableItemProjectile { private float damage = 1f; private int volt = 0; - - public TaserBulletProjectileEntity damage(float damage) { - this.damage = damage; - return this; - } + private int wire_length = 0; public TaserBulletProjectileEntity(EntityType type, Level world) { super(type, world); @@ -44,10 +40,11 @@ public class TaserBulletProjectileEntity extends ThrowableItemProjectile { super(type, entity, world); } - public TaserBulletProjectileEntity(LivingEntity entity, Level level, float damage, int volt) { + public TaserBulletProjectileEntity(LivingEntity entity, Level level, float damage, int volt, int wire_length) { super(TargetModEntities.TASER_BULLET_PROJECTILE.get(), entity, level); this.damage = damage; this.volt = volt; + this.wire_length = wire_length; } public TaserBulletProjectileEntity(PlayMessages.SpawnEntity packet, Level level) { @@ -130,7 +127,7 @@ public class TaserBulletProjectileEntity extends ThrowableItemProjectile { public void tick() { super.tick(); - if (this.tickCount == 5) { + if (this.tickCount == 5 + wire_length) { this.setDeltaMovement(new Vec3(0, 0, 0)); } @@ -142,8 +139,7 @@ public class TaserBulletProjectileEntity extends ThrowableItemProjectile { @Override protected void onHitBlock(BlockHitResult result) { if (!level().isClientSide) { - this.setDeltaMovement(this.getDeltaMovement().multiply(0, 0, 0)); - this.setNoGravity(true); + this.setDeltaMovement(new Vec3(0, 0, 0)); } } } diff --git a/src/main/java/net/mcreator/target/init/TargetModEnchantments.java b/src/main/java/net/mcreator/target/init/TargetModEnchantments.java index e77bf8ae3..b22ab8c81 100644 --- a/src/main/java/net/mcreator/target/init/TargetModEnchantments.java +++ b/src/main/java/net/mcreator/target/init/TargetModEnchantments.java @@ -1,6 +1,7 @@ package net.mcreator.target.init; +import net.mcreator.target.enchantment.LongerWireEnchantment; import net.minecraftforge.registries.RegistryObject; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.DeferredRegister; @@ -8,9 +9,12 @@ import net.minecraftforge.registries.DeferredRegister; import net.minecraft.world.item.enchantment.Enchantment; import net.mcreator.target.enchantment.VoltOverloadEnchantment; +import net.mcreator.target.enchantment.SuperRechargeEnchantment; import net.mcreator.target.TargetMod; public class TargetModEnchantments { public static final DeferredRegister REGISTRY = DeferredRegister.create(ForgeRegistries.ENCHANTMENTS, TargetMod.MODID); public static final RegistryObject VOLT_OVERLOAD = REGISTRY.register("volt_overload", () -> new VoltOverloadEnchantment()); + public static final RegistryObject SUPER_RECHARGE = REGISTRY.register("super_recharge", () -> new SuperRechargeEnchantment()); + public static final RegistryObject LONGER_WIRE = REGISTRY.register("longer_wire", () -> new LongerWireEnchantment()); } diff --git a/src/main/java/net/mcreator/target/item/gun/Taser.java b/src/main/java/net/mcreator/target/item/gun/Taser.java index 4f16f9928..1d5948919 100644 --- a/src/main/java/net/mcreator/target/item/gun/Taser.java +++ b/src/main/java/net/mcreator/target/item/gun/Taser.java @@ -4,13 +4,11 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import net.mcreator.target.TargetMod; import net.mcreator.target.client.renderer.item.TaserItemRenderer; +import net.mcreator.target.init.TargetModEnchantments; import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModSounds; import net.mcreator.target.item.AnimatedItem; -import net.mcreator.target.tools.EnchantmentCategoryTool; -import net.mcreator.target.tools.GunsTool; -import net.mcreator.target.tools.SoundTool; -import net.mcreator.target.tools.TooltipTool; +import net.mcreator.target.tools.*; import net.minecraft.client.Minecraft; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.player.LocalPlayer; @@ -18,6 +16,7 @@ import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; @@ -28,6 +27,7 @@ import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.*; import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.level.Level; import net.minecraftforge.client.extensions.common.IClientItemExtensions; import software.bernie.geckolib.animatable.GeoItem; @@ -48,11 +48,27 @@ public class Taser extends GunItem implements GeoItem, AnimatedItem { private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public String animationProcedure = "empty"; public static ItemDisplayContext transformType; + public static final String TAG_POWER = "Power"; + public static final int MAX_POWER_SIZE = 1200; public Taser() { super(new Item.Properties().stacksTo(1).rarity(Rarity.COMMON)); } + @Override + public boolean isBarVisible(ItemStack pStack) { + return ItemNBTTool.getInt(pStack, TAG_POWER, 1200) != 1200; + } + + @Override + public int getBarWidth(ItemStack pStack) { + return Math.round((float) ItemNBTTool.getInt(pStack, TAG_POWER, 1200) * 13.0F / 1200F); + } + + @Override + public int getBarColor(ItemStack pStack) { + return 0xFFFF00; + } @Override public Set getReloadSound() { @@ -217,6 +233,11 @@ public class Taser extends GunItem implements GeoItem, AnimatedItem { } } } + int charge_speed = EnchantmentHelper.getTagEnchantmentLevel(TargetModEnchantments.SUPER_RECHARGE.get(), stack); + + if (ItemNBTTool.getInt(stack, TAG_POWER, 1200) < 1200) { + ItemNBTTool.setInt(stack, TAG_POWER, Mth.clamp(ItemNBTTool.getInt(stack, TAG_POWER, 1200) + 1 + charge_speed,0,1200)); + } } protected static boolean check(ItemStack stack) { @@ -246,7 +267,7 @@ public class Taser extends GunItem implements GeoItem, AnimatedItem { @Override public int getEnchantmentValue(ItemStack stack) { - return 15; + return 10; } @Override diff --git a/src/main/java/net/mcreator/target/procedures/TaserfireProcedure.java b/src/main/java/net/mcreator/target/procedures/TaserfireProcedure.java index 3c3ea1167..a2ec81e8a 100644 --- a/src/main/java/net/mcreator/target/procedures/TaserfireProcedure.java +++ b/src/main/java/net/mcreator/target/procedures/TaserfireProcedure.java @@ -6,6 +6,7 @@ import net.mcreator.target.init.TargetModEnchantments; import net.mcreator.target.init.TargetModItems; import net.mcreator.target.init.TargetModSounds; import net.mcreator.target.network.TargetModVariables; +import net.mcreator.target.tools.ItemNBTTool; import net.mcreator.target.tools.SoundTool; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundSource; @@ -18,13 +19,14 @@ import net.minecraft.world.level.Level; // TODO 内联这个类 public class TaserfireProcedure { + public static final String TAG_POWER = "Power"; public static void execute(Entity entity) { if (entity == null) return; if (entity instanceof Player player && !player.isSpectator()) { ItemStack stack = player.getMainHandItem(); if (stack.getItem() == TargetModItems.TASER.get() && !stack.getOrCreateTag().getBoolean("reloading")) { Player _plrCldCheck4 = (Player) entity; - if (!_plrCldCheck4.getCooldowns().isOnCooldown(stack.getItem()) && stack.getOrCreateTag().getInt("ammo") > 0) { + if (!_plrCldCheck4.getCooldowns().isOnCooldown(stack.getItem()) && stack.getOrCreateTag().getInt("ammo") > 0 && ItemNBTTool.getInt(stack, TAG_POWER, 1200) > 400) { entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { capability.recoilHorizon = Math.random() < 0.5 ? -1 : 1; @@ -40,10 +42,11 @@ public class TaserfireProcedure { } int volt = EnchantmentHelper.getTagEnchantmentLevel(TargetModEnchantments.VOLT_OVERLOAD.get(), stack); + int wire_length = EnchantmentHelper.getTagEnchantmentLevel(TargetModEnchantments.LONGER_WIRE.get(), stack); Level level = entity.level(); if (!level.isClientSide()) { - TaserBulletProjectileEntity taserBulletProjectile = new TaserBulletProjectileEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage"), volt); + TaserBulletProjectileEntity taserBulletProjectile = new TaserBulletProjectileEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage"), volt, wire_length); taserBulletProjectile.setPos(entity.getX(), entity.getEyeY() - 0.1, entity.getZ()); taserBulletProjectile.shoot(entity.getLookAngle().x, entity.getLookAngle().y, entity.getLookAngle().z, (float) stack.getOrCreateTag().getDouble("velocity"), @@ -52,6 +55,7 @@ public class TaserfireProcedure { } stack.getOrCreateTag().putInt("fire_animation", 4); stack.getOrCreateTag().putInt("ammo", (stack.getOrCreateTag().getInt("ammo") - 1)); + ItemNBTTool.setInt(stack, TAG_POWER, ItemNBTTool.getInt(stack, TAG_POWER, 1200) - 400); } } } diff --git a/src/main/resources/assets/target/geo/taser.geo.json b/src/main/resources/assets/target/geo/taser.geo.json index 39070079b..5fd552e7d 100644 --- a/src/main/resources/assets/target/geo/taser.geo.json +++ b/src/main/resources/assets/target/geo/taser.geo.json @@ -209,6 +209,398 @@ "parent": "0", "pivot": [-0.00238, 0.35352, 0.03753] }, + { + "name": "screen", + "parent": "gun", + "pivot": [-0.01562, 0, 0], + "rotation": [22.5, 0, 0] + }, + { + "name": "bar", + "parent": "screen", + "pivot": [0.41875, 1.16114, 3.80684], + "cubes": [ + { + "origin": [-0.43432, -0.28538, 3.21677], + "size": [0.8687, 0.5, 0.00781], + "uv": { + "north": {"uv": [1.25, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [1.25, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [1.25, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [1.25, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [2.25, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [2.25, 24], "uv_size": [-1, -0.75]} + } + } + ] + }, + { + "name": "cover", + "parent": "screen", + "pivot": [-0.01562, 1.11614, 2.90465], + "cubes": [ + { + "origin": [-0.48437, 0.18212, 3.22067], + "size": [0.96875, 0.1325, 0.00781], + "uv": { + "north": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [1, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [1, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.58007, 0.01476, 3.22067], + "size": [0.92969, 0.14031, 0.00781], + "pivot": [-0.09569, -0.25024, 3.22849], + "rotation": [0, 0, 22.5], + "uv": { + "north": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [1, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [1, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.24804, 0.15507, 3.22067], + "size": [0.54297, 0.13672, 0.00781], + "pivot": [-0.09569, -0.25024, 3.22849], + "rotation": [0, 0, 22.5], + "uv": { + "north": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [1, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [1, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [0.07618, 0.29179, 3.22067], + "size": [0.17188, 0.05859, 0.00781], + "pivot": [-0.09569, -0.25024, 3.22849], + "rotation": [0, 0, 22.5], + "uv": { + "north": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [1, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [1, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, -0.50562, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [1, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [1, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, -0.35562, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [1, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [1, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, -0.20562, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [1, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [1, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, -0.05562, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [1, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [1, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, 0.09438, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [1, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [1, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, 0.24438, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [1, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [1, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, 0.39438, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [1, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [1, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.48437, -0.35538, 3.22067], + "size": [0.96875, 0.07, 0.00781], + "uv": { + "north": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [0, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [1, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [1, 24], "uv_size": [-1, -0.75]} + } + } + ] + }, + { + "name": "screen2", + "parent": "gun", + "pivot": [-0.01562, 0, 0], + "rotation": [22.5, 0, 0] + }, + { + "name": "bar2", + "parent": "screen2", + "pivot": [0.41875, 1.16114, 3.80684], + "cubes": [ + { + "origin": [-0.43432, -0.28538, 3.21677], + "size": [0.8687, 0.5, 0.00781], + "uv": { + "north": {"uv": [3.75, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [3.75, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [3.75, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [3.75, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [4.75, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [4.75, 24], "uv_size": [-1, -0.75]} + } + } + ] + }, + { + "name": "cover2", + "parent": "screen2", + "pivot": [-0.01562, 1.11614, 2.90465], + "cubes": [ + { + "origin": [-0.48437, 0.18212, 3.22067], + "size": [0.96875, 0.1325, 0.00781], + "uv": { + "north": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [3.5, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [3.5, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.58007, 0.01476, 3.22067], + "size": [0.92969, 0.14031, 0.00781], + "pivot": [-0.09569, -0.25024, 3.22849], + "rotation": [0, 0, 22.5], + "uv": { + "north": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [3.5, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [3.5, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.24804, 0.15507, 3.22067], + "size": [0.54297, 0.13672, 0.00781], + "pivot": [-0.09569, -0.25024, 3.22849], + "rotation": [0, 0, 22.5], + "uv": { + "north": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [3.5, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [3.5, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [0.07618, 0.29179, 3.22067], + "size": [0.17188, 0.05859, 0.00781], + "pivot": [-0.09569, -0.25024, 3.22849], + "rotation": [0, 0, 22.5], + "uv": { + "north": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [3.5, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [3.5, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, -0.50562, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [3.5, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [3.5, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, -0.35562, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [3.5, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [3.5, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, -0.20562, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [3.5, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [3.5, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, -0.05562, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [3.5, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [3.5, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, 0.09438, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [3.5, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [3.5, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, 0.24438, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [3.5, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [3.5, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.26523, 0.39438, 3.22067], + "size": [0.46797, 0.07, 0.00781], + "pivot": [0, -0.02062, 3.22458], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [3.5, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [3.5, 24], "uv_size": [-1, -0.75]} + } + }, + { + "origin": [-0.48437, -0.35538, 3.22067], + "size": [0.96875, 0.07, 0.00781], + "uv": { + "north": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "east": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "south": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "west": {"uv": [2.5, 23.25], "uv_size": [1, 0.75]}, + "up": {"uv": [3.5, 24], "uv_size": [-1, -0.75]}, + "down": {"uv": [3.5, 24], "uv_size": [-1, -0.75]} + } + } + ] + }, { "name": "bone2", "parent": "gun", @@ -391,9 +783,9 @@ } }, { - "origin": [-0.5, 0.84114, 2.60465], - "size": [1, 0.67, 0.41], - "pivot": [0, 1.11614, 2.90465], + "origin": [-0.52344, 0.76912, 2.58967], + "size": [1.04688, 0.72859, 0.41], + "pivot": [0, 1.13341, 2.79467], "rotation": [22.5, 0, 0], "uv": { "north": {"uv": [14, 15], "uv_size": [1, 0.75]}, diff --git a/src/main/resources/assets/target/lang/en_us.json b/src/main/resources/assets/target/lang/en_us.json index ec535767d..7d5aab82e 100644 --- a/src/main/resources/assets/target/lang/en_us.json +++ b/src/main/resources/assets/target/lang/en_us.json @@ -203,8 +203,12 @@ "item.minecraft.splash_potion.effect.target_long_shock": "Splash Potion of Shock", "item.minecraft.lingering_potion.effect.target_long_shock": "Lingering Potion of Shock", - "enchantment.target.volt_overload": "Volt Overload ", + "enchantment.target.volt_overload": "Volt Overload", "enchantment.target.volt_overload.desc": "Increases the shock damage of TaserGun", + "enchantment.target.super_recharge": "Super Recharge", + "enchantment.target.super_recharge.desc": "Increases the recharge speed of TaserGun", + "enchantment.target.longer_wire": "Longer Wire", + "enchantment.target.longer_wire.desc": "Increases the range of TaserGun", "des.target.sensitivity": "Current Sensitivity of This Gun: %1$s", diff --git a/src/main/resources/assets/target/lang/zh_cn.json b/src/main/resources/assets/target/lang/zh_cn.json index 446fb5b0e..ca995e621 100644 --- a/src/main/resources/assets/target/lang/zh_cn.json +++ b/src/main/resources/assets/target/lang/zh_cn.json @@ -205,6 +205,10 @@ "enchantment.target.volt_overload": "电压过载", "enchantment.target.volt_overload.desc": "增加泰瑟枪电击的伤害", + "enchantment.target.super_recharge": "超级快充", + "enchantment.target.super_recharge.desc": "增加泰瑟枪充能的速度", + "enchantment.target.longer_wire": "延长导线", + "enchantment.target.longer_wire.desc": "增加泰瑟枪的射程", "des.target.sensitivity": "当前枪械的灵敏度为:%1$s", diff --git a/src/main/resources/assets/target/textures/item/tasergun.png b/src/main/resources/assets/target/textures/item/tasergun.png index 0c5b272fb..80f1a45d0 100644 Binary files a/src/main/resources/assets/target/textures/item/tasergun.png and b/src/main/resources/assets/target/textures/item/tasergun.png differ diff --git a/src/main/resources/assets/target/textures/item/tasergun_e.png b/src/main/resources/assets/target/textures/item/tasergun_e.png new file mode 100644 index 000000000..22b9c5858 Binary files /dev/null and b/src/main/resources/assets/target/textures/item/tasergun_e.png differ diff --git a/src/main/resources/data/target/guns/taser.json b/src/main/resources/data/target/guns/taser.json index 50ade3525..a1edbb3a2 100644 --- a/src/main/resources/data/target/guns/taser.json +++ b/src/main/resources/data/target/guns/taser.json @@ -4,7 +4,7 @@ "recoil_y": 0.002, "zoom_speed": 2, "zoom": 1.25, - "damage": 5, + "damage": 7, "velocity": 3, "mag": 1, "weight": 0,