diff --git a/build.gradle b/build.gradle index a4d84cdee..82fab673d 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ def getGitCommitHash() { return stdout.toString().trim() } -version = '0.1.5-SNAPSHOT-' + getGitCommitHash() +version = '0.1.6-SNAPSHOT-' + getGitCommitHash() group = 'com.Atsushio.superbwarfare' archivesBaseName = 'superbwarfare' diff --git a/src/main/java/net/mcreator/superbwarfare/ModUtils.java b/src/main/java/net/mcreator/superbwarfare/ModUtils.java index ecfb09851..3f27f0e32 100644 --- a/src/main/java/net/mcreator/superbwarfare/ModUtils.java +++ b/src/main/java/net/mcreator/superbwarfare/ModUtils.java @@ -40,6 +40,7 @@ public class ModUtils { public ModUtils() { IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); + ModPerks.register(bus); ModSounds.REGISTRY.register(bus); ModBlocks.REGISTRY.register(bus); ModItems.register(bus); @@ -50,7 +51,6 @@ public class ModUtils { ModPotion.POTIONS.register(bus); ModMenus.REGISTRY.register(bus); ModEnchantments.REGISTRY.register(bus); - ModPerks.PERKS.register(bus); bus.addListener(this::onCommonSetup); diff --git a/src/main/java/net/mcreator/superbwarfare/client/screens/KillMessageOverlay.java b/src/main/java/net/mcreator/superbwarfare/client/screens/KillMessageOverlay.java index 536b54133..7ebbb0e87 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/screens/KillMessageOverlay.java +++ b/src/main/java/net/mcreator/superbwarfare/client/screens/KillMessageOverlay.java @@ -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 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) public static void eventHandler(RenderGuiEvent.Pre event) { diff --git a/src/main/java/net/mcreator/superbwarfare/compat/CompatHolder.java b/src/main/java/net/mcreator/superbwarfare/compat/CompatHolder.java new file mode 100644 index 000000000..b62f45ce4 --- /dev/null +++ b/src/main/java/net/mcreator/superbwarfare/compat/CompatHolder.java @@ -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; + +} diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModItems.java b/src/main/java/net/mcreator/superbwarfare/init/ModItems.java index f391664e6..411ed8bbd 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModItems.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModItems.java @@ -184,7 +184,6 @@ public class ModItems { public static final RegistryObject BARBED_WIRE = block(ModBlocks.BARBED_WIRE); public static final RegistryObject DRAGON_TEETH = block(ModBlocks.DRAGON_TEETH); - private static RegistryObject block(RegistryObject block) { return BLOCKS.register(block.getId().getPath(), () -> new BlockItem(block.get(), new Item.Properties())); } @@ -195,8 +194,10 @@ public class ModItems { public static final DeferredRegister PERKS = DeferredRegister.create(ForgeRegistries.ITEMS, ModUtils.MODID); 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))); + 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))); } /** diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java b/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java index aaabe7a1d..87ea416ea 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModPerks.java @@ -1,11 +1,14 @@ package net.mcreator.superbwarfare.init; import net.mcreator.superbwarfare.ModUtils; +import net.mcreator.superbwarfare.compat.CompatHolder; import net.mcreator.superbwarfare.perk.AmmoPerk; import net.mcreator.superbwarfare.perk.Perk; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.effect.MobEffects; +import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.NewRegistryEvent; @@ -20,23 +23,54 @@ public class ModPerks { event.create(new RegistryBuilder().setName(new ResourceLocation(ModUtils.MODID, "perk"))); } - public static final DeferredRegister PERKS = DeferredRegister.create(new ResourceLocation(ModUtils.MODID, "perk"), ModUtils.MODID); + /** + * Ammo Perks + */ + public static final DeferredRegister AMMO_PERKS = DeferredRegister.create(new ResourceLocation(ModUtils.MODID, "perk"), ModUtils.MODID); - public static final RegistryObject AP_BULLET = PERKS.register("ap_bullet", + public static final RegistryObject AP_BULLET = AMMO_PERKS.register("ap_bullet", () -> new AmmoPerk(new AmmoPerk.Builder("ap_bullet", Perk.Type.AMMO).bypassArmorRate(0.4f).rgb(230, 0, 0))); - public static final RegistryObject SILVER_BULLET = PERKS.register("silver_bullet", + public static final RegistryObject SILVER_BULLET = AMMO_PERKS.register("silver_bullet", () -> new AmmoPerk(new AmmoPerk.Builder("silver_bullet", Perk.Type.AMMO).bypassArmorRate(0.05f).rgb(87, 166, 219))); - public static final RegistryObject POISONOUS_BULLET = PERKS.register("poisonous_bullet", + public static final RegistryObject POISONOUS_BULLET = AMMO_PERKS.register("poisonous_bullet", () -> new AmmoPerk(new AmmoPerk.Builder("poisonous_bullet", Perk.Type.AMMO).bypassArmorRate(0.0f).rgb(48, 131, 6) .mobEffect(() -> MobEffects.POISON))); - public static final RegistryObject BEAST_BULLET = PERKS.register("beast_bullet", + public static final RegistryObject BEAST_BULLET = AMMO_PERKS.register("beast_bullet", () -> new AmmoPerk(new AmmoPerk.Builder("beast_bullet", Perk.Type.AMMO).bypassArmorRate(0.0f).rgb(134, 65, 14))); - public static final RegistryObject HEAL_CLIP = PERKS.register("heal_clip", () -> new Perk("heal_clip", Perk.Type.FUNCTIONAL)); - public static final RegistryObject FOURTH_TIMES_CHARM = PERKS.register("fourth_times_charm", () -> new Perk("fourth_times_charm", Perk.Type.FUNCTIONAL)); + /** + * Functional Perks + */ + public static final DeferredRegister FUNC_PERKS = DeferredRegister.create(new ResourceLocation(ModUtils.MODID, "perk"), ModUtils.MODID); - public static final RegistryObject KILL_CLIP = PERKS.register("kill_clip", () -> new Perk("kill_clip", Perk.Type.DAMAGE)); - public static final RegistryObject GUTSHOT_STRAIGHT = PERKS.register("gutshot_straight", () -> new Perk("gutshot_straight", Perk.Type.DAMAGE)); - public static final RegistryObject KILLING_TALLY = PERKS.register("killing_tally", () -> new Perk("killing_tally", Perk.Type.DAMAGE)); - public static final RegistryObject MONSTER_HUNTER = PERKS.register("monster_hunter", () -> new Perk("monster_hunter", Perk.Type.DAMAGE)); + public static final RegistryObject HEAL_CLIP = FUNC_PERKS.register("heal_clip", () -> new Perk("heal_clip", Perk.Type.FUNCTIONAL)); + public static final RegistryObject FOURTH_TIMES_CHARM = FUNC_PERKS.register("fourth_times_charm", () -> new Perk("fourth_times_charm", Perk.Type.FUNCTIONAL)); + + /** + * Damage Perks + */ + public static final DeferredRegister DAMAGE_PERKS = DeferredRegister.create(new ResourceLocation(ModUtils.MODID, "perk"), ModUtils.MODID); + + public static final RegistryObject KILL_CLIP = DAMAGE_PERKS.register("kill_clip", () -> new Perk("kill_clip", Perk.Type.DAMAGE)); + public static final RegistryObject GUTSHOT_STRAIGHT = DAMAGE_PERKS.register("gutshot_straight", () -> new Perk("gutshot_straight", Perk.Type.DAMAGE)); + public static final RegistryObject KILLING_TALLY = DAMAGE_PERKS.register("killing_tally", () -> new Perk("killing_tally", Perk.Type.DAMAGE)); + public static final RegistryObject 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); + } } diff --git a/src/main/java/net/mcreator/superbwarfare/perk/PerkHelper.java b/src/main/java/net/mcreator/superbwarfare/perk/PerkHelper.java index 049d41438..33994f100 100644 --- a/src/main/java/net/mcreator/superbwarfare/perk/PerkHelper.java +++ b/src/main/java/net/mcreator/superbwarfare/perk/PerkHelper.java @@ -40,11 +40,23 @@ public class PerkHelper { @Nullable public static ResourceLocation getPerkId(Perk perk) { - return ModPerks.PERKS.getEntries().stream() - .filter(p -> p.get().descriptionId.equals(perk.descriptionId)) - .findFirst() - .map(RegistryObject::getId) - .orElse(null); + return switch (perk.type) { + case AMMO -> ModPerks.AMMO_PERKS.getEntries().stream() + .filter(p -> p.get().descriptionId.equals(perk.descriptionId)) + .findFirst() + .map(RegistryObject::getId) + .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) { @@ -115,11 +127,23 @@ public class PerkHelper { return null; } - return ModPerks.PERKS.getEntries().stream() - .filter(p -> makeId(p.getId()).equals(tagPerk.getCompound(type.getName()).getString(TAG_PERK_ID))) - .findFirst() - .map(RegistryObject::get) - .orElse(null); + return switch (type) { + case AMMO -> ModPerks.AMMO_PERKS.getEntries().stream() + .filter(p -> makeId(p.getId()).equals(tagPerk.getCompound(type.getName()).getString(TAG_PERK_ID))) + .findFirst() + .map(RegistryObject::get) + .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) { diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index c1dc01eb7..dc6005620 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -182,6 +182,10 @@ "des.superbwarfare.beast_bullet": "Ignore obstacles, Increase criteria area, Kill every living entity", "item.superbwarfare.poisonous_bullet": "Poisonous Bullet", "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", "des.superbwarfare.heal_clip": "Reloading after dealing a final blow will heal you and your nearby allies", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index ca11cfc4e..8a0ebbb4d 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -182,6 +182,10 @@ "des.superbwarfare.beast_bullet": "无视障碍物,增大判定范围,秒杀一切生物", "item.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": "治疗弹匣", "des.superbwarfare.heal_clip": "最后一击后短时间内填装,可治疗自身和附近队友",