添加电压过载附魔
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.PotionUtils;
|
||||||
import net.minecraft.world.item.alchemy.Potions;
|
import net.minecraft.world.item.alchemy.Potions;
|
||||||
import net.minecraft.world.item.crafting.Ingredient;
|
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.MinecraftForge;
|
||||||
import net.minecraftforge.common.brewing.BrewingRecipeRegistry;
|
import net.minecraftforge.common.brewing.BrewingRecipeRegistry;
|
||||||
import net.minecraftforge.event.TickEvent;
|
import net.minecraftforge.event.TickEvent;
|
||||||
|
@ -51,6 +49,7 @@ public class TargetMod {
|
||||||
TargetModParticleTypes.REGISTRY.register(bus);
|
TargetModParticleTypes.REGISTRY.register(bus);
|
||||||
TargetModPotion.POTIONS.register(bus);
|
TargetModPotion.POTIONS.register(bus);
|
||||||
TargetModMenus.REGISTRY.register(bus);
|
TargetModMenus.REGISTRY.register(bus);
|
||||||
|
TargetModEnchantments.REGISTRY.register(bus);
|
||||||
|
|
||||||
bus.addListener(this::onCommonSetup);
|
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;
|
import java.util.Optional;
|
||||||
|
|
||||||
public class TaserBulletProjectileEntity extends ThrowableItemProjectile {
|
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) {
|
public TaserBulletProjectileEntity(EntityType<? extends TaserBulletProjectileEntity> type, Level world) {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
|
@ -38,9 +49,10 @@ public class TaserBulletProjectileEntity extends ThrowableItemProjectile {
|
||||||
super(type, entity, world);
|
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);
|
super(TargetModEntities.TASER_BULLET_PROJECTILE.get(), entity, level);
|
||||||
this.damage = damage;
|
this.damage = damage;
|
||||||
|
this.volt = volt;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TaserBulletProjectileEntity(PlayMessages.SpawnEntity packet, Level level) {
|
public TaserBulletProjectileEntity(PlayMessages.SpawnEntity packet, Level level) {
|
||||||
|
@ -106,7 +118,7 @@ public class TaserBulletProjectileEntity extends ThrowableItemProjectile {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!living.level().isClientSide()) {
|
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.TargetModItems;
|
||||||
import net.mcreator.target.init.TargetModSounds;
|
import net.mcreator.target.init.TargetModSounds;
|
||||||
import net.mcreator.target.item.AnimatedItem;
|
import net.mcreator.target.item.AnimatedItem;
|
||||||
|
import net.mcreator.target.tools.EnchantmentCategoryTool;
|
||||||
import net.mcreator.target.tools.GunsTool;
|
import net.mcreator.target.tools.GunsTool;
|
||||||
import net.mcreator.target.tools.SoundTool;
|
import net.mcreator.target.tools.SoundTool;
|
||||||
import net.mcreator.target.tools.TooltipTool;
|
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.ai.attributes.Attributes;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.*;
|
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.minecraft.world.level.Level;
|
||||||
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||||
import software.bernie.geckolib.animatable.GeoItem;
|
import software.bernie.geckolib.animatable.GeoItem;
|
||||||
|
@ -241,4 +244,20 @@ public class Taser extends GunItem implements GeoItem, AnimatedItem {
|
||||||
public String getGunDisplayName() {
|
public String getGunDisplayName() {
|
||||||
return "TASER";
|
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"));
|
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);
|
entity.level().playSound(null, entity.getOnPos(), TargetModSounds.ELECTRIC.get(), SoundSource.PLAYERS, 1, 1);
|
||||||
|
|
||||||
if (attacker instanceof ServerPlayer player) {
|
if (attacker instanceof ServerPlayer player) {
|
||||||
|
@ -72,7 +72,7 @@ public class ShockMobEffect extends MobEffect {
|
||||||
}
|
}
|
||||||
|
|
||||||
living.hurt(TargetModDamageTypes.causeShockDamage(living.level().registryAccess(),
|
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) {
|
if (event.getEffectSource() instanceof LivingEntity source) {
|
||||||
living.getPersistentData().putInt("TargetShockAttacker", source.getId());
|
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.entity.TaserBulletProjectileEntity;
|
||||||
import net.mcreator.target.init.TargetModAttributes;
|
import net.mcreator.target.init.TargetModAttributes;
|
||||||
|
import net.mcreator.target.init.TargetModEnchantments;
|
||||||
import net.mcreator.target.init.TargetModItems;
|
import net.mcreator.target.init.TargetModItems;
|
||||||
import net.mcreator.target.init.TargetModSounds;
|
import net.mcreator.target.init.TargetModSounds;
|
||||||
import net.mcreator.target.network.TargetModVariables;
|
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.LivingEntity;
|
||||||
import net.minecraft.world.entity.player.Player;
|
import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.item.ItemStack;
|
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;
|
import net.minecraft.world.level.Level;
|
||||||
|
|
||||||
// TODO 内联这个类
|
// TODO 内联这个类
|
||||||
|
@ -37,9 +40,11 @@ public class TaserfireProcedure {
|
||||||
serverPlayer.level().playSound(null, serverPlayer.getOnPos(), TargetModSounds.TASER_FIRE_3P.get(), SoundSource.PLAYERS, 1, 1);
|
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();
|
Level level = entity.level();
|
||||||
if (!level.isClientSide()) {
|
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.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"),
|
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.splash_potion.effect.target_long_shock": "Splash Potion of Shock",
|
||||||
"item.minecraft.lingering_potion.effect.target_long_shock": "Lingering 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",
|
"des.target.sensitivity": "Current Sensitivity of This Gun: %1$s",
|
||||||
|
|
||||||
"commands.ammo.get": "Current %s ammo: %s",
|
"commands.ammo.get": "Current %s ammo: %s",
|
||||||
|
|
|
@ -203,6 +203,9 @@
|
||||||
"item.minecraft.splash_potion.effect.target_long_shock": "喷溅型电击药水",
|
"item.minecraft.splash_potion.effect.target_long_shock": "喷溅型电击药水",
|
||||||
"item.minecraft.lingering_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",
|
"des.target.sensitivity": "当前枪械的灵敏度为:%1$s",
|
||||||
|
|
||||||
"commands.ammo.get": "当前%s弹药数量: %s",
|
"commands.ammo.get": "当前%s弹药数量: %s",
|
||||||
|
|
Loading…
Add table
Reference in a new issue