添加M79的怪物特攻倍率
This commit is contained in:
parent
02a340fc64
commit
be4c9cd8cc
4 changed files with 28 additions and 4 deletions
|
@ -19,6 +19,7 @@ import net.minecraft.sounds.SoundSource;
|
|||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.monster.Monster;
|
||||
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.level.Explosion;
|
||||
|
@ -34,6 +35,8 @@ import net.minecraftforge.network.PlayMessages;
|
|||
import java.util.Optional;
|
||||
|
||||
public class GunGrenadeEntity extends ThrowableItemProjectile {
|
||||
|
||||
private int monster_multiple = 0;
|
||||
private float damage = 5f;
|
||||
|
||||
public GunGrenadeEntity(EntityType<? extends GunGrenadeEntity> type, Level world) {
|
||||
|
@ -44,9 +47,10 @@ public class GunGrenadeEntity extends ThrowableItemProjectile {
|
|||
super(type, entity, world);
|
||||
}
|
||||
|
||||
public GunGrenadeEntity(LivingEntity entity, Level level, float damage) {
|
||||
public GunGrenadeEntity(LivingEntity entity, Level level, float damage, int monster_multiple) {
|
||||
super(TargetModEntities.GUN_GRENADE.get(), entity, level);
|
||||
this.damage = damage;
|
||||
this.monster_multiple = monster_multiple;
|
||||
}
|
||||
|
||||
public GunGrenadeEntity(PlayMessages.SpawnEntity spawnEntity, Level level) {
|
||||
|
@ -65,6 +69,7 @@ public class GunGrenadeEntity extends ThrowableItemProjectile {
|
|||
|
||||
@Override
|
||||
protected void onHitEntity(EntityHitResult result) {
|
||||
float m_multiple = (1 + 0.4f * this.monster_multiple);
|
||||
Entity entity = result.getEntity();
|
||||
if (this.getOwner() instanceof LivingEntity living) {
|
||||
if (!living.level().isClientSide() && living instanceof ServerPlayer player) {
|
||||
|
@ -122,9 +127,17 @@ public class GunGrenadeEntity extends ThrowableItemProjectile {
|
|||
}
|
||||
|
||||
if (headshot) {
|
||||
entity.hurt(TargetModDamageTypes.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), this.damage * 2f);
|
||||
if (entity instanceof Monster monster) {
|
||||
monster.hurt(TargetModDamageTypes.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), this.damage * 2f * m_multiple);
|
||||
} else {
|
||||
entity.hurt(TargetModDamageTypes.causeGunFireDamage(this.level().registryAccess(), this, this.getOwner()), this.damage);
|
||||
entity.hurt(TargetModDamageTypes.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), this.damage * 2f);
|
||||
}
|
||||
} else {
|
||||
if (entity instanceof Monster monster) {
|
||||
monster.hurt(TargetModDamageTypes.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), this.damage * m_multiple);
|
||||
} else {
|
||||
entity.hurt(TargetModDamageTypes.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), this.damage);
|
||||
}
|
||||
}
|
||||
|
||||
this.discard();
|
||||
|
|
|
@ -2,6 +2,7 @@ package net.mcreator.target.network.message;
|
|||
|
||||
import net.mcreator.target.entity.BocekArrowEntity;
|
||||
import net.mcreator.target.entity.ProjectileEntity;
|
||||
import net.mcreator.target.init.TargetModEnchantments;
|
||||
import net.mcreator.target.init.TargetModItems;
|
||||
import net.mcreator.target.init.TargetModSounds;
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
|
@ -15,6 +16,7 @@ import net.minecraft.world.entity.player.Player;
|
|||
import net.minecraft.world.entity.projectile.AbstractArrow;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.network.NetworkEvent;
|
||||
|
||||
|
@ -146,6 +148,7 @@ public class FireMessage {
|
|||
double damage;
|
||||
float headshot = (float) tag.getDouble("headshot");
|
||||
float velocity = 4 * (float) tag.getDouble("speed");
|
||||
int monster_multiple = EnchantmentHelper.getTagEnchantmentLevel(TargetModEnchantments.MONSTER_HUNTER.get(), heldItem);
|
||||
|
||||
var projectile = new ProjectileEntity(player.level())
|
||||
.shooter(player)
|
||||
|
@ -153,6 +156,9 @@ public class FireMessage {
|
|||
if (tag.getBoolean("beast")) {
|
||||
projectile.beast();
|
||||
}
|
||||
|
||||
projectile.monster_multiple(monster_multiple);
|
||||
|
||||
projectile.setPos(player.getX() - 0.1 * player.getLookAngle().x, player.getEyeY() - 0.1 - 0.1 * player.getLookAngle().y, player.getZ() + -0.1 * player.getLookAngle().z);
|
||||
|
||||
damage = 0.008333333 * tag.getDouble("damage") * tag.getDouble("speed") * tag.getDouble("damageadd");
|
||||
|
|
|
@ -2,6 +2,7 @@ package net.mcreator.target.procedures;
|
|||
|
||||
import net.mcreator.target.entity.GunGrenadeEntity;
|
||||
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;
|
||||
|
@ -14,6 +15,7 @@ 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.level.Level;
|
||||
|
||||
// TODO 内联这个类
|
||||
|
@ -33,7 +35,9 @@ public class M79fireProcedure {
|
|||
|
||||
Level level = entity.level();
|
||||
if (!level.isClientSide()) {
|
||||
GunGrenadeEntity gunGrenadeEntity = new GunGrenadeEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage"));
|
||||
|
||||
int monster_multiple = EnchantmentHelper.getTagEnchantmentLevel(TargetModEnchantments.MONSTER_HUNTER.get(), stack);
|
||||
GunGrenadeEntity gunGrenadeEntity = new GunGrenadeEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage"), monster_multiple);
|
||||
|
||||
gunGrenadeEntity.setPos(entity.getX(), entity.getEyeY() - 0.1, entity.getZ());
|
||||
gunGrenadeEntity.shoot(entity.getLookAngle().x, entity.getLookAngle().y, entity.getLookAngle().z, (float) stack.getOrCreateTag().getDouble("velocity"),
|
||||
|
|
|
@ -9,3 +9,4 @@ public class EnchantmentCategoryTool {
|
|||
|
||||
public static final EnchantmentCategory GUN = EnchantmentCategory.create("target:gun", item -> item instanceof GunItem && !(item instanceof Taser));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue