修复重生自动换弹bug,添加插板和防弹衣能减伤的伤害类型

This commit is contained in:
Atsuihsio 2024-10-11 02:30:58 +08:00
parent 906ce63a8b
commit 994f2afa4a
4 changed files with 42 additions and 189 deletions

View file

@ -108,7 +108,14 @@ public class LivingEventHandler {
} }
//计算防弹插板减伤 //计算防弹插板减伤
if (source.is(ModTags.DamageTypes.PROJECTILE) || source.is(ModTags.DamageTypes.PROJECTILE_ABSOLUTE)) { if (source.is(ModTags.DamageTypes.PROJECTILE) || source.is(ModTags.DamageTypes.PROJECTILE_ABSOLUTE)
|| source.is(ModDamageTypes.PROJECTILE_BOOM)
|| source.is(ModDamageTypes.MINE)
|| source.is(ModDamageTypes.CANNON_FIRE)
|| source.is(ModDamageTypes.CUSTOM_EXPLOSION)
|| source.is(DamageTypes.EXPLOSION)
|| source.is(DamageTypes.PLAYER_EXPLOSION)
|| source.is(DamageTypes.MOB_PROJECTILE)) {
ItemStack armor = entity.getItemBySlot(EquipmentSlot.CHEST); ItemStack armor = entity.getItemBySlot(EquipmentSlot.CHEST);
if (armor != ItemStack.EMPTY && armor.getTag() != null && armor.getTag().contains("ArmorPlate")) { if (armor != ItemStack.EMPTY && armor.getTag() != null && armor.getTag().contains("ArmorPlate")) {
@ -119,13 +126,18 @@ public class LivingEventHandler {
} }
//计算防弹护具减伤 //计算防弹护具减伤
if (source.is(ModTags.DamageTypes.PROJECTILE)) { if (source.is(ModTags.DamageTypes.PROJECTILE) || source.is(DamageTypes.MOB_PROJECTILE)) {
damage *= 1 - 0.8 * Mth.clamp(entity.getAttributeValue(ModAttributes.BULLET_RESISTANCE.get()), 0, 1); damage *= 1 - 0.8 * Mth.clamp(entity.getAttributeValue(ModAttributes.BULLET_RESISTANCE.get()), 0, 1);
} }
if (source.is(ModTags.DamageTypes.PROJECTILE_ABSOLUTE)) { if (source.is(ModTags.DamageTypes.PROJECTILE_ABSOLUTE)) {
damage *= 1 - 0.2 * Mth.clamp(entity.getAttributeValue(ModAttributes.BULLET_RESISTANCE.get()), 0, 1); damage *= 1 - 0.2 * Mth.clamp(entity.getAttributeValue(ModAttributes.BULLET_RESISTANCE.get()), 0, 1);
} }
if (source.is(ModDamageTypes.PROJECTILE_BOOM) || source.is(ModDamageTypes.MINE) || source.is(ModDamageTypes.CANNON_FIRE) || source.is(ModDamageTypes.CUSTOM_EXPLOSION)
|| source.is(DamageTypes.EXPLOSION) || source.is(DamageTypes.PLAYER_EXPLOSION)) {
damage *= 1 - 0.3 * Mth.clamp(entity.getAttributeValue(ModAttributes.BULLET_RESISTANCE.get()), 0, 1);
}
} }
event.setAmount((float) damage); event.setAmount((float) damage);

View file

@ -299,24 +299,33 @@ public class PlayerEventHandler {
for (ItemStack stack : player.getInventory().items) { for (ItemStack stack : player.getInventory().items) {
if (stack.is(ModTags.Items.GUN)) { if (stack.is(ModTags.Items.GUN)) {
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO)) { var cap = player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables());
if (stack.is(ModTags.Items.USE_SHOTGUN_AMMO) && cap.shotgunAmmo > 0) {
GunsTool.reload(player, GunInfo.Type.SHOTGUN); GunsTool.reload(player, GunInfo.Type.SHOTGUN);
} else if (stack.is(ModTags.Items.USE_SNIPER_AMMO)) { }
if (stack.is(ModTags.Items.USE_SNIPER_AMMO) && cap.sniperAmmo > 0) {
GunsTool.reload(player, GunInfo.Type.SNIPER); GunsTool.reload(player, GunInfo.Type.SNIPER);
} else if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)) { }
if (stack.is(ModTags.Items.USE_HANDGUN_AMMO)&& cap.handgunAmmo > 0) {
GunsTool.reload(player, GunInfo.Type.HANDGUN); GunsTool.reload(player, GunInfo.Type.HANDGUN);
} else if (stack.is(ModTags.Items.USE_RIFLE_AMMO)) { }
if (stack.is(ModTags.Items.USE_RIFLE_AMMO)&& cap.rifleAmmo > 0) {
GunsTool.reload(player, GunInfo.Type.RIFLE); GunsTool.reload(player, GunInfo.Type.RIFLE);
} else if (stack.getItem() == ModItems.TASER.get()) { }
if (stack.getItem() == ModItems.TASER.get() && stack.getOrCreateTag().getInt("max_ammo") > 0) {
stack.getOrCreateTag().putInt("ammo", 1); stack.getOrCreateTag().putInt("ammo", 1);
player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.TASER_ELECTRODE.get(), 1, player.inventoryMenu.getCraftSlots()); player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.TASER_ELECTRODE.get(), 1, player.inventoryMenu.getCraftSlots());
} else if (stack.getItem() == ModItems.M_79.get()) { }
if (stack.getItem() == ModItems.M_79.get() && stack.getOrCreateTag().getInt("max_ammo") > 0) {
stack.getOrCreateTag().putInt("ammo", 1); stack.getOrCreateTag().putInt("ammo", 1);
player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.GRENADE_40MM.get(), 1, player.inventoryMenu.getCraftSlots()); player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.GRENADE_40MM.get(), 1, player.inventoryMenu.getCraftSlots());
} else if (stack.getItem() == ModItems.RPG.get()) { }
if (stack.getItem() == ModItems.RPG.get() && stack.getOrCreateTag().getInt("max_ammo") > 0) {
stack.getOrCreateTag().putInt("ammo", 1); stack.getOrCreateTag().putInt("ammo", 1);
player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.ROCKET.get(), 1, player.inventoryMenu.getCraftSlots()); player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.ROCKET.get(), 1, player.inventoryMenu.getCraftSlots());
} else if (stack.getItem() == ModItems.JAVELIN.get()) { }
if (stack.getItem() == ModItems.JAVELIN.get() && stack.getOrCreateTag().getInt("max_ammo") > 0) {
stack.getOrCreateTag().putInt("ammo", 1); stack.getOrCreateTag().putInt("ammo", 1);
player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.JAVELIN_MISSILE.get(), 1, player.inventoryMenu.getCraftSlots()); player.getInventory().clearOrCountMatchingItems(p -> p.getItem() == ModItems.JAVELIN_MISSILE.get(), 1, player.inventoryMenu.getCraftSlots());
} }

View file

@ -78,174 +78,6 @@
} }
} }
}, },
"animation.ak47.changefirerate": {
"animation_length": 0.5,
"bones": {
"0": {
"rotation": {
"0.0": {
"vector": [0, 0, 0]
},
"0.2": {
"vector": [0, 0, 4],
"easing": "easeOutSine"
},
"0.3": {
"vector": [-0.98905, -0.20901, -1.99637],
"easing": "easeInSine"
},
"0.5": {
"vector": [0, 0, 0],
"easing": "easeInOutSine"
}
},
"position": {
"0.0": {
"vector": [0, 0, 0]
},
"0.2": {
"vector": [0, 0.1, 0],
"easing": "easeOutSine"
},
"0.3": {
"vector": [0, -0.23, 0],
"easing": "easeInSine"
},
"0.5": {
"vector": [0, 0, 0],
"easing": "easeInOutSine"
}
}
},
"Righthand": {
"rotation": {
"0.0": {
"vector": [0, 0, 0]
},
"0.2": {
"vector": [-0.78478, 1.92167, -26.98046],
"easing": "easeOutSine"
},
"0.3": {
"vector": [8.15618, 10.19589, -5.96653],
"easing": "easeInOutSine"
},
"0.5": {
"vector": [0, 0, 0],
"easing": "easeInOutSine"
}
},
"position": {
"0.0": {
"vector": [0, 0, 0]
},
"0.2": {
"vector": [1.05, -0.1, -1],
"easing": "easeOutSine"
},
"0.3": {
"vector": [1.04, -0.08, -0.75]
},
"0.5": {
"vector": [0, 0, 0],
"easing": "easeInOutSine"
}
}
},
"Lefthand": {
"rotation": {
"vector": [27.6003, 27.5697, -16.00843]
},
"position": {
"vector": [-0.6, -2.7, -3.3]
}
}
}
},
"animation.ak47.changefirerate2": {
"animation_length": 0.5,
"bones": {
"0": {
"rotation": {
"0.0": {
"vector": [0, 0, 0]
},
"0.2": {
"vector": [-0.98905, -0.20901, -1.99637],
"easing": "easeInSine"
},
"0.3": {
"vector": [0, 0, -1],
"easing": "easeOutSine"
},
"0.5": {
"vector": [0, 0, 0],
"easing": "easeInOutSine"
}
},
"position": {
"0.0": {
"vector": [0, 0, 0]
},
"0.2": {
"vector": [0, 0.00828, 0],
"easing": "easeInSine"
},
"0.3": {
"vector": [0, 0.1, 0],
"easing": "easeOutSine"
},
"0.5": {
"vector": [0, 0, 0],
"easing": "easeInOutSine"
}
}
},
"Righthand": {
"rotation": {
"0.0": {
"vector": [0, 0, 0]
},
"0.2": {
"vector": [8.15618, 10.19589, -5.96653],
"easing": "easeOutSine"
},
"0.3": {
"vector": [5.21522, 1.92167, -26.98046],
"easing": "easeInOutSine"
},
"0.5": {
"vector": [0, 0, 0],
"easing": "easeInOutSine"
}
},
"position": {
"0.0": {
"vector": [0, 0, 0]
},
"0.2": {
"vector": [0.85, 1.92, -0.75]
},
"0.3": {
"vector": [1.05, 0.9, -1],
"easing": "easeInOutSine"
},
"0.5": {
"vector": [0, 0, 0],
"easing": "easeInOutSine"
}
}
},
"Lefthand": {
"rotation": {
"vector": [27.6003, 27.5697, -16.00843]
},
"position": {
"vector": [-0.6, -2.7, -3.3]
}
}
}
},
"animation.ak47.run": { "animation.ak47.run": {
"loop": true, "loop": true,
"animation_length": 0.8, "animation_length": 0.8,
@ -482,7 +314,7 @@
"easing": "easeInOutSine" "easing": "easeInOutSine"
}, },
"2.15": { "2.15": {
"vector": [0.49, 0, 0] "vector": [0.99, 0, 0]
}, },
"2.25": { "2.25": {
"vector": [0, 0, 0] "vector": [0, 0, 0]
@ -541,7 +373,7 @@
"easing": "easeInSine" "easing": "easeInSine"
}, },
"2.15": { "2.15": {
"vector": [0.04, 0.15993, 0.24478] "vector": [0.04, 0, 0.24478]
}, },
"2.2667": { "2.2667": {
"vector": [0, 0, 0], "vector": [0, 0, 0],
@ -910,7 +742,7 @@
"easing": "easeInOutSine" "easing": "easeInOutSine"
}, },
"3.0833": { "3.0833": {
"vector": [0.49, 0, 0] "vector": [0.99, 0, 0]
}, },
"3.1833": { "3.1833": {
"vector": [0, 0, 0] "vector": [0, 0, 0]
@ -990,7 +822,7 @@
"easing": "easeInSine" "easing": "easeInSine"
}, },
"3.0833": { "3.0833": {
"vector": [0.04, 0.15993, 0.24478] "vector": [0.04, 0, 0.24478]
}, },
"3.2": { "3.2": {
"vector": [0, 0, 0], "vector": [0, 0, 0],

View file

@ -159,7 +159,7 @@
"vector": [-71.5441, 21.19359, 4.89071] "vector": [-71.5441, 21.19359, 4.89071]
}, },
"0.175": { "0.175": {
"vector": [-70.25009, 19.57377, 12.8696], "vector": [-68.62934, 10.13346, 9.45227],
"easing": "easeInSine" "easing": "easeInSine"
}, },
"0.35": { "0.35": {
@ -167,7 +167,7 @@
"easing": "easeOutSine" "easing": "easeOutSine"
}, },
"0.525": { "0.525": {
"vector": [-72.13904, 19.33922, 0.51567], "vector": [-73.2118, 28.82149, 4.00081],
"easing": "easeInSine" "easing": "easeInSine"
}, },
"0.7": { "0.7": {
@ -176,23 +176,23 @@
}, },
"position": { "position": {
"0.0": { "0.0": {
"vector": [-5.16449, 5.24106, -2.41075], "vector": [-5.16449, 3.24106, -2.41075],
"easing": "easeOutSine" "easing": "easeOutSine"
}, },
"0.175": { "0.175": {
"vector": [-6.01808, 7.20195, -2.4316], "vector": [-6.01808, 5.20195, -2.4316],
"easing": "easeInSine" "easing": "easeInSine"
}, },
"0.35": { "0.35": {
"vector": [-7.14782, 5.23777, -2.41358], "vector": [-7.14782, 3.23777, -2.41358],
"easing": "easeOutSine" "easing": "easeOutSine"
}, },
"0.525": { "0.525": {
"vector": [-6.27505, 7.25654, -2.3913], "vector": [-6.27505, 5.25654, -2.3913],
"easing": "easeInSine" "easing": "easeInSine"
}, },
"0.7": { "0.7": {
"vector": [-5.16513, 5.23951, -2.40714], "vector": [-5.16513, 3.23951, -2.40714],
"easing": "easeOutSine" "easing": "easeOutSine"
} }
} }