修改开火方法
This commit is contained in:
parent
24c23e8eb4
commit
3e3500e43a
12 changed files with 154 additions and 179 deletions
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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) {
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue