From 31c42e970397a0e93a8b07fd742713bb747c90bd Mon Sep 17 00:00:00 2001 From: Vasco Lavos Date: Sat, 24 Oct 2015 01:07:47 +0100 Subject: [PATCH] Added Primus Loci. --- .../botania/common/block/ModBlocks.java | 2 + .../subtile/generating/SubTileDaybloom.java | 87 +++++++++++++++++- .../subtile/generating/SubTileNightshade.java | 14 +++ .../core/handler/BiomeDecorationHandler.java | 19 +++- .../botania/common/lexicon/LexiconData.java | 5 + .../botania/common/lib/LibBlockNames.java | 2 + .../vazkii/botania/common/lib/LibLexicon.java | 1 + .../resources/assets/botania/lang/en_US.lang | 10 ++ .../textures/blocks/alt/daybloomPrime.png | Bin 0 -> 18746 bytes .../textures/blocks/alt/nightshadePrime.png | Bin 0 -> 18618 bytes .../botania/textures/blocks/daybloomPrime.png | Bin 0 -> 17949 bytes .../textures/blocks/nightshadePrime.png | Bin 0 -> 17940 bytes 12 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/assets/botania/textures/blocks/alt/daybloomPrime.png create mode 100644 src/main/resources/assets/botania/textures/blocks/alt/nightshadePrime.png create mode 100644 src/main/resources/assets/botania/textures/blocks/daybloomPrime.png create mode 100644 src/main/resources/assets/botania/textures/blocks/nightshadePrime.png diff --git a/src/main/java/vazkii/botania/common/block/ModBlocks.java b/src/main/java/vazkii/botania/common/block/ModBlocks.java index 62624b9ec..c236db9ba 100644 --- a/src/main/java/vazkii/botania/common/block/ModBlocks.java +++ b/src/main/java/vazkii/botania/common/block/ModBlocks.java @@ -464,10 +464,12 @@ public final class ModBlocks { BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_MANASTAR, SubTileManastar.class); registerSubTileWithDecor(LibBlockNames.SUBTILE_DAYBLOOM, SubTileDaybloom.class, SubTileDecor.Daybloom.class); + BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_DAYBLOOM_PRIME, SubTileDaybloom.Prime.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_ENDOFLAME, SubTileEndoflame.class); registerSubTileWithDecor(LibBlockNames.SUBTILE_HYDROANGEAS, SubTileHydroangeas.class, SubTileDecor.Hydroangeas.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_THERMALILY, SubTileThermalily.class); registerSubTileWithDecor(LibBlockNames.SUBTILE_NIGHTSHADE, SubTileNightshade.class, SubTileDecor.Nightshade.class); + BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_NIGHTSHADE_PRIME, SubTileNightshade.Prime.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_ARCANE_ROSE, SubTileArcaneRose.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_MUNCHDEW, SubTileMunchdew.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_ENTROPINNYUM, SubTileEntropinnyum.class); diff --git a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileDaybloom.java b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileDaybloom.java index 642f8dd55..bd162979f 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileDaybloom.java +++ b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileDaybloom.java @@ -11,22 +11,58 @@ package vazkii.botania.common.block.subtile.generating; import java.awt.Color; +import java.util.ArrayList; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.util.ForgeDirection; import vazkii.botania.api.lexicon.LexiconEntry; import vazkii.botania.api.subtile.ISubTileContainer; +import vazkii.botania.api.subtile.SubTileEntity; import vazkii.botania.common.Botania; import vazkii.botania.common.lexicon.LexiconData; import vazkii.botania.common.lib.LibMisc; public class SubTileDaybloom extends SubTilePassiveGenerating { - + + private static final String TAG_PRIME_POSITION_X = "primePositionX"; + private static final String TAG_PRIME_POSITION_Y = "primePositionY"; + private static final String TAG_PRIME_POSITION_Z = "primePositionZ"; + private static final String TAG_SAVED_POSITION = "savedPosition"; + + int primePositionX, primePositionY, primePositionZ; + boolean savedPosition; + @Override public int getColor() { return 0xFFFF00; } + @Override + public void onUpdate() { + super.onUpdate(); + + if(isPrime() && (!savedPosition || primePositionX != supertile.xCoord || primePositionY != supertile.yCoord || primePositionZ != supertile.zCoord)) + supertile.getWorldObj().setBlockToAir(supertile.xCoord, supertile.yCoord, supertile.zCoord); + } + + public void setPrimusPosition() { + primePositionX = supertile.xCoord; + primePositionY = supertile.yCoord; + primePositionZ = supertile.zCoord; + + savedPosition = true; + } + + @Override + public ArrayList getDrops(ArrayList list) { + if(isPrime()) + list.clear(); + + return super.getDrops(list); + } + @Override public boolean canGeneratePassively() { boolean rain = supertile.getWorldObj().getWorldChunkManager().getBiomeGenAt(supertile.xCoord, supertile.zCoord).getIntRainfall() > 0 && (supertile.getWorldObj().isRaining() || supertile.getWorldObj().isThundering()); @@ -35,7 +71,7 @@ public class SubTileDaybloom extends SubTilePassiveGenerating { @Override public int getDelayBetweenPassiveGeneration() { - return 25 + (int) (getSurroundingFlowers() * 7.5); + return isPrime() ? 22 : (25 + (int) (getSurroundingFlowers() * 7.5)); } public int getSurroundingFlowers() { @@ -61,15 +97,62 @@ public class SubTileDaybloom extends SubTilePassiveGenerating { return flowers; } + + @Override + public void writeToPacketNBT(NBTTagCompound cmp) { + super.writeToPacketNBT(cmp); + + if(isPrime()) { + cmp.setInteger(TAG_PRIME_POSITION_X, primePositionX); + cmp.setInteger(TAG_PRIME_POSITION_Y, primePositionY); + cmp.setInteger(TAG_PRIME_POSITION_Z, primePositionZ); + cmp.setBoolean(TAG_SAVED_POSITION, savedPosition); + } + } + + @Override + public void readFromPacketNBT(NBTTagCompound cmp) { + super.readFromPacketNBT(cmp); + + if(isPrime()) { + primePositionX = cmp.getInteger(TAG_PRIME_POSITION_X); + primePositionY = cmp.getInteger(TAG_PRIME_POSITION_Y); + primePositionZ = cmp.getInteger(TAG_PRIME_POSITION_Z); + savedPosition = cmp.getBoolean(TAG_SAVED_POSITION); + } + } @Override public boolean shouldSyncPassiveGeneration() { return true; } + + @Override + public boolean isPassiveFlower() { + return !isPrime(); + } @Override public LexiconEntry getEntry() { return LexiconData.daybloom; } + + public boolean isPrime() { + return false; + } + + public static class Prime extends SubTileDaybloom { + + @Override + public boolean isPrime() { + return true; + } + + @Override + public LexiconEntry getEntry() { + return LexiconData.primusLoci; + } + + } } diff --git a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileNightshade.java b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileNightshade.java index 94a65572a..607a3e7d0 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileNightshade.java +++ b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileNightshade.java @@ -34,5 +34,19 @@ public class SubTileNightshade extends SubTileDaybloom { public LexiconEntry getEntry() { return LexiconData.nightshade; } + + public static class Prime extends SubTileNightshade { + + @Override + public boolean isPrime() { + return true; + } + + @Override + public LexiconEntry getEntry() { + return LexiconData.primusLoci; + } + + } } diff --git a/src/main/java/vazkii/botania/common/core/handler/BiomeDecorationHandler.java b/src/main/java/vazkii/botania/common/core/handler/BiomeDecorationHandler.java index 08878ac78..5f00d2d6a 100644 --- a/src/main/java/vazkii/botania/common/core/handler/BiomeDecorationHandler.java +++ b/src/main/java/vazkii/botania/common/core/handler/BiomeDecorationHandler.java @@ -16,6 +16,9 @@ import vazkii.botania.api.item.IFlowerlessBiome; import vazkii.botania.api.item.IFlowerlessWorld; import vazkii.botania.common.block.BlockModFlower; import vazkii.botania.common.block.ModBlocks; +import vazkii.botania.common.block.subtile.generating.SubTileDaybloom; +import vazkii.botania.common.block.tile.TileSpecialFlower; +import vazkii.botania.common.lib.LibBlockNames; import cpw.mods.fml.common.eventhandler.Event.Result; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -42,15 +45,25 @@ public class BiomeDecorationHandler { int y = event.world.getTopSolidOrLiquidBlock(x, z); int color = event.rand.nextInt(16); + boolean primus = event.rand.nextInt(500) == 0; + for(int j = 0; j < ConfigHandler.flowerDensity * ConfigHandler.flowerPatchChance; j++) { int x1 = x + event.rand.nextInt(dist * 2) - dist; int y1 = y + event.rand.nextInt(4) - event.rand.nextInt(4); int z1 = z + event.rand.nextInt(dist * 2) - dist; if(event.world.isAirBlock(x1, y1, z1) && (!event.world.provider.hasNoSky || y1 < 127) && ModBlocks.flower.canBlockStay(event.world, x1, y1, z1)) { - event.world.setBlock(x1, y1, z1, ModBlocks.flower, color, 2); - if(event.rand.nextDouble() < ConfigHandler.flowerTallChance && ((BlockModFlower) ModBlocks.flower).func_149851_a(event.world, x1, y1, z1, false)) - BlockModFlower.placeDoubleFlower(event.world, x1, y1, z1, color, 0); + if(primus) { + event.world.setBlock(x1, y1, z1, ModBlocks.specialFlower, 0, 2); + TileSpecialFlower flower = (TileSpecialFlower) event.world.getTileEntity(x1, y1, z1); + flower.setSubTile(event.rand.nextBoolean() ? LibBlockNames.SUBTILE_NIGHTSHADE_PRIME : LibBlockNames.SUBTILE_DAYBLOOM_PRIME); + SubTileDaybloom subtile = (SubTileDaybloom) flower.getSubTile(); + subtile.setPrimusPosition(); + } else { + event.world.setBlock(x1, y1, z1, ModBlocks.flower, color, 2); + if(event.rand.nextDouble() < ConfigHandler.flowerTallChance && ((BlockModFlower) ModBlocks.flower).func_149851_a(event.world, x1, y1, z1, false)) + BlockModFlower.placeDoubleFlower(event.world, x1, y1, z1, color, 0); + } } } } diff --git a/src/main/java/vazkii/botania/common/lexicon/LexiconData.java b/src/main/java/vazkii/botania/common/lexicon/LexiconData.java index 925884496..d446a0938 100644 --- a/src/main/java/vazkii/botania/common/lexicon/LexiconData.java +++ b/src/main/java/vazkii/botania/common/lexicon/LexiconData.java @@ -123,6 +123,7 @@ public final class LexiconData { public static LexiconEntry generatingIntro; public static LexiconEntry passiveGen; + public static LexiconEntry primusLoci; public static LexiconEntry daybloom; public static LexiconEntry nightshade; public static LexiconEntry endoflame; @@ -531,6 +532,10 @@ public final class LexiconData { passiveGen = new BLexiconEntry(LibLexicon.GFLOWER_PASSIVE_GENERATION, categoryGenerationFlowers); passiveGen.setPriority().setLexiconPages(new PageText("0"), new PageText("1")).setIcon(new ItemStack(Blocks.deadbush)); + primusLoci = new BLexiconEntry(LibLexicon.GFLOWER_PRIMUS_LOCI, categoryGenerationFlowers); + primusLoci.setPriority().setLexiconPages(new PageText("0"), new PageText("1")); + primusLoci.setIcon(ItemBlockSpecialFlower.ofType(LibBlockNames.SUBTILE_DAYBLOOM_PRIME)); + daybloom = new BLexiconEntry(LibLexicon.GFLOWER_DAYBLOOM, categoryGenerationFlowers); daybloom.setPriority().setLexiconPages(new PageText("0"), new PageText(ConfigHandler.hardcorePassiveGeneration > 0 ? "1a" : "1"), new PageImage("3", LibResources.ENTRY_DIMINISHING_RETURNS), new PagePetalRecipe("2", ModPetalRecipes.daybloomRecipe), new PageText("4"), new PageText("5")); diff --git a/src/main/java/vazkii/botania/common/lib/LibBlockNames.java b/src/main/java/vazkii/botania/common/lib/LibBlockNames.java index 8b38b1843..8513c8005 100644 --- a/src/main/java/vazkii/botania/common/lib/LibBlockNames.java +++ b/src/main/java/vazkii/botania/common/lib/LibBlockNames.java @@ -109,10 +109,12 @@ public final class LibBlockNames { public static final String SUBTILE_MANASTAR = "manastar"; public static final String SUBTILE_DAYBLOOM = "daybloom"; + public static final String SUBTILE_DAYBLOOM_PRIME = "daybloomPrime"; public static final String SUBTILE_ENDOFLAME = "endoflame"; public static final String SUBTILE_HYDROANGEAS = "hydroangeas"; public static final String SUBTILE_THERMALILY = "thermalily"; public static final String SUBTILE_NIGHTSHADE = "nightshade"; + public static final String SUBTILE_NIGHTSHADE_PRIME = "nightshadePrime"; public static final String SUBTILE_ARCANE_ROSE = "arcanerose"; public static final String SUBTILE_MUNCHDEW = "munchdew"; public static final String SUBTILE_ENTROPINNYUM = "entropinnyum"; diff --git a/src/main/java/vazkii/botania/common/lib/LibLexicon.java b/src/main/java/vazkii/botania/common/lib/LibLexicon.java index a3512b403..b9ad31213 100644 --- a/src/main/java/vazkii/botania/common/lib/LibLexicon.java +++ b/src/main/java/vazkii/botania/common/lib/LibLexicon.java @@ -93,6 +93,7 @@ public final class LibLexicon { public static final String GFLOWER_INTRO = "gIntro"; public static final String GFLOWER_PASSIVE_GENERATION = "passiveGen"; + public static final String GFLOWER_PRIMUS_LOCI = "primusLoci"; public static final String GFLOWER_DAYBLOOM = "daybloom"; public static final String GFLOWER_NIGHTSHADE = "nightshade"; public static final String GFLOWER_ENDOFLAME = "endoflame"; diff --git a/src/main/resources/assets/botania/lang/en_US.lang b/src/main/resources/assets/botania/lang/en_US.lang index 1429cc8fc..bcb495d77 100644 --- a/src/main/resources/assets/botania/lang/en_US.lang +++ b/src/main/resources/assets/botania/lang/en_US.lang @@ -1167,6 +1167,8 @@ tile.botania:flower.daybloom.name=Daybloom tile.botania:flower.daybloom.reference=A Sting of light tile.botania:flower.daybloomDecor.name=Daybloom Motif tile.botania:flower.daybloomDecor.reference=A Sting of light +tile.botania:flower.daybloomPrime.name=Daybloom Primus +tile.botania:flower.daybloomPrime.reference=You should not have this on you tile.botania:flower.endoflame.name=Endoflame tile.botania:flower.endoflame.reference=Squirting Lag tile.botania:flower.hydroangeas.name=Hydroangeas @@ -1177,6 +1179,8 @@ tile.botania:flower.thermalily.name=Thermalily tile.botania:flower.thermalily.reference=A Scarlet Rose indeed tile.botania:flower.nightshade.name=Nightshade tile.botania:flower.nightshade.reference=Ghastly signature +tile.botania:flower.nightshadePrime.name=Nightshade Primus +tile.botania:flower.nightshadePrime.reference=You should not have this on you tile.botania:flower.nightshadeDecor.name=Nightshade Motif tile.botania:flower.nightshadeDecor.reference=Ghastly signature tile.botania:flower.arcanerose.name=Rosa Arcana @@ -2430,6 +2434,12 @@ botania.tagline.passiveGen=It's free or it's good, pick one botania.page.passiveGen0=The spectrum of &4Generating Flowers&0 can be arranged in two groups, &4Passive&0 and &4Active&0.
&4Passive Flowers&0 are those that simply create &4Mana&0 using a completely free resource, such as the sun, or water. &4Active Flowers&0 require some sort of resource to transform into &4Mana&0, be it renewable or not. botania.page.passiveGen1=At the start of a botanist's career, only very basic and rudimentary &4Passive Flowers&0 are available, such as the &1Daybloom&0 or &1Nightshade&0.
These flowers are required to advance on to more potent and effective &4Active Flowers&0, but they should not be relied upon aside from being a stepping stone, as all &4Passive Flowers&0 will decay into a &1Dead Bush&0 after three days of work. +# -- PRIMUS LOCI +botania.entry.primusLoci=Primus Loci +botania.tagline.primusLoci=Rare flower patches with non-decaying flowers +botania.page.primusLoci0=Among one's travels, one might come across an unusual flower patch, with flowers resembling &1Dayblooms&0 and &1Nightshades&0.
This is called a &4Primus Locus&0, a rare occurence in the world, where two special generating flora, the &1Daybloom Primus&0 and &1Nightshade Primus&0 can appear. +botania.page.primusLoci1=These flowers act as normal &1Dayblooms&0 or &1Nightshades&0, however, they produce mana a little bit faster and do not decay, making them a great find for a fledgling botanist to set up camp around.
Primus flowers are incredibly fickle, and as such, attempting to move them off their natural resting place will kill them. + # -- DAYBLOOM botania.entry.daybloom=Daybloom botania.tagline.daybloom=Mana from the sky diff --git a/src/main/resources/assets/botania/textures/blocks/alt/daybloomPrime.png b/src/main/resources/assets/botania/textures/blocks/alt/daybloomPrime.png new file mode 100644 index 0000000000000000000000000000000000000000..f77d6cd64ee4824015243b92935d614cf4f6876b GIT binary patch literal 18746 zcmeI4c{r5a`@kRRMYd?6k{U~!j9Cn0rZJeYW(y;u{V|&fGnkRBL?SJ3lFAloB}$=` zP)MnSXtk6INxk%alk`^jK0`%MHNW@!`@O$EzSlK#UGvP`=RWs+p7S~Pxz9OsUC(S^ z=47KJKT93}03|zHOIPSqMf8@Ffv$7=hC%3KlE1B|007kHiQZCnuDbsM0C{IFmAY)1 zH($sXc=P=cc2p|DKakJn`mz8Zq&eMOI$aLoO4%7XEn&W% z)+CjsaaxC)rn^+AT3JohxRDtry?b}$uIVoNiaX>V$#!TR*&Tf}ZpW=p&%%%TJSZJ_ zQ9E@0A-U^RUwUD^Y`L7`0b4^Cqe#V*lsT$TqpPc~KkG0skCNB*hwi(OsU;ZHkpezM zkVuQQ%VjSEQXzL0~8kx^B1wPI=rX2sj0K0%hCgfG)vmJhDyHjAYj>Fvu-h_q zS0DDc_IAqNMc3vv4l|#(>3@$Y1E{N7B}Rkf?CaSQeHdgI=ki6Q(``7RoG6PvQrmvGj5uTwta$;Eyi^R4dHI9 z`PMXW0%6-K>q`ksZUERVpJPjHF#DnkTukpNo~IUP<7aKPKB91kDa544t7WF$2|PE; zbeHkrt~sKlHCi;^S88!LZrxbIq&pNyOlyu4Venx$M z@Wd%mR^^k7Ck9gx;2aBEx&z(mk!?0&wk}S!c@ln-^j4S31=@+(_UGnbQvIuHh8GsI zjc%*2^I%H+RFq119JLCsJ7qf+yP$Z_1iSoWw8klo){Q(@oo@Y;X*kZ$x<1Z6 zOj9+AUqLy2xXAU4%eL&PxS&)*ZM2%5{qfUB_TQc5t?oU*J@Zm{N%ismIZjD;JQ{1d zZC)n5lztbis1!Rrx;l=taAw*J*%_Rf!86VzJDiw#cjwG%8XAvzo!pf&Ifd^|*DKQ7 zI6dK({Qjl;=kM3hL(xv=oXB~Squ}1>UPFsNxyEf%p0&H7Tl>jL_YUN`=cF%t?WWJ$PtrtHxBTfsU47M@dK}yjCOzAlP~1Q|df)nY>&d&g*H^Xcw)%vBY7CLv`)#+9S0OQjF3}F%Pj_X z^K9oMnU=gFzoJbb$4i}a;ac9+-o&!RO_w(PK4>bdw5>@wS967Cgy3A@G~#mNlhnF{ zy=I%Py*tp2;?V0=>K_@l7fr2MRK-nqOS@~sQRfs3qWj`@Znxi3V~|8PNYl9f_(oaB zQel6<>Stk%{po3iX_YCq z&}RA3@_^-&G!Dj@a0a>5NROOju%6V6zl6JFcHMyOdHX&+oo?rAKbv5nmuJlLz1;S> zr*GTy^ydog;p)k#8>{_857$+`i^)Un-t;NlbLuxwqdz9Vm1i+a-Z&5stghIDFdrsi`>ZOhN~^uM=iK_%5LY$=H@q81;$Lb_PW%DP!syTpukjP{Q9 zk!IZ6`1m~d@B^=*S0lXiJ?@YDEh|e02FW)sx428WJKksCXMM8!R5)Okw>_u(!+}qJ zt4}-m1@u%)H%br6>L?dIEWUSNv(c318vkJNYa8Y2xtE91-vlF-jFsGfKY0DQj=yDS zNB6*_wt+cH#O4jV!cRSuy*qbT4dmb;0ZxAnWy_or`)F!-x=UCWW8@GeGO+xp4;HO)6{YVy?8P!S*QzkXQPklb)M>1|Tt6~B$g2Va%Ho_VI_dgb*wmv4p`V%EG{{;8)T zxHVYw&C#~W&K(;On->my|CQhGb|>po;>^Uv;fd18eV-YI$QA$~b#Q5PA>Gk|$l&`K zfK0v@%OJ$hAKHjQI=#Li~Jr0%C}%_K061^j%bp(ngF_5&D>FTZkG&&>fc{ zsQf?{!pOh~$v|Up2t2_6V}!w(VDu4KG{z8xHbh|zkr*ryO(0^75MN%}WO?WtDUit~ zx>{O)X%3Q1wY`Nxeg1~* zOO}8U$n_U;`8F<6w8<82em1H>@Yv=gOJM}8=UXDAkzG@IaUbw7iJ>OsM$y;jE)cqia#PX zkOd0)fiynfmpmF}W9KL6__WZ2%VY9`1&c^1cva=*ZeK+88nM5=LPhc5C^8#Wr;me`n(SV}mw21HVs%U-S2miIeng zGeM;Ceffcod?t%*NJ9Orcr0kfSwX*bE*t%+lPqwxp&;z6sKywAu`v>BfEn**T)m(A z`MPXaKntHJy9>V0AS2nG0&>1D6+!!wZ~n8jMtqVQS$0PjE&`5#!(t7QOa_|(WegKM z(gcrZAsKi)la0kd8XV*28E>@o`x_pQLtJ-BOa_t75A*|tWUe2`VWIqa91?1*a2!9; zwu}fZnNa!$N0usx`446A`gGCK=NmLyAKFSlFBC>}{bD;_54ZLFA8g0#;kIL@?mVuL z3~g9OZWUHM&Pud<91Tl1=%B+QL!E;c!D}z$hOm6;mRx9)BM>d!7~?NCaK%pzJ%435 zPVvQXbb!YlM@AxZv=ln*K<6yfw}aLXLHljP@K1gj>(M{y73NFQ2n>jLQG!c6ADC8x z3kF2ID8VJ34@@h;1p^{pl;9H22d0(af&mdPN^pti1Jg=y!GMStCAh@%foUbUU_iu+ z5?tc>z_b!vFd*VZ2`=$`U|I<-7!dKI1ebU|Fs%d^42XD9f=fIfm{x)d21L9l!6lv# zOe?_!10r6O;1bUVrj_7=0TC}saEa#w(@Jo`fQT0*xWw~;X(hN|K*Wm@T;ln_v=Uq} zAmT*{F7bR|S_v)~5b>e}mv}xftppbgh z63+*wmEeK_5ig3xB|rA)GK&X2uN(|Ln5^j1xB_~p8Nsl1bp(Jg=>K&hqXFQrVd%3P z0D{l}@M;|Z5R(BwoxgYOHERHn3bM1bpoKK=+goO@<1+1<^I`A8{gvw&=Cg-CO;^B*r6-&VV>T4VF+0lhU!+U7QZueq(2goMmbQ~;eekTZ{EV1; zEhf0WWT2W5zrg&E`|0IVGnLGt2gA~8ox8|#{b7Us1s9#~DbW!W^^yrRz5TJ$z)Z%m z_hv_U<|XH&^{O|@b_NoHi0KWH8_8!T-r@DA%u37FK-X**=I2rlqh~+;bot#9M{nQW zn%q`aS260$lv!!>%$3;j6NimHs$Pq(igrzzk+z`b7#8!f`Nrmd&Cy0V z=}o;`6=}Bl;U4v*BDDndr0`El57&ae=H7qIsmi~@nm|xHoNuIB-tQ3-V18w;#+_|9 z^7k<8b|2q98wf018?IWU77*R>LA4dpR5(;Xic`@wvkaL7tV_+F!pKRPA$kPe&dSL$ JkFsvdzX1qBs>1*P literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/botania/textures/blocks/alt/nightshadePrime.png b/src/main/resources/assets/botania/textures/blocks/alt/nightshadePrime.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0163f7865b6d20fbcf3f76d978e61549c7047c GIT binary patch literal 18618 zcmeI4dpuOz+rYO7xp&i5XIv`D+=nsK7?&aB7Dh(*F|&;cGs8@c%gLc~DNZGo5T~2S ztx}PwD5WUUy(kGuPAcl?l*_vZMZ22!yzhJ7KYpLj%;z&^p7pHfS^N2}XFY4L`Fysm zOI_^LRc5LH0HE$*Z{rSqYDwP8iqPL*dIp)$#{_}Bw-5ld=Stpk4(c(+yD>&LLR4kaOfT#+UC7a-&;GzMecUwyH8a{xLe0ZPDz|+ zq&q=tNu2J%M^oJ@CfeF6%(`|UPJa9L$b_kG#%kMC9xAo!9@@V7aNM@)&&}b7{qL9c zzPLGX<^i=muP6Ofol?27+FpCSn@ObFG3z-KpKY$HyxQD~vW!wO5J1;`imfZ`*Ovo6 zMo=gV^~#kl0CFLBRF#2p=d^On?ASrgSJo*j zzyMQx9VP80*>wOXo$fU+8Zaf^#y04Rh5Yp?0+hX7krfGLZ+y(sS% z7HG8_L8MX&DJ2FZ+o%=F$RH&zFVq~vT8C*1rwY8?(i!|0CUtLrj)bsIa8EC7^6<7j5vnZl|z!-gMX5=Ep$iRU^bGsD$ zR;wOZ-y82+sA+iyIMDIft4APVV|#FC$)iVYt*sB2R9dfKR(ow6;9Oc$?$sagcLb%c z_rtRb&kdq*tD@`_K0dp2frruWTT??+vy*qj+67*#?arcJS`>qqi%)0!lZZu#Pzr-ZhDT1CiYnOZFGdE zy-v4z@HkTJ%Ejjr7hMBzoBCqP?6A9|3f;`_s-2;gWD{p@S$s(K7F&c(-JyLT?N;#V zndS+m2itGu`e{DiL8Vn;%3n@b!dC`hP**QopENU`ki@Dvsh6jgdv)fCWqI={lBmxuP*h}i~&iH|1`C&+JcyEI=fDckY%ymJ%(uAJ_J z!^Se~jrH$O+A$fe6&^>cBpOWGO2f@B**VVPQn|byllx_X?GCAIqR4A3dHMx>v7TGNVnajnJkD?!#Gm9!_->X7?#JC?vnLbQr;=`N)^>2r%s;f}&P=~)e!bk|FGc4jKG`$JCHa=u z?V1j|m&q^X-;34MW2SDdisKm0NSm%Soijr`{rEnoqciTr�nfh}h13?J1fmd{2f^ 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 D3{QmX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/botania/textures/blocks/daybloomPrime.png b/src/main/resources/assets/botania/textures/blocks/daybloomPrime.png new file mode 100644 index 0000000000000000000000000000000000000000..421b3825a786fbec781fadb2e76b78313f7c2826 GIT binary patch literal 17949 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 Y>cFn`oUo?9_;=abSvgsjT6pjHH%;og2LJ#7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/botania/textures/blocks/nightshadePrime.png b/src/main/resources/assets/botania/textures/blocks/nightshadePrime.png new file mode 100644 index 0000000000000000000000000000000000000000..e55f82462eccf7ee0c7cbd47d5f6a08b65c4dfab GIT binary patch literal 17940 zcmeI3c|6qH|HnTr*|MdilJ1}+nca+L8ef(2)OACGP0&+C28d7kq=pY!?S zv)g5*t+L`gMF0Sl?d`1Gz+biTue>aH{dI7R4*n?c?Yx8lpi(vdl{&aoMGF8FojDYW zi;Evm#1s1Q_%M441;!Wfd^rIu00?PGcV|=GduE#sJ$Ym45F2s8f#;?n4|B7OiXc7wjx&N=pzl+>ocsaWwdHDW2NKcBlc>z8Y%5jd??qcb1Z)6@z_1LK0MoU-2Z;* z(2Kg!ix0@%`Ge_&4RYo3N{8&QuDA%L9LohWp6;xvs(#jqFppGR$Orpf$kY*z=t%*? z;Uv;h-Ez6BfKGD9iQ(8G{e$1HaE6c;)QW3kP%0-FG9ONTr0p?-xmL~yo8>xu& z6n%FfQwG>@o8i*|xWIu8i?_eH2SlU~AKoGbtT~{gA(fd3z-F>ytpLB}Kz_rjJ=OpX z1-CvvMbh?dyWLW3nzUX zdi(V1^M#R^wUM?m!%r*jym8E$->_d{mrvV^1ly07rjLEpzNcGd?^8@OoYmo~9u#kt zx_1zhrMug5|B@Svn#P#V+l@X*liP8?*^OkWEs5|`YZ=miJ1kbCiOQc30l+{B@A@AG z^3oB0JD)WKkM*04*k&#QB7E)l2LZr3tAz;atwOUJc>u7=j5IuJq4nna9HVmC`PZkl zU7!AO1Adp~!m0{OHA_Wi#C*YqCHXrn4WjGLY8!4q{$Z|dT<+=@oy1o`RCrugG3Bei zr^{ztHz}KpNS6zohoE_S24;AKN zr#)aQ_=OPTZF41Yc`bn1@iDs87JVS{ysPOSN*5``r%dMUvN<;WE>na~O_-gTc2{s= zp6Oov(eAr>eyS}AWJ(RH{N)@uY*hdXQC(?yZkdrn665wc-F&6I>Un2ZY$ z7c8S5X>mkG9n(HB_Q(HvK#bVv0Qw|sOugrK?HOB{o zj-lBZ>D^aPn2A)|5=*HvS*X67f>~U=?-%=XC#X&8O*TzjH@zOCoHS#*d3s4VTbTam z

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 I<%S*q4bM%!0ssI2 literal 0 HcmV?d00001