修改开火方法

This commit is contained in:
Light_Quanta 2024-05-11 02:20:53 +08:00
parent 24c23e8eb4
commit 3e3500e43a
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
12 changed files with 154 additions and 179 deletions

View file

@ -0,0 +1,78 @@
package net.mcreator.target.procedures;
import net.mcreator.target.network.TargetModVariables;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.entity.Entity;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.ViewportEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
@Mod.EventBusSubscriber(value = Dist.CLIENT)
public class BowPullAnimationProcedure {
@SubscribeEvent
public static void computeCameraAngles(ViewportEvent.ComputeCameraAngles event) {
ClientLevel level = Minecraft.getInstance().level;
Entity entity = event.getCamera().getEntity();
if (level != null) {
execute(entity);
}
}
private static void execute(Entity entity) {
float fps = Minecraft.getInstance().getFps();
if (fps <= 0) {
fps = 1f;
}
float times = 90f / fps;
CompoundTag persistentData = entity.getPersistentData();
if ((entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).bowpull) {
if (persistentData.getDouble("pulltime") < 1) {
persistentData.putDouble("pulltime", (persistentData.getDouble("pulltime") + 0.014 * times));
} else {
persistentData.putDouble("pulltime", 1);
}
} else {
if (persistentData.getDouble("pulltime") > 0) {
persistentData.putDouble("pulltime", (persistentData.getDouble("pulltime") - 0.009 * times));
} else {
persistentData.putDouble("pulltime", 0);
}
}
persistentData.putDouble("pullpos", (0.5 * Math.cos(Math.PI * Math.pow(Math.pow(persistentData.getDouble("pulltime"), 2) - 1, 2)) + 0.5));
if ((entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).bowpull) {
if (persistentData.getDouble("bowtime") < 1) {
persistentData.putDouble("bowtime", (persistentData.getDouble("bowtime") + 0.014 * times));
} else {
persistentData.putDouble("bowtime", 1);
}
} else {
if (persistentData.getDouble("bowtime") > 0) {
persistentData.putDouble("bowtime", (persistentData.getDouble("bowtime") - 1 * times));
} else {
persistentData.putDouble("bowtime", 0);
}
}
persistentData.putDouble("bowpos", (0.5 * Math.cos(Math.PI * Math.pow(Math.pow(persistentData.getDouble("bowtime"), 2) - 1, 2)) + 0.5));
if ((entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).bowpull) {
if (persistentData.getDouble("handtime") < 1) {
persistentData.putDouble("handtime", (persistentData.getDouble("handtime") + 0.014 * times));
} else {
persistentData.putDouble("handtime", 1);
}
persistentData.putDouble("handpos", (0.5 * Math.cos(Math.PI * Math.pow(Math.pow(persistentData.getDouble("handtime"), 2) - 1, 2)) + 0.5));
} else {
if (persistentData.getDouble("handtime") > 0) {
persistentData.putDouble("handtime", (persistentData.getDouble("handtime") - 0.04 * times));
} else {
persistentData.putDouble("handtime", 0);
}
if (persistentData.getDouble("handtime") > 0 && persistentData.getDouble("handtime") < 0.5) {
persistentData.putDouble("handpos", (0.5 * Math.cos(Math.PI * Math.pow(Math.pow(persistentData.getDouble("handtime"), 2) - 1, 2)) + 0.5));
}
}
}
}

View file

@ -4,6 +4,7 @@ import net.mcreator.target.entity.BocekarrowEntity;
import net.mcreator.target.init.TargetModEntities;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.tools.GunsTool;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerLevel;
@ -57,7 +58,7 @@ public class BowlooseProcedure {
}
} else {
for (int index0 = 0; index0 < 10; index0++) {
BulletFireNormalProcedure.execute(player);
GunsTool.spawnBullet(player);
}
if (!player.level().isClientSide() && player.getServer() != null) {

View file

@ -1,95 +0,0 @@
package net.mcreator.target.procedures;
import net.mcreator.target.network.TargetModVariables;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.ViewportEvent;
import net.minecraftforge.eventbus.api.Event;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import javax.annotation.Nullable;
@Mod.EventBusSubscriber(value = Dist.CLIENT)
public class BowpullanimProcedure {
private static ViewportEvent.ComputeCameraAngles _provider = null;
private static void setAngles(float yaw, float pitch, float roll) {
_provider.setYaw(yaw);
_provider.setPitch(pitch);
_provider.setRoll(roll);
}
@SubscribeEvent
public static void computeCameraangles(ViewportEvent.ComputeCameraAngles event) {
_provider = event;
ClientLevel level = Minecraft.getInstance().level;
Entity entity = _provider.getCamera().getEntity();
if (level != null) {
Vec3 entPos = entity.getPosition((float) _provider.getPartialTick());
execute(_provider, entity);
}
}
public static void execute(Entity entity) {
execute(null, entity);
}
private static void execute(@Nullable Event event, Entity entity) {
if (entity == null)
return;
float fps = Minecraft.getInstance().getFps();
if (fps <= 0) {
fps = 1f;
}
float times = 90f / fps;
if ((entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).bowpull) {
if (entity.getPersistentData().getDouble("pulltime") < 1) {
entity.getPersistentData().putDouble("pulltime", (entity.getPersistentData().getDouble("pulltime") + 0.014 * times));
} else {
entity.getPersistentData().putDouble("pulltime", 1);
}
} else {
if (entity.getPersistentData().getDouble("pulltime") > 0) {
entity.getPersistentData().putDouble("pulltime", (entity.getPersistentData().getDouble("pulltime") - 0.009 * times));
} else {
entity.getPersistentData().putDouble("pulltime", 0);
}
}
entity.getPersistentData().putDouble("pullpos", (0.5 * Math.cos(Math.PI * Math.pow(Math.pow(entity.getPersistentData().getDouble("pulltime"), 2) - 1, 2)) + 0.5));
if ((entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).bowpull) {
if (entity.getPersistentData().getDouble("bowtime") < 1) {
entity.getPersistentData().putDouble("bowtime", (entity.getPersistentData().getDouble("bowtime") + 0.014 * times));
} else {
entity.getPersistentData().putDouble("bowtime", 1);
}
} else {
if (entity.getPersistentData().getDouble("bowtime") > 0) {
entity.getPersistentData().putDouble("bowtime", (entity.getPersistentData().getDouble("bowtime") - 1 * times));
} else {
entity.getPersistentData().putDouble("bowtime", 0);
}
}
entity.getPersistentData().putDouble("bowpos", (0.5 * Math.cos(Math.PI * Math.pow(Math.pow(entity.getPersistentData().getDouble("bowtime"), 2) - 1, 2)) + 0.5));
if ((entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).bowpull) {
if (entity.getPersistentData().getDouble("handtime") < 1) {
entity.getPersistentData().putDouble("handtime", (entity.getPersistentData().getDouble("handtime") + 0.014 * times));
} else {
entity.getPersistentData().putDouble("handtime", 1);
}
entity.getPersistentData().putDouble("handpos", (0.5 * Math.cos(Math.PI * Math.pow(Math.pow(entity.getPersistentData().getDouble("handtime"), 2) - 1, 2)) + 0.5));
} else {
if (entity.getPersistentData().getDouble("handtime") > 0) {
entity.getPersistentData().putDouble("handtime", (entity.getPersistentData().getDouble("handtime") - 0.04 * times));
} else {
entity.getPersistentData().putDouble("handtime", 0);
}
if (entity.getPersistentData().getDouble("handtime") > 0 && entity.getPersistentData().getDouble("handtime") < 0.5) {
entity.getPersistentData().putDouble("handpos", (0.5 * Math.cos(Math.PI * Math.pow(Math.pow(entity.getPersistentData().getDouble("handtime"), 2) - 1, 2)) + 0.5));
}
}
}
}

View file

@ -1,62 +0,0 @@
package net.mcreator.target.procedures;
import net.mcreator.target.entity.ProjectileEntity;
import net.mcreator.target.init.TargetModAttributes;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.network.TargetModVariables;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
public class BulletFireNormalProcedure {
public static void execute(Player player) {
ItemStack heldItem = player.getMainHandItem();
player.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(player);
});
if (!player.level().isClientSide()) {
float damage;
float headshot = (float) heldItem.getOrCreateTag().getDouble("headshot");
float velocity = 4 * (float) heldItem.getOrCreateTag().getDouble("speed");
if (heldItem.getItem() == TargetModItems.BOCEK.get()) {
damage = 0.008333333f * (float) heldItem.getOrCreateTag().getDouble("damage") * (float) heldItem.getOrCreateTag().getDouble("speed") * (float) heldItem.getOrCreateTag().getDouble("damageadd");
ProjectileEntity projectile = new ProjectileEntity(player.level())
.shooter(player)
.damage(damage)
.headShot(headshot);
if (heldItem.getOrCreateTag().getBoolean("beast")) {
projectile.beast();
}
projectile.setPos((player.getX() + (-0.5) * player.getLookAngle().x), (player.getEyeY() - 0.1 + (-0.5) * player.getLookAngle().y), (player.getZ() + (-0.5) * player.getLookAngle().z));
projectile.shoot(player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, 1 * velocity, 2.5f);
player.level().addFreshEntity(projectile);
} else {
damage = (float) (heldItem.getOrCreateTag().getDouble("damage") + heldItem.getOrCreateTag().getDouble("adddamage"))
* (float) heldItem.getOrCreateTag().getDouble("damageadd");
ProjectileEntity projectile = new ProjectileEntity(player.level())
.shooter(player)
.damage(damage)
.headShot(headshot);
if (heldItem.getOrCreateTag().getBoolean("beast")) {
projectile.beast();
}
projectile.setPos((player.getX() + (-0.5) * player.getLookAngle().x), (player.getEyeY() - 0.1 + (-0.5) * player.getLookAngle().y), (player.getZ() + (-0.5) * player.getLookAngle().z));
projectile.shoot(player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, 1 * (float) heldItem.getOrCreateTag().getDouble("velocity"),
(float) player.getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue());
player.level().addFreshEntity(projectile);
}
}
}
}

View file

@ -1,6 +1,7 @@
package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.tools.GunsTool;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerLevel;
@ -15,7 +16,7 @@ public class KraberfireProcedure {
if (usehand.getItem() == TargetModItems.KRABER.get() && usehand.getOrCreateTag().getDouble("reloading") == 0 && !player.getCooldowns().isOnCooldown(usehand.getItem())
&& usehand.getOrCreateTag().getDouble("ammo") > 0) {
usehand.getOrCreateTag().putDouble("fireanim", 40);
BulletFireNormalProcedure.execute(player);
GunsTool.spawnBullet(player);
player.getCooldowns().addCooldown(usehand.getItem(), 40);
if (!player.level().isClientSide() && player.getServer() != null) {

View file

@ -1,6 +1,7 @@
package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.tools.GunsTool;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerLevel;
@ -18,7 +19,7 @@ public class M870fireProcedure {
if (usehand.getItem() == TargetModItems.M_870.get() && usehand.getOrCreateTag().getDouble("reloading") == 0 && !player.getCooldowns().isOnCooldown(usehand.getItem())
&& usehand.getOrCreateTag().getDouble("ammo") > 0) {
for (int index0 = 0; index0 < 12; index0++) {
BulletFireNormalProcedure.execute(player);
GunsTool.spawnBullet(player);
}
player.getCooldowns().addCooldown(usehand.getItem(), 13);
usehand.getOrCreateTag().putDouble("recoil", 1);

View file

@ -1,6 +1,7 @@
package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.tools.GunsTool;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerLevel;
@ -15,7 +16,7 @@ public class M98bfireProcedure {
if (usehand.getItem() == TargetModItems.M_98B.get() && usehand.getOrCreateTag().getDouble("reloading") == 0 && !(player.getCooldowns().isOnCooldown(usehand.getItem()))
&& usehand.getOrCreateTag().getDouble("ammo") > 0) {
usehand.getOrCreateTag().putDouble("fireanim", 17);
BulletFireNormalProcedure.execute(player);
GunsTool.spawnBullet(player);
player.getCooldowns().addCooldown(usehand.getItem(), 17);
if (!player.level().isClientSide() && player.getServer() != null) {

View file

@ -2,6 +2,7 @@ package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.tools.GunsTool;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerLevel;
@ -27,7 +28,7 @@ public class MarlinfireProcedure {
usehand.getOrCreateTag().putDouble("fastfiring", 1);
usehand.getOrCreateTag().putDouble("firing", 10);
}
BulletFireNormalProcedure.execute(player);
GunsTool.spawnBullet(player);
if (!player.level().isClientSide() && player.getServer() != null) {
player.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), (ServerLevel) player.level(), 4,

View file

@ -2,6 +2,7 @@ package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.tools.GunsTool;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerLevel;
@ -69,7 +70,7 @@ public class MinigunautofireProcedure {
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), ("playsound target:minigun_veryfar player @a ~ ~ ~ 24 " + (1 - 0.025 * Math.abs(40 - usehand.getOrCreateTag().getDouble("heat")))));
}
}
BulletFireNormalProcedure.execute(player);
GunsTool.spawnBullet(player);
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.rifleammo = player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables()).rifleammo - 1;

View file

@ -2,6 +2,7 @@ package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.tools.GunsTool;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerLevel;
@ -53,7 +54,7 @@ public class SentinelFireProcedure {
player.getName().getString(), player.getDisplayName(), player.level().getServer(), player), "playsound target:sentinel_veryfar player @a ~ ~ ~ 24 1");
}
}
BulletFireNormalProcedure.execute(player);
GunsTool.spawnBullet(player);
usehand.getOrCreateTag().putDouble("crot", 20);
player.getCooldowns().addCooldown(usehand.getItem(), 23);
usehand.getOrCreateTag().putDouble("ammo", (usehand.getOrCreateTag().getDouble("ammo") - 1));

View file

@ -1,6 +1,7 @@
package net.mcreator.target.procedures;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.tools.GunsTool;
import net.minecraft.commands.CommandSource;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.resources.ResourceLocation;
@ -21,32 +22,32 @@ public class VecBurstFireProcedure {
}
}
private static void execute(Player entity) {
private static void execute(Player player) {
ItemStack usehand;
usehand = entity.getMainHandItem();
usehand = player.getMainHandItem();
if (usehand.is(ItemTags.create(new ResourceLocation("target:gun")))) {
if (usehand.getOrCreateTag().getDouble("firemode") == 1) {
entity.getPersistentData().putDouble("firing", 0);
player.getPersistentData().putDouble("firing", 0);
}
if (usehand.getOrCreateTag().getDouble("ammo") == 0) {
usehand.getOrCreateTag().putDouble("burst", 0);
}
}
if (usehand.getItem() == TargetModItems.VECTOR.get() && usehand.getOrCreateTag().getDouble("reloading") == 0 && usehand.getOrCreateTag().getDouble("ammo") > 0
&& !(entity.getCooldowns().isOnCooldown(usehand.getItem())) && usehand.getOrCreateTag().getDouble("burst") > 0) {
&& !(player.getCooldowns().isOnCooldown(usehand.getItem())) && usehand.getOrCreateTag().getDouble("burst") > 0) {
entity.getCooldowns().addCooldown(usehand.getItem(), usehand.getOrCreateTag().getDouble("burst") == 1 ? 5 : 1);
player.getCooldowns().addCooldown(usehand.getItem(), usehand.getOrCreateTag().getDouble("burst") == 1 ? 5 : 1);
usehand.getOrCreateTag().putDouble("burst", (usehand.getOrCreateTag().getDouble("burst") - 1));
BulletFireNormalProcedure.execute(entity);
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.level().getServer(), entity), "playsound target:vector_fire_1p player @a ~ ~ ~ 2 1");
entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), (ServerLevel) entity.level(), 4,
entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:vector_fire_1p player @s ~ ~ ~ 4 1");
entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), (ServerLevel) entity.level(), 4,
entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:vector_far player @a ~ ~ ~ 6 1");
entity.getServer().getCommands().performPrefixedCommand(new CommandSourceStack(CommandSource.NULL, entity.position(), entity.getRotationVector(), (ServerLevel) entity.level(), 4,
entity.getName().getString(), entity.getDisplayName(), entity.level().getServer(), entity), "playsound target:vector_veryfar player @a ~ ~ ~ 12 1");
GunsTool.spawnBullet(player);
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:vector_fire_1p player @a ~ ~ ~ 2 1");
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:vector_fire_1p player @s ~ ~ ~ 4 1");
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:vector_far player @a ~ ~ ~ 6 1");
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:vector_veryfar player @a ~ ~ ~ 12 1");
}
usehand.getOrCreateTag().putDouble("fireanim", 2);
usehand.getOrCreateTag().putDouble("ammo", (usehand.getOrCreateTag().getDouble("ammo") - 1));

View file

@ -2,10 +2,15 @@ package net.mcreator.target.tools;
import com.google.gson.stream.JsonReader;
import net.mcreator.target.TargetMod;
import net.mcreator.target.entity.ProjectileEntity;
import net.mcreator.target.init.TargetModAttributes;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.network.GunsDataMessage;
import net.mcreator.target.network.TargetModVariables;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraftforge.event.entity.player.PlayerEvent;
@ -80,4 +85,45 @@ public class GunsTool {
public static void serverStarted(ServerStartedEvent event) {
initJsonData(event.getServer().getResourceManager());
}
public static void spawnBullet(Player player) {
ItemStack heldItem = player.getMainHandItem();
player.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(player);
});
if (player.level().isClientSide()) return;
CompoundTag tag = heldItem.getOrCreateTag();
double damage;
float headshot = (float) tag.getDouble("headshot");
float velocity = 4 * (float) tag.getDouble("speed");
var projectile = new ProjectileEntity(player.level())
.shooter(player)
.headShot(headshot);
if (tag.getBoolean("beast")) {
projectile.beast();
}
projectile.setPos(player.getX() + -0.5 * player.getLookAngle().x, player.getEyeY() - 0.1 + (-0.5) * player.getLookAngle().y, player.getZ() + (-0.5) * player.getLookAngle().z);
if (heldItem.getItem() == TargetModItems.BOCEK.get()) {
damage = 0.008333333 * tag.getDouble("damage") * tag.getDouble("speed") * tag.getDouble("damageadd");
projectile.shoot(player.getLookAngle().x, player.getLookAngle().y, player.getLookAngle().z, velocity, 2.5f);
} else {
damage = (tag.getDouble("damage") + tag.getDouble("adddamage")) * tag.getDouble("damageadd");
projectile.shoot(player.getLookAngle().x,
player.getLookAngle().y,
player.getLookAngle().z,
(float) tag.getDouble("velocity"),
(float) player.getAttribute(TargetModAttributes.SPREAD.get()).getBaseValue());
}
projectile.damage((float) damage);
player.level().addFreshEntity(projectile);
}
}