注册新perk
This commit is contained in:
parent
e0b2e11041
commit
d63aa20991
7 changed files with 44 additions and 31 deletions
|
@ -243,7 +243,7 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity,
|
|||
}
|
||||
|
||||
this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1);
|
||||
this.entityData.set(HEALTH, this.entityData.get(HEALTH) - 0.5f * java.lang.Math.max(amount - 3, 0));
|
||||
this.entityData.set(HEALTH, this.entityData.get(HEALTH) - 0.5f * Math.max(amount - 3, 0));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -116,7 +116,7 @@ public class LivingEventHandler {
|
|||
ItemStack stack = sourceEntity instanceof LivingEntity living ? living.getMainHandItem() : ItemStack.EMPTY;
|
||||
var perk = PerkHelper.getPerkByType(stack, Perk.Type.AMMO);
|
||||
|
||||
//距离衰减
|
||||
// 距离衰减
|
||||
if (DamageTypeTool.isGunDamage(source)) {
|
||||
double distance = entity.position().distanceTo(sourceEntity.position());
|
||||
|
||||
|
@ -137,7 +137,7 @@ public class LivingEventHandler {
|
|||
}
|
||||
}
|
||||
|
||||
//计算防弹插板减伤
|
||||
// 计算防弹插板减伤
|
||||
ItemStack armor = entity.getItemBySlot(EquipmentSlot.CHEST);
|
||||
|
||||
if (armor != ItemStack.EMPTY && armor.getTag() != null && armor.getTag().contains("ArmorPlate")) {
|
||||
|
@ -466,6 +466,7 @@ public class LivingEventHandler {
|
|||
|
||||
if (DamageTypeTool.isGunDamage(source) || source.is(ModDamageTypes.PROJECTILE_BOOM)) {
|
||||
handleKillClipDamage(stack, event);
|
||||
handleVorpalWeaponDamage(stack, event);
|
||||
}
|
||||
|
||||
if (DamageTypeTool.isGunFireDamage(source) && source.getDirectEntity() instanceof ProjectileEntity projectile && projectile.isZoom()) {
|
||||
|
@ -775,4 +776,13 @@ public class LivingEventHandler {
|
|||
public static void handlePlayerBeamReset(Player player) {
|
||||
player.getCapability(ModCapabilities.LASER_CAPABILITY).ifPresent(LaserCapability.ILaserCapability::end);
|
||||
}
|
||||
|
||||
private static void handleVorpalWeaponDamage(ItemStack stack, LivingHurtEvent event) {
|
||||
var entity = event.getEntity();
|
||||
int level = PerkHelper.getItemPerkLevel(ModPerks.VORPAL_WEAPON.get(), stack);
|
||||
if (level <= 0) return;
|
||||
if (entity.getMaxHealth() < 100.0f) return;
|
||||
|
||||
event.setAmount(event.getAmount() * (1.15f + 0.05f * level));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -71,6 +71,7 @@ public class ModPerks {
|
|||
public static final RegistryObject<Perk> MONSTER_HUNTER = DAMAGE_PERKS.register("monster_hunter", () -> new Perk("monster_hunter", Perk.Type.DAMAGE));
|
||||
public static final RegistryObject<Perk> VOLT_OVERLOAD = DAMAGE_PERKS.register("volt_overload", () -> new Perk("volt_overload", Perk.Type.DAMAGE));
|
||||
public static final RegistryObject<Perk> DESPERADO = DAMAGE_PERKS.register("desperado", () -> new Perk("desperado", Perk.Type.DAMAGE));
|
||||
public static final RegistryObject<Perk> VORPAL_WEAPON = DAMAGE_PERKS.register("vorpal_weapon", () -> new Perk("vorpal_weapon", Perk.Type.DAMAGE));
|
||||
|
||||
public static void registerCompatPerks() {
|
||||
if (ModList.get().isLoaded(CompatHolder.DMV)) {
|
||||
|
|
|
@ -24,6 +24,7 @@ import java.util.List;
|
|||
|
||||
@Mod.EventBusSubscriber(modid = ModUtils.MODID)
|
||||
public class ModVillagers {
|
||||
|
||||
public static final DeferredRegister<PoiType> POI_TYPES = DeferredRegister.create(ForgeRegistries.POI_TYPES, ModUtils.MODID);
|
||||
public static final DeferredRegister<VillagerProfession> VILLAGER_PROFESSIONS = DeferredRegister.create(ForgeRegistries.VILLAGER_PROFESSIONS, ModUtils.MODID);
|
||||
|
||||
|
@ -185,6 +186,8 @@ public class ModVillagers {
|
|||
new ItemStack(getItemHolder("fourth_times_charm"), 1), 4, 15, 0.05f));
|
||||
trades.get(5).add(new BasicItemListing(new ItemStack(Items.EMERALD, 48),
|
||||
new ItemStack(getItemHolder("monster_hunter"), 1), 4, 25, 0.05f));
|
||||
trades.get(5).add(new BasicItemListing(new ItemStack(Items.EMERALD, 40),
|
||||
new ItemStack(getItemHolder("vorpal_weapon"), 1), 4, 25, 0.05f));
|
||||
|
||||
trades.get(5).add(new BasicItemListing(new ItemStack(Items.EMERALD, 64),
|
||||
new ItemStack(ModItems.HUNTING_RIFLE_BLUEPRINT.get()), 10, 30, 0.05f));
|
||||
|
|
|
@ -186,10 +186,12 @@ public class PerkHelper {
|
|||
return !perk.descriptionId.equals("butterfly_bullet");
|
||||
}
|
||||
case FUNCTIONAL -> {
|
||||
return perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FIELD_DOCTOR.get() || perk == ModPerks.INTELLIGENT_CHIP.get();
|
||||
return perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.HEAL_CLIP.get() ||
|
||||
perk == ModPerks.FIELD_DOCTOR.get() || perk == ModPerks.INTELLIGENT_CHIP.get();
|
||||
}
|
||||
case DAMAGE -> {
|
||||
return perk == ModPerks.GUTSHOT_STRAIGHT.get() || perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILL_CLIP.get();
|
||||
return perk == ModPerks.GUTSHOT_STRAIGHT.get() || perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILL_CLIP.get() ||
|
||||
perk == ModPerks.VORPAL_WEAPON.get();
|
||||
}
|
||||
default -> {
|
||||
return false;
|
||||
|
@ -208,8 +210,8 @@ public class PerkHelper {
|
|||
perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.INTELLIGENT_CHIP.get();
|
||||
}
|
||||
case DAMAGE -> {
|
||||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() ||
|
||||
perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.HEAD_SEEKER.get() || perk == ModPerks.DESPERADO.get();
|
||||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() || perk == ModPerks.MONSTER_HUNTER.get() ||
|
||||
perk == ModPerks.HEAD_SEEKER.get() || perk == ModPerks.DESPERADO.get() || perk == ModPerks.VORPAL_WEAPON.get();
|
||||
}
|
||||
default -> {
|
||||
return false;
|
||||
|
@ -228,7 +230,8 @@ public class PerkHelper {
|
|||
|| perk == ModPerks.INTELLIGENT_CHIP.get();
|
||||
}
|
||||
case DAMAGE -> {
|
||||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() || perk == ModPerks.MONSTER_HUNTER.get();
|
||||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() || perk == ModPerks.MONSTER_HUNTER.get() ||
|
||||
perk == ModPerks.VORPAL_WEAPON.get();
|
||||
}
|
||||
default -> {
|
||||
return false;
|
||||
|
@ -246,7 +249,7 @@ public class PerkHelper {
|
|||
|| perk == ModPerks.INTELLIGENT_CHIP.get();
|
||||
}
|
||||
case DAMAGE -> {
|
||||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.MONSTER_HUNTER.get();
|
||||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.VORPAL_WEAPON.get();
|
||||
}
|
||||
default -> {
|
||||
return false;
|
||||
|
@ -260,13 +263,12 @@ public class PerkHelper {
|
|||
return true;
|
||||
}
|
||||
case FUNCTIONAL -> {
|
||||
return perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FOURTH_TIMES_CHARM.get() ||
|
||||
perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.POWERFUL_ATTRACTION.get()
|
||||
|| perk == ModPerks.INTELLIGENT_CHIP.get();
|
||||
return perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.SUBSISTENCE.get() ||
|
||||
perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.INTELLIGENT_CHIP.get();
|
||||
}
|
||||
case DAMAGE -> {
|
||||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() ||
|
||||
perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.HEAD_SEEKER.get() || perk == ModPerks.DESPERADO.get();
|
||||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() || perk == ModPerks.MONSTER_HUNTER.get() ||
|
||||
perk == ModPerks.HEAD_SEEKER.get() || perk == ModPerks.DESPERADO.get() || perk == ModPerks.VORPAL_WEAPON.get();
|
||||
}
|
||||
default -> {
|
||||
return false;
|
||||
|
@ -280,11 +282,11 @@ public class PerkHelper {
|
|||
return true;
|
||||
}
|
||||
case FUNCTIONAL -> {
|
||||
return perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.POWERFUL_ATTRACTION.get()
|
||||
|| perk == ModPerks.INTELLIGENT_CHIP.get();
|
||||
return perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.POWERFUL_ATTRACTION.get() ||
|
||||
perk == ModPerks.INTELLIGENT_CHIP.get();
|
||||
}
|
||||
case DAMAGE -> {
|
||||
return perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILLING_TALLY.get();
|
||||
return perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILLING_TALLY.get() || perk == ModPerks.VORPAL_WEAPON.get();
|
||||
}
|
||||
default -> {
|
||||
return false;
|
||||
|
@ -294,6 +296,7 @@ public class PerkHelper {
|
|||
|
||||
public static final Predicate<Perk> MAGAZINE_PERKS = perk -> false;
|
||||
|
||||
public static final Predicate<Perk> LAUNCHER_PERKS = perk -> perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.POWERFUL_ATTRACTION.get() || perk == ModPerks.INTELLIGENT_CHIP.get();
|
||||
public static final Predicate<Perk> LAUNCHER_PERKS = perk -> perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.POWERFUL_ATTRACTION.get() ||
|
||||
perk == ModPerks.INTELLIGENT_CHIP.get() || perk == ModPerks.VORPAL_WEAPON.get();
|
||||
|
||||
}
|
||||
|
|
|
@ -292,11 +292,13 @@
|
|||
"item.superbwarfare.head_seeker": "Head Seeker",
|
||||
"des.superbwarfare.head_seeker": "Body shots landed with this weapon increase precision damage for a short time",
|
||||
"item.superbwarfare.monster_hunter": "Monster Hunter",
|
||||
"des.superbwarfare.monster_hunter": "Increases the damage of weapon against monsters",
|
||||
"des.superbwarfare.monster_hunter": "Increases damage of weapon against monsters",
|
||||
"item.superbwarfare.volt_overload": "Volt Overload",
|
||||
"des.superbwarfare.volt_overload": "Increases the shock damage of Taser Gun",
|
||||
"des.superbwarfare.volt_overload": "Increases shock damage of Taser Gun",
|
||||
"item.superbwarfare.desperado": "Desperado",
|
||||
"des.superbwarfare.desperado": "精准击杀后进行换弹,可暂时提升射速",
|
||||
"des.superbwarfare.desperado": "Reload after a precision final blow increases your rate of fire",
|
||||
"item.superbwarfare.vorpal_weapon": "Vorpal Weapon",
|
||||
"des.superbwarfare.vorpal_weapon": "Increases damage against bosses",
|
||||
|
||||
"item.superbwarfare.empty_perk": "Empty Perk",
|
||||
"item.superbwarfare.shortcut_pack": "Shortcut Pack",
|
||||
|
@ -391,26 +393,22 @@
|
|||
"item.minecraft.splash_potion.effect.superbwarfare_long_shock": "Splash Potion of Shock",
|
||||
"item.minecraft.lingering_potion.effect.superbwarfare_long_shock": "Lingering Potion of Shock",
|
||||
|
||||
"des.superbwarfare.sensitivity": "Current Sensitivity of This Gun: %1$s",
|
||||
"des.superbwarfare.need_bolt_action": "[ Need Bolt Action ]",
|
||||
|
||||
"commands.ammo.get": "Current %s ammo: %s",
|
||||
"commands.ammo.set": "Set %s ammo to %s for %s players",
|
||||
"commands.ammo.add": "Added %s ammo of amount %s for %s players",
|
||||
|
||||
"des.superbwarfare.sensitivity": "Current Sensitivity of This Gun: %1$s",
|
||||
"des.superbwarfare.monitor.linked": "Connect!",
|
||||
"des.superbwarfare.monitor.monitor_already_linked": "This monitor has been connected!",
|
||||
"des.superbwarfare.monitor.already_linked": "This device has been connected!",
|
||||
"des.superbwarfare.monitor.unlinked": "Disconnect!",
|
||||
"des.superbwarfare.no_cloth_config": "您尚未安装 Cloth Config API,无法打开配置界面",
|
||||
|
||||
"des.superbwarfare.drone.distance": "DISTANCE:",
|
||||
"des.superbwarfare.drone.health": "HEALTH:",
|
||||
"des.superbwarfare.drone.ammo": "AMMO:",
|
||||
"des.superbwarfare.drone.range": "RANGE:",
|
||||
"des.superbwarfare.drone.kamikaze": "KAMIKAZE",
|
||||
"des.superbwarfare.drone.warning": "WARNING!",
|
||||
|
||||
"des.superbwarfare.shoot.rings": "Rings ",
|
||||
|
||||
"entity.minecraft.villager.superbwarfare.armory": "Armory",
|
||||
|
|
|
@ -297,6 +297,8 @@
|
|||
"des.superbwarfare.volt_overload": "增加泰瑟枪电击的伤害",
|
||||
"item.superbwarfare.desperado": "亡命之徒",
|
||||
"des.superbwarfare.desperado": "精准击杀后进行换弹,可暂时提升射速",
|
||||
"item.superbwarfare.vorpal_weapon": "斩首武器",
|
||||
"des.superbwarfare.vorpal_weapon": "提升对强大敌人造成的伤害",
|
||||
|
||||
"item.superbwarfare.empty_perk": "空白模组",
|
||||
"item.superbwarfare.shortcut_pack": "捷径包",
|
||||
|
@ -391,26 +393,22 @@
|
|||
"item.minecraft.splash_potion.effect.superbwarfare_long_shock": "喷溅型电击药水",
|
||||
"item.minecraft.lingering_potion.effect.superbwarfare_long_shock": "滞留型电击药水",
|
||||
|
||||
"des.superbwarfare.sensitivity": "当前枪械的灵敏度为:%1$s",
|
||||
"des.superbwarfare.need_bolt_action": "【需要拉栓】",
|
||||
|
||||
"commands.ammo.get": "当前%s弹药数量: %s",
|
||||
"commands.ammo.set": "为%3$s位玩家的%1$s弹药数量设置为%2$s",
|
||||
"commands.ammo.add": "为%3$s位玩家添加了%2$s发%1$s弹药",
|
||||
|
||||
"des.superbwarfare.sensitivity": "当前枪械的灵敏度为:%1$s",
|
||||
"des.superbwarfare.monitor.linked": "连接成功!",
|
||||
"des.superbwarfare.monitor.monitor_already_linked": "这个遥控器已连接到一个设备!",
|
||||
"des.superbwarfare.monitor.already_linked": "这个设备已被连接!",
|
||||
"des.superbwarfare.monitor.unlinked": "断开连接!",
|
||||
"des.superbwarfare.no_cloth_config": "您尚未安装 Cloth Config API,无法打开配置界面",
|
||||
|
||||
"des.superbwarfare.drone.distance": "飞手距离:",
|
||||
"des.superbwarfare.drone.health": "耐久值:",
|
||||
"des.superbwarfare.drone.ammo": "弹药:",
|
||||
"des.superbwarfare.drone.range": "测距:",
|
||||
"des.superbwarfare.drone.kamikaze": "自爆模式",
|
||||
"des.superbwarfare.drone.warning": "警告!",
|
||||
|
||||
"des.superbwarfare.shoot.rings": "环 ",
|
||||
|
||||
"entity.minecraft.villager.superbwarfare.armory": "军械师",
|
||||
|
|
Loading…
Add table
Reference in a new issue