优化NBT#CustomMagazine
This commit is contained in:
parent
e2252e4ff8
commit
4830dc1366
13 changed files with 35 additions and 25 deletions
|
@ -401,7 +401,8 @@ public class GunEventHandler {
|
|||
if (!(stack.getItem() instanceof GunItem gunItem)) return;
|
||||
|
||||
if (player.getInventory().hasAnyMatching(item -> item.is(ModItems.CREATIVE_AMMO_BOX.get()))) {
|
||||
GunsTool.setGunIntTag(stack, "Ammo", GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag")
|
||||
GunsTool.setGunIntTag(stack, "Ammo", GunsTool.getGunIntTag(stack, "Magazine", 0)
|
||||
+ GunsTool.getGunIntTag(stack, "CustomMagazine", 0)
|
||||
+ (gunItem.bulletInBarrel(stack) ? 1 : 0));
|
||||
} else {
|
||||
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) {
|
||||
|
@ -424,7 +425,8 @@ public class GunEventHandler {
|
|||
ItemStack stack = player.getMainHandItem();
|
||||
|
||||
if (player.getInventory().hasAnyMatching(item -> item.is(ModItems.CREATIVE_AMMO_BOX.get()))) {
|
||||
GunsTool.setGunIntTag(stack, "Ammo", GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag"));
|
||||
GunsTool.setGunIntTag(stack, "Ammo", GunsTool.getGunIntTag(stack, "Magazine", 0)
|
||||
+ GunsTool.getGunIntTag(stack, "CustomMagazine", 0));
|
||||
} else {
|
||||
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) {
|
||||
GunsTool.reload(player, stack, GunInfo.Type.SHOTGUN);
|
||||
|
@ -581,7 +583,8 @@ public class GunEventHandler {
|
|||
&& tag.getInt("reload_stage") == 2
|
||||
&& tag.getInt("iterative") == 0
|
||||
&& !tag.getBoolean("stop")
|
||||
&& GunsTool.getGunIntTag(stack, "Ammo", 0) < GunsTool.getGunIntTag(stack, "Magazine", 0) + tag.getInt("customMag")) {
|
||||
&& GunsTool.getGunIntTag(stack, "Ammo", 0) < GunsTool.getGunIntTag(stack, "Magazine", 0)
|
||||
+ GunsTool.getGunIntTag(stack, "CustomMagazine", 0)) {
|
||||
|
||||
playGunLoopReloadSounds(player);
|
||||
int iterativeTime = GunsTool.getGunIntTag(stack, "IterativeTime", 0);
|
||||
|
@ -611,7 +614,8 @@ public class GunEventHandler {
|
|||
// 二阶段结束
|
||||
if (tag.getInt("iterative") == 1) {
|
||||
// 装满结束
|
||||
if (GunsTool.getGunIntTag(stack, "Ammo", 0) >= GunsTool.getGunIntTag(stack, "Magazine", 0) + tag.getInt("customMag")) {
|
||||
if (GunsTool.getGunIntTag(stack, "Ammo", 0) >= GunsTool.getGunIntTag(stack, "Magazine", 0)
|
||||
+ GunsTool.getGunIntTag(stack, "CustomMagazine", 0)) {
|
||||
tag.putInt("reload_stage", 3);
|
||||
}
|
||||
|
||||
|
|
|
@ -615,7 +615,7 @@ public class LivingEventHandler {
|
|||
float rate = level * 0.1f + (stack.is(ModTags.Items.SMG) || stack.is(ModTags.Items.RIFLE) ? 0.07f : 0f);
|
||||
|
||||
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
int mag = GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag");
|
||||
int mag = GunsTool.getGunIntTag(stack, "Magazine", 0) + GunsTool.getGunIntTag(stack, "CustomMagazine", 0);
|
||||
int ammo = GunsTool.getGunIntTag(stack, "Ammo", 0);
|
||||
int ammoReload = (int) Math.min(mag, mag * rate);
|
||||
int ammoNeed = Math.min(mag - ammo, ammoReload);
|
||||
|
|
|
@ -330,7 +330,8 @@ public class PlayerEventHandler {
|
|||
player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.JAVELIN_MISSILE.get(), 1, player.inventoryMenu.getCraftSlots());
|
||||
}
|
||||
} else {
|
||||
GunsTool.setGunIntTag(stack, "Ammo", GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag"));
|
||||
GunsTool.setGunIntTag(stack, "Ammo", GunsTool.getGunIntTag(stack, "Magazine", 0)
|
||||
+ GunsTool.getGunIntTag(stack, "CustomMagazine", 0));
|
||||
}
|
||||
GunsTool.setGunBooleanTag(stack, "HoldOpen", false);
|
||||
}
|
||||
|
|
|
@ -70,10 +70,13 @@ public abstract class GunItem extends Item {
|
|||
handleGunPerks(stack);
|
||||
handleGunAttachment(stack);
|
||||
|
||||
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"))
|
||||
if ((gunItem.bulletInBarrel(stack) && GunsTool.getGunIntTag(stack, "Ammo", 0) >
|
||||
GunsTool.getGunIntTag(stack, "Magazine", 0) + GunsTool.getGunIntTag(stack, "CustomMagazine", 0) + 1)
|
||||
|| (!gunItem.bulletInBarrel(stack) && GunsTool.getGunIntTag(stack, "Ammo", 0) >
|
||||
GunsTool.getGunIntTag(stack, "Magazine", 0) + GunsTool.getGunIntTag(stack, "CustomMagazine", 0))
|
||||
) {
|
||||
int count = GunsTool.getGunIntTag(stack, "Ammo", 0) - 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)
|
||||
+ GunsTool.getGunIntTag(stack, "CustomMagazine", 0) - (gunItem.bulletInBarrel(stack) ? 1 : 0);
|
||||
entity.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
|
||||
|
||||
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) {
|
||||
|
@ -88,7 +91,8 @@ public abstract class GunItem extends Item {
|
|||
capability.syncPlayerVariables(entity);
|
||||
});
|
||||
|
||||
GunsTool.setGunIntTag(stack, "Ammo", GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag") + (gunItem.bulletInBarrel(stack) ? 1 : 0));
|
||||
GunsTool.setGunIntTag(stack, "Ammo", GunsTool.getGunIntTag(stack, "Magazine", 0)
|
||||
+ GunsTool.getGunIntTag(stack, "CustomMagazine", 0) + (gunItem.bulletInBarrel(stack) ? 1 : 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -167,7 +171,7 @@ public abstract class GunItem extends Item {
|
|||
GunsTool.setPerkIntTag(stack, "FourthTimesCharmTick", 0);
|
||||
GunsTool.setPerkIntTag(stack, "FourthTimesCharmCount", 0);
|
||||
|
||||
int mag = GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag");
|
||||
int mag = GunsTool.getGunIntTag(stack, "Magazine", 0) + GunsTool.getGunIntTag(stack, "CustomMagazine", 0);
|
||||
GunsTool.setGunIntTag(stack, "Ammo", Math.min(mag, GunsTool.getGunIntTag(stack, "Ammo", 0) + 2));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -187,7 +187,7 @@ public class AK12Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
|
||||
stack.getOrCreateTag().putBoolean("CanAdjustZoomFov", scopeType == 3);
|
||||
GunsTool.setGunDoubleTag(stack, "CustomZoom", customZoom);
|
||||
stack.getOrCreateTag().putInt("customMag", customMag);
|
||||
GunsTool.setGunIntTag(stack, "CustomMagazine", customMag);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -196,7 +196,7 @@ public class AK47Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
|
||||
stack.getOrCreateTag().putBoolean("CanAdjustZoomFov", scopeType == 3);
|
||||
GunsTool.setGunDoubleTag(stack, "CustomZoom", customZoom);
|
||||
stack.getOrCreateTag().putInt("customMag", customMag);
|
||||
GunsTool.setGunIntTag(stack, "CustomMagazine", customMag);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -178,7 +178,7 @@ public class Hk416Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
|
||||
stack.getOrCreateTag().putBoolean("CanAdjustZoomFov", scopeType == 3);
|
||||
GunsTool.setGunDoubleTag(stack, "CustomZoom", customZoom);
|
||||
stack.getOrCreateTag().putInt("customMag", customMag);
|
||||
GunsTool.setGunIntTag(stack, "CustomMagazine", customMag);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -197,7 +197,7 @@ public class M4Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
GunsTool.setGunBooleanTag(stack, "CanSwitchScope", scopeType == 2);
|
||||
stack.getOrCreateTag().putBoolean("CanAdjustZoomFov", scopeType == 3);
|
||||
GunsTool.setGunDoubleTag(stack, "CustomZoom", customZoom);
|
||||
stack.getOrCreateTag().putInt("customMag", customMag);
|
||||
GunsTool.setGunIntTag(stack, "CustomMagazine", customMag);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -181,7 +181,7 @@ public class Mk14Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
|
||||
stack.getOrCreateTag().putBoolean("CanAdjustZoomFov", scopeType == 3);
|
||||
GunsTool.setGunDoubleTag(stack, "CustomZoom", customZoom);
|
||||
stack.getOrCreateTag().putInt("customMag", customMag);
|
||||
GunsTool.setGunIntTag(stack, "CustomMagazine", customMag);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -184,7 +184,7 @@ public class Qbz95Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
|
||||
stack.getOrCreateTag().putBoolean("CanAdjustZoomFov", scopeType == 3);
|
||||
GunsTool.setGunDoubleTag(stack, "CustomZoom", customZoom);
|
||||
stack.getOrCreateTag().putInt("customMag", customMag);
|
||||
GunsTool.setGunIntTag(stack, "CustomMagazine", customMag);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -158,7 +158,7 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
};
|
||||
|
||||
GunsTool.setGunDoubleTag(stack, "CustomZoom", customZoom);
|
||||
stack.getOrCreateTag().putInt("customMag", customMag);
|
||||
GunsTool.setGunDoubleTag(stack, "CustomMagazine", customMag);
|
||||
}
|
||||
|
||||
public static ItemStack getGunInstance() {
|
||||
|
|
|
@ -94,22 +94,23 @@ public class ReloadMessage {
|
|||
|
||||
if (gunItem.isOpenBolt(stack)) {
|
||||
if (gunItem.bulletInBarrel(stack)) {
|
||||
if (GunsTool.getGunIntTag(stack, "Ammo", 0) < magazine + tag.getInt("customMag") + 1) {
|
||||
if (GunsTool.getGunIntTag(stack, "Ammo", 0) < magazine + GunsTool.getGunIntTag(stack, "CustomMagazine", 0) + 1) {
|
||||
GunsTool.setGunBooleanTag(stack, "StartReload", true);
|
||||
}
|
||||
} else {
|
||||
if (GunsTool.getGunIntTag(stack, "Ammo", 0) < magazine + tag.getInt("customMag")) {
|
||||
if (GunsTool.getGunIntTag(stack, "Ammo", 0) < magazine + GunsTool.getGunIntTag(stack, "CustomMagazine", 0)) {
|
||||
GunsTool.setGunBooleanTag(stack, "StartReload", true);
|
||||
}
|
||||
}
|
||||
} else if (GunsTool.getGunIntTag(stack, "Ammo", 0) < magazine + tag.getInt("customMag")) {
|
||||
} else if (GunsTool.getGunIntTag(stack, "Ammo", 0) < magazine + GunsTool.getGunIntTag(stack, "CustomMagazine", 0)) {
|
||||
GunsTool.setGunBooleanTag(stack, "StartReload", true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (canSingleReload) {
|
||||
if (GunsTool.getGunIntTag(stack, "Ammo", 0) < GunsTool.getGunIntTag(stack, "Magazine", 0) + tag.getInt("customMag")) {
|
||||
if (GunsTool.getGunIntTag(stack, "Ammo", 0) < GunsTool.getGunIntTag(stack, "Magazine", 0)
|
||||
+ GunsTool.getGunIntTag(stack, "CustomMagazine", 0)) {
|
||||
tag.putBoolean("start_single_reload", true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@ public class GunsTool {
|
|||
stack.addTagElement("GunData", data);
|
||||
});
|
||||
GunsTool.setGunIntTag(stack, "Ammo", GunsTool.getGunIntTag(stack, "Magazine", 0)
|
||||
+ stack.getOrCreateTag().getInt("customMag"));
|
||||
+ GunsTool.getGunIntTag(stack, "CustomMagazine", 0));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -103,9 +103,9 @@ public class GunsTool {
|
|||
|
||||
public static void reload(Player player, ItemStack stack, GunInfo.Type type, boolean extraOne) {
|
||||
CompoundTag tag = stack.getOrCreateTag();
|
||||
if (!(stack.getItem() instanceof GunItem gunItem)) return;
|
||||
if (!(stack.getItem() instanceof GunItem)) return;
|
||||
|
||||
int mag = GunsTool.getGunIntTag(stack, "Magazine", 0) + tag.getInt("customMag");
|
||||
int mag = GunsTool.getGunIntTag(stack, "Magazine", 0) + GunsTool.getGunIntTag(stack, "CustomMagazine", 0);
|
||||
int ammo = GunsTool.getGunIntTag(stack, "Ammo", 0);
|
||||
int ammoToAdd = mag - ammo + (extraOne ? 1 : 0);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue