From 148ff2956dad2377e6043173ad8b33d6acbc6ac6 Mon Sep 17 00:00:00 2001 From: Nico Spiske <64710705+Nilau1998@users.noreply.github.com> Date: Sun, 1 Sep 2024 14:38:40 +0200 Subject: Add bee in courtesy to DaddyDiddy (#2507) * [major] new effect, comb, flower, mutation condition * [minor] imports * Update GT_BeeDefinition.java * [minor] fancier processing * [patch] bs * Update ItemComb.java * Update SifterRecipes.java * [minor] nuked machine booster effect * Added back the effect but now with tick throttling. Right now it is set so the effect only gets triggered every 30 seconds. * SA & BS * [minor] add dynamic authority * rename comb type and bee reduce speed to super speed * update bs + sa * changed to fastest because super speed was 2x blinding (wired naming) --------- Co-authored-by: Martin Robertz Co-authored-by: boubou19 --- .../gregtech/loaders/misc/bees/GT_Flowers.java | 135 +++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 src/main/java/gregtech/loaders/misc/bees/GT_Flowers.java (limited to 'src/main/java/gregtech/loaders/misc/bees/GT_Flowers.java') diff --git a/src/main/java/gregtech/loaders/misc/bees/GT_Flowers.java b/src/main/java/gregtech/loaders/misc/bees/GT_Flowers.java new file mode 100644 index 0000000000..d2ab1d6297 --- /dev/null +++ b/src/main/java/gregtech/loaders/misc/bees/GT_Flowers.java @@ -0,0 +1,135 @@ +package gregtech.loaders.misc.bees; + +import java.util.EnumSet; +import java.util.HashSet; +import java.util.Set; + +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.common.EnumPlantType; + +import forestry.api.apiculture.FlowerManager; +import forestry.api.genetics.AlleleManager; +import forestry.api.genetics.IAllele; +import forestry.api.genetics.IAlleleFlowers; +import forestry.api.genetics.IChromosomeType; +import forestry.api.genetics.IFlower; +import forestry.api.genetics.IFlowerProvider; +import forestry.api.genetics.IIndividual; +import forestry.api.genetics.IPollinatable; +import forestry.api.genetics.ISpeciesRoot; +import gregtech.api.util.GT_LanguageManager; + +public enum GT_Flowers implements IFlowerProvider, IAlleleFlowers, IChromosomeType { + + FLAMING; + + protected boolean dominant; + + GT_Flowers() { + dominant = true; + } + + public static void doInit() { + for (GT_Flowers effect : values()) { + effect.register(); + } + } + + @Override + public String getUID() { + return "for.flowers." + toString().toLowerCase(); + } + + @Override + public boolean isDominant() { + return dominant; + } + + @Override + public IFlowerProvider getProvider() { + return this; + } + + @Override + public String getDescription() { + return GT_LanguageManager.getTranslation("for.flowers." + name().toLowerCase()); + } + + public void register() { + for (ItemStack stack : getItemStacks()) { + FlowerManager.flowerRegistry.registerAcceptableFlower(Block.getBlockFromItem(stack.getItem()), getUID()); + } + + AlleleManager.alleleRegistry.registerAllele(this, this); + } + + public ItemStack[] getItemStacks() { + switch (this) { + case FLAMING: + return new ItemStack[] { new ItemStack(Blocks.fire) }; + } + return new ItemStack[0]; + } + + @Override + public boolean isAcceptedPollinatable(World world, IPollinatable pollinatable) { + EnumSet types = pollinatable.getPlantType(); + return types.size() > 1 || !types.contains(EnumPlantType.Nether); + } + + public boolean isAcceptedFlower(World world, int x, int y, int z) { + Block block = world.getBlock(x, y, z); + if (block == null) { + return false; + } + + switch (this) { + case FLAMING: + return block == Blocks.fire; + } + return false; + } + + @Override + public boolean growFlower(World world, IIndividual individual, int x, int y, int z) { + return false; + } + + @Override + public ItemStack[] affectProducts(World world, IIndividual individual, int x, int y, int z, ItemStack[] products) { + return products; + } + + @Override + public String getName() { + return getDescription(); + } + + @Override + public String getUnlocalizedName() { + return getUID(); + } + + @Override + public String getFlowerType() { + return getUID(); + } + + @Override + public Set getFlowers() { + return new HashSet<>(); + } + + @Override + public Class getAlleleClass() { + return getClass(); + } + + @Override + public ISpeciesRoot getSpeciesRoot() { + return AlleleManager.alleleRegistry.getSpeciesRoot(getUID()); + } +} -- cgit