优化粒子效果相关方法
This commit is contained in:
parent
9acd95fa5c
commit
3b29c8e7c4
2 changed files with 19 additions and 16 deletions
|
@ -7,10 +7,9 @@ import net.mcreator.target.init.TargetModItems;
|
||||||
import net.mcreator.target.init.TargetModSounds;
|
import net.mcreator.target.init.TargetModSounds;
|
||||||
import net.mcreator.target.init.TargetModTags;
|
import net.mcreator.target.init.TargetModTags;
|
||||||
import net.mcreator.target.network.TargetModVariables;
|
import net.mcreator.target.network.TargetModVariables;
|
||||||
import net.mcreator.target.tools.GunsTool;
|
import net.mcreator.target.tools.ParticleTool;
|
||||||
import net.mcreator.target.tools.SoundTool;
|
import net.mcreator.target.tools.SoundTool;
|
||||||
import net.minecraft.commands.CommandSource;
|
import net.minecraft.core.particles.ParticleTypes;
|
||||||
import net.minecraft.commands.CommandSourceStack;
|
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.server.level.ServerLevel;
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
|
@ -109,8 +108,9 @@ public class GunEventHandler {
|
||||||
Thread recoilThread = new Thread(recoilRunnable);
|
Thread recoilThread = new Thread(recoilRunnable);
|
||||||
recoilThread.start();
|
recoilThread.start();
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
通用的武器开火流程
|
/**
|
||||||
|
* 通用的武器开火流程
|
||||||
*/
|
*/
|
||||||
private static void handleGunFire(Player player) {
|
private static void handleGunFire(Player player) {
|
||||||
ItemStack stack = player.getMainHandItem();
|
ItemStack stack = player.getMainHandItem();
|
||||||
|
@ -154,6 +154,7 @@ public class GunEventHandler {
|
||||||
if (stack.getOrCreateTag().getInt("ammo") == 1) {
|
if (stack.getOrCreateTag().getInt("ammo") == 1) {
|
||||||
stack.getOrCreateTag().putDouble("gj", 1);
|
stack.getOrCreateTag().putDouble("gj", 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
判断是否为栓动武器(bolt_action_time > 0),并在开火后给一个需要上膛的状态
|
判断是否为栓动武器(bolt_action_time > 0),并在开火后给一个需要上膛的状态
|
||||||
*/
|
*/
|
||||||
|
@ -181,12 +182,9 @@ public class GunEventHandler {
|
||||||
|
|
||||||
if (player.getMainHandItem().getItem() == TargetModItems.ABEKIRI.get()) {
|
if (player.getMainHandItem().getItem() == TargetModItems.ABEKIRI.get()) {
|
||||||
stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(InteractionHand.MAIN_HAND));
|
stack.hurtAndBreak(1, player, p -> p.broadcastBreakEvent(InteractionHand.MAIN_HAND));
|
||||||
if (!player.level().isClientSide() && player.getServer() != null) {
|
if (player instanceof ServerPlayer serverPlayer && player.level() instanceof ServerLevel serverLevel) {
|
||||||
player.getServer().getCommands().performPrefixedCommand(
|
ParticleTool.sendParticle(serverLevel, ParticleTypes.CLOUD, player.getX() + 1.8 * player.getLookAngle().x, player.getY() + player.getBbHeight() - 0.1 + 1.8 * player.getLookAngle().y,
|
||||||
new CommandSourceStack(CommandSource.NULL, player.position(), player.getRotationVector(), player.level() instanceof ServerLevel ? (ServerLevel) player.level() : null, 4, player.getName().getString(), player.getDisplayName(),
|
player.getZ() + 1.8 * player.getLookAngle().z, 30, 0.4, 0.4, 0.4, 0.005, true, serverPlayer);
|
||||||
player.level().getServer(), player),
|
|
||||||
("particle minecraft:cloud" + (" " + (player.getX() + 1.8 * player.getLookAngle().x)) + (" " + (player.getY() + player.getBbHeight() - 0.1 + 1.8 * player.getLookAngle().y))
|
|
||||||
+ (" " + (player.getZ() + 1.8 * player.getLookAngle().z)) + " 0.4 0.4 0.4 0.005 30 force @s"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,7 +205,6 @@ public class GunEventHandler {
|
||||||
stack.getOrCreateTag().putDouble("marlin_animation_time", 15);
|
stack.getOrCreateTag().putDouble("marlin_animation_time", 15);
|
||||||
stack.getOrCreateTag().putDouble("fastfiring", 0);
|
stack.getOrCreateTag().putDouble("fastfiring", 0);
|
||||||
} else {
|
} else {
|
||||||
zoom_add_cooldown = 0;
|
|
||||||
stack.getOrCreateTag().putDouble("marlin_animation_time", 10);
|
stack.getOrCreateTag().putDouble("marlin_animation_time", 10);
|
||||||
stack.getOrCreateTag().putDouble("fastfiring", 1);
|
stack.getOrCreateTag().putDouble("fastfiring", 1);
|
||||||
}
|
}
|
||||||
|
@ -219,8 +216,8 @@ public class GunEventHandler {
|
||||||
for (int index0 = 0; index0 < (int) stack.getOrCreateTag().getDouble("projectile_amount"); index0++) {
|
for (int index0 = 0; index0 < (int) stack.getOrCreateTag().getDouble("projectile_amount"); index0++) {
|
||||||
gunShoot(player);
|
gunShoot(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
在开火动画的最后1tick,设置需要拉栓上膛的武器拉栓动画的倒计时为data里的拉栓时间
|
在开火动画的最后1tick,设置需要拉栓上膛的武器拉栓动画的倒计时为data里的拉栓时间
|
||||||
*/
|
*/
|
||||||
|
@ -237,8 +234,9 @@ public class GunEventHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
加特林开火流程
|
/**
|
||||||
|
* 加特林开火流程
|
||||||
*/
|
*/
|
||||||
private static void handleMiniGunFire(Player player) {
|
private static void handleMiniGunFire(Player player) {
|
||||||
ItemStack stack = player.getMainHandItem();
|
ItemStack stack = player.getMainHandItem();
|
||||||
|
|
|
@ -15,10 +15,15 @@ public class ParticleTool {
|
||||||
public static <T extends ParticleOptions> void sendParticle(ServerLevel level, T particle, double x, double y, double z, int count,
|
public static <T extends ParticleOptions> void sendParticle(ServerLevel level, T particle, double x, double y, double z, int count,
|
||||||
double xOffset, double yOffset, double zOffset, double speed, boolean force) {
|
double xOffset, double yOffset, double zOffset, double speed, boolean force) {
|
||||||
for (ServerPlayer serverPlayer : level.players()) {
|
for (ServerPlayer serverPlayer : level.players()) {
|
||||||
level.sendParticles(serverPlayer, particle, force, x, y, z, count, xOffset, yOffset, zOffset, speed);
|
sendParticle(level, particle, x, y, z, count, xOffset, yOffset, zOffset, speed, force, serverPlayer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static <T extends ParticleOptions> void sendParticle(ServerLevel level, T particle, double x, double y, double z, int count,
|
||||||
|
double xOffset, double yOffset, double zOffset, double speed, boolean force, ServerPlayer viewer) {
|
||||||
|
level.sendParticles(viewer, particle, force, x, y, z, count, xOffset, yOffset, zOffset, speed);
|
||||||
|
}
|
||||||
|
|
||||||
public static void spawnMediumExplosionParticles(Level level, Vec3 pos) {
|
public static void spawnMediumExplosionParticles(Level level, Vec3 pos) {
|
||||||
double x = pos.x;
|
double x = pos.x;
|
||||||
double y = pos.y;
|
double y = pos.y;
|
||||||
|
|
Loading…
Add table
Reference in a new issue