添加M79的怪物特攻倍率

This commit is contained in:
Atsuihsio 2024-06-26 02:03:56 +08:00
parent 02a340fc64
commit be4c9cd8cc
4 changed files with 28 additions and 4 deletions

View file

@ -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();

View file

@ -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");

View file

@ -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"),

View file

@ -9,3 +9,4 @@ public class EnchantmentCategoryTool {
public static final EnchantmentCategory GUN = EnchantmentCategory.create("target:gun", item -> item instanceof GunItem && !(item instanceof Taser));
}