diff --git a/src/main/java/vazkii/botania/api/BotaniaAPI.java b/src/main/java/vazkii/botania/api/BotaniaAPI.java index b2f2ad0b5..c9ed0e144 100644 --- a/src/main/java/vazkii/botania/api/BotaniaAPI.java +++ b/src/main/java/vazkii/botania/api/BotaniaAPI.java @@ -30,7 +30,6 @@ import net.minecraft.item.crafting.CraftingManager; import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.common.util.EnumHelper; -import net.minecraftforge.event.world.ChunkDataEvent.Load; import vazkii.botania.api.brew.Brew; import vazkii.botania.api.internal.DummyMethodHandler; import vazkii.botania.api.internal.DummySubTile; @@ -41,6 +40,7 @@ import vazkii.botania.api.lexicon.LexiconEntry; import vazkii.botania.api.recipe.RecipeBrew; import vazkii.botania.api.recipe.RecipeElvenTrade; import vazkii.botania.api.recipe.RecipeManaInfusion; +import vazkii.botania.api.recipe.RecipeMiniFlower; import vazkii.botania.api.recipe.RecipePetals; import vazkii.botania.api.recipe.RecipePureDaisy; import vazkii.botania.api.recipe.RecipeRuneAltar; @@ -71,11 +71,13 @@ public final class BotaniaAPI { public static List runeAltarRecipes = new ArrayList(); public static List elvenTradeRecipes = new ArrayList(); public static List brewRecipes = new ArrayList(); + public static List miniFlowerRecipes = new ArrayList(); private static BiMap> subTiles = HashBiMap.> create(); private static Map, SubTileSignature> subTileSignatures = new HashMap, SubTileSignature>(); public static Set subtilesForCreativeMenu = new LinkedHashSet(); public static Map subTileMods = new HashMap(); + public static BiMap miniFlowers = HashBiMap. create(); public static Map oreWeights = new HashMap(); public static Map seeds = new HashMap(); @@ -337,6 +339,20 @@ public final class BotaniaAPI { subTiles.put(key, subtileClass); subTileMods.put(key, Loader.instance().activeModContainer().getModId()); } + + /** + * Register a SubTileEntity and makes it a mini flower. Also adds the recipe and returns it. + * @see BotaniaAPI#registerSubTile + */ + public static RecipeManaInfusion registerMiniSubTile(String key, Class subtileClass, String original) { + registerSubTile(key, subtileClass); + miniFlowers.put(original, key); + + RecipeMiniFlower recipe = new RecipeMiniFlower(key, original, 2500); + manaInfusionRecipes.add(recipe); + miniFlowerRecipes.add(recipe); + return recipe; + } /** * Registers a SubTileEntity's signature. @@ -368,7 +384,8 @@ public final class BotaniaAPI { /** * Adds the key for a SubTileEntity into the creative menu. This goes into the - * subtilesForCreativeMenu Set. + * subtilesForCreativeMenu Set. This does not need to be called for mini flowers, + * those will just use the mini flower map to add themselves next to the source. */ public static void addSubTileToCreativeMenu(String key) { subtilesForCreativeMenu.add(key); @@ -471,4 +488,8 @@ public final class BotaniaAPI { public static String getSubTileStringMapping(Class clazz) { return subTiles.inverse().get(clazz); } + + public static Set getAllSubTiles() { + return subTiles.keySet(); + } } diff --git a/src/main/java/vazkii/botania/api/internal/DummyMethodHandler.java b/src/main/java/vazkii/botania/api/internal/DummyMethodHandler.java index 3a111cf23..669085dd5 100644 --- a/src/main/java/vazkii/botania/api/internal/DummyMethodHandler.java +++ b/src/main/java/vazkii/botania/api/internal/DummyMethodHandler.java @@ -118,6 +118,11 @@ public class DummyMethodHandler implements IInternalMethodHandler { return getSubTileAsStack(subTile); } + @Override + public String getStackSubTileKey(ItemStack stack) { + return null; + } + @Override public IIcon getSubTileIconForName(String name) { return Blocks.red_flower.getIcon(0, 0); diff --git a/src/main/java/vazkii/botania/api/internal/IInternalMethodHandler.java b/src/main/java/vazkii/botania/api/internal/IInternalMethodHandler.java index f9485232b..e5538da33 100644 --- a/src/main/java/vazkii/botania/api/internal/IInternalMethodHandler.java +++ b/src/main/java/vazkii/botania/api/internal/IInternalMethodHandler.java @@ -76,6 +76,8 @@ public interface IInternalMethodHandler { public ItemStack getSubTileAsFloatingFlowerStack(String subTile); + public String getStackSubTileKey(ItemStack stack); + public IIcon getSubTileIconForName(String name); public void registerBasicSignatureIcons(String name, IIconRegister register); diff --git a/src/main/java/vazkii/botania/api/package-info.java b/src/main/java/vazkii/botania/api/package-info.java index 455c68e4c..8f2b88db0 100644 --- a/src/main/java/vazkii/botania/api/package-info.java +++ b/src/main/java/vazkii/botania/api/package-info.java @@ -1,4 +1,4 @@ -@API(owner = "Botania", apiVersion = "43", provides = "BotaniaAPI") +@API(owner = "Botania", apiVersion = "44", provides = "BotaniaAPI") package vazkii.botania.api; import cpw.mods.fml.common.API; diff --git a/src/main/java/vazkii/botania/api/recipe/RecipeManaInfusion.java b/src/main/java/vazkii/botania/api/recipe/RecipeManaInfusion.java index 1f88c82eb..368c8d4c4 100644 --- a/src/main/java/vazkii/botania/api/recipe/RecipeManaInfusion.java +++ b/src/main/java/vazkii/botania/api/recipe/RecipeManaInfusion.java @@ -30,7 +30,6 @@ public class RecipeManaInfusion { } public boolean matches(ItemStack stack) { - if(input instanceof ItemStack) { ItemStack inputCopy = ((ItemStack) input).copy(); if(inputCopy.getItemDamage() == Short.MAX_VALUE) diff --git a/src/main/java/vazkii/botania/api/recipe/RecipeMiniFlower.java b/src/main/java/vazkii/botania/api/recipe/RecipeMiniFlower.java new file mode 100644 index 000000000..30b0b314a --- /dev/null +++ b/src/main/java/vazkii/botania/api/recipe/RecipeMiniFlower.java @@ -0,0 +1,29 @@ +/** + * This class was created by . It's distributed as + * part of the Botania Mod. Get the Source Code in github: + * https://github.com/Vazkii/Botania + * + * Botania is Open Source and distributed under the + * Botania License: http://botaniamod.net/license.php + * + * File Created @ [Apr 22, 2015, 5:57:59 PM (GMT)] + */ +package vazkii.botania.api.recipe; + +import vazkii.botania.api.BotaniaAPI; +import net.minecraft.item.ItemStack; + +public class RecipeMiniFlower extends RecipeManaInfusion { + + public RecipeMiniFlower(String flower, String mini, int mana) { + super(BotaniaAPI.internalHandler.getSubTileAsStack(flower), BotaniaAPI.internalHandler.getSubTileAsStack(mini), mana); + setAlchemy(true); + } + + @Override + public boolean matches(ItemStack stack) { + String key = BotaniaAPI.internalHandler.getStackSubTileKey(stack); + return key != null && key.equals(input); + } + +} diff --git a/src/main/java/vazkii/botania/api/recipe/RecipePureDaisy.java b/src/main/java/vazkii/botania/api/recipe/RecipePureDaisy.java index 866a1de05..ea5b5c846 100644 --- a/src/main/java/vazkii/botania/api/recipe/RecipePureDaisy.java +++ b/src/main/java/vazkii/botania/api/recipe/RecipePureDaisy.java @@ -63,7 +63,7 @@ public class RecipePureDaisy { /** * Returns true if the block was placed (and if the Pure Daisy should do particles and stuffs). - * Should only place the block if world.isRemote, but should return true if it would've placed + * Should only place the block if !world.isRemote, but should return true if it would've placed * it otherwise. You may return false to cancel the normal particles and do your own. */ public boolean set(World world, int x, int y, int z, SubTileEntity pureDaisy) { diff --git a/src/main/java/vazkii/botania/common/block/BlockFloatingSpecialFlower.java b/src/main/java/vazkii/botania/common/block/BlockFloatingSpecialFlower.java index 898b0860a..8e35d3954 100644 --- a/src/main/java/vazkii/botania/common/block/BlockFloatingSpecialFlower.java +++ b/src/main/java/vazkii/botania/common/block/BlockFloatingSpecialFlower.java @@ -56,8 +56,11 @@ public class BlockFloatingSpecialFlower extends BlockFloatingFlower implements I @Override public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { - for(String s : BotaniaAPI.subtilesForCreativeMenu) + for(String s : BotaniaAPI.subtilesForCreativeMenu) { par3List.add(ItemBlockSpecialFlower.ofType(new ItemStack(par1), s)); + if(BotaniaAPI.miniFlowers.containsKey(s)) + par3List.add(ItemBlockSpecialFlower.ofType(new ItemStack(par1), BotaniaAPI.miniFlowers.get(s))); + } } @Override diff --git a/src/main/java/vazkii/botania/common/block/BlockSpecialFlower.java b/src/main/java/vazkii/botania/common/block/BlockSpecialFlower.java index 2ddf6d5c6..5de222ab0 100644 --- a/src/main/java/vazkii/botania/common/block/BlockSpecialFlower.java +++ b/src/main/java/vazkii/botania/common/block/BlockSpecialFlower.java @@ -121,14 +121,18 @@ public class BlockSpecialFlower extends BlockFlower implements ITileEntityProvid @Override public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) { - for(String s : BotaniaAPI.subtilesForCreativeMenu) + for(String s : BotaniaAPI.subtilesForCreativeMenu) { par3List.add(ItemBlockSpecialFlower.ofType(s)); + if(BotaniaAPI.miniFlowers.containsKey(s)) + par3List.add(ItemBlockSpecialFlower.ofType(BotaniaAPI.miniFlowers.get(s))); + } } @Override public void registerBlockIcons(IIconRegister par1IconRegister) { - for(String s : BotaniaAPI.subtilesForCreativeMenu) - BotaniaAPI.getSignatureForName(s).registerIcons(par1IconRegister); + for(String s : BotaniaAPI.getAllSubTiles()) + if(!s.isEmpty()) + BotaniaAPI.getSignatureForName(s).registerIcons(par1IconRegister); } @Override diff --git a/src/main/java/vazkii/botania/common/block/ModBlocks.java b/src/main/java/vazkii/botania/common/block/ModBlocks.java index 141193f1f..290f17384 100644 --- a/src/main/java/vazkii/botania/common/block/ModBlocks.java +++ b/src/main/java/vazkii/botania/common/block/ModBlocks.java @@ -18,6 +18,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.oredict.OreDictionary; import vazkii.botania.api.BotaniaAPI; +import vazkii.botania.api.subtile.SubTileEntity; import vazkii.botania.client.lib.LibResources; import vazkii.botania.common.block.corporea.BlockCorporeaFunnel; import vazkii.botania.common.block.corporea.BlockCorporeaIndex; @@ -390,7 +391,7 @@ public final class ModBlocks { BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_NARSLIMMUS, SubTileNarslimmus.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_SPECTROLUS, SubTileSpectrolus.class); - BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_BELLETHORN, SubTileBellethorn.class); + registerSubTileWithMini(LibBlockNames.SUBTILE_BELLETHORN, SubTileBellethorn.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_DREADTHORN, SubTileDreadthorn.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_HEISEI_DREAM, SubTileHeiseiDream.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_TIGERSEYE, SubTileTigerseye.class); @@ -398,11 +399,11 @@ public final class ModBlocks { BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_ORECHID, SubtileOrechid.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_FALLEN_KANADE, SubTileFallenKanade.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_EXOFLAME, SubTileExoflame.class); - BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_AGRICARNATION, SubTileAgricarnation.class); - BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_HOPPERHOCK, SubTileHopperhock.class); + registerSubTileWithMini(LibBlockNames.SUBTILE_AGRICARNATION, SubTileAgricarnation.class); + registerSubTileWithMini(LibBlockNames.SUBTILE_HOPPERHOCK, SubTileHopperhock.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_TANGLEBERRIE, SubTileTangleberrie.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_JIYUULIA, SubTileJiyuulia.class); - BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_RANNUNCARPUS, SubTileRannuncarpus.class); + registerSubTileWithMini(LibBlockNames.SUBTILE_RANNUNCARPUS, SubTileRannuncarpus.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_HYACIDUS, SubTileHyacidus.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_POLLIDISIAC, SubTilePollidisiac.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_CLAYCONIA, SubTileClayconia.class); @@ -411,11 +412,19 @@ public final class ModBlocks { BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_VINCULOTUS, SubTileVinculotus.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_SPECTRANTHEMUM, SubTileSpectranthemum.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_MEDUMONE, SubTileMedumone.class); - BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_MARIMORPHOSIS, SubTileMarimorphosis.class); - BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_BUBBELL, SubTileBubbell.class); + registerSubTileWithMini(LibBlockNames.SUBTILE_MARIMORPHOSIS, SubTileMarimorphosis.class); + registerSubTileWithMini(LibBlockNames.SUBTILE_BUBBELL, SubTileBubbell.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_SOLEGNOLIA, SubTileSolegnolia.class); } + private static void registerSubTileWithMini(String key, Class clazz) { + BotaniaAPI.registerSubTile(key, clazz); + + for(Class innerClazz : clazz.getDeclaredClasses()) + if(innerClazz.getSimpleName().equals("Mini")) + BotaniaAPI.registerMiniSubTile(key + "Chibi", innerClazz, key); + } + private static void registerTile(Class clazz, String key) { GameRegistry.registerTileEntity(clazz, LibResources.PREFIX_MOD + key); } diff --git a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileAgricarnation.java b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileAgricarnation.java index e5637a857..f722db823 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileAgricarnation.java +++ b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileAgricarnation.java @@ -26,14 +26,16 @@ import vazkii.botania.common.lexicon.LexiconData; public class SubTileAgricarnation extends SubTileFunctional { private static final int RANGE = 5; + private static final int RANGE_MINI = 2; @Override public void onUpdate() { super.onUpdate(); if(ticksExisted % 6 == 0 && redstoneSignal == 0) { - int x = supertile.xCoord + supertile.getWorldObj().rand.nextInt(RANGE * 2 + 1) - RANGE; - int z = supertile.zCoord + supertile.getWorldObj().rand.nextInt(RANGE * 2 + 1) - RANGE; + int range = getRange(); + int x = supertile.xCoord + supertile.getWorldObj().rand.nextInt(RANGE * 2 + 1) - range; + int z = supertile.zCoord + supertile.getWorldObj().rand.nextInt(RANGE * 2 + 1) - range; for(int i = 4; i > -2; i--) { int y = supertile.yCoord + i; @@ -78,10 +80,14 @@ public class SubTileAgricarnation extends SubTileFunctional { public int getMaxMana() { return 200; } + + public int getRange() { + return RANGE; + } @Override public RadiusDescriptor getRadius() { - return new RadiusDescriptor.Square(toChunkCoordinates(), RANGE); + return new RadiusDescriptor.Square(toChunkCoordinates(), getRange()); } @Override @@ -89,4 +95,8 @@ public class SubTileAgricarnation extends SubTileFunctional { return LexiconData.agricarnation; } + public static class Mini extends SubTileAgricarnation { + @Override public int getRange() { return RANGE_MINI; } + } + } diff --git a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileBellethorn.java b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileBellethorn.java index c94811ef6..851033004 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileBellethorn.java +++ b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileBellethorn.java @@ -26,6 +26,7 @@ import vazkii.botania.common.lexicon.LexiconData; public class SubTileBellethorn extends SubTileFunctional { public static final int RANGE = 6; + public static final int RANGE_MINI = 1; @Override public int getColor() { @@ -47,7 +48,8 @@ public class SubTileBellethorn extends SubTileFunctional { final int manaToUse = getManaCost(); if(ticksExisted % 5 == 0) { - List entities = supertile.getWorldObj().getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(supertile.xCoord - RANGE, supertile.yCoord, supertile.zCoord - RANGE, supertile.xCoord + RANGE, supertile.yCoord + 1, supertile.zCoord + RANGE)); + int range = getRange(); + List entities = supertile.getWorldObj().getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(supertile.xCoord - range, supertile.yCoord, supertile.zCoord - range, supertile.xCoord + range, supertile.yCoord + 1, supertile.zCoord + range)); IEntitySelector selector = getSelector(); for(EntityLivingBase entity : entities) { @@ -71,6 +73,10 @@ public class SubTileBellethorn extends SubTileFunctional { public int getManaCost() { return 24; } + + public int getRange() { + return RANGE; + } public IEntitySelector getSelector() { return new IEntitySelector() { @@ -85,12 +91,16 @@ public class SubTileBellethorn extends SubTileFunctional { @Override public RadiusDescriptor getRadius() { - return new RadiusDescriptor.Square(toChunkCoordinates(), RANGE); + return new RadiusDescriptor.Square(toChunkCoordinates(), getRange()); } @Override public LexiconEntry getEntry() { return LexiconData.bellethorne; } + + public static class Mini extends SubTileBellethorn { + @Override public int getRange() { return RANGE_MINI; } + } } diff --git a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileBubbell.java b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileBubbell.java index 7ca9b6efb..1656a9d88 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileBubbell.java +++ b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileBubbell.java @@ -27,6 +27,7 @@ import vazkii.botania.common.lexicon.LexiconData; public class SubTileBubbell extends SubTileFunctional { private static final int RANGE = 12; + private static final int RANGE_MINI = 6; private static final int COST_PER_TICK = 4; private static final String TAG_RANGE = "range"; @@ -39,7 +40,7 @@ public class SubTileBubbell extends SubTileFunctional { if(mana > COST_PER_TICK) { mana -= COST_PER_TICK; - if(ticksExisted % 10 == 0 && range < RANGE) + if(ticksExisted % 10 == 0 && range < getRange()) range++; for(int i = -range; i < range + 1; i++) @@ -90,15 +91,23 @@ public class SubTileBubbell extends SubTileFunctional { public int getColor() { return 0x0DCF89; } + + public int getRange() { + return RANGE; + } @Override public RadiusDescriptor getRadius() { - return new RadiusDescriptor.Circle(toChunkCoordinates(), RANGE); + return new RadiusDescriptor.Circle(toChunkCoordinates(), range); } @Override public LexiconEntry getEntry() { return LexiconData.bubbell; } + + public static class Mini extends SubTileBubbell { + @Override public int getRange() { return RANGE_MINI; } + } } diff --git a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileHopperhock.java b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileHopperhock.java index 72735e700..774ae6b5b 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileHopperhock.java +++ b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileHopperhock.java @@ -42,6 +42,9 @@ public class SubTileHopperhock extends SubTileFunctional { private static final String TAG_FILTER_TYPE = "filterType"; private static final int RANGE_MANA = 10; private static final int RANGE = 6; + + private static final int RANGE_MANA_MINI = 2; + private static final int RANGE_MINI = 1; int filterType = 0; @@ -53,7 +56,7 @@ public class SubTileHopperhock extends SubTileFunctional { return; boolean pulledAny = false; - int range = mana > 0 ? 10 : 6; + int range = getRange(); int x = supertile.xCoord; int y = supertile.yCoord; @@ -186,7 +189,11 @@ public class SubTileHopperhock extends SubTileFunctional { @Override public RadiusDescriptor getRadius() { - return new RadiusDescriptor.Square(toChunkCoordinates(), mana > 0 ? RANGE_MANA : RANGE); + return new RadiusDescriptor.Square(toChunkCoordinates(), getRange()); + } + + public int getRange() { + return mana > 0 ? RANGE_MANA : RANGE; } @Override @@ -232,4 +239,8 @@ public class SubTileHopperhock extends SubTileFunctional { public int getColor() { return 0x3F3F3F; } + + public static class Mini extends SubTileHopperhock { + @Override public int getRange() { return mana > 0 ? RANGE_MANA_MINI : RANGE_MINI; } + } } diff --git a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileMarimorphosis.java b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileMarimorphosis.java index 6c3f2c8ad..1dd9a52f6 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileMarimorphosis.java +++ b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileMarimorphosis.java @@ -32,6 +32,9 @@ public class SubTileMarimorphosis extends SubTileFunctional { private static final int COST = 12; private static final int RANGE = 8; private static final int RANGE_Y = 5; + + private static final int RANGE_MINI = 2; + private static final int RANGE_Y_MINI = 1; private static final Type[] TYPES = new Type[] { Type.FOREST, @@ -87,9 +90,12 @@ public class SubTileMarimorphosis extends SubTileFunctional { public ChunkCoordinates getCoordsToPut() { List possibleCoords = new ArrayList(); - for(int i = -RANGE; i < RANGE + 1; i++) - for(int j = -RANGE_Y; j < RANGE_Y; j++) - for(int k = -RANGE; k < RANGE + 1; k++) { + int range = getRange(); + int rangeY = getRangeY(); + + for(int i = -range; i < range + 1; i++) + for(int j = -range; j < rangeY; j++) + for(int k = -range; k < range + 1; k++) { int x = supertile.xCoord + i; int y = supertile.yCoord + j; int z = supertile.zCoord + k; @@ -105,7 +111,15 @@ public class SubTileMarimorphosis extends SubTileFunctional { @Override public RadiusDescriptor getRadius() { - return new RadiusDescriptor.Square(toChunkCoordinates(), RANGE); + return new RadiusDescriptor.Square(toChunkCoordinates(), getRange()); + } + + public int getRange() { + return RANGE; + } + + public int getRangeY() { + return RANGE_Y; } @Override @@ -128,4 +142,9 @@ public class SubTileMarimorphosis extends SubTileFunctional { return LexiconData.marimorphosis; } + public static class Mini extends SubTileMarimorphosis { + @Override public int getRange() { return RANGE_MINI; } + @Override public int getRangeY() { return RANGE_Y_MINI; } + } + } diff --git a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileRannuncarpus.java b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileRannuncarpus.java index 9e04eedac..77dad9e9e 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileRannuncarpus.java +++ b/src/main/java/vazkii/botania/common/block/subtile/functional/SubTileRannuncarpus.java @@ -46,6 +46,10 @@ public class SubTileRannuncarpus extends SubTileFunctional { private static final int RANGE_PLACE_MANA = 8; private static final int RANGE_PLACE = 6; private static final int RANGE_PLACE_Y = 6; + + private static final int RANGE_PLACE_MANA_MINI = 3; + private static final int RANGE_PLACE_MINI = 2; + private static final int RANGE_PLACE_Y_MINI = 2; @Override public void onUpdate() { @@ -60,7 +64,8 @@ public class SubTileRannuncarpus extends SubTileFunctional { boolean scanned = false; List validPositions = new ArrayList(); - int rangePlace = mana > 0 ? RANGE_PLACE_MANA : RANGE_PLACE; + int rangePlace = getRange(); + int rangePlaceY = getRangeY(); int x = supertile.xCoord; int y = supertile.yCoord; @@ -76,7 +81,7 @@ public class SubTileRannuncarpus extends SubTileFunctional { if(stackItem instanceof ItemBlock || stackItem instanceof ItemReed) { if(!scanned) { for(int i = -rangePlace; i < rangePlace + 1; i++) - for(int j = -RANGE_PLACE_Y; j < RANGE_PLACE_Y + 1; j++) + for(int j = -rangePlaceY; j < rangePlaceY + 1; j++) for(int l = -rangePlace; l < rangePlace + 1; l++) { int xp = x + i; int yp = y + j; @@ -162,9 +167,17 @@ public class SubTileRannuncarpus extends SubTileFunctional { @Override public RadiusDescriptor getRadius() { - return new RadiusDescriptor.Square(toChunkCoordinates(), mana > 0 ? RANGE_PLACE_MANA : RANGE_PLACE); + return new RadiusDescriptor.Square(toChunkCoordinates(), getRange()); } + public int getRange() { + return mana > 0 ? RANGE_PLACE_MANA : RANGE_PLACE; + } + + public int getRangeY() { + return RANGE_PLACE_Y; + } + @Override public int getMaxMana() { return 20; @@ -180,6 +193,11 @@ public class SubTileRannuncarpus extends SubTileFunctional { return LexiconData.rannuncarpus; } + public static class Mini extends SubTileRannuncarpus { + @Override public int getRange() { return RANGE_PLACE_MINI; } + @Override public int getRangeY() { return RANGE_PLACE_Y_MINI; } + } + static class BlockData { Block block; @@ -199,5 +217,5 @@ public class SubTileRannuncarpus extends SubTileFunctional { } } - + } diff --git a/src/main/java/vazkii/botania/common/core/handler/InternalMethodHandler.java b/src/main/java/vazkii/botania/common/core/handler/InternalMethodHandler.java index 2dbac0117..d92bde674 100644 --- a/src/main/java/vazkii/botania/common/core/handler/InternalMethodHandler.java +++ b/src/main/java/vazkii/botania/common/core/handler/InternalMethodHandler.java @@ -151,6 +151,11 @@ public class InternalMethodHandler extends DummyMethodHandler { return ItemBlockSpecialFlower.ofType(new ItemStack(ModBlocks.floatingSpecialFlower), subTile); } + @Override + public String getStackSubTileKey(ItemStack stack) { + return ItemBlockSpecialFlower.getType(stack); + } + @Override public IManaNetwork getManaNetworkInstance() { return ManaNetworkHandler.instance; diff --git a/src/main/resources/assets/botania/lang/en_US.lang b/src/main/resources/assets/botania/lang/en_US.lang index 9168548c2..273128fd8 100644 --- a/src/main/resources/assets/botania/lang/en_US.lang +++ b/src/main/resources/assets/botania/lang/en_US.lang @@ -945,6 +945,8 @@ tile.botania:flower.spectrolus.reference=Profiting off Hate # - FUNCTIONAL tile.botania:flower.bellethorn.name=Bellethorne tile.botania:flower.bellethorn.reference=world's end, girl's rondo +tile.botania:flower.bellethornChibi.name=Bellethorne Petite +tile.botania:flower.bellethornChibi.reference=world's end, girl's rondo tile.botania:flower.dreadthorn.name=Dreadthorne tile.botania:flower.dreadthorn.reference=Plan C tile.botania:flower.heiseiDream.name=Heisei Dream @@ -961,14 +963,20 @@ tile.botania:flower.exoflame.name=Exoflame tile.botania:flower.exoflame.reference=Wearing her black ribbons tile.botania:flower.agricarnation.name=Agricarnation tile.botania:flower.agricarnation.reference=Wear on the 25th of april +tile.botania:flower.agricarnationChibi.name=Agricarnation Petite +tile.botania:flower.agricarnationChibi.reference=Wear on the 25th of april tile.botania:flower.hopperhock.name=Hopperhock tile.botania:flower.hopperhock.reference=It all funnels into it +tile.botania:flower.hopperhockChibi.name=Hopperhock Petite +tile.botania:flower.hopperhockChibi.reference=It all funnels into it tile.botania:flower.tangleberrie.name=Tangleberrie tile.botania:flower.tangleberrie.reference=No frying pans allowed tile.botania:flower.jiyuulia.name=Jiyuulia tile.botania:flower.jiyuulia.reference=Flügel der Freiheit tile.botania:flower.rannuncarpus.name=Rannuncarpus tile.botania:flower.rannuncarpus.reference=That's handy +tile.botania:flower.rannuncarpusChibi.name=Rannuncarpus Petite +tile.botania:flower.rannuncarpusChibi.reference=That's handy tile.botania:flower.hyacidus.name=Hyacidus tile.botania:flower.hyacidus.reference=If you don't walk, it doesn't hurt tile.botania:flower.pollidisiac.name=Pollidisiac @@ -987,8 +995,12 @@ tile.botania:flower.medumone.name=Medumone tile.botania:flower.medumone.reference='Twas Hades all along tile.botania:flower.marimorphosis.name=Marimorphosis tile.botania:flower.marimorphosis.reference=Solid as a rock +tile.botania:flower.marimorphosisChibi.name=Marimorphosis Petite +tile.botania:flower.marimorphosisChibi.reference=Solid as a rock tile.botania:flower.bubbell.name=Bubbell tile.botania:flower.bubbell.reference=And whistle +tile.botania:flower.bubbellChibi.name=Bubbell Petite +tile.botania:flower.bubbellChibi.reference=And whistle tile.botania:flower.solegnolia.name=Solegnolia tile.botania:flower.solegnolia.reference=All your magnets are belong to us diff --git a/src/main/resources/assets/botania/textures/blocks/alt/agricarnationChibi.png b/src/main/resources/assets/botania/textures/blocks/alt/agricarnationChibi.png new file mode 100644 index 000000000..fdec75446 Binary files /dev/null and b/src/main/resources/assets/botania/textures/blocks/alt/agricarnationChibi.png differ diff --git a/src/main/resources/assets/botania/textures/blocks/alt/bellethornChibi.png b/src/main/resources/assets/botania/textures/blocks/alt/bellethornChibi.png new file mode 100644 index 000000000..c01237932 Binary files /dev/null and b/src/main/resources/assets/botania/textures/blocks/alt/bellethornChibi.png differ diff --git a/src/main/resources/assets/botania/textures/blocks/alt/bubbellChibi.png b/src/main/resources/assets/botania/textures/blocks/alt/bubbellChibi.png new file mode 100644 index 000000000..357f78d6e Binary files /dev/null and b/src/main/resources/assets/botania/textures/blocks/alt/bubbellChibi.png differ diff --git a/src/main/resources/assets/botania/textures/blocks/alt/hopperhockChibi.png b/src/main/resources/assets/botania/textures/blocks/alt/hopperhockChibi.png new file mode 100644 index 000000000..ceeaca6ed Binary files /dev/null and b/src/main/resources/assets/botania/textures/blocks/alt/hopperhockChibi.png differ diff --git a/src/main/resources/assets/botania/textures/blocks/alt/marimorphosisChibi.png b/src/main/resources/assets/botania/textures/blocks/alt/marimorphosisChibi.png new file mode 100644 index 000000000..b8e5593cf Binary files /dev/null and b/src/main/resources/assets/botania/textures/blocks/alt/marimorphosisChibi.png differ diff --git a/src/main/resources/assets/botania/textures/blocks/alt/rannuncarpusChibi.png b/src/main/resources/assets/botania/textures/blocks/alt/rannuncarpusChibi.png new file mode 100644 index 000000000..36d9794fb Binary files /dev/null and b/src/main/resources/assets/botania/textures/blocks/alt/rannuncarpusChibi.png differ