添加了强力吸引perk
This commit is contained in:
parent
085cd68344
commit
f09c50fcf0
5 changed files with 53 additions and 10 deletions
|
@ -35,9 +35,7 @@ import net.minecraft.world.entity.player.Player;
|
|||
import net.minecraft.world.entity.projectile.Projectile;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.GameRules;
|
||||
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingEquipmentChangeEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingHurtEvent;
|
||||
import net.minecraftforge.event.entity.living.*;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.network.PacketDistributor;
|
||||
|
@ -643,4 +641,41 @@ public class LivingEventHandler {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onLivingDrops(LivingDropsEvent event) {
|
||||
DamageSource source = event.getSource();
|
||||
if (source == null) return;
|
||||
Entity sourceEntity = source.getEntity();
|
||||
if (!(sourceEntity instanceof Player player)) return;
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
if (!stack.is(ModTags.Items.GUN)) return;
|
||||
|
||||
if (PerkHelper.getItemPerkLevel(ModPerks.POWERFUL_ATTRACTION.get(), stack) > 0) {
|
||||
var drops = event.getDrops();
|
||||
drops.forEach(itemEntity -> {
|
||||
ItemStack item = itemEntity.getItem();
|
||||
if (!player.addItem(item)) {
|
||||
player.drop(item, false);
|
||||
}
|
||||
});
|
||||
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onLivingExperienceDrop(LivingExperienceDropEvent event) {
|
||||
Player player = event.getAttackingPlayer();
|
||||
if (player == null) return;
|
||||
ItemStack stack = player.getMainHandItem();
|
||||
if (!stack.is(ModTags.Items.GUN)) return;
|
||||
|
||||
int level = PerkHelper.getItemPerkLevel(ModPerks.POWERFUL_ATTRACTION.get(), stack);
|
||||
if (level > 0) {
|
||||
player.giveExperiencePoints((int) (event.getDroppedExperience() * (0.8f + 0.2f * level)));
|
||||
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,6 +56,7 @@ public class ModPerks {
|
|||
public static final RegistryObject<Perk> FIELD_DOCTOR = FUNC_PERKS.register("field_doctor", () -> new Perk("field_doctor", Perk.Type.FUNCTIONAL));
|
||||
public static final RegistryObject<Perk> SUPER_RECHARGE = FUNC_PERKS.register("super_recharge", () -> new Perk("super_recharge", Perk.Type.FUNCTIONAL));
|
||||
public static final RegistryObject<Perk> TURBO_CHARGER = FUNC_PERKS.register("turbo_charger", () -> new Perk("turbo_charger", Perk.Type.FUNCTIONAL));
|
||||
public static final RegistryObject<Perk> POWERFUL_ATTRACTION = FUNC_PERKS.register("powerful_attraction", () -> new Perk("powerful_attraction", Perk.Type.FUNCTIONAL));
|
||||
|
||||
/**
|
||||
* Damage Perks
|
||||
|
|
|
@ -185,7 +185,7 @@ public class PerkHelper {
|
|||
return true;
|
||||
}
|
||||
case FUNCTIONAL -> {
|
||||
return perk == ModPerks.SUBSISTENCE.get();
|
||||
return perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.POWERFUL_ATTRACTION.get();
|
||||
}
|
||||
case DAMAGE -> {
|
||||
return perk == ModPerks.GUTSHOT_STRAIGHT.get() || perk == ModPerks.MONSTER_HUNTER.get();
|
||||
|
@ -203,7 +203,8 @@ public class PerkHelper {
|
|||
}
|
||||
case FUNCTIONAL -> {
|
||||
return perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FIELD_DOCTOR.get() ||
|
||||
perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.SUBSISTENCE.get();
|
||||
perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.SUBSISTENCE.get() ||
|
||||
perk == ModPerks.POWERFUL_ATTRACTION.get();
|
||||
}
|
||||
case DAMAGE -> {
|
||||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() ||
|
||||
|
@ -221,7 +222,8 @@ public class PerkHelper {
|
|||
return true;
|
||||
}
|
||||
case FUNCTIONAL -> {
|
||||
return perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FIELD_DOCTOR.get() || perk == ModPerks.SUBSISTENCE.get();
|
||||
return perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FIELD_DOCTOR.get() ||
|
||||
perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.POWERFUL_ATTRACTION.get();
|
||||
}
|
||||
case DAMAGE -> {
|
||||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() || perk == ModPerks.MONSTER_HUNTER.get();
|
||||
|
@ -238,7 +240,7 @@ public class PerkHelper {
|
|||
return true;
|
||||
}
|
||||
case FUNCTIONAL -> {
|
||||
return perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FOURTH_TIMES_CHARM.get();
|
||||
return perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.POWERFUL_ATTRACTION.get();
|
||||
}
|
||||
case DAMAGE -> {
|
||||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.MONSTER_HUNTER.get();
|
||||
|
@ -255,7 +257,8 @@ public class PerkHelper {
|
|||
return true;
|
||||
}
|
||||
case FUNCTIONAL -> {
|
||||
return perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.SUBSISTENCE.get();
|
||||
return perk == ModPerks.HEAL_CLIP.get() || perk == ModPerks.FOURTH_TIMES_CHARM.get() ||
|
||||
perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.POWERFUL_ATTRACTION.get();
|
||||
}
|
||||
case DAMAGE -> {
|
||||
return perk == ModPerks.KILL_CLIP.get() || perk == ModPerks.GUTSHOT_STRAIGHT.get() ||
|
||||
|
@ -273,7 +276,7 @@ public class PerkHelper {
|
|||
return true;
|
||||
}
|
||||
case FUNCTIONAL -> {
|
||||
return perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.SUBSISTENCE.get();
|
||||
return perk == ModPerks.FOURTH_TIMES_CHARM.get() || perk == ModPerks.SUBSISTENCE.get() || perk == ModPerks.POWERFUL_ATTRACTION.get();
|
||||
}
|
||||
case DAMAGE -> {
|
||||
return perk == ModPerks.MONSTER_HUNTER.get() || perk == ModPerks.KILLING_TALLY.get();
|
||||
|
|
|
@ -261,7 +261,9 @@
|
|||
"item.superbwarfare.super_recharge": "Super Recharge",
|
||||
"des.superbwarfare.super_recharge": "Increases the recharge speed of Taser Gun",
|
||||
"item.superbwarfare.turbo_charger": "Turbocharger",
|
||||
"des.superbwarfare.turbo_charger": "Reduces autofire spin-up time for compatible weapons.",
|
||||
"des.superbwarfare.turbo_charger": "Reduces auto fire spin-up time for compatible weapons",
|
||||
"item.superbwarfare.powerful_attraction": "Powerful Attraction",
|
||||
"des.superbwarfare.powerful_attraction": "Transfer items and experience dropped by killed targets to your inventory",
|
||||
|
||||
"item.superbwarfare.kill_clip": "Kill Clip",
|
||||
"des.superbwarfare.kill_clip": "Increases the damage of weapon after dealing a final blow",
|
||||
|
|
|
@ -262,6 +262,8 @@
|
|||
"des.superbwarfare.super_recharge": "增加泰瑟枪充能的速度",
|
||||
"item.superbwarfare.turbo_charger": "涡轮增压器",
|
||||
"des.superbwarfare.turbo_charger": "装配后减少武器自动射击所需的缓冲时间",
|
||||
"item.superbwarfare.powerful_attraction": "强力吸引",
|
||||
"des.superbwarfare.powerful_attraction": "击杀目标后掉落的物品和经验会直接转移到自身",
|
||||
|
||||
"item.superbwarfare.kill_clip": "杀戮弹匣",
|
||||
"des.superbwarfare.kill_clip": "完成击杀后填装可提升武器伤害",
|
||||
|
|
Loading…
Add table
Reference in a new issue