修改射速所用的渲染事件,重写趴下判定和精准度机制
This commit is contained in:
parent
9a4bcf0de6
commit
a7ca9e07e2
37 changed files with 122 additions and 94 deletions
|
@ -15,6 +15,8 @@ import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
|
|||
import software.bernie.geckolib.core.animation.AnimationState;
|
||||
import software.bernie.geckolib.model.GeoModel;
|
||||
|
||||
import static net.mcreator.superbwarfare.event.PlayerEventHandler.isProne;
|
||||
|
||||
public class DevotionItemModel extends GeoModel<DevotionItem> {
|
||||
@Override
|
||||
public ResourceLocation getAnimationResource(DevotionItem animatable) {
|
||||
|
@ -627,7 +629,7 @@ public class DevotionItemModel extends GeoModel<DevotionItem> {
|
|||
move.setRotY(Mth.DEG_TO_RAD * (float) turnRotY);
|
||||
move.setRotZ(2.7f * (float) mph + Mth.DEG_TO_RAD * (float) turnRotZ);
|
||||
|
||||
if (player.getPersistentData().getDouble("prone") > 0) {
|
||||
if (isProne(player)) {
|
||||
l.setRotX(1.5f);
|
||||
r.setRotX(1.5f);
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@ import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
|
|||
import software.bernie.geckolib.core.animation.AnimationState;
|
||||
import software.bernie.geckolib.model.GeoModel;
|
||||
|
||||
import static net.mcreator.superbwarfare.event.PlayerEventHandler.isProne;
|
||||
|
||||
public class M60ItemModel extends GeoModel<M60Item> {
|
||||
@Override
|
||||
public ResourceLocation getAnimationResource(M60Item animatable) {
|
||||
|
@ -49,7 +51,7 @@ public class M60ItemModel extends GeoModel<M60Item> {
|
|||
ItemStack stack = player.getMainHandItem();
|
||||
if (!stack.is(ModTags.Items.GUN)) return;
|
||||
|
||||
if (player.getPersistentData().getDouble("prone") > 0) {
|
||||
if (isProne(player)) {
|
||||
l.setRotX(1.5f);
|
||||
r.setRotX(1.5f);
|
||||
}
|
||||
|
|
|
@ -90,8 +90,8 @@ public class M98bItemModel extends GeoModel<M98bItem> {
|
|||
root.setPosX(movePosX);
|
||||
root.setPosY((float) swayY + movePosY);
|
||||
root.setRotX((float) swayX);
|
||||
root.setRotY(movePosX);
|
||||
root.setRotZ(movePosX + moveRotZ);
|
||||
root.setRotY(0.2f * movePosX);
|
||||
root.setRotZ(0.2f * movePosX + moveRotZ);
|
||||
|
||||
move.setPosX(9.3f * (float) mph);
|
||||
move.setPosY(-2f * (float) vY);
|
||||
|
|
|
@ -15,6 +15,8 @@ import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
|
|||
import software.bernie.geckolib.core.animation.AnimationState;
|
||||
import software.bernie.geckolib.model.GeoModel;
|
||||
|
||||
import static net.mcreator.superbwarfare.event.PlayerEventHandler.isProne;
|
||||
|
||||
public class Mk14ItemModel extends GeoModel<Mk14Item> {
|
||||
@Override
|
||||
public ResourceLocation getAnimationResource(Mk14Item animatable) {
|
||||
|
@ -46,7 +48,7 @@ public class Mk14ItemModel extends GeoModel<Mk14Item> {
|
|||
ItemStack stack = player.getMainHandItem();
|
||||
if (!stack.is(ModTags.Items.GUN)) return;
|
||||
|
||||
if (player.getPersistentData().getDouble("prone") > 0) {
|
||||
if (isProne(player)) {
|
||||
l.setRotX(-1.5f);
|
||||
r.setRotX(-1.5f);
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@ import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
|
|||
import software.bernie.geckolib.core.animation.AnimationState;
|
||||
import software.bernie.geckolib.model.GeoModel;
|
||||
|
||||
import static net.mcreator.superbwarfare.event.PlayerEventHandler.isProne;
|
||||
|
||||
public class Ntw20Model extends GeoModel<Ntw20Item> {
|
||||
@Override
|
||||
public ResourceLocation getAnimationResource(Ntw20Item animatable) {
|
||||
|
@ -60,7 +62,7 @@ public class Ntw20Model extends GeoModel<Ntw20Item> {
|
|||
double fp = ClientEventHandler.firePos;
|
||||
double fr = ClientEventHandler.fireRot;
|
||||
|
||||
if (player.getPersistentData().getDouble("prone") > 0) {
|
||||
if (isProne(player)) {
|
||||
l.setRotX(-1.5f);
|
||||
r.setRotX(-1.5f);
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package net.mcreator.superbwarfare.client.screens;
|
|||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import net.mcreator.superbwarfare.ModUtils;
|
||||
import net.mcreator.superbwarfare.event.ClientEventHandler;
|
||||
import net.mcreator.superbwarfare.init.ModItems;
|
||||
import net.mcreator.superbwarfare.init.ModTags;
|
||||
import net.minecraft.client.CameraType;
|
||||
|
@ -38,10 +39,7 @@ public class CrossHairOverlay {
|
|||
return;
|
||||
}
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
boolean zoom = GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) == GLFW.GLFW_PRESS;
|
||||
double normalSpread = stack.getOrCreateTag().getDouble("spread");
|
||||
double zoomSpread = stack.getOrCreateTag().getDouble("zoomSpread");
|
||||
double spread = (zoom ? zoomSpread : normalSpread);
|
||||
double spread = ClientEventHandler.gunSpread;
|
||||
|
||||
RenderSystem.disableDepthTest();
|
||||
RenderSystem.depthMask(false);
|
||||
|
@ -51,11 +49,11 @@ public class CrossHairOverlay {
|
|||
RenderSystem.setShaderColor(1, 1, 1, 1);
|
||||
|
||||
if (shouldRenderCrossHair(player) || stack.is(ModItems.MINIGUN.get()) || (stack.is(ModItems.BOCEK.get()) && stack.getOrCreateTag().getBoolean("HoloHidden"))) {
|
||||
preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/point.png"), w / 2f - 7.5f, h / 2f - 8, 0, 0, 16, 16, 16, 16);
|
||||
preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/rexheng.png"), (float) (w / 2f - 9.5f - 2.8f * spread), h / 2f - 8, 0, 0, 16, 16, 16, 16);
|
||||
preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/rexheng.png"), (float) (w / 2f - 6.5f + 2.8f * spread), h / 2f - 8, 0, 0, 16, 16, 16, 16);
|
||||
preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/rexshu.png"), w / 2f - 7.5f, (float) (h / 2f - 7 + 2.8f * spread), 0, 0, 16, 16, 16, 16);
|
||||
preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/rexshu.png"), w / 2f - 7.5f, (float) (h / 2f - 10 - 2.8f * spread), 0, 0, 16, 16, 16, 16);
|
||||
preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/point.png"), w / 2f - 7.5f, h / 2f - 7.5f, 0, 0, 16, 16, 16, 16);
|
||||
preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/rexheng.png"), (float) (w / 2f - 13.5f - 2.8f * spread), h / 2f - 7.5f, 0, 0, 16, 16, 16, 16);
|
||||
preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/rexheng.png"), (float) (w / 2f - 2.5f + 2.8f * spread), h / 2f - 7.5f, 0, 0, 16, 16, 16, 16);
|
||||
preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/rexshu.png"), w / 2f - 7.5f, (float) (h / 2f - 2.5f + 2.8f * spread), 0, 0, 16, 16, 16, 16);
|
||||
preciseBlit(event.getGuiGraphics(), new ResourceLocation(ModUtils.MODID, "textures/screens/rexshu.png"), w / 2f - 7.5f, (float) (h / 2f - 13.5f - 2.8f * spread), 0, 0, 16, 16, 16, 16);
|
||||
}
|
||||
|
||||
float ww = w / 2f - 7.5f + (float) (2 * (Math.random() - 0.5f));
|
||||
|
|
|
@ -27,12 +27,14 @@ import net.minecraftforge.client.event.RenderGuiOverlayEvent;
|
|||
import net.minecraftforge.client.event.RenderHandEvent;
|
||||
import net.minecraftforge.client.event.ViewportEvent;
|
||||
import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay;
|
||||
import net.minecraftforge.event.TickEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
|
||||
import static net.mcreator.superbwarfare.entity.DroneEntity.ROT_X;
|
||||
import static net.mcreator.superbwarfare.entity.DroneEntity.ROT_Z;
|
||||
import static net.mcreator.superbwarfare.event.PlayerEventHandler.isProne;
|
||||
|
||||
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT)
|
||||
public class ClientEventHandler {
|
||||
|
@ -72,6 +74,8 @@ public class ClientEventHandler {
|
|||
public static double pullPos = 0;
|
||||
public static double bowPos = 0;
|
||||
public static double handPos = 0;
|
||||
public static double gunSpread = 0;
|
||||
public static double fireSpread = 0;
|
||||
|
||||
public static MillisTimer clientTimer = new MillisTimer();
|
||||
|
||||
|
@ -102,13 +106,63 @@ public class ClientEventHandler {
|
|||
return !mc.isWindowActive();
|
||||
}
|
||||
|
||||
private static boolean isMove() {
|
||||
return Minecraft.getInstance().options.keyLeft.isDown()
|
||||
|| Minecraft.getInstance().options.keyRight.isDown()
|
||||
|| Minecraft.getInstance().options.keyUp.isDown()
|
||||
|| Minecraft.getInstance().options.keyDown.isDown();
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void handleWeaponFire(RenderHandEvent event) {
|
||||
if (notInGame()) return;
|
||||
public static void handleWeaponFire(TickEvent.RenderTickEvent event) {
|
||||
ClientLevel level = Minecraft.getInstance().level;
|
||||
Player player = Minecraft.getInstance().player;
|
||||
if (GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_LEFT) == GLFW.GLFW_PRESS && player != null && level != null && player.getMainHandItem().is(ModTags.Items.NORMAL_GUN)) {
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
if (notInGame()) return;
|
||||
if (player == null) return;
|
||||
if (level == null) return;
|
||||
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
|
||||
//精准度
|
||||
float times = Minecraft.getInstance().getDeltaFrameTime();
|
||||
|
||||
double basicDev = stack.getOrCreateTag().getDouble("spread");
|
||||
|
||||
double walk = isMove() ? 0.75 * basicDev : 0;
|
||||
|
||||
double sprint = player.isSprinting() ? 1.25 * basicDev : 0;
|
||||
|
||||
double crouching = player.isCrouching() ? -0.15 * basicDev : 0;
|
||||
|
||||
double prone = isProne(player) ? -0.3 * basicDev : 0;
|
||||
|
||||
double jump = player.onGround() ? 0 * basicDev : 1.5 * basicDev;
|
||||
|
||||
double ride = player.onGround() ? -0.25 * basicDev : 0;
|
||||
|
||||
double zoomSpread;
|
||||
|
||||
if (stack.is(ModTags.Items.SNIPER_RIFLE)) {
|
||||
zoomSpread = 1 - (0.995 * zoomTime);
|
||||
} else if (stack.is(ModTags.Items.SHOTGUN) || stack.is(ModItems.MINIGUN.get())) {
|
||||
zoomSpread = 1 - (0.25 * zoomTime);
|
||||
}
|
||||
else {
|
||||
zoomSpread = 1 - (0.9 * zoomTime);
|
||||
}
|
||||
|
||||
double spread = stack.is(ModTags.Items.SHOTGUN) || stack.is(ModItems.MINIGUN.get()) ? 1.2 * zoomSpread * (basicDev + 0.2 * (walk + sprint + crouching + prone + jump + ride) + fireSpread) : zoomSpread * (0.4 * basicDev + walk + sprint + crouching + prone + jump + ride + 0.6 * fireSpread);
|
||||
|
||||
if (gunSpread < spread) {
|
||||
gunSpread += 0.07 * Math.pow(spread - gunSpread, 2) * times;
|
||||
} else {
|
||||
gunSpread -= 0.07 * Math.pow(spread - gunSpread, 2) * times;
|
||||
}
|
||||
|
||||
// player.displayClientMessage(Component.literal(new java.text.DecimalFormat("####").format(gunSpread)), true);
|
||||
|
||||
// 开火部分
|
||||
if (GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_LEFT) == GLFW.GLFW_PRESS && player.getMainHandItem().is(ModTags.Items.NORMAL_GUN)) {
|
||||
|
||||
double customRpm = 0;
|
||||
|
||||
|
@ -132,7 +186,7 @@ public class ClientEventHandler {
|
|||
}
|
||||
|
||||
if (clientTimer.getProgress() >= cooldown) {
|
||||
ModUtils.PACKET_HANDLER.sendToServer(new ShootMessage(0));
|
||||
ModUtils.PACKET_HANDLER.sendToServer(new ShootMessage(spread));
|
||||
clientTimer.setProgress((long) (clientTimer.getProgress() - cooldown));
|
||||
}
|
||||
|
||||
|
@ -231,9 +285,9 @@ public class ClientEventHandler {
|
|||
double pose;
|
||||
var data = entity.getPersistentData();
|
||||
|
||||
if (entity.isShiftKeyDown() && entity.getBbHeight() >= 1 && data.getDouble("prone") == 0) {
|
||||
if (entity.isShiftKeyDown() && entity.getBbHeight() >= 1 && isProne((Player) entity)) {
|
||||
pose = 0.85;
|
||||
} else if (data.getDouble("prone") > 0) {
|
||||
} else if (isProne((Player) entity)) {
|
||||
pose = entity.getMainHandItem().getOrCreateTag().getDouble("bipod") == 1 ? 0 : 0.25f;
|
||||
} else {
|
||||
pose = 1;
|
||||
|
@ -266,10 +320,7 @@ public class ClientEventHandler {
|
|||
moveRotZ = Mth.clamp(moveRotZ - 0.007 * times, 0, 0.14) * (1 - zoomTime);
|
||||
}
|
||||
|
||||
if ((Minecraft.getInstance().options.keyLeft.isDown()
|
||||
|| Minecraft.getInstance().options.keyRight.isDown()
|
||||
|| Minecraft.getInstance().options.keyUp.isDown()
|
||||
|| Minecraft.getInstance().options.keyDown.isDown()) && firePosTimer == 0) {
|
||||
if (isMove() && firePosTimer == 0) {
|
||||
if (moveYTime < 1.25) {
|
||||
moveYTime += 1.2 * on_ground * times * move_speed;
|
||||
} else {
|
||||
|
@ -317,11 +368,13 @@ public class ClientEventHandler {
|
|||
}
|
||||
|
||||
if (movePosHorizon < 0) {
|
||||
movePosHorizon += 2 * times * Math.pow(movePosHorizon, 2) * (1 - zoomTime);
|
||||
movePosHorizon += 4 * times * Math.pow(movePosHorizon, 2);
|
||||
} else {
|
||||
movePosHorizon -= 2 * times * Math.pow(movePosHorizon, 2) * (1 - zoomTime);
|
||||
movePosHorizon -= 4 * times * Math.pow(movePosHorizon, 2);
|
||||
}
|
||||
|
||||
movePosHorizon *= (1 - zoomTime);
|
||||
|
||||
double velocity = entity.getDeltaMovement().y();
|
||||
|
||||
if (-0.8 < velocity + 0.078 && velocity + 0.078 < 0.8) {
|
||||
|
@ -358,8 +411,16 @@ public class ClientEventHandler {
|
|||
firePosTimer = 0.001;
|
||||
fireRotTimer = 0.001;
|
||||
firePosZ = 0.1;
|
||||
fireSpread += 10;
|
||||
}
|
||||
|
||||
fireSpread = Mth.clamp(fireSpread - 0.2 * (Math.pow(fireSpread, 2) * times), 0 ,100);
|
||||
|
||||
// Player player = Minecraft.getInstance().player;
|
||||
// if (player != null) {
|
||||
// player.displayClientMessage(Component.literal(new java.text.DecimalFormat("####").format(fireSpread)), true);
|
||||
// }
|
||||
|
||||
firePosZ = Mth.clamp(firePosZ - 0.01 * times, 0, 0.6);
|
||||
|
||||
if (0 < firePosTimer) {
|
||||
|
@ -396,6 +457,9 @@ public class ClientEventHandler {
|
|||
fireRotTimer = 0;
|
||||
fireRot = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
private static void handlePlayerBreath(LivingEntity entity) {
|
||||
|
|
|
@ -124,7 +124,7 @@ public class GunEventHandler {
|
|||
stack.getOrCreateTag().putBoolean("shoot", true);
|
||||
|
||||
for (int index0 = 0; index0 < (int) stack.getOrCreateTag().getDouble("projectile_amount"); index0++) {
|
||||
gunShoot(player);
|
||||
gunShoot(player, 2 * stack.getOrCreateTag().getDouble("spread"));
|
||||
}
|
||||
|
||||
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
|
@ -230,7 +230,7 @@ public class GunEventHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public static void gunShoot(Player player) {
|
||||
public static void gunShoot(Player player, double spared) {
|
||||
ItemStack heldItem = player.getMainHandItem();
|
||||
|
||||
if (!player.level().isClientSide()) {
|
||||
|
@ -238,8 +238,6 @@ public class GunEventHandler {
|
|||
float damage = (float) (heldItem.getOrCreateTag().getDouble("damage") + heldItem.getOrCreateTag().getDouble("sentinelChargeDamage")) * (float) heldItem.getOrCreateTag().getDouble("levelDamageMultiple");
|
||||
|
||||
boolean zoom = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables()).zoom;
|
||||
double spread = heldItem.getOrCreateTag().getDouble("spread");
|
||||
double zoomSpread = heldItem.getOrCreateTag().getDouble("zoomSpread");
|
||||
|
||||
ProjectileEntity projectile = new ProjectileEntity(player.level())
|
||||
.shooter(player)
|
||||
|
@ -285,7 +283,7 @@ public class GunEventHandler {
|
|||
|
||||
projectile.setPos(player.getX() - 0.1 * player.getLookAngle().x, player.getEyeY() - 0.1 - 0.1 * player.getLookAngle().y, player.getZ() + -0.1 * player.getLookAngle().z);
|
||||
projectile.shoot(player.getLookAngle().x, player.getLookAngle().y + 0.0005f, player.getLookAngle().z, 1 * (float) heldItem.getOrCreateTag().getDouble("velocity"),
|
||||
(float) (zoom ? zoomSpread : spread));
|
||||
(float) spared);
|
||||
player.level().addFreshEntity(projectile);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -77,7 +77,6 @@ public class PlayerEventHandler {
|
|||
if (event.phase == TickEvent.Phase.END) {
|
||||
if (stack.is(ModTags.Items.GUN)) {
|
||||
handleWeaponSway(player);
|
||||
handlePlayerProne(player);
|
||||
handlePlayerSprint(player);
|
||||
handleWeaponLevel(player);
|
||||
handleAmmoCount(player);
|
||||
|
@ -85,6 +84,7 @@ public class PlayerEventHandler {
|
|||
handleChangeFireRate(player);
|
||||
handleBocekPulling(player);
|
||||
handleGunRecoil(player);
|
||||
isProne(player);
|
||||
}
|
||||
|
||||
handleGround(player);
|
||||
|
@ -95,14 +95,22 @@ public class PlayerEventHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public static boolean isProne(Player player) {
|
||||
Level level = player.level();
|
||||
|
||||
if (player.getBbHeight() <= 1) return true;
|
||||
|
||||
return player.isCrouching() && level.getBlockState(BlockPos.containing(player.getX() + 0.7 * player.getLookAngle().x, player.getY() + 0.5, player.getZ() + 0.7 * player.getLookAngle().z)).canOcclude() && !level.getBlockState(BlockPos.containing(player.getX() + 0.7 * player.getLookAngle().x, player.getY() + 1.5, player.getZ() + 0.7 * player.getLookAngle().z)).canOcclude();
|
||||
}
|
||||
|
||||
private static void handleWeaponSway(Player player) {
|
||||
if (player.getMainHandItem().is(ModTags.Items.GUN)) {
|
||||
float pose;
|
||||
var data = player.getPersistentData();
|
||||
|
||||
if (player.isCrouching() && player.getBbHeight() >= 1 && data.getDouble("prone") == 0) {
|
||||
if (player.isCrouching() && player.getBbHeight() >= 1 && !isProne(player)) {
|
||||
pose = 0.85f;
|
||||
} else if (player.getPersistentData().getDouble("prone") > 0) {
|
||||
} else if (isProne(player)) {
|
||||
pose = player.getMainHandItem().getOrCreateTag().getDouble("bipod") == 1 ? 0 : 0.25f;
|
||||
} else {
|
||||
pose = 1;
|
||||
|
@ -231,26 +239,6 @@ public class PlayerEventHandler {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断玩家是否趴下
|
||||
*/
|
||||
private static void handlePlayerProne(Player player) {
|
||||
Level level = player.level();
|
||||
|
||||
if (player.getBbHeight() <= 1) {
|
||||
player.getPersistentData().putDouble("prone", 3);
|
||||
}
|
||||
|
||||
if (player.isCrouching() && level.getBlockState(BlockPos.containing(player.getX() + 0.7 * player.getLookAngle().x, player.getY() + 0.5, player.getZ() + 0.7 * player.getLookAngle().z)).canOcclude()
|
||||
&& !level.getBlockState(BlockPos.containing(player.getX() + 0.7 * player.getLookAngle().x, player.getY() + 1.5, player.getZ() + 0.7 * player.getLookAngle().z)).canOcclude()) {
|
||||
player.getPersistentData().putDouble("prone", 3);
|
||||
}
|
||||
|
||||
if (player.getPersistentData().getDouble("prone") > 0) {
|
||||
player.getPersistentData().putDouble("prone", (player.getPersistentData().getDouble("prone") - 1));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断玩家是否在奔跑
|
||||
*/
|
||||
|
@ -436,10 +424,10 @@ public class PlayerEventHandler {
|
|||
计算后坐力
|
||||
*/
|
||||
float rx, ry;
|
||||
if (player.isShiftKeyDown() && player.getBbHeight() >= 1 && player.getPersistentData().getDouble("prone") == 0) {
|
||||
if (player.isShiftKeyDown() && player.getBbHeight() >= 1 && !isProne(player)) {
|
||||
rx = 0.7f;
|
||||
ry = 0.8f;
|
||||
} else if (player.getPersistentData().getDouble("prone") > 0) {
|
||||
} else if (isProne(player)) {
|
||||
if (tag.getDouble("bipod") == 1) {
|
||||
rx = 0.05f;
|
||||
ry = 0.1f;
|
||||
|
|
|
@ -275,7 +275,6 @@ public class ModVariables {
|
|||
public boolean tacticalSprint = false;
|
||||
public int tacticalSprintTime = 600;
|
||||
public boolean tacticalSprintExhaustion = false;
|
||||
|
||||
public boolean breath = false;
|
||||
public int breathTime = 160;
|
||||
public boolean breathExhaustion = false;
|
||||
|
|
|
@ -22,31 +22,31 @@ import static net.mcreator.superbwarfare.event.GunEventHandler.gunShoot;
|
|||
import static net.mcreator.superbwarfare.event.GunEventHandler.playGunSounds;
|
||||
|
||||
public class ShootMessage {
|
||||
private final int type;
|
||||
private final double spared;
|
||||
|
||||
public ShootMessage(int type) {
|
||||
this.type = type;
|
||||
public ShootMessage(double spared) {
|
||||
this.spared = spared;
|
||||
}
|
||||
|
||||
public static ShootMessage decode(FriendlyByteBuf buffer) {
|
||||
return new ShootMessage(buffer.readInt());
|
||||
return new ShootMessage(buffer.readDouble());
|
||||
}
|
||||
|
||||
public static void encode(ShootMessage message, FriendlyByteBuf buffer) {
|
||||
buffer.writeInt(message.type);
|
||||
buffer.writeDouble(message.spared);
|
||||
}
|
||||
|
||||
public static void handler(ShootMessage message, Supplier<NetworkEvent.Context> contextSupplier) {
|
||||
NetworkEvent.Context context = contextSupplier.get();
|
||||
context.enqueueWork(() -> {
|
||||
if (context.getSender() != null) {
|
||||
pressAction(context.getSender(), message.type);
|
||||
pressAction(context.getSender(), message.spared);
|
||||
}
|
||||
});
|
||||
context.setPacketHandled(true);
|
||||
}
|
||||
|
||||
public static void pressAction(Player player, int type) {
|
||||
public static void pressAction(Player player, double spared) {
|
||||
Level level = player.level();
|
||||
|
||||
if (!level.isLoaded(player.blockPosition())) {
|
||||
|
@ -55,7 +55,6 @@ public class ShootMessage {
|
|||
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
if (stack.is(ModTags.Items.NORMAL_GUN)) {
|
||||
|
||||
double mode = stack.getOrCreateTag().getInt("fire_mode");
|
||||
int interval = stack.getOrCreateTag().getInt("fire_interval");
|
||||
|
||||
|
@ -150,7 +149,7 @@ public class ShootMessage {
|
|||
player.getCooldowns().addCooldown(stack.getItem(), cooldown);
|
||||
|
||||
for (int index0 = 0; index0 < (int) stack.getOrCreateTag().getDouble("projectile_amount"); index0++) {
|
||||
gunShoot(player);
|
||||
gunShoot(player, spared);
|
||||
}
|
||||
playGunSounds(player);
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 0.95,
|
||||
"zoom": 1.25,
|
||||
"spread": 3.5,
|
||||
"zoomSpread": 3,
|
||||
"recoil_x": 0.006,
|
||||
"recoil_y": 0.018,
|
||||
"damage": 2.5,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.4,
|
||||
"zoom": 1.25,
|
||||
"spread": 4,
|
||||
"zoomSpread": 3,
|
||||
"recoil_x": 0.005,
|
||||
"recoil_y": 0.026,
|
||||
"damage": 3,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.1,
|
||||
"zoom": 1.25,
|
||||
"spread": 4,
|
||||
"zoomSpread": 0.1,
|
||||
"recoil_x": 0.0025,
|
||||
"recoil_y": 0.012,
|
||||
"damage": 8.5,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 0.9,
|
||||
"zoom": 2,
|
||||
"spread": 5,
|
||||
"zoomSpread": 0.1,
|
||||
"bipod": 1,
|
||||
"recoil_x": 0.0018,
|
||||
"recoil_y": 0.01,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.9,
|
||||
"zoom": 1.25,
|
||||
"spread": 2.5,
|
||||
"zoomSpread": 0.2,
|
||||
"recoil_x": 0.004,
|
||||
"recoil_y": 0.013,
|
||||
"damage": 5.5,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.9,
|
||||
"zoom": 1.25,
|
||||
"spread": 2.5,
|
||||
"zoomSpread": 0.2,
|
||||
"recoil_x": 0.004,
|
||||
"recoil_y": 0.013,
|
||||
"damage": 5.5,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.3,
|
||||
"zoom": 1.25,
|
||||
"spread": 3.5,
|
||||
"zoomSpread": 0.1,
|
||||
"recoil_x": 0.0016,
|
||||
"recoil_y": 0.009,
|
||||
"damage": 7.5,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1,
|
||||
"zoom": 1.25,
|
||||
"spread": 7,
|
||||
"zoomSpread": 0.01,
|
||||
"recoil_x": 0.004,
|
||||
"recoil_y": 0.04,
|
||||
"damage": 65,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.05,
|
||||
"zoom": 1.25,
|
||||
"spread": 5,
|
||||
"zoomSpread": 0.001,
|
||||
"recoil_x": 0.002,
|
||||
"recoil_y": 0.063,
|
||||
"damage": 35,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.7,
|
||||
"zoom": 1.25,
|
||||
"spread": 2.5,
|
||||
"zoomSpread": 0.2,
|
||||
"recoil_x": 0.006,
|
||||
"recoil_y": 0.018,
|
||||
"damage": 9.5,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.15,
|
||||
"zoom": 1.25,
|
||||
"spread": 4,
|
||||
"zoomSpread": 0.1,
|
||||
"recoil_x": 0.0015,
|
||||
"recoil_y": 0.011,
|
||||
"damage": 7,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 0.85,
|
||||
"zoom": 1.25,
|
||||
"spread": 5,
|
||||
"zoomSpread": 0.1,
|
||||
"bipod": 1,
|
||||
"recoil_x": 0.004,
|
||||
"recoil_y": 0.014,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.1,
|
||||
"zoom": 1.25,
|
||||
"spread": 3,
|
||||
"zoomSpread": 2.7,
|
||||
"recoil_x": 0.009,
|
||||
"recoil_y": 0.04,
|
||||
"damage": 3,
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
"min_zoom": 4,
|
||||
"max_zoom": 8,
|
||||
"spread": 6,
|
||||
"zoomSpread": 0.001,
|
||||
"recoil_x": 0.007,
|
||||
"recoil_y": 0.013,
|
||||
"damage": 38,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.1,
|
||||
"zoom": 1.25,
|
||||
"spread": 2,
|
||||
"zoomSpread": 0.1,
|
||||
"recoil_x": 0.004,
|
||||
"recoil_y": 0.031,
|
||||
"damage": 16,
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
"zoom": 1,
|
||||
"spread": 2.5,
|
||||
"zoomSpread": 2.5,
|
||||
"recoil_x": 0.012,
|
||||
"recoil_y": 0.011,
|
||||
"damage": 8,
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
"min_zoom": 1.25,
|
||||
"max_zoom": 6,
|
||||
"spread": 5,
|
||||
"zoomSpread": 0.01,
|
||||
"bipod": 1,
|
||||
"recoil_x": 0.006,
|
||||
"recoil_y": 0.014,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 0.9,
|
||||
"zoom": 3.5,
|
||||
"spread": 4.8,
|
||||
"zoomSpread": 0.001,
|
||||
"recoil_x": 0.002,
|
||||
"recoil_y": 0.063,
|
||||
"damage": 33,
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
"max_zoom": 6,
|
||||
"bipod": 1,
|
||||
"spread": 8,
|
||||
"zoomSpread": 0.05,
|
||||
"recoil_x": 0.01,
|
||||
"recoil_y": 0.038,
|
||||
"damage": 100,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.25,
|
||||
"zoom": 1.25,
|
||||
"spread": 3.7,
|
||||
"zoomSpread": 0.1,
|
||||
"recoil_x": 0.0013,
|
||||
"recoil_y": 0.009,
|
||||
"damage": 7.5,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1,
|
||||
"zoom": 1.25,
|
||||
"spread": 5.5,
|
||||
"zoomSpread": 0.1,
|
||||
"bipod": 1,
|
||||
"recoil_x": 0.0035,
|
||||
"recoil_y": 0.012,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 0.95,
|
||||
"zoom": 3,
|
||||
"spread": 6,
|
||||
"zoomSpread": 0.001,
|
||||
"recoil_x": 0.007,
|
||||
"recoil_y": 0.018,
|
||||
"damage": 35,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1,
|
||||
"zoom": 1.25,
|
||||
"spread": 4.5,
|
||||
"zoomSpread": 0.1,
|
||||
"recoil_x": 0.004,
|
||||
"recoil_y": 0.015,
|
||||
"damage": 9.5,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 0.9,
|
||||
"zoom": 4,
|
||||
"spread": 5.5,
|
||||
"zoomSpread": 0.1,
|
||||
"recoil_x": 0.008,
|
||||
"recoil_y": 0.015,
|
||||
"damage": 18,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.7,
|
||||
"zoom": 1.25,
|
||||
"spread": 3,
|
||||
"zoomSpread": 0.1,
|
||||
"recoil_x": 0.005,
|
||||
"recoil_y": 0.032,
|
||||
"damage": 19,
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
"zoom_speed": 1.6,
|
||||
"zoom": 1.25,
|
||||
"spread": 2.3,
|
||||
"zoomSpread": 0.15,
|
||||
"recoil_x": 0.007,
|
||||
"recoil_y": 0.007,
|
||||
"damage": 4.5,
|
||||
|
|
Loading…
Add table
Reference in a new issue