添加联动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()
|
||||
}
|
||||
|
||||
version = '0.1.5-SNAPSHOT-' + getGitCommitHash()
|
||||
version = '0.1.6-SNAPSHOT-' + getGitCommitHash()
|
||||
group = 'com.Atsushio.superbwarfare'
|
||||
archivesBaseName = 'superbwarfare'
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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> DRAGON_TEETH = block(ModBlocks.DRAGON_TEETH);
|
||||
|
||||
|
||||
private static RegistryObject<Item> block(RegistryObject<Block> 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<Item> 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)));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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<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)));
|
||||
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)));
|
||||
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)
|
||||
.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)));
|
||||
|
||||
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> GUTSHOT_STRAIGHT = PERKS.register("gutshot_straight", () -> new Perk("gutshot_straight", Perk.Type.DAMAGE));
|
||||
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));
|
||||
public static final RegistryObject<Perk> HEAL_CLIP = FUNC_PERKS.register("heal_clip", () -> new Perk("heal_clip", Perk.Type.FUNCTIONAL));
|
||||
public static final RegistryObject<Perk> FOURTH_TIMES_CHARM = FUNC_PERKS.register("fourth_times_charm", () -> new Perk("fourth_times_charm", Perk.Type.FUNCTIONAL));
|
||||
|
||||
/**
|
||||
* 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
|
||||
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))
|
||||
.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()
|
||||
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) {
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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": "最后一击后短时间内填装,可治疗自身和附近队友",
|
||||
|
|
Loading…
Add table
Reference in a new issue