From e4fc6d5225fa5402ca5a410acc68bb62c95a706e Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Fri, 6 Sep 2024 06:31:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/client/ClickHandler.java | 1 + .../client/screens/JavelinHudOverlay.java | 3 ++- .../entity/JavelinMissileEntity.java | 21 ++++++++++++------- .../entity/TaserBulletProjectileEntity.java | 2 +- .../network/message/FireMessage.java | 3 ++- .../superbwarfare/tools/CustomExplosion.java | 2 +- 6 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java b/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java index 79a799127..56c8eff83 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/client/ClickHandler.java @@ -92,6 +92,7 @@ public class ClickHandler { if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) { if (player.hasEffect(ModMobEffects.SHOCK.get())) { event.setCanceled(true); + return; } if (player.getMainHandItem().is(ModTags.Items.GUN) || (player.isPassenger() && player.getVehicle() instanceof ICannonEntity)) { event.setCanceled(true); diff --git a/src/main/java/net/mcreator/superbwarfare/client/screens/JavelinHudOverlay.java b/src/main/java/net/mcreator/superbwarfare/client/screens/JavelinHudOverlay.java index ed719059a..0896ff810 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/screens/JavelinHudOverlay.java +++ b/src/main/java/net/mcreator/superbwarfare/client/screens/JavelinHudOverlay.java @@ -4,6 +4,7 @@ import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import net.mcreator.superbwarfare.ModUtils; import net.mcreator.superbwarfare.init.ModItems; +import net.mcreator.superbwarfare.network.ModVariables; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.RenderType; @@ -30,7 +31,7 @@ public class JavelinHudOverlay { if (player != null) { ItemStack stack = player.getMainHandItem(); - if ((stack.getItem() == ModItems.JAVELIN.get() && !stack.getOrCreateTag().getBoolean("HoloHidden")) && Minecraft.getInstance().options.getCameraType().isFirstPerson()) { + if ((stack.getItem() == ModItems.JAVELIN.get() && !stack.getOrCreateTag().getBoolean("HoloHidden")) && Minecraft.getInstance().options.getCameraType().isFirstPerson() && (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).zooming) { RenderSystem.disableDepthTest(); RenderSystem.depthMask(false); RenderSystem.enableBlend(); diff --git a/src/main/java/net/mcreator/superbwarfare/entity/JavelinMissileEntity.java b/src/main/java/net/mcreator/superbwarfare/entity/JavelinMissileEntity.java index 351c1245f..2aa185b8a 100644 --- a/src/main/java/net/mcreator/superbwarfare/entity/JavelinMissileEntity.java +++ b/src/main/java/net/mcreator/superbwarfare/entity/JavelinMissileEntity.java @@ -24,6 +24,7 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.boss.enderdragon.EnderDragon; +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; @@ -52,16 +53,17 @@ public class JavelinMissileEntity extends ThrowableItemProjectile implements Geo private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public String animationprocedure = "empty"; - + private int monsterMultiplier = 0; private float damage = 300f; public JavelinMissileEntity(EntityType type, Level world) { super(type, world); } - public JavelinMissileEntity(LivingEntity entity, Level level, float damage) { - super(ModEntities.JAVELIN_MISSILE.get(), entity, level); + public JavelinMissileEntity(LivingEntity entity, Level level, float damage, int monsterMultiplier) { + super(ModEntities.RPG_ROCKET.get(), entity, level); this.damage = damage; + this.monsterMultiplier = monsterMultiplier; } public JavelinMissileEntity(PlayMessages.SpawnEntity spawnEntity, Level level) { @@ -99,6 +101,7 @@ public class JavelinMissileEntity extends ThrowableItemProjectile implements Geo @Override protected void onHitEntity(EntityHitResult result) { + float damageMultiplier = 1 + 0.2f * this.monsterMultiplier; Entity entity = result.getEntity(); if (this.getOwner() instanceof LivingEntity living) { if (!living.level().isClientSide() && living instanceof ServerPlayer player) { @@ -112,7 +115,11 @@ public class JavelinMissileEntity extends ThrowableItemProjectile implements Geo entity.invulnerableTime = 0; } - entity.hurt(ModDamageTypes.causeCannonFireDamage(this.level().registryAccess(), this, this.getOwner()), 0.2f * this.damage); + if (entity instanceof Monster monster) { + monster.hurt(ModDamageTypes.causeCannonFireDamage(this.level().registryAccess(), this, this.getOwner()), this.damage * damageMultiplier); + } else { + entity.hurt(ModDamageTypes.causeCannonFireDamage(this.level().registryAccess(), this, this.getOwner()), this.damage); + } if (this.tickCount > 1) { if (this.level() instanceof ServerLevel) { @@ -214,7 +221,7 @@ public class JavelinMissileEntity extends ThrowableItemProjectile implements Geo private void causeExplode() { CustomExplosion explosion = new CustomExplosion(this.level(), this, ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this.getOwner()), this.damage, - this.getX(), this.getY(), this.getZ(), 7f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1); + this.getX(), this.getY(), this.getZ(), 8f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(this.monsterMultiplier); explosion.explode(); net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion); explosion.finalizeExplosion(false); @@ -225,7 +232,7 @@ public class JavelinMissileEntity extends ThrowableItemProjectile implements Geo private void triggerExplode(Entity target) { CustomExplosion explosion = new CustomExplosion(this.level(), this, ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this.getOwner()), this.damage, - target.getX(), target.getY(), target.getZ(), 7f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1); + target.getX(), target.getY(), target.getZ(), 8f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(this.monsterMultiplier); explosion.explode(); net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion); explosion.finalizeExplosion(false); @@ -236,7 +243,7 @@ public class JavelinMissileEntity extends ThrowableItemProjectile implements Geo private void causeEntityHitExplode(Entity entity) { CustomExplosion explosion = new CustomExplosion(this.level(), this, ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), this, this.getOwner()), this.damage, - entity.getX(), entity.getY(), entity.getZ(), 7f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1); + entity.getX(), entity.getY(), entity.getZ(), 8f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(this.monsterMultiplier); explosion.explode(); net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion); explosion.finalizeExplosion(false); diff --git a/src/main/java/net/mcreator/superbwarfare/entity/TaserBulletProjectileEntity.java b/src/main/java/net/mcreator/superbwarfare/entity/TaserBulletProjectileEntity.java index b991e9a78..584c8956d 100644 --- a/src/main/java/net/mcreator/superbwarfare/entity/TaserBulletProjectileEntity.java +++ b/src/main/java/net/mcreator/superbwarfare/entity/TaserBulletProjectileEntity.java @@ -94,7 +94,7 @@ public class TaserBulletProjectileEntity extends AbstractArrow implements ItemSu return; } if (!living.level().isClientSide()) { - living.addEffect(new MobEffectInstance(ModMobEffects.SHOCK.get(), 100, volt), this.getOwner()); + living.addEffect(new MobEffectInstance(ModMobEffects.SHOCK.get(), 100 + volt * 30, volt), this.getOwner()); } } this.discard(); diff --git a/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java b/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java index c76e839ef..5f57ca35a 100644 --- a/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java +++ b/src/main/java/net/mcreator/superbwarfare/network/message/FireMessage.java @@ -482,7 +482,8 @@ public class FireMessage { firePos.rotateY(-yRot * Mth.DEG_TO_RAD); if (!level.isClientSide()) { - JavelinMissileEntity missileEntity = new JavelinMissileEntity(player, level, (float) tag.getDouble("damage") * (float) tag.getDouble("levelDamageMultiple")); + int monsterMultiple = EnchantmentHelper.getTagEnchantmentLevel(ModEnchantments.MONSTER_HUNTER.get(), mainHandItem); + JavelinMissileEntity missileEntity = new JavelinMissileEntity(player, level, (float) tag.getDouble("damage") * (float) tag.getDouble("levelDamageMultiple"), monsterMultiple); missileEntity.setPos(player.getX() + firePos.x, player.getEyeY() + firePos.y, player.getZ() + firePos.z); missileEntity.shoot(player.getLookAngle().x, player.getLookAngle().y + 0.3, player.getLookAngle().z, 3f, 1); missileEntity.setTargetUuid(tag.getString("TargetEntity")); diff --git a/src/main/java/net/mcreator/superbwarfare/tools/CustomExplosion.java b/src/main/java/net/mcreator/superbwarfare/tools/CustomExplosion.java index a592bc823..dee4f7ced 100644 --- a/src/main/java/net/mcreator/superbwarfare/tools/CustomExplosion.java +++ b/src/main/java/net/mcreator/superbwarfare/tools/CustomExplosion.java @@ -148,7 +148,7 @@ public class CustomExplosion extends Explosion { double damageFinal = (damagePercent * damagePercent + damagePercent) / 2.0D * damage; if (entity instanceof Monster monster) { - monster.hurt(this.damageSource, (int) damageFinal * (1 + 0.4f * this.damageMultiplier)); + monster.hurt(this.damageSource, (int) damageFinal * (1 + 0.2f * this.damageMultiplier)); } else { entity.hurt(this.damageSource, (float) ((int) damageFinal)); }