内联部分procedure
This commit is contained in:
parent
0ba2ee83b3
commit
e1d43284de
6 changed files with 99 additions and 235 deletions
|
@ -72,7 +72,7 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
transformType = type;
|
||||
}
|
||||
|
||||
private PlayState idlePredicate(AnimationState event) {
|
||||
private PlayState idlePredicate(AnimationState<BocekItem> event) {
|
||||
LocalPlayer player = Minecraft.getInstance().player;
|
||||
if (player == null) return PlayState.STOP;
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
|
@ -90,7 +90,7 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
return PlayState.STOP;
|
||||
}
|
||||
|
||||
private PlayState procedurePredicate(AnimationState event) {
|
||||
private PlayState procedurePredicate(AnimationState<BocekItem> event) {
|
||||
if (transformType != null && transformType.firstPerson()) {
|
||||
if (!this.animationProcedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) {
|
||||
event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationProcedure));
|
||||
|
@ -130,7 +130,7 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
if (slot == EquipmentSlot.MAINHAND) {
|
||||
map = HashMultimap.create(map);
|
||||
map.put(Attributes.MOVEMENT_SPEED,
|
||||
new AttributeModifier(uuid, "henghengaaa", -0.03f, AttributeModifier.Operation.MULTIPLY_BASE));
|
||||
new AttributeModifier(uuid, TargetMod.ATTRIBUTE_MODIFIER, -0.03f, AttributeModifier.Operation.MULTIPLY_BASE));
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
@ -163,7 +163,6 @@ public class BocekItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
itemstack.getOrCreateTag().putInt("max_ammo", getAmmoCount(player));
|
||||
}
|
||||
|
||||
// TODO 合并至GunReload
|
||||
CompoundTag tag = itemstack.getOrCreateTag();
|
||||
if (tag.getInt("arrow_empty") > 0) {
|
||||
tag.putInt("arrow_empty", tag.getInt("arrow_empty") - 1);
|
||||
|
|
|
@ -8,23 +8,16 @@ import net.mcreator.target.init.TargetModItems;
|
|||
import net.mcreator.target.init.TargetModSounds;
|
||||
import net.mcreator.target.init.TargetModTags;
|
||||
import net.mcreator.target.item.AnimatedItem;
|
||||
import net.mcreator.target.tools.GunInfo;
|
||||
import net.mcreator.target.tools.GunsTool;
|
||||
import net.mcreator.target.tools.TooltipTool;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.HumanoidModel;
|
||||
import net.minecraft.client.player.LocalPlayer;
|
||||
import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.protocol.game.ClientboundSoundPacket;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.ai.attributes.Attribute;
|
||||
|
@ -33,7 +26,6 @@ import net.minecraft.world.entity.ai.attributes.Attributes;
|
|||
import net.minecraft.world.item.*;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import software.bernie.geckolib.animatable.GeoItem;
|
||||
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
|
||||
import software.bernie.geckolib.core.animation.AnimatableManager;
|
||||
|
@ -79,7 +71,7 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
transformType = type;
|
||||
}
|
||||
|
||||
private PlayState idlePredicate(AnimationState event) {
|
||||
private PlayState idlePredicate(AnimationState<VectorItem> event) {
|
||||
LocalPlayer player = Minecraft.getInstance().player;
|
||||
if (player == null) return PlayState.STOP;
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
|
@ -123,7 +115,7 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
return PlayState.STOP;
|
||||
}
|
||||
|
||||
private PlayState procedurePredicate(AnimationState event) {
|
||||
private PlayState procedurePredicate(AnimationState<VectorItem> event) {
|
||||
if (transformType != null && transformType.firstPerson()) {
|
||||
if (!this.animationProcedure.equals("empty") && event.getController().getAnimationState() == AnimationController.State.STOPPED) {
|
||||
event.getController().setAnimation(RawAnimation.begin().thenPlay(this.animationProcedure));
|
||||
|
@ -194,63 +186,6 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
this.animationProcedure = procedure;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void inventoryTick(ItemStack itemStack, Level world, Entity entity, int slot, boolean selected) {
|
||||
super.inventoryTick(itemStack, world, entity, slot, selected);
|
||||
|
||||
CompoundTag tag = itemStack.getOrCreateTag();
|
||||
double id = tag.getDouble("id");
|
||||
var mainHandItem = entity instanceof LivingEntity living ? living.getMainHandItem() : ItemStack.EMPTY;
|
||||
if (mainHandItem.getOrCreateTag().getDouble("id") != tag.getDouble("id")) {
|
||||
tag.putBoolean("empty_reload", false);
|
||||
tag.putBoolean("reloading", false);
|
||||
tag.putDouble("reload_time", 0);
|
||||
}
|
||||
if (tag.getBoolean("reloading") && tag.getInt("ammo") == 0) {
|
||||
if (tag.getDouble("reload_time") == 61) {
|
||||
entity.getPersistentData().putDouble("id", id);
|
||||
if (entity instanceof ServerPlayer serverPlayer) {
|
||||
serverPlayer.connection.send(new ClientboundSoundPacket(new Holder.Direct<>(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:vector_reload_empty"))),
|
||||
SoundSource.PLAYERS, serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ(), 10f, 1f, serverPlayer.level().random.nextLong()));
|
||||
}
|
||||
// entity.level().playSound(null, entity.blockPosition(), TargetModSounds.VECTOR_RELOAD_EMPTY.get(), SoundSource.PLAYERS, 100, 1);
|
||||
}
|
||||
if (mainHandItem.getItem() == itemStack.getItem()
|
||||
&& mainHandItem.getOrCreateTag().getDouble("id") == id
|
||||
&& tag.getDouble("reload_time") > 0) {
|
||||
tag.putDouble("reload_time", tag.getDouble("reload_time") - 1);
|
||||
} else {
|
||||
tag.putBoolean("reloading", false);
|
||||
tag.putBoolean("empty_reload", false);
|
||||
tag.putDouble("reload_time", 0);
|
||||
}
|
||||
if (tag.getDouble("reload_time") == 1 && mainHandItem.getOrCreateTag().getDouble("id") == id) {
|
||||
GunsTool.reload(entity, GunInfo.Type.HANDGUN);
|
||||
}
|
||||
} else if (tag.getBoolean("reloading") && tag.getInt("ammo") > 0) {
|
||||
if (tag.getDouble("reload_time") == 43) {
|
||||
entity.getPersistentData().putDouble("id", id);
|
||||
if (entity instanceof ServerPlayer serverPlayer) {
|
||||
serverPlayer.connection.send(new ClientboundSoundPacket(new Holder.Direct<>(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("target:vector_reload_normal"))),
|
||||
SoundSource.PLAYERS, serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ(), 10f, 1f, serverPlayer.level().random.nextLong()));
|
||||
}
|
||||
// entity.level().playSound(null, entity.blockPosition(), TargetModSounds.VECTOR_RELOAD_NORMAL.get(), SoundSource.PLAYERS, 100, 1);
|
||||
}
|
||||
if (mainHandItem.getItem() == itemStack.getItem()
|
||||
&& mainHandItem.getOrCreateTag().getDouble("id") == id
|
||||
&& tag.getDouble("reload_time") > 0) {
|
||||
tag.putDouble("reload_time", (tag.getDouble("reload_time") - 1));
|
||||
} else {
|
||||
tag.putBoolean("reloading", false);
|
||||
tag.putBoolean("empty_reload", false);
|
||||
tag.putDouble("reload_time", 0);
|
||||
}
|
||||
if (tag.getDouble("reload_time") == 1 && mainHandItem.getOrCreateTag().getDouble("id") == id) {
|
||||
GunsTool.reload(entity, GunInfo.Type.HANDGUN, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getGunIcon() {
|
||||
return new ResourceLocation(TargetMod.MODID, "textures/gun_icon/vector_icon.png");
|
||||
|
|
|
@ -2,11 +2,15 @@ package net.mcreator.target.network.message;
|
|||
|
||||
import net.mcreator.target.entity.BocekArrowEntity;
|
||||
import net.mcreator.target.entity.ProjectileEntity;
|
||||
import net.mcreator.target.event.GunEventHandler;
|
||||
import net.mcreator.target.init.TargetModEnchantments;
|
||||
import net.mcreator.target.init.TargetModItems;
|
||||
import net.mcreator.target.init.TargetModSounds;
|
||||
import net.mcreator.target.init.TargetModTags;
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
import net.mcreator.target.procedures.PressFireProcedure;
|
||||
import net.mcreator.target.procedures.M79fireProcedure;
|
||||
import net.mcreator.target.procedures.RpgFireProcedure;
|
||||
import net.mcreator.target.procedures.TaserfireProcedure;
|
||||
import net.mcreator.target.tools.SoundTool;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
|
@ -55,7 +59,7 @@ public class FireMessage {
|
|||
}
|
||||
|
||||
if (type == 0) {
|
||||
PressFireProcedure.execute(player);
|
||||
handleSpecialShoot(player);
|
||||
} else if (type == 1) {
|
||||
player.getPersistentData().putBoolean("firing", false);
|
||||
player.getPersistentData().putDouble("minigun_firing", 0);
|
||||
|
@ -68,6 +72,58 @@ public class FireMessage {
|
|||
}
|
||||
}
|
||||
|
||||
private static void handleSpecialShoot(Player player) {
|
||||
var mainHandItem = player.getMainHandItem();
|
||||
var tag = mainHandItem.getOrCreateTag();
|
||||
|
||||
TaserfireProcedure.execute(player);
|
||||
M79fireProcedure.execute(player);
|
||||
RpgFireProcedure.execute(player);
|
||||
|
||||
if (mainHandItem.is(TargetModTags.Items.GUN)) {
|
||||
if (tag.getInt("fire_mode") == 1) {
|
||||
player.getPersistentData().putBoolean("firing", false);
|
||||
tag.putInt("burst_fire", (int) tag.getDouble("burst_size"));
|
||||
} else {
|
||||
player.getPersistentData().putBoolean("firing", true);
|
||||
}
|
||||
if (tag.getDouble("force_stop_reloading") == 1 && tag.getBoolean("reloading") && tag.getDouble("prepare") == 0 && tag.getInt("ammo") > 0) {
|
||||
tag.putDouble("force_stop", 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (mainHandItem.is(TargetModTags.Items.GUN)
|
||||
&& !(mainHandItem.getItem() == TargetModItems.BOCEK.get())
|
||||
&& !(mainHandItem.getItem() == TargetModItems.MINIGUN.get())
|
||||
&& tag.getInt("ammo") == 0
|
||||
&& !tag.getBoolean("reloading")) {
|
||||
if (!player.level().isClientSide()) {
|
||||
SoundTool.playLocalSound(player, TargetModSounds.TRIGGER_CLICK.get(), 10, 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (mainHandItem.getItem() == TargetModItems.MINIGUN.get()) {
|
||||
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).rifleAmmo == 0) {
|
||||
if (!player.level().isClientSide()) {
|
||||
SoundTool.playLocalSound(player, TargetModSounds.TRIGGER_CLICK.get(), 10, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.bowPullHold = true;
|
||||
capability.syncPlayerVariables(player);
|
||||
});
|
||||
|
||||
// 栓动武器左键手动拉栓
|
||||
if (mainHandItem.is(TargetModTags.Items.GUN) && tag.getInt("bolt_action_time") > 0 && tag.getInt("ammo") > 0 && tag.getInt("bolt_action_anim") == 0) {
|
||||
if (!player.getCooldowns().isOnCooldown(mainHandItem.getItem()) && mainHandItem.getOrCreateTag().getDouble("need_bolt_action") == 1) {
|
||||
mainHandItem.getOrCreateTag().putInt("bolt_action_anim", mainHandItem.getOrCreateTag().getInt("bolt_action_time"));
|
||||
GunEventHandler.playGunBoltSounds(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void handleBowShoot(Player player) {
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
|
||||
|
|
|
@ -24,43 +24,45 @@ public class M79fireProcedure {
|
|||
if (entity == null) return;
|
||||
if (entity instanceof Player player && !player.isSpectator()) {
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
if (stack.getItem() == TargetModItems.M_79.get() && !stack.getOrCreateTag().getBoolean("reloading") && !(entity instanceof Player _plrCldCheck4 && _plrCldCheck4.getCooldowns().isOnCooldown(stack.getItem()))
|
||||
&& stack.getOrCreateTag().getInt("ammo") > 0) {
|
||||
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.recoilHorizon = Math.random() < 0.5 ? -1 : 1;
|
||||
capability.recoil = 0.1;
|
||||
capability.firing = 1;
|
||||
capability.syncPlayerVariables(entity);
|
||||
});
|
||||
if (stack.getItem() == TargetModItems.M_79.get() && !stack.getOrCreateTag().getBoolean("reloading")) {
|
||||
Player _plrCldCheck4 = (Player) entity;
|
||||
if (!_plrCldCheck4.getCooldowns().isOnCooldown(stack.getItem()) && stack.getOrCreateTag().getInt("ammo") > 0) {
|
||||
entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.recoilHorizon = Math.random() < 0.5 ? -1 : 1;
|
||||
capability.recoil = 0.1;
|
||||
capability.firing = 1;
|
||||
capability.syncPlayerVariables(entity);
|
||||
});
|
||||
|
||||
Level level = entity.level();
|
||||
if (!level.isClientSide()) {
|
||||
int monsterMultiple = EnchantmentHelper.getTagEnchantmentLevel(TargetModEnchantments.MONSTER_HUNTER.get(), stack);
|
||||
GunGrenadeEntity gunGrenadeEntity = new GunGrenadeEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage") * (float) stack.getOrCreateTag().getDouble("damageadd"), monsterMultiple);
|
||||
Level level = entity.level();
|
||||
if (!level.isClientSide()) {
|
||||
int monsterMultiple = EnchantmentHelper.getTagEnchantmentLevel(TargetModEnchantments.MONSTER_HUNTER.get(), stack);
|
||||
GunGrenadeEntity gunGrenadeEntity = new GunGrenadeEntity(player, level, (float) stack.getOrCreateTag().getDouble("damage") * (float) stack.getOrCreateTag().getDouble("damageadd"), monsterMultiple);
|
||||
|
||||
gunGrenadeEntity.setPos(entity.getX(), entity.getEyeY() - 0.1, entity.getZ());
|
||||
gunGrenadeEntity.shoot(entity.getLookAngle().x, entity.getLookAngle().y, entity.getLookAngle().z, (float) stack.getOrCreateTag().getDouble("velocity"),
|
||||
(float) ((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue());
|
||||
level.addFreshEntity(gunGrenadeEntity);
|
||||
gunGrenadeEntity.setPos(entity.getX(), entity.getEyeY() - 0.1, entity.getZ());
|
||||
gunGrenadeEntity.shoot(entity.getLookAngle().x, entity.getLookAngle().y, entity.getLookAngle().z, (float) stack.getOrCreateTag().getDouble("velocity"),
|
||||
(float) ((LivingEntity) entity).getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue());
|
||||
level.addFreshEntity(gunGrenadeEntity);
|
||||
}
|
||||
|
||||
if (!entity.level().isClientSide() && entity.getServer() != null) {
|
||||
entity.getServer().getCommands().performPrefixedCommand(
|
||||
new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), (ServerLevel) entity.level(), 4, entity.getName().getString(), entity.getDisplayName(),
|
||||
entity.getServer(), entity),
|
||||
("particle minecraft:cloud" + (" " + (entity.getX() + 1.8 * entity.getLookAngle().x)) + (" " + (entity.getY() + entity.getBbHeight() - 0.1 + 1.8 * entity.getLookAngle().y))
|
||||
+ (" " + (entity.getZ() + 1.8 * entity.getLookAngle().z)) + " 0.1 0.1 0.1 0.002 4 force @s"));
|
||||
}
|
||||
player.getCooldowns().addCooldown(stack.getItem(), 2);
|
||||
|
||||
if (entity instanceof ServerPlayer) {
|
||||
SoundTool.playLocalSound(player, TargetModSounds.M_79_FIRE_1P.get(), 2, 1);
|
||||
SoundTool.playLocalSound(player, TargetModSounds.M_79_FIRE_3P.get(), 4, 1);
|
||||
SoundTool.playLocalSound(player, TargetModSounds.M_79_FAR.get(), 6, 1);
|
||||
SoundTool.playLocalSound(player, TargetModSounds.M_79_VERYFAR.get(), 12, 1);
|
||||
}
|
||||
stack.getOrCreateTag().putInt("fire_animation", 2);
|
||||
stack.getOrCreateTag().putInt("ammo", (stack.getOrCreateTag().getInt("ammo") - 1));
|
||||
}
|
||||
|
||||
if (!entity.level().isClientSide() && entity.getServer() != null) {
|
||||
entity.getServer().getCommands().performPrefixedCommand(
|
||||
new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), (ServerLevel) entity.level(), 4, entity.getName().getString(), entity.getDisplayName(),
|
||||
entity.getServer(), entity),
|
||||
("particle minecraft:cloud" + (" " + (entity.getX() + 1.8 * entity.getLookAngle().x)) + (" " + (entity.getY() + entity.getBbHeight() - 0.1 + 1.8 * entity.getLookAngle().y))
|
||||
+ (" " + (entity.getZ() + 1.8 * entity.getLookAngle().z)) + " 0.1 0.1 0.1 0.002 4 force @s"));
|
||||
}
|
||||
player.getCooldowns().addCooldown(stack.getItem(), 2);
|
||||
|
||||
if (entity instanceof ServerPlayer) {
|
||||
SoundTool.playLocalSound(player, TargetModSounds.M_79_FIRE_1P.get(), 2, 1);
|
||||
SoundTool.playLocalSound(player, TargetModSounds.M_79_FIRE_3P.get(), 4, 1);
|
||||
SoundTool.playLocalSound(player, TargetModSounds.M_79_FAR.get(), 6, 1);
|
||||
SoundTool.playLocalSound(player, TargetModSounds.M_79_VERYFAR.get(), 12, 1);
|
||||
}
|
||||
stack.getOrCreateTag().putInt("fire_animation", 2);
|
||||
stack.getOrCreateTag().putInt("ammo", (stack.getOrCreateTag().getInt("ammo") - 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,60 +0,0 @@
|
|||
package net.mcreator.target.procedures;
|
||||
|
||||
import net.mcreator.target.init.TargetModItems;
|
||||
import net.mcreator.target.init.TargetModSounds;
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
import net.mcreator.target.tools.SoundTool;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
||||
public class PlayerReloadProcedure {
|
||||
public static void execute(Entity entity) {
|
||||
if (entity == null) return;
|
||||
if (entity instanceof Player player && !player.isSpectator()) {
|
||||
if (!(entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).zooming) {
|
||||
CompoundTag tag = player.getMainHandItem().getOrCreateTag();
|
||||
|
||||
if (player.getMainHandItem().getItem() == TargetModItems.MARLIN.get()
|
||||
&& !(player.getCooldowns().isOnCooldown(player.getMainHandItem().getItem()))
|
||||
&& !tag.getBoolean("reloading")
|
||||
&& tag.getInt("ammo") < 8
|
||||
&& (entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).rifleAmmo > 0) {
|
||||
tag.putBoolean("reloading", true);
|
||||
tag.putDouble("id", (Mth.nextDouble(RandomSource.create(), 1, 1919810)));
|
||||
player.getCooldowns().addCooldown(player.getMainHandItem().getItem(), 5);
|
||||
tag.putDouble("prepare", 5);
|
||||
if (entity instanceof ServerPlayer serverPlayer) {
|
||||
SoundTool.playLocalSound(serverPlayer, TargetModSounds.MARLIN_START.get(), 100, 1);
|
||||
}
|
||||
}
|
||||
if (player.getMainHandItem().getItem() == TargetModItems.M_870.get()
|
||||
&& !(player.getCooldowns().isOnCooldown(player.getMainHandItem().getItem()))
|
||||
&& !tag.getBoolean("reloading")
|
||||
&& tag.getInt("ammo") < 8
|
||||
&& (entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).shotgunAmmo > 0) {
|
||||
if (tag.getInt("ammo") == 0) {
|
||||
tag.putDouble("empty_reload", 1);
|
||||
tag.putBoolean("reloading", true);
|
||||
tag.putDouble("id", (Mth.nextDouble(RandomSource.create(), 1, 1919810)));
|
||||
player.getCooldowns().addCooldown(player.getMainHandItem().getItem(), 36);
|
||||
tag.putDouble("prepare", 36);
|
||||
|
||||
if (entity instanceof ServerPlayer serverPlayer) {
|
||||
SoundTool.playLocalSound(serverPlayer, TargetModSounds.M_870_PREPARE_ALT.get(), 100, 1);
|
||||
}
|
||||
} else {
|
||||
tag.putBoolean("reloading", true);
|
||||
tag.putDouble("id", (Mth.nextDouble(RandomSource.create(), 1, 1919810)));
|
||||
if (entity instanceof Player _player)
|
||||
_player.getCooldowns().addCooldown(player.getMainHandItem().getItem(), 7);
|
||||
tag.putDouble("prepare", 7);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,68 +0,0 @@
|
|||
package net.mcreator.target.procedures;
|
||||
|
||||
import net.mcreator.target.event.GunEventHandler;
|
||||
import net.mcreator.target.init.TargetModItems;
|
||||
import net.mcreator.target.init.TargetModSounds;
|
||||
import net.mcreator.target.init.TargetModTags;
|
||||
import net.mcreator.target.network.TargetModVariables;
|
||||
import net.mcreator.target.tools.SoundTool;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
||||
public class PressFireProcedure {
|
||||
public static void execute(Player player) {
|
||||
var mainHandItem = player.getMainHandItem();
|
||||
var tag = mainHandItem.getOrCreateTag();
|
||||
|
||||
TaserfireProcedure.execute(player);
|
||||
M79fireProcedure.execute(player);
|
||||
RpgFireProcedure.execute(player);
|
||||
|
||||
if (mainHandItem.is(TargetModTags.Items.GUN)) {
|
||||
if (tag.getInt("fire_mode") == 1) {
|
||||
player.getPersistentData().putBoolean("firing", false);
|
||||
tag.putInt("burst_fire", (int) tag.getDouble("burst_size"));
|
||||
} else {
|
||||
player.getPersistentData().putBoolean("firing", true);
|
||||
}
|
||||
if (tag.getDouble("force_stop_reloading") == 1 && tag.getBoolean("reloading") && tag.getDouble("prepare") == 0 && tag.getInt("ammo") > 0) {
|
||||
tag.putDouble("force_stop", 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (mainHandItem.is(TargetModTags.Items.GUN)
|
||||
&& !(mainHandItem.getItem() == TargetModItems.BOCEK.get())
|
||||
&& !(mainHandItem.getItem() == TargetModItems.MINIGUN.get())
|
||||
&& tag.getInt("ammo") == 0
|
||||
&& !tag.getBoolean("reloading")) {
|
||||
if (!player.level().isClientSide()) {
|
||||
SoundTool.playLocalSound(player, TargetModSounds.TRIGGER_CLICK.get(), 10, 1);
|
||||
}
|
||||
}
|
||||
|
||||
if (mainHandItem.getItem() == TargetModItems.MINIGUN.get()) {
|
||||
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).rifleAmmo == 0) {
|
||||
if (!player.level().isClientSide()) {
|
||||
SoundTool.playLocalSound(player, TargetModSounds.TRIGGER_CLICK.get(), 10, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
capability.bowPullHold = true;
|
||||
capability.syncPlayerVariables(player);
|
||||
});
|
||||
|
||||
// if (tag.getInt("ammo") == 0) {
|
||||
// PlayerReloadProcedure.execute(player);
|
||||
// }
|
||||
|
||||
// 栓动武器左键手动拉栓
|
||||
if (mainHandItem.is(TargetModTags.Items.GUN) && tag.getInt("bolt_action_time") > 0 && tag.getInt("ammo") > 0 && tag.getInt("bolt_action_anim") == 0) {
|
||||
if (!player.getCooldowns().isOnCooldown(mainHandItem.getItem()) && mainHandItem.getOrCreateTag().getDouble("need_bolt_action") == 1) {
|
||||
mainHandItem.getOrCreateTag().putInt("bolt_action_anim", mainHandItem.getOrCreateTag().getInt("bolt_action_time"));
|
||||
GunEventHandler.playGunBoltSounds(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue