添加了taser的功能
This commit is contained in:
parent
963412b8d5
commit
0f4bf9127a
5 changed files with 20 additions and 16 deletions
|
@ -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 {
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue