修改Tag

This commit is contained in:
17146 2024-08-10 14:38:59 +08:00
parent 499c4e739c
commit 249a45882d
13 changed files with 93 additions and 59 deletions

View file

@ -178,16 +178,16 @@ public class AmmoBarOverlay {
return "" + stack.getOrCreateTag().getInt("max_ammo");
}
if (stack.is(ModTags.Items.RIFLE)) {
if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) {
return "" + (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).rifleAmmo;
}
if (stack.is(ModTags.Items.HANDGUN) || stack.is(ModTags.Items.SMG)) {
if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) {
return "" + (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).handgunAmmo;
}
if (stack.is(ModTags.Items.SHOTGUN)) {
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) {
return "" + (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).shotgunAmmo;
}
if (stack.is(ModTags.Items.SNIPER_RIFLE)) {
if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) {
return "" + (player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).sniperAmmo;
}
return "";
@ -214,16 +214,16 @@ public class AmmoBarOverlay {
return "Rifle Ammo";
}
if (stack.is(ModTags.Items.RIFLE)) {
if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) {
return " Rifle Ammo";
}
if (stack.is(ModTags.Items.HANDGUN) || stack.is(ModTags.Items.SMG)) {
if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) {
return "Handgun Ammo";
}
if (stack.is(ModTags.Items.SHOTGUN)) {
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) {
return "Shotgun Ammo";
}
if (stack.is(ModTags.Items.SNIPER_RIFLE)) {
if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) {
return "Sniper Ammo";
}
return "";

View file

@ -35,6 +35,6 @@ public class FourthTimesCharm extends Enchantment {
@Override
public boolean canApplyAtEnchantingTable(ItemStack itemstack) {
return itemstack.is(ModTags.Items.CAN_SHOOT_BULLET) && !itemstack.is(ModItems.MINIGUN.get()) && !itemstack.is(ModTags.Items.SHOTGUN);
return itemstack.is(ModTags.Items.CAN_SHOOT_BULLET) && !itemstack.is(ModItems.MINIGUN.get()) && !itemstack.is(ModTags.Items.USE_SHOTGUN_AMMO);
}
}

View file

@ -492,17 +492,17 @@ public class GunEventHandler {
public static void playGunNormalReload(Player player) {
ItemStack stack = player.getMainHandItem();
if (stack.is(ModTags.Items.SHOTGUN)) {
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) {
if (stack.getItem() == ModItems.ABEKIRI.get()) {
GunsTool.reload(player, GunInfo.Type.SHOTGUN);
} else {
GunsTool.reload(player, GunInfo.Type.SHOTGUN, true);
}
} else if (stack.is(ModTags.Items.SNIPER_RIFLE)) {
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) {
GunsTool.reload(player, GunInfo.Type.SNIPER, true);
} else if (stack.is(ModTags.Items.HANDGUN) || stack.is(ModTags.Items.SMG)) {
} else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) {
GunsTool.reload(player, GunInfo.Type.HANDGUN, true);
} else if (stack.is(ModTags.Items.RIFLE)) {
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) {
if (stack.getItem() == ModItems.M_60.get()) {
GunsTool.reload(player, GunInfo.Type.RIFLE);
} else {
@ -518,13 +518,13 @@ public class GunEventHandler {
public static void playGunEmptyReload(Player player) {
ItemStack stack = player.getMainHandItem();
if (stack.is(ModTags.Items.SHOTGUN)) {
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) {
GunsTool.reload(player, GunInfo.Type.SHOTGUN);
} else if (stack.is(ModTags.Items.SNIPER_RIFLE)) {
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) {
GunsTool.reload(player, GunInfo.Type.SNIPER);
} else if (stack.is(ModTags.Items.HANDGUN) || stack.is(ModTags.Items.SMG)) {
} else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) {
GunsTool.reload(player, GunInfo.Type.HANDGUN);
} else if (stack.is(ModTags.Items.RIFLE)) {
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) {
GunsTool.reload(player, GunInfo.Type.RIFLE);
} else if (stack.getItem() == ModItems.TASER.get()) {
stack.getOrCreateTag().putInt("ammo", 1);
@ -632,13 +632,13 @@ public class GunEventHandler {
// 检查备弹
var capability = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables());
if (stack.is(ModTags.Items.SHOTGUN) && capability.shotgunAmmo == 0) {
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) && capability.shotgunAmmo == 0) {
tag.putBoolean("force_stage3_start", true);
} else if (stack.is(ModTags.Items.SNIPER_RIFLE) && capability.sniperAmmo == 0) {
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO) && capability.sniperAmmo == 0) {
tag.putBoolean("force_stage3_start", true);
} else if ((stack.is(ModTags.Items.HANDGUN) || stack.is(ModTags.Items.SMG)) && capability.handgunAmmo == 0) {
} 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.RIFLE) && capability.rifleAmmo == 0) {
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO) && capability.rifleAmmo == 0) {
tag.putBoolean("force_stage3_start", true);
} else {
tag.putInt("reload_stage", 2);
@ -691,13 +691,13 @@ public class GunEventHandler {
// 备弹耗尽结束
var capability = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables());
if (stack.is(ModTags.Items.SHOTGUN) && capability.shotgunAmmo == 0) {
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) && capability.shotgunAmmo == 0) {
tag.putInt("reload_stage", 3);
} else if (stack.is(ModTags.Items.SNIPER_RIFLE) && capability.sniperAmmo == 0) {
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO) && capability.sniperAmmo == 0) {
tag.putInt("reload_stage", 3);
} else if ((stack.is(ModTags.Items.HANDGUN) || stack.is(ModTags.Items.SMG)) && capability.handgunAmmo == 0) {
} 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.RIFLE) && capability.rifleAmmo == 0) {
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO) && capability.rifleAmmo == 0) {
tag.putInt("reload_stage", 3);
}
@ -732,24 +732,24 @@ public class GunEventHandler {
tag.putInt("ammo", tag.getInt("ammo") + 1);
if (stack.is(ModTags.Items.SHOTGUN)) {
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) {
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.shotgunAmmo = capability.shotgunAmmo - 1;
capability.shotgunAmmo -= 1;
capability.syncPlayerVariables(player);
});
} else if (stack.is(ModTags.Items.SNIPER_RIFLE)) {
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) {
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.sniperAmmo = capability.sniperAmmo - 1;
capability.sniperAmmo -= 1;
capability.syncPlayerVariables(player);
});
} else if ((stack.is(ModTags.Items.HANDGUN) || stack.is(ModTags.Items.SMG))) {
} else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) {
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.handgunAmmo = capability.handgunAmmo - 1;
capability.handgunAmmo -= 1;
capability.syncPlayerVariables(player);
});
} else if (stack.is(ModTags.Items.RIFLE)) {
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) {
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.rifleAmmo = capability.rifleAmmo - 1;
capability.rifleAmmo -= 1;
capability.syncPlayerVariables(player);
});
}

View file

@ -75,15 +75,15 @@ public class LivingEventHandler {
if (DamageTypeTool.isGunDamage(damageSource)) {
double distance = entity.position().distanceTo(sourceentity.position());
if (stack.is(ModTags.Items.SHOTGUN) || stack.getItem() == ModItems.BOCEK.get()) {
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) || stack.getItem() == ModItems.BOCEK.get()) {
damage = reduceDamageByDistance(amount, distance, 0.03, 25);
} else if (stack.is(ModTags.Items.SNIPER_RIFLE)) {
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) {
damage = reduceDamageByDistance(amount, distance, 0.001, 200);
} else if (stack.is(ModTags.Items.HANDGUN)) {
} else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) {
damage = reduceDamageByDistance(amount, distance, 0.03, 50);
} else if (stack.is(ModTags.Items.SMG)) {
damage = reduceDamageByDistance(amount, distance, 0.03, 50);
} else if (stack.is(ModTags.Items.RIFLE)) {
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) {
damage = reduceDamageByDistance(amount, distance, 0.0025, 150);
}
event.setAmount((float) damage);
@ -405,20 +405,19 @@ public class LivingEventHandler {
return;
}
float rate = level * 0.1f + (stack.is(ModTags.Items.SMG) || stack.is(ModTags.Items.RIFLE) ? 0.17f : 0f);
float rate = level * 0.1f + (stack.is(ModTags.Items.SMG) || stack.is(ModTags.Items.RIFLE) ? 0.07f : 0f);
int mag = stack.getOrCreateTag().getInt("mag");
int ammoReload = (int) Math.min(mag, mag * rate);
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null)
.ifPresent(capability -> {
if (stack.is(ModTags.Items.RIFLE)) {
player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) {
capability.rifleAmmo -= Math.min(capability.rifleAmmo, ammoReload);
} else if (stack.is(ModTags.Items.SMG) || stack.is(ModTags.Items.HANDGUN)) {
} else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) {
capability.handgunAmmo -= Math.min(capability.handgunAmmo, ammoReload);
}
capability.syncPlayerVariables(player);
stack.getOrCreateTag().putInt("ammo", ammoReload);
stack.getOrCreateTag().putInt("ammo", mag + ammoReload);
}
);
}

View file

@ -257,19 +257,19 @@ public class PlayerEventHandler {
public static void handleAmmoCount(Player player) {
ItemStack stack = player.getMainHandItem();
if (stack.is(ModTags.Items.RIFLE)) {
if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) {
stack.getOrCreateTag().putInt("max_ammo",
((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).rifleAmmo));
}
if (stack.is(ModTags.Items.HANDGUN) || stack.is(ModTags.Items.SMG)) {
if (stack.is(ModTags.Items.USE_HANDGUN_AMMO) || stack.is(ModTags.Items.SMG)) {
stack.getOrCreateTag().putInt("max_ammo",
((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).handgunAmmo));
}
if (stack.is(ModTags.Items.SHOTGUN)) {
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) {
stack.getOrCreateTag().putInt("max_ammo",
((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).shotgunAmmo));
}
if (stack.is(ModTags.Items.SNIPER_RIFLE)) {
if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) {
stack.getOrCreateTag().putInt("max_ammo",
((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).sniperAmmo));
}

View file

@ -11,11 +11,15 @@ public class ModTags {
public static class Items {
public static final TagKey<Item> GUN = tag("gun");
public static final TagKey<Item> USE_HANDGUN_AMMO = tag("use_handgun_ammo");
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> SMG = tag("smg");
public static final TagKey<Item> HANDGUN = tag("handgun");
public static final TagKey<Item> RIFLE = tag("rifle");
public static final TagKey<Item> SHOTGUN = tag("shotgun");
public static final TagKey<Item> SNIPER_RIFLE = tag("sniper_rifle");
public static final TagKey<Item> SMG = tag("smg");
public static final TagKey<Item> NORMAL_GUN = tag("normal_gun");
public static final TagKey<Item> LEGENDARY_GUN = tag("legendary_gun");

View file

@ -275,8 +275,8 @@ public class ModVariables {
public double cannonFiring = 0;
public int cannonRecoil = 0;
public double targetAngle = 0;
public int rifleAmmo = 0;
public boolean refresh = false;
public int rifleAmmo = 0;
public int handgunAmmo = 0;
public int shotgunAmmo = 0;
public int sniperAmmo = 0;
@ -287,7 +287,6 @@ public class ModVariables {
public int tacticalSprintTime = 600;
public boolean tacticalSprintExhaustion = false;
public void syncPlayerVariables(Entity entity) {
if (entity instanceof ServerPlayer)
ModUtils.PACKET_HANDLER.send(PacketDistributor.DIMENSION.with(entity.level()::dimension), new PlayerVariablesSyncMessage(this, entity.getId()));

View file

@ -60,13 +60,13 @@ public class ReloadMessage {
boolean can_single_reload = tag.getDouble("iterative_time") != 0;
//检查备弹
if (stack.is(ModTags.Items.SHOTGUN) && capability.shotgunAmmo == 0) {
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) && capability.shotgunAmmo == 0) {
return;
} else if (stack.is(ModTags.Items.SNIPER_RIFLE) && capability.sniperAmmo == 0) {
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO) && capability.sniperAmmo == 0) {
return;
} else if ((stack.is(ModTags.Items.HANDGUN) || stack.is(ModTags.Items.SMG)) && capability.handgunAmmo == 0) {
} else if ((stack.is(ModTags.Items.USE_HANDGUN_AMMO) || stack.is(ModTags.Items.SMG)) && capability.handgunAmmo == 0) {
return;
} else if (stack.is(ModTags.Items.RIFLE) && capability.rifleAmmo == 0) {
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO) && capability.rifleAmmo == 0) {
return;
} else if (stack.getItem() == ModItems.TASER.get() && tag.getInt("max_ammo") == 0) {
return;

View file

@ -1,14 +1,10 @@
{
"replace": false,
"values": [
"superbwarfare:devotion",
"superbwarfare:m_4",
"superbwarfare:hk_416",
"superbwarfare:rpk",
"superbwarfare:sks",
"superbwarfare:minigun",
"superbwarfare:mk_14",
"superbwarfare:m_60",
"superbwarfare:marlin",
"superbwarfare:ak_47",
"superbwarfare:qbz_95"

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
"superbwarfare:trachelium",
"superbwarfare:glock_17",
"superbwarfare:glock_18",
"superbwarfare:m_1911",
"superbwarfare:vector"
]
}

View file

@ -0,0 +1,16 @@
{
"replace": false,
"values": [
"superbwarfare:devotion",
"superbwarfare:m_4",
"superbwarfare:hk_416",
"superbwarfare:rpk",
"superbwarfare:sks",
"superbwarfare:minigun",
"superbwarfare:mk_14",
"superbwarfare:m_60",
"superbwarfare:marlin",
"superbwarfare:ak_47",
"superbwarfare:qbz_95"
]
}

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
"superbwarfare:hunting_rifle",
"superbwarfare:ntw_20",
"superbwarfare:sentinel",
"superbwarfare:svd",
"superbwarfare:m_98b"
]
}