From 0f4bf9127a2a1bba4c2c4f317cec7f32af0fde65 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Thu, 17 Oct 2024 15:27:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86taser=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 5 +++++ .../TaserBulletProjectileEntity.java | 6 ++++-- .../item/gun/smg/VectorItem.java | 3 +-- .../item/gun/special/TaserItem.java | 20 +++++++++---------- .../superbwarfare/perk/PerkHelper.java | 2 +- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/build.gradle b/build.gradle index e9232a5f3..1137feaa8 100644 --- a/build.gradle +++ b/build.gradle @@ -27,9 +27,14 @@ minecraft { copyIdeResources = true runs { + configureEach { + property 'geckolib.disable_examples', 'true' + } + client { property 'mixin.env.remapRefMap', 'true' property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + property 'geckolib.disable_examples', 'true' } server { diff --git a/src/main/java/net/mcreator/superbwarfare/entity/projectile/TaserBulletProjectileEntity.java b/src/main/java/net/mcreator/superbwarfare/entity/projectile/TaserBulletProjectileEntity.java index 08a394010..2f207b456 100644 --- a/src/main/java/net/mcreator/superbwarfare/entity/projectile/TaserBulletProjectileEntity.java +++ b/src/main/java/net/mcreator/superbwarfare/entity/projectile/TaserBulletProjectileEntity.java @@ -6,11 +6,13 @@ import net.mcreator.superbwarfare.network.message.ClientIndicatorMessage; import net.minecraft.core.BlockPos; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundSource; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LightningBolt; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.monster.Creeper; import net.minecraft.world.entity.player.Player; @@ -91,8 +93,8 @@ public class TaserBulletProjectileEntity extends AbstractArrow implements ItemSu return; } if (!living.level().isClientSide()) { - if (living.getClass() == Creeper.class) { - //TODO 命中苦力怕时转化为闪电苦力怕 + if (living instanceof Creeper creeper && living.level() instanceof ServerLevel serverLevel) { + creeper.thunderHit(serverLevel, new LightningBolt(EntityType.LIGHTNING_BOLT, serverLevel)); } else { living.addEffect(new MobEffectInstance(ModMobEffects.SHOCK.get(), 100 + volt * 30, volt), this.getOwner()); } diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/smg/VectorItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/smg/VectorItem.java index c380e1e27..41afc55e9 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/smg/VectorItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/smg/VectorItem.java @@ -6,7 +6,6 @@ import net.mcreator.superbwarfare.ModUtils; import net.mcreator.superbwarfare.client.renderer.item.VectorItemRenderer; import net.mcreator.superbwarfare.event.ClientEventHandler; import net.mcreator.superbwarfare.init.ModItems; -import net.mcreator.superbwarfare.init.ModPerks; import net.mcreator.superbwarfare.init.ModSounds; import net.mcreator.superbwarfare.init.ModTags; import net.mcreator.superbwarfare.item.AnimatedItem; @@ -152,6 +151,6 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem { @Override public boolean canApplyPerk(Perk perk) { - return PerkHelper.SMG_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk) || perk == ModPerks.DESPERADO.get(); + return PerkHelper.SMG_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk); } } \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/item/gun/special/TaserItem.java b/src/main/java/net/mcreator/superbwarfare/item/gun/special/TaserItem.java index 6adab4623..6812b7a9d 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/gun/special/TaserItem.java +++ b/src/main/java/net/mcreator/superbwarfare/item/gun/special/TaserItem.java @@ -56,13 +56,15 @@ import java.util.function.Consumer; import java.util.function.Supplier; public class TaserItem extends GunItem implements GeoItem, AnimatedItem { + public static final int MAX_ENERGY = 12000; + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); public static ItemDisplayContext transformType; private final Supplier energyCapacity; public TaserItem() { super(new Item.Properties().stacksTo(1).rarity(Rarity.COMMON)); - this.energyCapacity = () -> 12000; + this.energyCapacity = () -> MAX_ENERGY; } @Override @@ -75,7 +77,7 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem { pStack.getCapability(ForgeCapabilities.ENERGY).ifPresent( e -> energy.set(e.getEnergyStored()) ); - return energy.get() != 0; + return energy.get() != 0 && energy.get() != MAX_ENERGY; } @Override @@ -85,7 +87,7 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem { e -> energy.set(e.getEnergyStored()) ); - return Math.round((float) energy.get() * 13.0F / 12000F); + return Math.round((float) energy.get() * 13.0F / MAX_ENERGY); } @Override @@ -203,15 +205,8 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem { } int perkLevel = PerkHelper.getItemPerkLevel(ModPerks.SUPER_RECHARGE.get(), stack); -// var tag = stack.getOrCreateTag(); stack.getCapability(ForgeCapabilities.ENERGY).ifPresent( - energy -> { - energy.receiveEnergy(10 + 10 * perkLevel, false); -// int energyStored = energy.getEnergyStored(); -// if (energyStored > 0) { -// energy.receiveEnergy(10, false); -// } - } + energy -> energy.receiveEnergy(10 + 10 * perkLevel, false) ); } @@ -222,6 +217,9 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem { public static ItemStack getGunInstance() { ItemStack stack = new ItemStack(ModItems.TASER.get()); GunsTool.initCreativeGun(stack, ModItems.TASER.getId().getPath()); + stack.getCapability(ForgeCapabilities.ENERGY).ifPresent( + energy -> energy.receiveEnergy(MAX_ENERGY, false) + ); return stack; } diff --git a/src/main/java/net/mcreator/superbwarfare/perk/PerkHelper.java b/src/main/java/net/mcreator/superbwarfare/perk/PerkHelper.java index ab71217c2..23ca19abc 100644 --- a/src/main/java/net/mcreator/superbwarfare/perk/PerkHelper.java +++ b/src/main/java/net/mcreator/superbwarfare/perk/PerkHelper.java @@ -259,7 +259,7 @@ public class PerkHelper { } case DAMAGE -> { return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() || - perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.HEAD_SEEKER.get(); + perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.HEAD_SEEKER.get() || perk == ModPerks.DESPERADO.get(); } default -> { return false;