添加了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
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 {

View file

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

View file

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

View file

@ -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<Integer> 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;
}

View file

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