添加电压过载附魔

This commit is contained in:
Atsuihsio 2024-06-10 00:10:53 +08:00
parent 628388cf8f
commit b6dee62576
10 changed files with 110 additions and 8 deletions

View file

@ -9,8 +9,6 @@ import net.minecraft.world.item.Items;
import net.minecraft.world.item.alchemy.PotionUtils;
import net.minecraft.world.item.alchemy.Potions;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.FlowerPotBlock;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.brewing.BrewingRecipeRegistry;
import net.minecraftforge.event.TickEvent;
@ -51,6 +49,7 @@ public class TargetMod {
TargetModParticleTypes.REGISTRY.register(bus);
TargetModPotion.POTIONS.register(bus);
TargetModMenus.REGISTRY.register(bus);
TargetModEnchantments.REGISTRY.register(bus);
bus.addListener(this::onCommonSetup);

View file

@ -0,0 +1,36 @@
package net.mcreator.target.enchantment;
import net.mcreator.target.tools.EnchantmentCategoryTool;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.entity.EquipmentSlot;
import net.mcreator.target.init.TargetModItems;
public class VoltOverloadEnchantment extends Enchantment {
public VoltOverloadEnchantment(EquipmentSlot... slots) {
super(Enchantment.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);
}
}

View file

@ -28,7 +28,18 @@ import net.minecraftforge.network.PlayMessages;
import java.util.Optional;
public class TaserBulletProjectileEntity extends ThrowableItemProjectile {
private float damage = 5f;
private float damage = 1f;
private int volt = 0;
public TaserBulletProjectileEntity damage(float damage) {
this.damage = damage;
return this;
}
public TaserBulletProjectileEntity volt(int volt) {
this.volt = volt;
return this;
}
public TaserBulletProjectileEntity(EntityType<? extends TaserBulletProjectileEntity> type, Level world) {
super(type, world);
@ -38,9 +49,10 @@ public class TaserBulletProjectileEntity extends ThrowableItemProjectile {
super(type, entity, world);
}
public TaserBulletProjectileEntity(LivingEntity entity, Level level, float damage) {
public TaserBulletProjectileEntity(LivingEntity entity, Level level, float damage, int volt) {
super(TargetModEntities.TASER_BULLET_PROJECTILE.get(), entity, level);
this.damage = damage;
this.volt = volt;
}
public TaserBulletProjectileEntity(PlayMessages.SpawnEntity packet, Level level) {
@ -106,7 +118,7 @@ public class TaserBulletProjectileEntity extends ThrowableItemProjectile {
return;
}
if (!living.level().isClientSide()) {
living.addEffect(new MobEffectInstance(TargetModMobEffects.SHOCK.get(), 100, 0), this.getOwner());
living.addEffect(new MobEffectInstance(TargetModMobEffects.SHOCK.get(), 100, volt), this.getOwner());
}
}

View file

@ -0,0 +1,16 @@
package net.mcreator.target.init;
import net.minecraftforge.registries.RegistryObject;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraft.world.item.enchantment.Enchantment;
import net.mcreator.target.enchantment.VoltOverloadEnchantment;
import net.mcreator.target.TargetMod;
public class TargetModEnchantments {
public static final DeferredRegister<Enchantment> REGISTRY = DeferredRegister.create(ForgeRegistries.ENCHANTMENTS, TargetMod.MODID);
public static final RegistryObject<Enchantment> VOLT_OVERLOAD = REGISTRY.register("volt_overload", () -> new VoltOverloadEnchantment());
}

View file

@ -7,6 +7,7 @@ import net.mcreator.target.client.renderer.item.TaserItemRenderer;
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;
@ -26,6 +27,8 @@ 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.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.EnchantmentCategory;
import net.minecraft.world.level.Level;
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
import software.bernie.geckolib.animatable.GeoItem;
@ -241,4 +244,20 @@ public class Taser extends GunItem implements GeoItem, AnimatedItem {
public String getGunDisplayName() {
return "TASER";
}
@Override
public int getEnchantmentValue() {
return 15;
}
@Override
public boolean isEnchantable(ItemStack stack)
{
return true;
}
@Override
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
return enchantment.category == EnchantmentCategoryTool.TASER;
}
}

View file

@ -40,7 +40,7 @@ public class ShockMobEffect extends MobEffect {
attacker = entity.level().getEntity(entity.getPersistentData().getInt("TargetShockAttacker"));
}
entity.hurt(TargetModDamageTypes.causeShockDamage(entity.level().registryAccess(), attacker), 2 * (amplifier + 1));
entity.hurt(TargetModDamageTypes.causeShockDamage(entity.level().registryAccess(), attacker), 2 + (1.25f * amplifier));
entity.level().playSound(null, entity.getOnPos(), TargetModSounds.ELECTRIC.get(), SoundSource.PLAYERS, 1, 1);
if (attacker instanceof ServerPlayer player) {
@ -72,7 +72,7 @@ public class ShockMobEffect extends MobEffect {
}
living.hurt(TargetModDamageTypes.causeShockDamage(living.level().registryAccess(),
event.getEffectSource()), 2 * (instance.getAmplifier() + 1));
event.getEffectSource()), 2 + (1.25f * instance.getAmplifier()));
if (event.getEffectSource() instanceof LivingEntity source) {
living.getPersistentData().putInt("TargetShockAttacker", source.getId());

View file

@ -2,6 +2,7 @@ package net.mcreator.target.procedures;
import net.mcreator.target.entity.TaserBulletProjectileEntity;
import net.mcreator.target.init.TargetModAttributes;
import net.mcreator.target.init.TargetModEnchantments;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.init.TargetModSounds;
import net.mcreator.target.network.TargetModVariables;
@ -12,6 +13,8 @@ import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.Level;
// TODO 内联这个类
@ -37,9 +40,11 @@ public class TaserfireProcedure {
serverPlayer.level().playSound(null, serverPlayer.getOnPos(), TargetModSounds.TASER_FIRE_3P.get(), SoundSource.PLAYERS, 1, 1);
}
int volt = EnchantmentHelper.getItemEnchantmentLevel(TargetModEnchantments.VOLT_OVERLOAD.get(), stack);
Level level = entity.level();
if (!level.isClientSide()) {
TaserBulletProjectileEntity taserBulletProjectile = new TaserBulletProjectileEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage"));
TaserBulletProjectileEntity taserBulletProjectile = new TaserBulletProjectileEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage"), volt);
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"),

View file

@ -0,0 +1,9 @@
package net.mcreator.target.tools;
import net.mcreator.target.item.gun.Taser;
import net.minecraft.world.item.enchantment.EnchantmentCategory;
public class EnchantmentCategoryTool {
public static final EnchantmentCategory TASER = EnchantmentCategory.create("target:taser", item -> item instanceof Taser);
}

View file

@ -203,6 +203,9 @@
"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.desc": "Increases the shock damage of TaserGun",
"des.target.sensitivity": "Current Sensitivity of This Gun: %1$s",
"commands.ammo.get": "Current %s ammo: %s",

View file

@ -203,6 +203,9 @@
"item.minecraft.splash_potion.effect.target_long_shock": "喷溅型电击药水",
"item.minecraft.lingering_potion.effect.target_long_shock": "滞留型电击药水",
"enchantment.target.volt_overload": "电压过载",
"enchantment.target.volt_overload.desc": "增加泰瑟枪电击的伤害",
"des.target.sensitivity": "当前枪械的灵敏度为:%1$s",
"commands.ammo.get": "当前%s弹药数量: %s",