添加电压过载附魔
This commit is contained in:
parent
628388cf8f
commit
b6dee62576
10 changed files with 110 additions and 8 deletions
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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"),
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Add table
Reference in a new issue