清理tag,翻新AK12换弹动画,修复雷达在瓦尔基里结构上不起作用的问题
This commit is contained in:
parent
a24c966b57
commit
aa9f9caed3
61 changed files with 1251 additions and 997 deletions
|
@ -317,7 +317,7 @@ public class ClickHandler {
|
|||
player.playSound(ModSounds.TRIGGER_CLICK.get(), 1, 1);
|
||||
}
|
||||
|
||||
if (!gunItem.useBackpackAmmo(stack) && gunItem.getAmmoCount(stack) <= 0 && stack.getOrCreateTag().getInt("ReloadTime") == 0) {
|
||||
if (!gunItem.useBackpackAmmo(stack) && GunsTool.getGunIntTag(stack, "Ammo", 0) <= 0 && stack.getOrCreateTag().getInt("ReloadTime") == 0) {
|
||||
if (ReloadConfig.LEFT_CLICK_RELOAD.get()) {
|
||||
ModUtils.PACKET_HANDLER.sendToServer(new ReloadMessage(0));
|
||||
}
|
||||
|
|
|
@ -3,10 +3,12 @@ package com.atsuishio.superbwarfare.client.screens;
|
|||
import com.atsuishio.superbwarfare.block.entity.FuMO25BlockEntity;
|
||||
import com.atsuishio.superbwarfare.menu.FuMO25Menu;
|
||||
import com.atsuishio.superbwarfare.tools.SeekTool;
|
||||
import net.minecraft.client.Camera;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.player.LocalPlayer;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.event.TickEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
|
@ -27,14 +29,18 @@ public class FuMO25ScreenHelper {
|
|||
public static void onClientTick(TickEvent.ClientTickEvent event) {
|
||||
if (event.side != LogicalSide.CLIENT) return;
|
||||
if (event.phase != TickEvent.Phase.END) return;
|
||||
Player player = Minecraft.getInstance().player;
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
LocalPlayer player = mc.player;
|
||||
Camera camera = mc.gameRenderer.getMainCamera();
|
||||
Vec3 cameraPos = camera.getPosition();
|
||||
|
||||
if (player == null) return;
|
||||
var menu = player.containerMenu;
|
||||
if (!(menu instanceof FuMO25Menu fuMO25Menu)) return;
|
||||
if (pos == null) return;
|
||||
|
||||
if (pos.distToCenterSqr(player.getOnPos().getX(), player.getOnPos().getY(), player.getOnPos().getZ()) > TOLERANCE_DISTANCE * TOLERANCE_DISTANCE) {
|
||||
pos = player.getOnPos();
|
||||
if (pos.distToCenterSqr(cameraPos) > TOLERANCE_DISTANCE * TOLERANCE_DISTANCE) {
|
||||
pos = BlockPos.containing(cameraPos);
|
||||
}
|
||||
|
||||
if (fuMO25Menu.getEnergy() <= 0) {
|
||||
|
|
|
@ -70,10 +70,10 @@ public abstract class GunItem extends Item {
|
|||
handleGunPerks(stack);
|
||||
handleGunAttachment(stack);
|
||||
|
||||
if ((gunItem.bulletInBarrel(stack) && gunItem.getAmmoCount(stack) > GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag") + 1)
|
||||
|| (!gunItem.bulletInBarrel(stack) && gunItem.getAmmoCount(stack) > GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag"))
|
||||
if ((gunItem.bulletInBarrel(stack) && GunsTool.getGunIntTag(stack, "Ammo", 0) > GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag") + 1)
|
||||
|| (!gunItem.bulletInBarrel(stack) && GunsTool.getGunIntTag(stack, "Ammo", 0) > GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag"))
|
||||
) {
|
||||
int count = gunItem.getAmmoCount(stack) - GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag") - (gunItem.bulletInBarrel(stack) ? 1 : 0);
|
||||
int count = GunsTool.getGunIntTag(stack, "Ammo", 0) - GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag") - (gunItem.bulletInBarrel(stack) ? 1 : 0);
|
||||
entity.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
|
||||
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) {
|
||||
|
@ -247,10 +247,6 @@ public abstract class GunItem extends Item {
|
|||
return false;
|
||||
}
|
||||
|
||||
public int getAmmoCount(ItemStack stack) {
|
||||
return GunsTool.getGunIntTag(stack, "Ammo", 0);
|
||||
}
|
||||
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
@ -294,4 +290,16 @@ public abstract class GunItem extends Item {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean semi(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean burst(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean auto(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -167,4 +167,19 @@ public class Glock17Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean burst(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -175,4 +175,14 @@ public class Glock18Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -158,4 +158,9 @@ public class M1911Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -343,4 +343,9 @@ public class Trachelium extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean canCustomStock(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -159,4 +159,9 @@ public class DevotionItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -183,4 +183,9 @@ public class M60Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -160,4 +160,14 @@ public class RpkItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -205,6 +205,11 @@ public class AK12Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
return PerkHelper.RIFLE_PERKS.test(perk) || PerkHelper.MAGAZINE_PERKS.test(perk);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
|
@ -254,4 +259,14 @@ public class AK12Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -268,4 +268,14 @@ public class AK47Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -270,4 +270,14 @@ public class Hk416Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -269,4 +269,14 @@ public class M4Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -175,4 +175,9 @@ public class MarlinItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isIterativeReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -268,4 +268,14 @@ public class Mk14Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -266,4 +266,14 @@ public class Qbz95Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -168,4 +168,9 @@ public class SksItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -192,4 +192,14 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -153,4 +153,9 @@ public class AbekiriItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -182,4 +182,9 @@ public class M870Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isIterativeReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -244,4 +244,19 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean burst(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean auto(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -134,4 +134,9 @@ public class HuntingRifleItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isMagazineReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -182,4 +182,9 @@ public class K98Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isIterativeReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -165,4 +165,9 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -177,4 +177,9 @@ public class MosinNagantItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isIterativeReload(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -166,4 +166,9 @@ public class Ntw20Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -248,4 +248,9 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -153,4 +153,9 @@ public class SvdItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean ejectShell(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean semi(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -2,7 +2,7 @@ package com.atsuishio.superbwarfare.network.message;
|
|||
|
||||
import com.atsuishio.superbwarfare.init.ModItems;
|
||||
import com.atsuishio.superbwarfare.init.ModSounds;
|
||||
import com.atsuishio.superbwarfare.init.ModTags;
|
||||
import com.atsuishio.superbwarfare.item.gun.GunItem;
|
||||
import com.atsuishio.superbwarfare.tools.GunsTool;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.Holder;
|
||||
|
@ -54,93 +54,92 @@ public class FireModeMessage {
|
|||
|
||||
public static void changeFireMode(Player player) {
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
if (!stack.is(ModTags.Items.GUN)) return;
|
||||
if (stack.getItem() instanceof GunItem gunItem) {
|
||||
CompoundTag data = stack.getOrCreateTag().getCompound("GunData");
|
||||
int fireMode = data.getInt("FireMode");
|
||||
|
||||
CompoundTag data = stack.getOrCreateTag().getCompound("GunData");
|
||||
int fireMode = data.getInt("FireMode");
|
||||
CompoundTag tag = stack.getOrCreateTag();
|
||||
|
||||
CompoundTag tag = stack.getOrCreateTag();
|
||||
|
||||
if (fireMode == 0) {
|
||||
if (GunsTool.getGunBooleanTag(stack, "Burst", false)) {
|
||||
GunsTool.setGunIntTag(stack, "FireMode", 1);
|
||||
playChangeModeSound(player);
|
||||
return;
|
||||
if (fireMode == 0) {
|
||||
if (gunItem.burst(stack)) {
|
||||
GunsTool.setGunIntTag(stack, "FireMode", 1);
|
||||
playChangeModeSound(player);
|
||||
return;
|
||||
}
|
||||
if (gunItem.auto(stack)) {
|
||||
GunsTool.setGunIntTag(stack, "FireMode", 2);
|
||||
playChangeModeSound(player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (GunsTool.getGunBooleanTag(stack, "Auto", false)) {
|
||||
GunsTool.setGunIntTag(stack, "FireMode", 2);
|
||||
playChangeModeSound(player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (fireMode == 1) {
|
||||
if (GunsTool.getGunBooleanTag(stack, "Auto", false)) {
|
||||
GunsTool.setGunIntTag(stack, "FireMode", 2);
|
||||
playChangeModeSound(player);
|
||||
return;
|
||||
if (fireMode == 1) {
|
||||
if (gunItem.auto(stack)) {
|
||||
GunsTool.setGunIntTag(stack, "FireMode", 2);
|
||||
playChangeModeSound(player);
|
||||
return;
|
||||
}
|
||||
if (gunItem.semi(stack)) {
|
||||
GunsTool.setGunIntTag(stack, "FireMode", 0);
|
||||
playChangeModeSound(player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (GunsTool.getGunBooleanTag(stack, "Semi", false)) {
|
||||
GunsTool.setGunIntTag(stack, "FireMode", 0);
|
||||
playChangeModeSound(player);
|
||||
return;
|
||||
|
||||
if (fireMode == 2) {
|
||||
if (gunItem.semi(stack)) {
|
||||
GunsTool.setGunIntTag(stack, "FireMode", 0);
|
||||
playChangeModeSound(player);
|
||||
return;
|
||||
}
|
||||
if (gunItem.burst(stack)) {
|
||||
GunsTool.setGunIntTag(stack, "FireMode", 1);
|
||||
playChangeModeSound(player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (fireMode == 2) {
|
||||
if (GunsTool.getGunBooleanTag(stack, "Semi", false)) {
|
||||
GunsTool.setGunIntTag(stack, "FireMode", 0);
|
||||
playChangeModeSound(player);
|
||||
return;
|
||||
}
|
||||
if (GunsTool.getGunBooleanTag(stack, "Burst", false)) {
|
||||
GunsTool.setGunIntTag(stack, "FireMode", 1);
|
||||
playChangeModeSound(player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (stack.getItem() == ModItems.SENTINEL.get()
|
||||
&& !player.isSpectator()
|
||||
&& !(player.getCooldowns().isOnCooldown(stack.getItem()))
|
||||
&& GunsTool.getGunIntTag(stack, "ReloadTime") == 0
|
||||
&& !stack.getOrCreateTag().getBoolean("sentinel_is_charging")) {
|
||||
|
||||
if (stack.getItem() == ModItems.SENTINEL.get()
|
||||
&& !player.isSpectator()
|
||||
&& !(player.getCooldowns().isOnCooldown(stack.getItem()))
|
||||
&& GunsTool.getGunIntTag(stack, "ReloadTime") == 0
|
||||
&& !stack.getOrCreateTag().getBoolean("sentinel_is_charging")) {
|
||||
for (var cell : player.getInventory().items) {
|
||||
if (cell.is(ModItems.CELL.get())) {
|
||||
AtomicBoolean flag = new AtomicBoolean(false);
|
||||
cell.getCapability(ForgeCapabilities.ENERGY).ifPresent(
|
||||
iEnergyStorage -> flag.set(iEnergyStorage.getEnergyStored() >= 0)
|
||||
);
|
||||
|
||||
for (var cell : player.getInventory().items) {
|
||||
if (cell.is(ModItems.CELL.get())) {
|
||||
AtomicBoolean flag = new AtomicBoolean(false);
|
||||
cell.getCapability(ForgeCapabilities.ENERGY).ifPresent(
|
||||
iEnergyStorage -> flag.set(iEnergyStorage.getEnergyStored() >= 0)
|
||||
);
|
||||
|
||||
if (flag.get()) {
|
||||
tag.putBoolean("start_sentinel_charge", true);
|
||||
if (flag.get()) {
|
||||
tag.putBoolean("start_sentinel_charge", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (stack.getItem() == ModItems.JAVELIN.get()) {
|
||||
tag.putBoolean("TopMode", !tag.getBoolean("TopMode"));
|
||||
if (player instanceof ServerPlayer serverPlayer) {
|
||||
serverPlayer.connection.send(new ClientboundSoundPacket(new Holder.Direct<>(ModSounds.CANNON_ZOOM_OUT.get()),
|
||||
SoundSource.PLAYERS, serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ(), 1f, 1f, serverPlayer.level().random.nextLong()));
|
||||
if (stack.getItem() == ModItems.JAVELIN.get()) {
|
||||
tag.putBoolean("TopMode", !tag.getBoolean("TopMode"));
|
||||
if (player instanceof ServerPlayer serverPlayer) {
|
||||
serverPlayer.connection.send(new ClientboundSoundPacket(new Holder.Direct<>(ModSounds.CANNON_ZOOM_OUT.get()),
|
||||
SoundSource.PLAYERS, serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ(), 1f, 1f, serverPlayer.level().random.nextLong()));
|
||||
}
|
||||
}
|
||||
|
||||
if (stack.getItem() == ModItems.TRACHELIUM.get() && !GunsTool.getGunBooleanTag(stack, "NeedBoltAction", false)) {
|
||||
if (!tag.getBoolean("DA")) {
|
||||
tag.putBoolean("DA", true);
|
||||
player.displayClientMessage(Component.translatable("des.superbwarfare.revolver.sa").withStyle(ChatFormatting.BOLD), true);
|
||||
} else {
|
||||
tag.putBoolean("DA", false);
|
||||
player.displayClientMessage(Component.translatable("des.superbwarfare.revolver.da").withStyle(ChatFormatting.BOLD), true);
|
||||
}
|
||||
if (!tag.getBoolean("canImmediatelyShoot")) {
|
||||
GunsTool.setGunBooleanTag(stack, "NeedBoltAction", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (stack.getItem() == ModItems.TRACHELIUM.get() && !GunsTool.getGunBooleanTag(stack, "NeedBoltAction", false)) {
|
||||
if (!tag.getBoolean("DA")) {
|
||||
tag.putBoolean("DA", true);
|
||||
player.displayClientMessage(Component.translatable("des.superbwarfare.revolver.sa").withStyle(ChatFormatting.BOLD), true);
|
||||
} else {
|
||||
tag.putBoolean("DA", false);
|
||||
player.displayClientMessage(Component.translatable("des.superbwarfare.revolver.da").withStyle(ChatFormatting.BOLD), true);
|
||||
}
|
||||
if (!tag.getBoolean("canImmediatelyShoot")) {
|
||||
GunsTool.setGunBooleanTag(stack, "NeedBoltAction", true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void playChangeModeSound(Player player) {
|
||||
|
|
|
@ -65,7 +65,7 @@ public class ReloadMessage {
|
|||
|
||||
boolean canSingleReload = gunItem.isIterativeReload(stack);
|
||||
boolean canReload = gunItem.isMagazineReload(stack) && !gunItem.isClipReload(stack);
|
||||
boolean clipLoad = gunItem.getAmmoCount(stack) == 0 && gunItem.isClipReload(stack);
|
||||
boolean clipLoad = GunsTool.getGunIntTag(stack, "Ammo", 0) == 0 && gunItem.isClipReload(stack);
|
||||
|
||||
// 检查备弹
|
||||
int count = 0;
|
||||
|
@ -96,12 +96,26 @@ public class ReloadMessage {
|
|||
}
|
||||
|
||||
if (canReload || clipLoad) {
|
||||
tag.putBoolean("start_reload", true);
|
||||
int magazine = GunsTool.getGunIntTag(stack, "Magazine", 0);
|
||||
|
||||
if (gunItem.isOpenBolt(stack)) {
|
||||
if (gunItem.bulletInBarrel(stack)) {
|
||||
if (GunsTool.getGunIntTag(stack, "Ammo", 0) < magazine + tag.getInt("customMag") + 1) {
|
||||
tag.putBoolean("start_reload", true);
|
||||
}
|
||||
} else {
|
||||
if (GunsTool.getGunIntTag(stack, "Ammo", 0) < magazine + tag.getInt("customMag")) {
|
||||
tag.putBoolean("start_reload", true);
|
||||
}
|
||||
}
|
||||
} else if (GunsTool.getGunIntTag(stack, "Ammo", 0) < magazine + tag.getInt("customMag")) {
|
||||
tag.putBoolean("start_reload", true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (canSingleReload) {
|
||||
if (gunItem.getAmmoCount(stack) < GunsTool.getGunIntTag(stack, "Magazine", 0) + tag.getInt("customMag")) {
|
||||
if (GunsTool.getGunIntTag(stack, "Ammo", 0) < GunsTool.getGunIntTag(stack, "Magazine", 0) + tag.getInt("customMag")) {
|
||||
tag.putBoolean("start_single_reload", true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -106,7 +106,7 @@ public class GunsTool {
|
|||
if (!(stack.getItem() instanceof GunItem gunItem)) return;
|
||||
|
||||
int mag = GunsTool.getGunIntTag(stack, "Magazine", 0) + tag.getInt("customMag");
|
||||
int ammo = gunItem.getAmmoCount(stack);
|
||||
int ammo = GunsTool.getGunIntTag(stack, "Ammo", 0);
|
||||
int ammoToAdd = mag - ammo + (extraOne ? 1 : 0);
|
||||
|
||||
// 空仓换弹的栓动武器应该在换弹后取消待上膛标记
|
||||
|
|
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -9,8 +9,6 @@
|
|||
"ProjectileAmount": 12,
|
||||
"Weight": 7,
|
||||
"FireMode": 2,
|
||||
"Semi": 1,
|
||||
"Auto": 1,
|
||||
"NormalReloadTime": 64,
|
||||
"EmptyReloadTime": 85,
|
||||
"BypassesArmor": 0.05,
|
||||
|
|
|
@ -8,8 +8,6 @@
|
|||
"Magazine": 2,
|
||||
"ProjectileAmount": 12,
|
||||
"Weight": 1,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"NormalReloadTime": 66,
|
||||
"EmptyReloadTime": 83,
|
||||
"BypassesArmor": 0.01,
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
"Magazine": 30,
|
||||
"Weight": 4,
|
||||
"FireMode": 2,
|
||||
"Semi": 1,
|
||||
"Auto": 1,
|
||||
"NormalReloadTime": 52,
|
||||
"EmptyReloadTime": 58,
|
||||
"BypassesArmor": 0.23,
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
"Magazine": 30,
|
||||
"Weight": 5,
|
||||
"FireMode": 2,
|
||||
"Semi": 1,
|
||||
"Auto": 1,
|
||||
"NormalReloadTime": 52,
|
||||
"EmptyReloadTime": 65,
|
||||
"BypassesArmor": 0.2,
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
"Magazine": 55,
|
||||
"Weight": 6,
|
||||
"FireMode": 2,
|
||||
"Auto": 1,
|
||||
"NormalReloadTime": 73,
|
||||
"EmptyReloadTime": 95,
|
||||
"BypassesArmor": 0.25,
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
"Velocity": 17,
|
||||
"Magazine": 17,
|
||||
"Weight": 1,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"NormalReloadTime": 30,
|
||||
"EmptyReloadTime": 35,
|
||||
"BypassesArmor": 0.15,
|
||||
|
|
|
@ -8,8 +8,6 @@
|
|||
"Magazine": 17,
|
||||
"Weight": 1,
|
||||
"FireMode": 2,
|
||||
"Semi": 1,
|
||||
"Auto": 1,
|
||||
"NormalReloadTime": 30,
|
||||
"EmptyReloadTime": 35,
|
||||
"BypassesArmor": 0.15,
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
"Magazine": 30,
|
||||
"Weight": 4,
|
||||
"FireMode": 2,
|
||||
"Semi": 1,
|
||||
"Auto": 1,
|
||||
"NormalReloadTime": 56,
|
||||
"EmptyReloadTime": 64,
|
||||
"BypassesArmor": 0.25,
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
"Velocity": 38,
|
||||
"Magazine": 1,
|
||||
"Weight": 5,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"EmptyReloadTime": 64,
|
||||
"BypassesArmor": 0.7,
|
||||
"SoundRadius": 20
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
"BoltActionTime": 22,
|
||||
"Weight": 5,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"EmptyReloadTime": 59,
|
||||
"PrepareTime": 29,
|
||||
"IterativeTime": 11,
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
"Velocity": 15,
|
||||
"Magazine": 7,
|
||||
"Weight": 2,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"NormalReloadTime": 30,
|
||||
"EmptyReloadTime": 35,
|
||||
"BypassesArmor": 0.2,
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
"Magazine": 30,
|
||||
"Weight": 4,
|
||||
"FireMode": 2,
|
||||
"Semi": 1,
|
||||
"Auto": 1,
|
||||
"NormalReloadTime": 56,
|
||||
"EmptyReloadTime": 64,
|
||||
"BypassesArmor": 0.25,
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
"Magazine": 100,
|
||||
"Weight": 8,
|
||||
"FireMode": 2,
|
||||
"Auto": 1,
|
||||
"NormalReloadTime": 114,
|
||||
"EmptyReloadTime": 133,
|
||||
"BypassesArmor": 0.25,
|
||||
|
|
|
@ -8,8 +8,6 @@
|
|||
"Magazine": 8,
|
||||
"ProjectileAmount": 12,
|
||||
"Weight": 4,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"PrepareTime": 7,
|
||||
"PrepareLoadTime": 36,
|
||||
"IterativeTime": 16,
|
||||
|
|
|
@ -11,8 +11,6 @@
|
|||
"Magazine": 5,
|
||||
"BoltActionTime": 18,
|
||||
"Weight": 7,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"NormalReloadTime": 60,
|
||||
"EmptyReloadTime": 78,
|
||||
"BypassesArmor": 0.6,
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
"Velocity": 38,
|
||||
"Magazine": 8,
|
||||
"Weight": 3,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"PrepareTime": 7,
|
||||
"IterativeTime": 16,
|
||||
"FinishTime": 19,
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
"Headshot": 2,
|
||||
"Velocity": 46,
|
||||
"Weight": 10,
|
||||
"FireMode": 2,
|
||||
"BypassesArmor": 0.3,
|
||||
"SoundRadius": 14,
|
||||
"RPM": 1200
|
||||
|
|
|
@ -9,9 +9,7 @@
|
|||
"Velocity": 42.5,
|
||||
"Magazine": 20,
|
||||
"Weight": 5,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"Auto": 1,
|
||||
"FireMode": 2,
|
||||
"NormalReloadTime": 54,
|
||||
"EmptyReloadTime": 71,
|
||||
"BypassesArmor": 0.4,
|
||||
|
|
|
@ -9,8 +9,6 @@
|
|||
"Magazine": 5,
|
||||
"BoltActionTime": 22,
|
||||
"Weight": 5,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"PrepareTime": 29,
|
||||
"PrepareEmptyTime": 16,
|
||||
"IterativeTime": 11,
|
||||
|
|
|
@ -9,8 +9,6 @@
|
|||
"Magazine": 3,
|
||||
"BoltActionTime": 37,
|
||||
"Weight": 10,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"NormalReloadTime": 63,
|
||||
"EmptyReloadTime": 92,
|
||||
"BypassesArmor": 1,
|
||||
|
|
|
@ -10,8 +10,6 @@
|
|||
"Magazine": 30,
|
||||
"Weight": 4,
|
||||
"FireMode": 2,
|
||||
"Semi": 1,
|
||||
"Auto": 1,
|
||||
"NormalReloadTime": 60,
|
||||
"EmptyReloadTime": 74,
|
||||
"BypassesArmor": 0.28,
|
||||
|
|
|
@ -8,8 +8,6 @@
|
|||
"Magazine": 75,
|
||||
"Weight": 6,
|
||||
"FireMode": 2,
|
||||
"Semi": 1,
|
||||
"Auto": 1,
|
||||
"NormalReloadTime": 73,
|
||||
"EmptyReloadTime": 95,
|
||||
"BypassesArmor": 0.23,
|
||||
|
|
|
@ -9,8 +9,6 @@
|
|||
"Velocity": 70,
|
||||
"BoltActionTime": 22,
|
||||
"Weight": 7,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"NormalReloadTime": 59,
|
||||
"EmptyReloadTime": 89,
|
||||
"BypassesArmor": 0.8,
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
"Velocity": 36,
|
||||
"Magazine": 20,
|
||||
"Weight": 4,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"NormalReloadTime": 54,
|
||||
"EmptyReloadTime": 75,
|
||||
"BypassesArmor": 0.23,
|
||||
|
|
|
@ -8,8 +8,6 @@
|
|||
"Velocity": 42,
|
||||
"Magazine": 10,
|
||||
"Weight": 5,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"NormalReloadTime": 56,
|
||||
"EmptyReloadTime": 70,
|
||||
"BypassesArmor": 0.45,
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
"Velocity": 24,
|
||||
"Magazine": 6,
|
||||
"Weight": 2,
|
||||
"FireMode": 0,
|
||||
"Semi": 1,
|
||||
"EmptyReloadTime": 65,
|
||||
"BypassesArmor": 0.3,
|
||||
"SoundRadius": 10,
|
||||
|
|
|
@ -8,9 +8,6 @@
|
|||
"Magazine": 13,
|
||||
"Weight": 3,
|
||||
"FireMode": 2,
|
||||
"Semi": 1,
|
||||
"Burst": 1,
|
||||
"Auto": 1,
|
||||
"BurstSize": 3,
|
||||
"NormalReloadTime": 46,
|
||||
"EmptyReloadTime": 64,
|
||||
|
|
Loading…
Add table
Reference in a new issue