修bug
This commit is contained in:
parent
460f2de5a9
commit
5b64d1ec22
3 changed files with 56 additions and 26 deletions
|
@ -83,7 +83,7 @@ public class GunEventHandler {
|
||||||
|
|
||||||
var tag = stack.getOrCreateTag();
|
var tag = stack.getOrCreateTag();
|
||||||
|
|
||||||
if ((player.getPersistentData().getBoolean("holdFire") || (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).zoom) && !player.isSprinting()) {
|
if ((player.getPersistentData().getBoolean("holdFire") || (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).zoom)) {
|
||||||
if (tag.getDouble("minigun_rotation") < 10) {
|
if (tag.getDouble("minigun_rotation") < 10) {
|
||||||
tag.putDouble("minigun_rotation", (tag.getDouble("minigun_rotation") + 1));
|
tag.putDouble("minigun_rotation", (tag.getDouble("minigun_rotation") + 1));
|
||||||
}
|
}
|
||||||
|
@ -523,19 +523,31 @@ public class GunEventHandler {
|
||||||
// 一阶段结束,检查备弹,如果有则二阶段启动,无则直接跳到三阶段
|
// 一阶段结束,检查备弹,如果有则二阶段启动,无则直接跳到三阶段
|
||||||
if ((tag.getDouble("prepare") == 1 || tag.getDouble("prepare_load") == 1)) {
|
if ((tag.getDouble("prepare") == 1 || tag.getDouble("prepare_load") == 1)) {
|
||||||
|
|
||||||
// 检查备弹
|
int count = 0;
|
||||||
var capability = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables());
|
for (var inv : player.getInventory().items) {
|
||||||
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) && capability.shotgunAmmo == 0) {
|
if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) {
|
||||||
tag.putBoolean("force_stage3_start", true);
|
count++;
|
||||||
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO) && capability.sniperAmmo == 0) {
|
}
|
||||||
tag.putBoolean("force_stage3_start", true);
|
}
|
||||||
} else if ((stack.is(ModTags.Items.USE_HANDGUN_AMMO) || stack.is(ModTags.Items.SMG)) && capability.handgunAmmo == 0) {
|
|
||||||
tag.putBoolean("force_stage3_start", true);
|
if (count == 0) {
|
||||||
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO) && capability.rifleAmmo == 0) {
|
var capability = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables());
|
||||||
tag.putBoolean("force_stage3_start", true);
|
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) && capability.shotgunAmmo == 0) {
|
||||||
|
tag.putBoolean("force_stage3_start", true);
|
||||||
|
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO) && capability.sniperAmmo == 0) {
|
||||||
|
tag.putBoolean("force_stage3_start", true);
|
||||||
|
} else if ((stack.is(ModTags.Items.USE_HANDGUN_AMMO) || stack.is(ModTags.Items.SMG)) && capability.handgunAmmo == 0) {
|
||||||
|
tag.putBoolean("force_stage3_start", true);
|
||||||
|
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO) && capability.rifleAmmo == 0) {
|
||||||
|
tag.putBoolean("force_stage3_start", true);
|
||||||
|
} else {
|
||||||
|
tag.putInt("reload_stage", 2);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
tag.putInt("reload_stage", 2);
|
tag.putInt("reload_stage", 2);
|
||||||
}
|
}
|
||||||
|
// 检查备弹
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 强制停止换弹,进入三阶段
|
// 强制停止换弹,进入三阶段
|
||||||
|
@ -583,17 +595,28 @@ public class GunEventHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 备弹耗尽结束
|
// 备弹耗尽结束
|
||||||
var capability = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables());
|
|
||||||
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) && capability.shotgunAmmo == 0) {
|
int count = 0;
|
||||||
tag.putInt("reload_stage", 3);
|
for (var inv : player.getInventory().items) {
|
||||||
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO) && capability.sniperAmmo == 0) {
|
if (inv.is(ModItems.CREATIVE_AMMO_BOX.get())) {
|
||||||
tag.putInt("reload_stage", 3);
|
count++;
|
||||||
} else if ((stack.is(ModTags.Items.USE_HANDGUN_AMMO) || stack.is(ModTags.Items.SMG)) && capability.handgunAmmo == 0) {
|
}
|
||||||
tag.putInt("reload_stage", 3);
|
|
||||||
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO) && capability.rifleAmmo == 0) {
|
|
||||||
tag.putInt("reload_stage", 3);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (count == 0) {
|
||||||
|
var capability = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables());
|
||||||
|
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) && capability.shotgunAmmo == 0) {
|
||||||
|
tag.putInt("reload_stage", 3);
|
||||||
|
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO) && capability.sniperAmmo == 0) {
|
||||||
|
tag.putInt("reload_stage", 3);
|
||||||
|
} else if ((stack.is(ModTags.Items.USE_HANDGUN_AMMO) || stack.is(ModTags.Items.SMG)) && capability.handgunAmmo == 0) {
|
||||||
|
tag.putInt("reload_stage", 3);
|
||||||
|
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO) && capability.rifleAmmo == 0) {
|
||||||
|
tag.putInt("reload_stage", 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 强制结束
|
// 强制结束
|
||||||
if (tag.getBoolean("stop")) {
|
if (tag.getBoolean("stop")) {
|
||||||
tag.putInt("reload_stage", 3);
|
tag.putInt("reload_stage", 3);
|
||||||
|
|
|
@ -171,6 +171,12 @@ public class MinigunItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
yRot = yRot + 90 % 360;
|
yRot = yRot + 90 % 360;
|
||||||
|
|
||||||
var leftPos = new Vector3d(1.2, -0.3, 0.3);
|
var leftPos = new Vector3d(1.2, -0.3, 0.3);
|
||||||
|
|
||||||
|
if (entity.isSprinting()) {
|
||||||
|
leftPos = new Vector3d(1., -0.4, -0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
leftPos.rotateZ(-entity.getXRot() * Mth.DEG_TO_RAD);
|
leftPos.rotateZ(-entity.getXRot() * Mth.DEG_TO_RAD);
|
||||||
leftPos.rotateY(-yRot * Mth.DEG_TO_RAD);
|
leftPos.rotateY(-yRot * Mth.DEG_TO_RAD);
|
||||||
|
|
||||||
|
@ -183,7 +189,7 @@ public class MinigunItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
cooldown = -0.5;
|
cooldown = -0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entity instanceof ServerPlayer serverPlayer && entity.level() instanceof ServerLevel serverLevel && itemstack.getOrCreateTag().getDouble("heat") > 4) {
|
if (entity instanceof ServerPlayer serverPlayer && entity.level() instanceof ServerLevel serverLevel && itemstack.getOrCreateTag().getDouble("heat") > 4 && entity.isInWaterOrRain()) {
|
||||||
if (entity.isInWater()) {
|
if (entity.isInWater()) {
|
||||||
ParticleTool.sendParticle(serverLevel, ParticleTypes.BUBBLE_COLUMN_UP,
|
ParticleTool.sendParticle(serverLevel, ParticleTypes.BUBBLE_COLUMN_UP,
|
||||||
entity.getX() + leftPos.x,
|
entity.getX() + leftPos.x,
|
||||||
|
@ -191,7 +197,6 @@ public class MinigunItem extends GunItem implements GeoItem, AnimatedItem {
|
||||||
entity.getZ() + leftPos.z,
|
entity.getZ() + leftPos.z,
|
||||||
1, 0.1, 0.1, 0.1, 0.002, true, serverPlayer);
|
1, 0.1, 0.1, 0.1, 0.002, true, serverPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
ParticleTool.sendParticle(serverLevel, ModParticleTypes.CUSTOM_CLOUD.get(),
|
ParticleTool.sendParticle(serverLevel, ModParticleTypes.CUSTOM_CLOUD.get(),
|
||||||
entity.getX() + leftPos.x,
|
entity.getX() + leftPos.x,
|
||||||
entity.getEyeY() + leftPos.y,
|
entity.getEyeY() + leftPos.y,
|
||||||
|
|
|
@ -152,10 +152,12 @@ public class FireMessage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
if (handItem.getItem() == ModItems.BOCEK.get()) {
|
||||||
capability.bowPullHold = true;
|
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||||
capability.syncPlayerVariables(player);
|
capability.bowPullHold = true;
|
||||||
});
|
capability.syncPlayerVariables(player);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// 栓动武器左键手动拉栓
|
// 栓动武器左键手动拉栓
|
||||||
if (tag.getInt("bolt_action_time") > 0 && tag.getInt("ammo") > 0 && tag.getInt("bolt_action_anim") == 0) {
|
if (tag.getInt("bolt_action_time") > 0 && tag.getInt("ammo") > 0 && tag.getInt("bolt_action_anim") == 0) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue