添加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.Entity;
|
||||||
import net.minecraft.world.entity.EntityType;
|
import net.minecraft.world.entity.EntityType;
|
||||||
import net.minecraft.world.entity.LivingEntity;
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.monster.Monster;
|
||||||
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
|
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
|
||||||
import net.minecraft.world.item.Item;
|
import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.level.Explosion;
|
import net.minecraft.world.level.Explosion;
|
||||||
|
@ -34,6 +35,8 @@ import net.minecraftforge.network.PlayMessages;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
public class GunGrenadeEntity extends ThrowableItemProjectile {
|
public class GunGrenadeEntity extends ThrowableItemProjectile {
|
||||||
|
|
||||||
|
private int monster_multiple = 0;
|
||||||
private float damage = 5f;
|
private float damage = 5f;
|
||||||
|
|
||||||
public GunGrenadeEntity(EntityType<? extends GunGrenadeEntity> type, Level world) {
|
public GunGrenadeEntity(EntityType<? extends GunGrenadeEntity> type, Level world) {
|
||||||
|
@ -44,9 +47,10 @@ public class GunGrenadeEntity extends ThrowableItemProjectile {
|
||||||
super(type, entity, world);
|
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);
|
super(TargetModEntities.GUN_GRENADE.get(), entity, level);
|
||||||
this.damage = damage;
|
this.damage = damage;
|
||||||
|
this.monster_multiple = monster_multiple;
|
||||||
}
|
}
|
||||||
|
|
||||||
public GunGrenadeEntity(PlayMessages.SpawnEntity spawnEntity, Level level) {
|
public GunGrenadeEntity(PlayMessages.SpawnEntity spawnEntity, Level level) {
|
||||||
|
@ -65,6 +69,7 @@ public class GunGrenadeEntity extends ThrowableItemProjectile {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onHitEntity(EntityHitResult result) {
|
protected void onHitEntity(EntityHitResult result) {
|
||||||
|
float m_multiple = (1 + 0.4f * this.monster_multiple);
|
||||||
Entity entity = result.getEntity();
|
Entity entity = result.getEntity();
|
||||||
if (this.getOwner() instanceof LivingEntity living) {
|
if (this.getOwner() instanceof LivingEntity living) {
|
||||||
if (!living.level().isClientSide() && living instanceof ServerPlayer player) {
|
if (!living.level().isClientSide() && living instanceof ServerPlayer player) {
|
||||||
|
@ -122,9 +127,17 @@ public class GunGrenadeEntity extends ThrowableItemProjectile {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (headshot) {
|
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.causeGunFireHeadshotDamage(this.level().registryAccess(), this, this.getOwner()), this.damage * 2f);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
entity.hurt(TargetModDamageTypes.causeGunFireDamage(this.level().registryAccess(), this, this.getOwner()), this.damage);
|
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();
|
this.discard();
|
||||||
|
|
|
@ -2,6 +2,7 @@ package net.mcreator.target.network.message;
|
||||||
|
|
||||||
import net.mcreator.target.entity.BocekArrowEntity;
|
import net.mcreator.target.entity.BocekArrowEntity;
|
||||||
import net.mcreator.target.entity.ProjectileEntity;
|
import net.mcreator.target.entity.ProjectileEntity;
|
||||||
|
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;
|
||||||
|
@ -15,6 +16,7 @@ import net.minecraft.world.entity.player.Player;
|
||||||
import net.minecraft.world.entity.projectile.AbstractArrow;
|
import net.minecraft.world.entity.projectile.AbstractArrow;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.item.Items;
|
import net.minecraft.world.item.Items;
|
||||||
|
import net.minecraft.world.item.enchantment.EnchantmentHelper;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraftforge.network.NetworkEvent;
|
import net.minecraftforge.network.NetworkEvent;
|
||||||
|
|
||||||
|
@ -146,6 +148,7 @@ public class FireMessage {
|
||||||
double damage;
|
double damage;
|
||||||
float headshot = (float) tag.getDouble("headshot");
|
float headshot = (float) tag.getDouble("headshot");
|
||||||
float velocity = 4 * (float) tag.getDouble("speed");
|
float velocity = 4 * (float) tag.getDouble("speed");
|
||||||
|
int monster_multiple = EnchantmentHelper.getTagEnchantmentLevel(TargetModEnchantments.MONSTER_HUNTER.get(), heldItem);
|
||||||
|
|
||||||
var projectile = new ProjectileEntity(player.level())
|
var projectile = new ProjectileEntity(player.level())
|
||||||
.shooter(player)
|
.shooter(player)
|
||||||
|
@ -153,6 +156,9 @@ public class FireMessage {
|
||||||
if (tag.getBoolean("beast")) {
|
if (tag.getBoolean("beast")) {
|
||||||
projectile.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);
|
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");
|
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.entity.GunGrenadeEntity;
|
||||||
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;
|
||||||
|
@ -14,6 +15,7 @@ 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.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
|
||||||
// TODO 内联这个类
|
// TODO 内联这个类
|
||||||
|
@ -33,7 +35,9 @@ public class M79fireProcedure {
|
||||||
|
|
||||||
Level level = entity.level();
|
Level level = entity.level();
|
||||||
if (!level.isClientSide()) {
|
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.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"),
|
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));
|
public static final EnchantmentCategory GUN = EnchantmentCategory.create("target:gun", item -> item instanceof GunItem && !(item instanceof Taser));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue