重写开膛待击和膛内有蛋判定
This commit is contained in:
parent
ca7c919e43
commit
a95d7f19ea
27 changed files with 123 additions and 78 deletions
|
@ -1,4 +1,4 @@
|
|||
// 1.20.1 2024-11-29T19:04:10.4852137 Tags for minecraft:item mod id superbwarfare
|
||||
// 1.20.1 2024-12-30T13:49:03.1510086 Tags for minecraft:item mod id superbwarfare
|
||||
cf8d49a8d2872286d1a9c3d4a7e1c2b7690db0b8 data/forge/tags/items/dusts.json
|
||||
0fa06c2ff83bf09797e3ddff90f62d1124e645b4 data/forge/tags/items/dusts/coal_coke.json
|
||||
295ddf906b7133a0558d03e9a60eea18281fe430 data/forge/tags/items/dusts/iron.json
|
||||
|
@ -33,7 +33,6 @@ cedce5ff7bbc95b40cbfced0f03a3da712118049 data/superbwarfare/tags/items/can_apply
|
|||
cedce5ff7bbc95b40cbfced0f03a3da712118049 data/superbwarfare/tags/items/can_apply_scope.json
|
||||
29af1d9a8f837510bc039feb578330f1a053543f data/superbwarfare/tags/items/can_apply_stock.json
|
||||
cedce5ff7bbc95b40cbfced0f03a3da712118049 data/superbwarfare/tags/items/can_custom_gun.json
|
||||
dff9ff6d6637951191906cb55a210ae5a3ad5cd6 data/superbwarfare/tags/items/extra_one_ammo.json
|
||||
52598e22974c8da0d2852defe4c9005e1d67744b data/superbwarfare/tags/items/gun.json
|
||||
62eb408544731ce4cfcd119d8a6cc74731189ac0 data/superbwarfare/tags/items/handgun.json
|
||||
49fbb8c030fdfafec1f291acc1cdff406c777c7e data/superbwarfare/tags/items/has_shell_effect.json
|
||||
|
@ -42,7 +41,6 @@ dae3f86663e841d336efff9d23d8910aa7247be5 data/superbwarfare/tags/items/is_auto_w
|
|||
b404c6fd99d2ca68c6738f225cb7d68ee443c10a data/superbwarfare/tags/items/machine_gun.json
|
||||
a53020091752016da6602ee1b8b7e08823614344 data/superbwarfare/tags/items/military_armor.json
|
||||
1ff5db892183135cbdd9c38a6b8c6e4eb287341e data/superbwarfare/tags/items/normal_gun.json
|
||||
324ad3d6125d66153f899a424521bc99f2c0dde8 data/superbwarfare/tags/items/open_bolt.json
|
||||
15328cd564c931cc0a4fc000596240f93a7b29a1 data/superbwarfare/tags/items/revolver.json
|
||||
aaa533157491a82b8e23b2914deef67c4078cbed data/superbwarfare/tags/items/rifle.json
|
||||
acd4d19dfadb71a1cec43e9c0f4a38fe8d3cf8cb data/superbwarfare/tags/items/shotgun.json
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
{
|
||||
"values": [
|
||||
"superbwarfare:ak_47",
|
||||
"superbwarfare:ak_12",
|
||||
"superbwarfare:svd",
|
||||
"superbwarfare:mk_14",
|
||||
"superbwarfare:vector",
|
||||
"superbwarfare:sks",
|
||||
"superbwarfare:rpk",
|
||||
"superbwarfare:hk_416",
|
||||
"superbwarfare:aa_12",
|
||||
"superbwarfare:m_4",
|
||||
"superbwarfare:devotion",
|
||||
"superbwarfare:ntw_20",
|
||||
"superbwarfare:m_98b",
|
||||
"superbwarfare:sentinel",
|
||||
"superbwarfare:glock_17",
|
||||
"superbwarfare:glock_18",
|
||||
"superbwarfare:m_1911",
|
||||
"superbwarfare:qbz_95"
|
||||
]
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
"values": [
|
||||
"superbwarfare:abekiri",
|
||||
"superbwarfare:ak_47",
|
||||
"superbwarfare:ak_12",
|
||||
"superbwarfare:svd",
|
||||
"superbwarfare:m_60",
|
||||
"superbwarfare:mk_14",
|
||||
"superbwarfare:vector",
|
||||
"superbwarfare:sks",
|
||||
"superbwarfare:rpk",
|
||||
"superbwarfare:hk_416",
|
||||
"superbwarfare:aa_12",
|
||||
"superbwarfare:m_4",
|
||||
"superbwarfare:devotion",
|
||||
"superbwarfare:ntw_20",
|
||||
"superbwarfare:m_98b",
|
||||
"superbwarfare:sentinel",
|
||||
"superbwarfare:glock_17",
|
||||
"superbwarfare:glock_18",
|
||||
"superbwarfare:m_1911",
|
||||
"superbwarfare:qbz_95"
|
||||
]
|
||||
}
|
|
@ -104,10 +104,6 @@ public class ModItemTagProvider extends ItemTagsProvider {
|
|||
ModItems.QBZ_95.get(), ModItems.MK_14.get(), ModItems.AA_12.get(), ModItems.GLOCK_18.get(), ModItems.VECTOR.get(), ModItems.AA_12.get(), ModItems.MINIGUN.get(),
|
||||
ModItems.DEVOTION.get(), ModItems.M_60.get(), ModItems.RPK.get());
|
||||
|
||||
this.tag(ModTags.Items.EXTRA_ONE_AMMO).add(ModItems.AK_47.get(), ModItems.AK_12.get(), ModItems.SVD.get(), ModItems.MK_14.get(), ModItems.VECTOR.get(),ModItems.SKS.get(),
|
||||
ModItems.RPK.get(), ModItems.HK_416.get(), ModItems.AA_12.get(), ModItems.M_4.get(), ModItems.DEVOTION.get(),ModItems.NTW_20.get(), ModItems.M_98B.get(),
|
||||
ModItems.SENTINEL.get(), ModItems.GLOCK_17.get(),ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.QBZ_95.get());
|
||||
|
||||
this.tag(ModTags.Items.HAS_SHELL_EFFECT).add(ModItems.AK_47.get(), ModItems.AK_12.get(), ModItems.SVD.get(), ModItems.M_60.get(), ModItems.MK_14.get(), ModItems.VECTOR.get(),
|
||||
ModItems.SKS.get(), ModItems.RPK.get(), ModItems.HK_416.get(), ModItems.AA_12.get(), ModItems.M_4.get(), ModItems.DEVOTION.get(), ModItems.GLOCK_17.get(),
|
||||
ModItems.GLOCK_18.get(), ModItems.M_1911.get(), ModItems.QBZ_95.get());
|
||||
|
|
|
@ -402,18 +402,24 @@ public class GunEventHandler {
|
|||
public static void playGunNormalReload(Player player) {
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
|
||||
GunItem gunItem = null;
|
||||
if (stack.getItem() instanceof GunItem gunItem1) {
|
||||
gunItem = gunItem1;
|
||||
}
|
||||
if (gunItem == null) 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")
|
||||
+ (stack.is(ModTags.Items.EXTRA_ONE_AMMO) ? 1 : 0));
|
||||
+ (gunItem.bulletInBarrel(stack) ? 1 : 0));
|
||||
} else {
|
||||
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) {
|
||||
GunsTool.reload(player, stack, GunInfo.Type.SHOTGUN, stack.is(ModTags.Items.EXTRA_ONE_AMMO));
|
||||
GunsTool.reload(player, stack, GunInfo.Type.SHOTGUN, gunItem.bulletInBarrel(stack));
|
||||
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) {
|
||||
GunsTool.reload(player, stack, GunInfo.Type.SNIPER, true);
|
||||
} else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) {
|
||||
GunsTool.reload(player, stack, GunInfo.Type.HANDGUN, true);
|
||||
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) {
|
||||
GunsTool.reload(player, stack, GunInfo.Type.RIFLE, stack.is(ModTags.Items.EXTRA_ONE_AMMO));
|
||||
GunsTool.reload(player, stack, GunInfo.Type.RIFLE, gunItem.bulletInBarrel(stack));
|
||||
}
|
||||
}
|
||||
stack.getOrCreateTag().putBoolean("is_normal_reloading", false);
|
||||
|
|
|
@ -17,7 +17,6 @@ public class ModTags {
|
|||
public static final TagKey<Item> USE_RIFLE_AMMO = tag("use_rifle_ammo");
|
||||
public static final TagKey<Item> USE_SHOTGUN_AMMO = tag("use_shotgun_ammo");
|
||||
public static final TagKey<Item> USE_SNIPER_AMMO = tag("use_sniper_ammo");
|
||||
public static final TagKey<Item> EXTRA_ONE_AMMO = tag("extra_one_ammo");
|
||||
|
||||
public static final TagKey<Item> SMG = tag("smg");
|
||||
public static final TagKey<Item> HANDGUN = tag("handgun");
|
||||
|
|
|
@ -55,6 +55,12 @@ public abstract class GunItem extends Item {
|
|||
return;
|
||||
}
|
||||
|
||||
GunItem gunItem = null;
|
||||
if (stack.getItem() instanceof GunItem gunItem1) {
|
||||
gunItem = gunItem1;
|
||||
}
|
||||
if (gunItem == null) return;
|
||||
|
||||
if (!ItemNBTTool.getBoolean(stack, "init", false)) {
|
||||
GunsTool.initGun(level, stack, this.getDescriptionId().substring(this.getDescriptionId().lastIndexOf('.') + 1));
|
||||
GunsTool.generateAndSetUUID(stack);
|
||||
|
@ -68,10 +74,10 @@ public abstract class GunItem extends Item {
|
|||
handleGunPerks(stack);
|
||||
handleGunAttachment(stack);
|
||||
|
||||
if ((stack.is(ModTags.Items.EXTRA_ONE_AMMO) && GunsTool.getGunIntTag(stack, "Ammo", 0) > GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag") + 1)
|
||||
|| (!stack.is(ModTags.Items.EXTRA_ONE_AMMO) && GunsTool.getGunIntTag(stack, "Ammo", 0) > GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag"))
|
||||
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"))
|
||||
) {
|
||||
int count = GunsTool.getGunIntTag(stack, "Ammo", 0) - GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag") - (stack.is(ModTags.Items.EXTRA_ONE_AMMO) ? 1 : 0);
|
||||
int count = gunItem.getAmmoCount(stack) - 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)) {
|
||||
|
@ -86,7 +92,7 @@ public abstract class GunItem extends Item {
|
|||
capability.syncPlayerVariables(entity);
|
||||
});
|
||||
|
||||
GunsTool.setGunIntTag(stack, "Ammo", GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag") + (stack.is(ModTags.Items.EXTRA_ONE_AMMO) ? 1 : 0));
|
||||
GunsTool.setGunIntTag(stack, "Ammo", GunsTool.getGunIntTag(stack, "Magazine", 0) + stack.getOrCreateTag().getInt("customMag") + (gunItem.bulletInBarrel(stack) ? 1 : 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -251,4 +257,8 @@ public abstract class GunItem extends Item {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -157,4 +157,9 @@ public class Glock17Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -160,4 +160,9 @@ public class Glock18Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -148,4 +148,9 @@ public class M1911Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -144,4 +144,9 @@ public class DevotionItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -145,4 +145,9 @@ public class RpkItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -209,4 +209,9 @@ public class AK12Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -223,4 +223,9 @@ public class AK47Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -225,4 +225,9 @@ public class Hk416Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -224,4 +224,9 @@ public class M4Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -223,4 +223,9 @@ public class Mk14Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -226,4 +226,9 @@ public class Qbz95Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -158,4 +158,9 @@ public class SksItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -177,4 +177,9 @@ public class Aa12Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -199,4 +199,9 @@ public class VectorItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -160,4 +160,9 @@ public class M98bItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -161,4 +161,9 @@ public class Ntw20Item extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -243,4 +243,9 @@ public class SentinelItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -143,4 +143,9 @@ public class SvdItem extends GunItem implements GeoItem, AnimatedItem {
|
|||
public boolean isOpenBolt(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean bulletInBarrel(ItemStack stack) {
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -96,26 +96,12 @@ public class ReloadMessage {
|
|||
}
|
||||
|
||||
if (canReload || clipLoad) {
|
||||
int magazine = gunItem.getAmmoCount(stack);
|
||||
|
||||
if (gunItem.isOpenBolt(stack)) {
|
||||
if (stack.is(ModTags.Items.EXTRA_ONE_AMMO)) {
|
||||
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 (GunsTool.getGunIntTag(stack, "Ammo", 0) < GunsTool.getGunIntTag(stack, "Magazine", 0) + tag.getInt("customMag")) {
|
||||
if (gunItem.getAmmoCount(stack) < GunsTool.getGunIntTag(stack, "Magazine", 0) + tag.getInt("customMag")) {
|
||||
tag.putBoolean("start_single_reload", true);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.atsuishio.superbwarfare.tools;
|
|||
|
||||
import com.atsuishio.superbwarfare.ModUtils;
|
||||
import com.atsuishio.superbwarfare.init.ModTags;
|
||||
import com.atsuishio.superbwarfare.item.gun.GunItem;
|
||||
import com.atsuishio.superbwarfare.network.ModVariables;
|
||||
import com.atsuishio.superbwarfare.network.message.GunsDataMessage;
|
||||
import com.google.gson.stream.JsonReader;
|
||||
|
@ -102,9 +103,14 @@ public class GunsTool {
|
|||
|
||||
public static void reload(Player player, ItemStack stack, GunInfo.Type type, boolean extraOne) {
|
||||
CompoundTag tag = stack.getOrCreateTag();
|
||||
GunItem gunItem = null;
|
||||
if (stack.getItem() instanceof GunItem gunItem1) {
|
||||
gunItem = gunItem1;
|
||||
}
|
||||
if (gunItem == null) return;
|
||||
|
||||
int mag = GunsTool.getGunIntTag(stack, "Magazine", 0) + tag.getInt("customMag");
|
||||
int ammo = GunsTool.getGunIntTag(stack, "Ammo", 0);
|
||||
int ammo = gunItem.getAmmoCount(stack);
|
||||
int ammoToAdd = mag - ammo + (extraOne ? 1 : 0);
|
||||
|
||||
// 空仓换弹的栓动武器应该在换弹后取消待上膛标记
|
||||
|
|
Loading…
Add table
Reference in a new issue