From eadeba4593f4fd087b2f86909828c59d5af5477e Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 20 Dec 2020 00:30:39 +0300 Subject: [PATCH] Integrations prototype --- src/main/java/ru/betterend/BetterEnd.java | 2 + .../betterend/integration/Integrations.java | 25 ++++++++++++ .../betterend/integration/ModIntegration.java | 39 +++++++++++++++++++ .../betterend/integration/byg/BYGBiomes.java | 16 ++++++++ .../integration/byg/BYGIntegration.java | 14 +++++++ .../integration/byg/OldBulbisGardens.java | 12 ++++++ .../java/ru/betterend/registry/EndBiomes.java | 4 +- 7 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 src/main/java/ru/betterend/integration/Integrations.java create mode 100644 src/main/java/ru/betterend/integration/ModIntegration.java create mode 100644 src/main/java/ru/betterend/integration/byg/BYGBiomes.java create mode 100644 src/main/java/ru/betterend/integration/byg/BYGIntegration.java create mode 100644 src/main/java/ru/betterend/integration/byg/OldBulbisGardens.java diff --git a/src/main/java/ru/betterend/BetterEnd.java b/src/main/java/ru/betterend/BetterEnd.java index 80bcee3f..63bae45e 100644 --- a/src/main/java/ru/betterend/BetterEnd.java +++ b/src/main/java/ru/betterend/BetterEnd.java @@ -7,6 +7,7 @@ import ru.betterend.api.BetterEndPlugin; import ru.betterend.config.Configs; import ru.betterend.effects.EndEnchantments; import ru.betterend.effects.EndPotions; +import ru.betterend.integration.Integrations; import ru.betterend.item.GuideBook; import ru.betterend.recipe.AlloyingRecipes; import ru.betterend.recipe.CraftingRecipes; @@ -49,6 +50,7 @@ public class BetterEnd implements ModInitializer { SmithingRecipes.register(); InfusionRecipes.register(); EndStructures.register(); + Integrations.register(); if (hasGuideBook()) { GuideBook.register(); diff --git a/src/main/java/ru/betterend/integration/Integrations.java b/src/main/java/ru/betterend/integration/Integrations.java new file mode 100644 index 00000000..dd27c4e4 --- /dev/null +++ b/src/main/java/ru/betterend/integration/Integrations.java @@ -0,0 +1,25 @@ +package ru.betterend.integration; + +import java.util.List; + +import com.google.common.collect.Lists; + +import ru.betterend.integration.byg.BYGIntegration; + +public class Integrations { + public static final List INTEGRATIONS = Lists.newArrayList(); + public static final ModIntegration BYG = register(new BYGIntegration()); + + public static void register() { + INTEGRATIONS.forEach((integration) -> { + if (integration.modIsInstalled()) { + integration.register(); + } + }); + } + + private static ModIntegration register(ModIntegration integration) { + INTEGRATIONS.add(integration); + return integration; + } +} diff --git a/src/main/java/ru/betterend/integration/ModIntegration.java b/src/main/java/ru/betterend/integration/ModIntegration.java new file mode 100644 index 00000000..2eb0f208 --- /dev/null +++ b/src/main/java/ru/betterend/integration/ModIntegration.java @@ -0,0 +1,39 @@ +package ru.betterend.integration; + +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryKey; +import net.minecraft.world.biome.Biome; + +public abstract class ModIntegration { + private final String modID; + + public ModIntegration(String modID) { + this.modID = modID; + } + + public Identifier getID(String name) { + return new Identifier(modID, name); + } + + public Block getBlock(String name) { + return Registry.BLOCK.get(getID(name)); + } + + public BlockState getDefaultState(String name) { + return getBlock(name).getDefaultState(); + } + + public RegistryKey getKey(String name) { + return RegistryKey.of(Registry.BIOME_KEY, getID(name)); + } + + public boolean modIsInstalled() { + return FabricLoader.getInstance().isModLoaded(modID); + } + + public abstract void register(); +} diff --git a/src/main/java/ru/betterend/integration/byg/BYGBiomes.java b/src/main/java/ru/betterend/integration/byg/BYGBiomes.java new file mode 100644 index 00000000..d3c47b76 --- /dev/null +++ b/src/main/java/ru/betterend/integration/byg/BYGBiomes.java @@ -0,0 +1,16 @@ +package ru.betterend.integration.byg; + +import ru.betterend.integration.Integrations; +import ru.betterend.registry.EndBiomes; +import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.generator.BiomeType; + +public class BYGBiomes { + // Original Biomes + public static final EndBiome BULBIS_GARDENS = EndBiomes.registerBiome(Integrations.BYG.getKey("bulbis_gardens"), BiomeType.LAND, 1F); + + // New Biomes + public static final EndBiome OLD_BULBIS_GARDENS = EndBiomes.registerSubBiome(new OldBulbisGardens(), BULBIS_GARDENS); + + public static void register() {} +} diff --git a/src/main/java/ru/betterend/integration/byg/BYGIntegration.java b/src/main/java/ru/betterend/integration/byg/BYGIntegration.java new file mode 100644 index 00000000..bed53a3f --- /dev/null +++ b/src/main/java/ru/betterend/integration/byg/BYGIntegration.java @@ -0,0 +1,14 @@ +package ru.betterend.integration.byg; + +import ru.betterend.integration.ModIntegration; + +public class BYGIntegration extends ModIntegration { + public BYGIntegration() { + super("byg"); + } + + @Override + public void register() { + BYGBiomes.register(); + } +} diff --git a/src/main/java/ru/betterend/integration/byg/OldBulbisGardens.java b/src/main/java/ru/betterend/integration/byg/OldBulbisGardens.java new file mode 100644 index 00000000..9e80f075 --- /dev/null +++ b/src/main/java/ru/betterend/integration/byg/OldBulbisGardens.java @@ -0,0 +1,12 @@ +package ru.betterend.integration.byg; + +import ru.betterend.integration.Integrations; +import ru.betterend.world.biome.BiomeDefinition; +import ru.betterend.world.biome.EndBiome; + +public class OldBulbisGardens extends EndBiome { + public OldBulbisGardens() { + super(new BiomeDefinition("old_bulbis_gardens") + .setSurface(Integrations.BYG.getBlock("bulbis_stem"))); + } +} diff --git a/src/main/java/ru/betterend/registry/EndBiomes.java b/src/main/java/ru/betterend/registry/EndBiomes.java index 685d16e9..b8686d2e 100644 --- a/src/main/java/ru/betterend/registry/EndBiomes.java +++ b/src/main/java/ru/betterend/registry/EndBiomes.java @@ -295,11 +295,11 @@ public class EndBiomes { return biome; } - private static EndBiome registerBiome(RegistryKey key, BiomeType type, float genChance) { + public static EndBiome registerBiome(RegistryKey key, BiomeType type, float genChance) { return registerBiome(BuiltinRegistries.BIOME.get(key), type, genChance); } - private static EndBiome registerSubBiome(RegistryKey key, EndBiome parent, float genChance) { + public static EndBiome registerSubBiome(RegistryKey key, EndBiome parent, float genChance) { return registerSubBiome(BuiltinRegistries.BIOME.get(key), parent, genChance, true); }