添加联动perk
This commit is contained in:
parent
f8d04e2ec7
commit
1e98444321
9 changed files with 110 additions and 26 deletions
|
@ -14,7 +14,7 @@ def getGitCommitHash() {
|
||||||
return stdout.toString().trim()
|
return stdout.toString().trim()
|
||||||
}
|
}
|
||||||
|
|
||||||
version = '0.1.5-SNAPSHOT-' + getGitCommitHash()
|
version = '0.1.6-SNAPSHOT-' + getGitCommitHash()
|
||||||
group = 'com.Atsushio.superbwarfare'
|
group = 'com.Atsushio.superbwarfare'
|
||||||
archivesBaseName = 'superbwarfare'
|
archivesBaseName = 'superbwarfare'
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,7 @@ public class ModUtils {
|
||||||
public ModUtils() {
|
public ModUtils() {
|
||||||
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
|
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||||
|
|
||||||
|
ModPerks.register(bus);
|
||||||
ModSounds.REGISTRY.register(bus);
|
ModSounds.REGISTRY.register(bus);
|
||||||
ModBlocks.REGISTRY.register(bus);
|
ModBlocks.REGISTRY.register(bus);
|
||||||
ModItems.register(bus);
|
ModItems.register(bus);
|
||||||
|
@ -50,7 +51,6 @@ public class ModUtils {
|
||||||
ModPotion.POTIONS.register(bus);
|
ModPotion.POTIONS.register(bus);
|
||||||
ModMenus.REGISTRY.register(bus);
|
ModMenus.REGISTRY.register(bus);
|
||||||
ModEnchantments.REGISTRY.register(bus);
|
ModEnchantments.REGISTRY.register(bus);
|
||||||
ModPerks.PERKS.register(bus);
|
|
||||||
|
|
||||||
bus.addListener(this::onCommonSetup);
|
bus.addListener(this::onCommonSetup);
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class KillMessageOverlay {
|
||||||
private static final ResourceLocation SHOCK = new ResourceLocation(ModUtils.MODID, "textures/screens/damage_types/shock.png");
|
private static final ResourceLocation SHOCK = new ResourceLocation(ModUtils.MODID, "textures/screens/damage_types/shock.png");
|
||||||
private static final ResourceLocation BLOOD_CRYSTAL = new ResourceLocation(ModUtils.MODID, "textures/screens/damage_types/blood_crystal.png");
|
private static final ResourceLocation BLOOD_CRYSTAL = new ResourceLocation(ModUtils.MODID, "textures/screens/damage_types/blood_crystal.png");
|
||||||
|
|
||||||
private static final ResourceLocation WORLD_PEACE_STAFF = new ResourceLocation(ModUtils.MODID, "textures/gun_icon/compat/world_peace_staff.png");
|
private static final ResourceLocation WORLD_PEACE_STAFF = new ResourceLocation(ModUtils.MODID, "textures/gun_icon/registerCompatPerks/world_peace_staff.png");
|
||||||
|
|
||||||
@SubscribeEvent(priority = EventPriority.NORMAL)
|
@SubscribeEvent(priority = EventPriority.NORMAL)
|
||||||
public static void eventHandler(RenderGuiEvent.Pre event) {
|
public static void eventHandler(RenderGuiEvent.Pre event) {
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
package net.mcreator.superbwarfare.compat;
|
||||||
|
|
||||||
|
import net.minecraft.world.effect.MobEffect;
|
||||||
|
import net.minecraftforge.registries.ObjectHolder;
|
||||||
|
|
||||||
|
public class CompatHolder {
|
||||||
|
|
||||||
|
public static final String DMV = "dreamaticvoyage";
|
||||||
|
public static final String VRC = "virtuarealcraft";
|
||||||
|
|
||||||
|
@ObjectHolder(registryName = "minecraft:mob_effect", value = DMV + ":bleeding")
|
||||||
|
public static final MobEffect DMV_BLEEDING = null;
|
||||||
|
|
||||||
|
@ObjectHolder(registryName = "minecraft:mob_effect", value = VRC + ":curse_flame")
|
||||||
|
public static final MobEffect VRC_CURSE_FLAME = null;
|
||||||
|
|
||||||
|
}
|
|
@ -184,7 +184,6 @@ public class ModItems {
|
||||||
public static final RegistryObject<Item> BARBED_WIRE = block(ModBlocks.BARBED_WIRE);
|
public static final RegistryObject<Item> BARBED_WIRE = block(ModBlocks.BARBED_WIRE);
|
||||||
public static final RegistryObject<Item> DRAGON_TEETH = block(ModBlocks.DRAGON_TEETH);
|
public static final RegistryObject<Item> DRAGON_TEETH = block(ModBlocks.DRAGON_TEETH);
|
||||||
|
|
||||||
|
|
||||||
private static RegistryObject<Item> block(RegistryObject<Block> block) {
|
private static RegistryObject<Item> block(RegistryObject<Block> block) {
|
||||||
return BLOCKS.register(block.getId().getPath(), () -> new BlockItem(block.get(), new Item.Properties()));
|
return BLOCKS.register(block.getId().getPath(), () -> new BlockItem(block.get(), new Item.Properties()));
|
||||||
}
|
}
|
||||||
|
@ -195,8 +194,10 @@ public class ModItems {
|
||||||
public static final DeferredRegister<Item> PERKS = DeferredRegister.create(ForgeRegistries.ITEMS, ModUtils.MODID);
|
public static final DeferredRegister<Item> PERKS = DeferredRegister.create(ForgeRegistries.ITEMS, ModUtils.MODID);
|
||||||
|
|
||||||
public static void registerPerkItems() {
|
public static void registerPerkItems() {
|
||||||
ModPerks.PERKS.getEntries().stream().filter(p -> p != ModPerks.AP_BULLET)
|
ModPerks.AMMO_PERKS.getEntries().stream().filter(p -> p != ModPerks.AP_BULLET)
|
||||||
.forEach(registryObject -> PERKS.register(registryObject.getId().getPath(), () -> new PerkItem(registryObject)));
|
.forEach(registryObject -> PERKS.register(registryObject.getId().getPath(), () -> new PerkItem(registryObject)));
|
||||||
|
ModPerks.FUNC_PERKS.getEntries().forEach(registryObject -> PERKS.register(registryObject.getId().getPath(), () -> new PerkItem(registryObject)));
|
||||||
|
ModPerks.DAMAGE_PERKS.getEntries().forEach(registryObject -> PERKS.register(registryObject.getId().getPath(), () -> new PerkItem(registryObject)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,11 +1,14 @@
|
||||||
package net.mcreator.superbwarfare.init;
|
package net.mcreator.superbwarfare.init;
|
||||||
|
|
||||||
import net.mcreator.superbwarfare.ModUtils;
|
import net.mcreator.superbwarfare.ModUtils;
|
||||||
|
import net.mcreator.superbwarfare.compat.CompatHolder;
|
||||||
import net.mcreator.superbwarfare.perk.AmmoPerk;
|
import net.mcreator.superbwarfare.perk.AmmoPerk;
|
||||||
import net.mcreator.superbwarfare.perk.Perk;
|
import net.mcreator.superbwarfare.perk.Perk;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.effect.MobEffects;
|
import net.minecraft.world.effect.MobEffects;
|
||||||
|
import net.minecraftforge.eventbus.api.IEventBus;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
import net.minecraftforge.fml.ModList;
|
||||||
import net.minecraftforge.fml.common.Mod;
|
import net.minecraftforge.fml.common.Mod;
|
||||||
import net.minecraftforge.registries.DeferredRegister;
|
import net.minecraftforge.registries.DeferredRegister;
|
||||||
import net.minecraftforge.registries.NewRegistryEvent;
|
import net.minecraftforge.registries.NewRegistryEvent;
|
||||||
|
@ -20,23 +23,54 @@ public class ModPerks {
|
||||||
event.create(new RegistryBuilder<Perk>().setName(new ResourceLocation(ModUtils.MODID, "perk")));
|
event.create(new RegistryBuilder<Perk>().setName(new ResourceLocation(ModUtils.MODID, "perk")));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final DeferredRegister<Perk> PERKS = DeferredRegister.create(new ResourceLocation(ModUtils.MODID, "perk"), ModUtils.MODID);
|
/**
|
||||||
|
* Ammo Perks
|
||||||
|
*/
|
||||||
|
public static final DeferredRegister<Perk> AMMO_PERKS = DeferredRegister.create(new ResourceLocation(ModUtils.MODID, "perk"), ModUtils.MODID);
|
||||||
|
|
||||||
public static final RegistryObject<Perk> AP_BULLET = PERKS.register("ap_bullet",
|
public static final RegistryObject<Perk> AP_BULLET = AMMO_PERKS.register("ap_bullet",
|
||||||
() -> new AmmoPerk(new AmmoPerk.Builder("ap_bullet", Perk.Type.AMMO).bypassArmorRate(0.4f).rgb(230, 0, 0)));
|
() -> new AmmoPerk(new AmmoPerk.Builder("ap_bullet", Perk.Type.AMMO).bypassArmorRate(0.4f).rgb(230, 0, 0)));
|
||||||
public static final RegistryObject<Perk> SILVER_BULLET = PERKS.register("silver_bullet",
|
public static final RegistryObject<Perk> SILVER_BULLET = AMMO_PERKS.register("silver_bullet",
|
||||||
() -> new AmmoPerk(new AmmoPerk.Builder("silver_bullet", Perk.Type.AMMO).bypassArmorRate(0.05f).rgb(87, 166, 219)));
|
() -> new AmmoPerk(new AmmoPerk.Builder("silver_bullet", Perk.Type.AMMO).bypassArmorRate(0.05f).rgb(87, 166, 219)));
|
||||||
public static final RegistryObject<Perk> POISONOUS_BULLET = PERKS.register("poisonous_bullet",
|
public static final RegistryObject<Perk> POISONOUS_BULLET = AMMO_PERKS.register("poisonous_bullet",
|
||||||
() -> new AmmoPerk(new AmmoPerk.Builder("poisonous_bullet", Perk.Type.AMMO).bypassArmorRate(0.0f).rgb(48, 131, 6)
|
() -> new AmmoPerk(new AmmoPerk.Builder("poisonous_bullet", Perk.Type.AMMO).bypassArmorRate(0.0f).rgb(48, 131, 6)
|
||||||
.mobEffect(() -> MobEffects.POISON)));
|
.mobEffect(() -> MobEffects.POISON)));
|
||||||
public static final RegistryObject<Perk> BEAST_BULLET = PERKS.register("beast_bullet",
|
public static final RegistryObject<Perk> BEAST_BULLET = AMMO_PERKS.register("beast_bullet",
|
||||||
() -> new AmmoPerk(new AmmoPerk.Builder("beast_bullet", Perk.Type.AMMO).bypassArmorRate(0.0f).rgb(134, 65, 14)));
|
() -> new AmmoPerk(new AmmoPerk.Builder("beast_bullet", Perk.Type.AMMO).bypassArmorRate(0.0f).rgb(134, 65, 14)));
|
||||||
|
|
||||||
public static final RegistryObject<Perk> HEAL_CLIP = PERKS.register("heal_clip", () -> new Perk("heal_clip", Perk.Type.FUNCTIONAL));
|
/**
|
||||||
public static final RegistryObject<Perk> FOURTH_TIMES_CHARM = PERKS.register("fourth_times_charm", () -> new Perk("fourth_times_charm", Perk.Type.FUNCTIONAL));
|
* Functional Perks
|
||||||
|
*/
|
||||||
|
public static final DeferredRegister<Perk> FUNC_PERKS = DeferredRegister.create(new ResourceLocation(ModUtils.MODID, "perk"), ModUtils.MODID);
|
||||||
|
|
||||||
public static final RegistryObject<Perk> KILL_CLIP = PERKS.register("kill_clip", () -> new Perk("kill_clip", Perk.Type.DAMAGE));
|
public static final RegistryObject<Perk> HEAL_CLIP = FUNC_PERKS.register("heal_clip", () -> new Perk("heal_clip", Perk.Type.FUNCTIONAL));
|
||||||
public static final RegistryObject<Perk> GUTSHOT_STRAIGHT = PERKS.register("gutshot_straight", () -> new Perk("gutshot_straight", Perk.Type.DAMAGE));
|
public static final RegistryObject<Perk> FOURTH_TIMES_CHARM = FUNC_PERKS.register("fourth_times_charm", () -> new Perk("fourth_times_charm", Perk.Type.FUNCTIONAL));
|
||||||
public static final RegistryObject<Perk> KILLING_TALLY = PERKS.register("killing_tally", () -> new Perk("killing_tally", Perk.Type.DAMAGE));
|
|
||||||
public static final RegistryObject<Perk> MONSTER_HUNTER = PERKS.register("monster_hunter", () -> new Perk("monster_hunter", Perk.Type.DAMAGE));
|
/**
|
||||||
|
* Damage Perks
|
||||||
|
*/
|
||||||
|
public static final DeferredRegister<Perk> DAMAGE_PERKS = DeferredRegister.create(new ResourceLocation(ModUtils.MODID, "perk"), ModUtils.MODID);
|
||||||
|
|
||||||
|
public static final RegistryObject<Perk> KILL_CLIP = DAMAGE_PERKS.register("kill_clip", () -> new Perk("kill_clip", Perk.Type.DAMAGE));
|
||||||
|
public static final RegistryObject<Perk> GUTSHOT_STRAIGHT = DAMAGE_PERKS.register("gutshot_straight", () -> new Perk("gutshot_straight", Perk.Type.DAMAGE));
|
||||||
|
public static final RegistryObject<Perk> KILLING_TALLY = DAMAGE_PERKS.register("killing_tally", () -> new Perk("killing_tally", Perk.Type.DAMAGE));
|
||||||
|
public static final RegistryObject<Perk> MONSTER_HUNTER = DAMAGE_PERKS.register("monster_hunter", () -> new Perk("monster_hunter", Perk.Type.DAMAGE));
|
||||||
|
|
||||||
|
public static void registerCompatPerks() {
|
||||||
|
if (ModList.get().isLoaded(CompatHolder.DMV)) {
|
||||||
|
AMMO_PERKS.register("blade_bullet", () -> new AmmoPerk(new AmmoPerk.Builder("blade_bullet", Perk.Type.AMMO)
|
||||||
|
.bypassArmorRate(-0.2f).rgb(0xB4, 0x4B, 0x88).mobEffect(() -> CompatHolder.DMV_BLEEDING)));
|
||||||
|
}
|
||||||
|
if (ModList.get().isLoaded(CompatHolder.VRC)) {
|
||||||
|
AMMO_PERKS.register("curse_flame_bullet", () -> new AmmoPerk(new AmmoPerk.Builder("curse_flame_bullet", Perk.Type.AMMO)
|
||||||
|
.bypassArmorRate(0.0f).rgb(0xB1, 0xC1, 0xF2).mobEffect(() -> CompatHolder.VRC_CURSE_FLAME)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void register(IEventBus bus) {
|
||||||
|
registerCompatPerks();
|
||||||
|
AMMO_PERKS.register(bus);
|
||||||
|
FUNC_PERKS.register(bus);
|
||||||
|
DAMAGE_PERKS.register(bus);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,11 +40,23 @@ public class PerkHelper {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static ResourceLocation getPerkId(Perk perk) {
|
public static ResourceLocation getPerkId(Perk perk) {
|
||||||
return ModPerks.PERKS.getEntries().stream()
|
return switch (perk.type) {
|
||||||
|
case AMMO -> ModPerks.AMMO_PERKS.getEntries().stream()
|
||||||
.filter(p -> p.get().descriptionId.equals(perk.descriptionId))
|
.filter(p -> p.get().descriptionId.equals(perk.descriptionId))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.map(RegistryObject::getId)
|
.map(RegistryObject::getId)
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
|
case FUNCTIONAL -> ModPerks.FUNC_PERKS.getEntries().stream()
|
||||||
|
.filter(p -> p.get().descriptionId.equals(perk.descriptionId))
|
||||||
|
.findFirst()
|
||||||
|
.map(RegistryObject::getId)
|
||||||
|
.orElse(null);
|
||||||
|
case DAMAGE -> ModPerks.DAMAGE_PERKS.getEntries().stream()
|
||||||
|
.filter(p -> p.get().descriptionId.equals(perk.descriptionId))
|
||||||
|
.findFirst()
|
||||||
|
.map(RegistryObject::getId)
|
||||||
|
.orElse(null);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getItemPerkLevel(Perk perk, ItemStack stack) {
|
public static int getItemPerkLevel(Perk perk, ItemStack stack) {
|
||||||
|
@ -115,11 +127,23 @@ public class PerkHelper {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ModPerks.PERKS.getEntries().stream()
|
return switch (type) {
|
||||||
|
case AMMO -> ModPerks.AMMO_PERKS.getEntries().stream()
|
||||||
.filter(p -> makeId(p.getId()).equals(tagPerk.getCompound(type.getName()).getString(TAG_PERK_ID)))
|
.filter(p -> makeId(p.getId()).equals(tagPerk.getCompound(type.getName()).getString(TAG_PERK_ID)))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.map(RegistryObject::get)
|
.map(RegistryObject::get)
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
|
case FUNCTIONAL -> ModPerks.FUNC_PERKS.getEntries().stream()
|
||||||
|
.filter(p -> makeId(p.getId()).equals(tagPerk.getCompound(type.getName()).getString(TAG_PERK_ID)))
|
||||||
|
.findFirst()
|
||||||
|
.map(RegistryObject::get)
|
||||||
|
.orElse(null);
|
||||||
|
case DAMAGE -> ModPerks.DAMAGE_PERKS.getEntries().stream()
|
||||||
|
.filter(p -> makeId(p.getId()).equals(tagPerk.getCompound(type.getName()).getString(TAG_PERK_ID)))
|
||||||
|
.findFirst()
|
||||||
|
.map(RegistryObject::get)
|
||||||
|
.orElse(null);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String makeId(ResourceLocation resourceLocation) {
|
public static String makeId(ResourceLocation resourceLocation) {
|
||||||
|
|
|
@ -182,6 +182,10 @@
|
||||||
"des.superbwarfare.beast_bullet": "Ignore obstacles, Increase criteria area, Kill every living entity",
|
"des.superbwarfare.beast_bullet": "Ignore obstacles, Increase criteria area, Kill every living entity",
|
||||||
"item.superbwarfare.poisonous_bullet": "Poisonous Bullet",
|
"item.superbwarfare.poisonous_bullet": "Poisonous Bullet",
|
||||||
"des.superbwarfare.poisonous_bullet": "Makes the target poison after landing a hit",
|
"des.superbwarfare.poisonous_bullet": "Makes the target poison after landing a hit",
|
||||||
|
"item.superbwarfare.blade_bullet": "Blade Bullet",
|
||||||
|
"des.superbwarfare.blade_bullet": "Makes the target bleeding after landing a hit",
|
||||||
|
"item.superbwarfare.curse_flame_bullet": "Curse Flame Bullet",
|
||||||
|
"des.superbwarfare.curse_flame_bullet": "命中后会使目标受到咒火效果",
|
||||||
|
|
||||||
"item.superbwarfare.heal_clip": "Heal Clip",
|
"item.superbwarfare.heal_clip": "Heal Clip",
|
||||||
"des.superbwarfare.heal_clip": "Reloading after dealing a final blow will heal you and your nearby allies",
|
"des.superbwarfare.heal_clip": "Reloading after dealing a final blow will heal you and your nearby allies",
|
||||||
|
|
|
@ -182,6 +182,10 @@
|
||||||
"des.superbwarfare.beast_bullet": "无视障碍物,增大判定范围,秒杀一切生物",
|
"des.superbwarfare.beast_bullet": "无视障碍物,增大判定范围,秒杀一切生物",
|
||||||
"item.superbwarfare.poisonous_bullet": "淬毒弹",
|
"item.superbwarfare.poisonous_bullet": "淬毒弹",
|
||||||
"des.superbwarfare.poisonous_bullet": "命中后会使目标中毒",
|
"des.superbwarfare.poisonous_bullet": "命中后会使目标中毒",
|
||||||
|
"item.superbwarfare.blade_bullet": "刀片弹",
|
||||||
|
"des.superbwarfare.blade_bullet": "命中后会使目标流血",
|
||||||
|
"item.superbwarfare.curse_flame_bullet": "咒火弹",
|
||||||
|
"des.superbwarfare.curse_flame_bullet": "命中后会使目标受到咒火效果",
|
||||||
|
|
||||||
"item.superbwarfare.heal_clip": "治疗弹匣",
|
"item.superbwarfare.heal_clip": "治疗弹匣",
|
||||||
"des.superbwarfare.heal_clip": "最后一击后短时间内填装,可治疗自身和附近队友",
|
"des.superbwarfare.heal_clip": "最后一击后短时间内填装,可治疗自身和附近队友",
|
||||||
|
|
Loading…
Add table
Reference in a new issue