添加了taser的功能

This commit is contained in:
17146 2024-10-17 15:27:53 +08:00
parent 963412b8d5
commit 0f4bf9127a
5 changed files with 20 additions and 16 deletions

View file

@ -27,9 +27,14 @@ minecraft {
copyIdeResources = true copyIdeResources = true
runs { runs {
configureEach {
property 'geckolib.disable_examples', 'true'
}
client { client {
property 'mixin.env.remapRefMap', 'true' property 'mixin.env.remapRefMap', 'true'
property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg"
property 'geckolib.disable_examples', 'true'
} }
server { server {

View file

@ -6,11 +6,13 @@ import net.mcreator.superbwarfare.network.message.ClientIndicatorMessage;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener; import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffectInstance;
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.LightningBolt;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.monster.Creeper; import net.minecraft.world.entity.monster.Creeper;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
@ -91,8 +93,8 @@ public class TaserBulletProjectileEntity extends AbstractArrow implements ItemSu
return; return;
} }
if (!living.level().isClientSide()) { if (!living.level().isClientSide()) {
if (living.getClass() == Creeper.class) { if (living instanceof Creeper creeper && living.level() instanceof ServerLevel serverLevel) {
//TODO 命中苦力怕时转化为闪电苦力怕 creeper.thunderHit(serverLevel, new LightningBolt(EntityType.LIGHTNING_BOLT, serverLevel));
} else { } else {
living.addEffect(new MobEffectInstance(ModMobEffects.SHOCK.get(), 100 + volt * 30, volt), this.getOwner()); living.addEffect(new MobEffectInstance(ModMobEffects.SHOCK.get(), 100 + volt * 30, volt), this.getOwner());
} }

View file

@ -6,7 +6,6 @@ import net.mcreator.superbwarfare.ModUtils;
import net.mcreator.superbwarfare.client.renderer.item.VectorItemRenderer; import net.mcreator.superbwarfare.client.renderer.item.VectorItemRenderer;
import net.mcreator.superbwarfare.event.ClientEventHandler; import net.mcreator.superbwarfare.event.ClientEventHandler;
import net.mcreator.superbwarfare.init.ModItems; import net.mcreator.superbwarfare.init.ModItems;
import net.mcreator.superbwarfare.init.ModPerks;
import net.mcreator.superbwarfare.init.ModSounds; import net.mcreator.superbwarfare.init.ModSounds;
import net.mcreator.superbwarfare.init.ModTags; import net.mcreator.superbwarfare.init.ModTags;
import net.mcreator.superbwarfare.item.AnimatedItem; import net.mcreator.superbwarfare.item.AnimatedItem;
@ -152,6 +151,6 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
@Override @Override
public boolean canApplyPerk(Perk perk) { 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);
} }
} }

View file

@ -56,13 +56,15 @@ import java.util.function.Consumer;
import java.util.function.Supplier; import java.util.function.Supplier;
public class TaserItem extends GunItem implements GeoItem, AnimatedItem { public class TaserItem extends GunItem implements GeoItem, AnimatedItem {
public static final int MAX_ENERGY = 12000;
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public static ItemDisplayContext transformType; public static ItemDisplayContext transformType;
private final Supplier<Integer> energyCapacity; private final Supplier<Integer> energyCapacity;
public TaserItem() { public TaserItem() {
super(new Item.Properties().stacksTo(1).rarity(Rarity.COMMON)); super(new Item.Properties().stacksTo(1).rarity(Rarity.COMMON));
this.energyCapacity = () -> 12000; this.energyCapacity = () -> MAX_ENERGY;
} }
@Override @Override
@ -75,7 +77,7 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem {
pStack.getCapability(ForgeCapabilities.ENERGY).ifPresent( pStack.getCapability(ForgeCapabilities.ENERGY).ifPresent(
e -> energy.set(e.getEnergyStored()) e -> energy.set(e.getEnergyStored())
); );
return energy.get() != 0; return energy.get() != 0 && energy.get() != MAX_ENERGY;
} }
@Override @Override
@ -85,7 +87,7 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem {
e -> energy.set(e.getEnergyStored()) 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 @Override
@ -203,15 +205,8 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem {
} }
int perkLevel = PerkHelper.getItemPerkLevel(ModPerks.SUPER_RECHARGE.get(), stack); int perkLevel = PerkHelper.getItemPerkLevel(ModPerks.SUPER_RECHARGE.get(), stack);
// var tag = stack.getOrCreateTag();
stack.getCapability(ForgeCapabilities.ENERGY).ifPresent( stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(
energy -> { energy -> energy.receiveEnergy(10 + 10 * perkLevel, false)
energy.receiveEnergy(10 + 10 * perkLevel, false);
// int energyStored = energy.getEnergyStored();
// if (energyStored > 0) {
// energy.receiveEnergy(10, false);
// }
}
); );
} }
@ -222,6 +217,9 @@ public class TaserItem extends GunItem implements GeoItem, AnimatedItem {
public static ItemStack getGunInstance() { public static ItemStack getGunInstance() {
ItemStack stack = new ItemStack(ModItems.TASER.get()); ItemStack stack = new ItemStack(ModItems.TASER.get());
GunsTool.initCreativeGun(stack, ModItems.TASER.getId().getPath()); GunsTool.initCreativeGun(stack, ModItems.TASER.getId().getPath());
stack.getCapability(ForgeCapabilities.ENERGY).ifPresent(
energy -> energy.receiveEnergy(MAX_ENERGY, false)
);
return stack; return stack;
} }

View file

@ -259,7 +259,7 @@ public class PerkHelper {
} }
case DAMAGE -> { case DAMAGE -> {
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() || 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 -> { default -> {
return false; return false;