65 lines
3.3 KiB
Java
65 lines
3.3 KiB
Java
package net.mcreator.target.procedures;
|
|
|
|
import net.mcreator.target.event.GunEventHandler;
|
|
import net.mcreator.target.init.TargetModItems;
|
|
import net.mcreator.target.init.TargetModTags;
|
|
import net.mcreator.target.network.TargetModVariables;
|
|
import net.minecraft.commands.CommandSource;
|
|
import net.minecraft.commands.CommandSourceStack;
|
|
import net.minecraft.server.level.ServerLevel;
|
|
import net.minecraft.world.entity.player.Player;
|
|
|
|
public class PressFireProcedure {
|
|
public static void execute(Player player) {
|
|
TaserfireProcedure.execute(player);
|
|
M79fireProcedure.execute(player);
|
|
RpgFireProcedure.execute(player);
|
|
|
|
MarlinfireProcedure.execute(player);
|
|
M870fireProcedure.execute(player);
|
|
VectorFireProcedure.execute(player);
|
|
player.getPersistentData().putBoolean("firing", true);
|
|
|
|
var mainHandItem = player.getMainHandItem();
|
|
var tag = mainHandItem.getOrCreateTag();
|
|
|
|
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() && player.getServer() != null) {
|
|
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
|
|
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:triggerclick player @s ~ ~ ~ 10 1");
|
|
}
|
|
}
|
|
|
|
if (mainHandItem.getItem() == TargetModItems.MINIGUN.get()) {
|
|
player.getPersistentData().putDouble("mini_firing", 1);
|
|
|
|
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).rifleAmmo == 0) {
|
|
if (!player.level().isClientSide() && player.getServer() != null) {
|
|
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,
|
|
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:triggerclick player @s ~ ~ ~ 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.getDouble("bolt_action_time") > 0 && tag.getInt("ammo") > 0) {
|
|
if (!player.getCooldowns().isOnCooldown(mainHandItem.getItem()) && mainHandItem.getOrCreateTag().getDouble("need_bolt_action") == 1) {
|
|
mainHandItem.getOrCreateTag().putDouble("bolt_action_anim", mainHandItem.getOrCreateTag().getDouble("bolt_action_time"));
|
|
GunEventHandler.playGunBoltSounds(player);
|
|
}
|
|
}
|
|
}
|
|
}
|