From 65b205404f9f3c112f02814d004c5dc84cc049c8 Mon Sep 17 00:00:00 2001 From: jkugler Date: Sun, 15 Mar 2026 23:28:13 +0900 Subject: [PATCH 1/8] entropinnyum itnt --- gradle/gradle-daemon-jvm.properties | 20 ++-- gradle/wrapper/gradle-wrapper.jar | Bin 45633 -> 48966 bytes gradlew | 2 +- settings.gradle | 2 +- .../generating/SubTileEntropinnyum.java | 96 +++++++++++++----- 5 files changed, 85 insertions(+), 35 deletions(-) diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties index b30b550740..5d973bb23b 100644 --- a/gradle/gradle-daemon-jvm.properties +++ b/gradle/gradle-daemon-jvm.properties @@ -1,12 +1,12 @@ #This file is generated by updateDaemonJvm -toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/df211d3c3eefdc408b462041881bc575/redirect -toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/b41931cf1e70bc8e08d7dd19c343ef00/redirect -toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/df211d3c3eefdc408b462041881bc575/redirect -toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/b41931cf1e70bc8e08d7dd19c343ef00/redirect -toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/46949723aaa20c7b64d7ecfed7207034/redirect -toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/d6690dfd71c4c91e08577437b5b2beb0/redirect -toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/df211d3c3eefdc408b462041881bc575/redirect -toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/b41931cf1e70bc8e08d7dd19c343ef00/redirect -toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/3cd7045fca9a72cd9bc7d14a385e594c/redirect -toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/552c7bffe0370c66410a51c55985b511/redirect +toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect +toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/5ee463876563a46fff651cce1bc53a4c/redirect +toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect +toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/5ee463876563a46fff651cce1bc53a4c/redirect +toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/d4fd992c9557644e637ebe98263e0ae7/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/faa12903720d410b387cc69ccafb1a74/redirect +toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/cd495626d2ee49a75447e3fdc6afb287/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/a4c09dd2e2d7079373d30e524bbc2829/redirect +toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/8e1d9ee5d0f13e442218f6884a306da1/redirect toolchainVersion=25 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f8e1ee3125fe0768e9a76ee977ac089eb657005e..d997cfc60f4cff0e7451d19d49a82fa986695d07 100644 GIT binary patch delta 39855 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 N2q(zEpY4qk{{xkq;s5{u diff --git a/gradlew b/gradlew index adff685a03..0262dcbd52 100755 --- a/gradlew +++ b/gradlew @@ -57,7 +57,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/b631911858264c0b6e4d6603d677ff5218766cee/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. diff --git a/settings.gradle b/settings.gradle index 035355de67..407aea2219 100644 --- a/settings.gradle +++ b/settings.gradle @@ -17,7 +17,7 @@ pluginManagement { } plugins { - id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.23' + id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.24' } diff --git a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java index 92a90e24c4..a88deb2da4 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java +++ b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java @@ -26,6 +26,7 @@ import vazkii.botania.api.subtile.SubTileGenerating; import vazkii.botania.common.Botania; import vazkii.botania.common.lexicon.LexiconData; +import ic2.core.block.EntityIC2Explosive; public class SubTileEntropinnyum extends SubTileGenerating { @@ -36,29 +37,78 @@ public SubTileEntropinnyum() { private static final int RANGE = 12; @Override - public void onUpdate() { - super.onUpdate(); - - if(mana == 0) { - List tnts = supertile.getWorldObj().getEntitiesWithinAABB(EntityTNTPrimed.class, AxisAlignedBB.getBoundingBox(supertile.xCoord - RANGE, supertile.yCoord - RANGE, supertile.zCoord - RANGE, supertile.xCoord + RANGE + 1, supertile.yCoord + RANGE + 1, supertile.zCoord + RANGE + 1)); - for(EntityTNTPrimed tnt : tnts) { - if(tnt.fuse == 1 && !tnt.isDead && !supertile.getWorldObj().getBlock(MathHelper.floor_double(tnt.posX), MathHelper.floor_double(tnt.posY), MathHelper.floor_double(tnt.posZ)).getMaterial().isLiquid()) { - if(!supertile.getWorldObj().isRemote) { - tnt.setDead(); - mana += getMaxMana(); - supertile.getWorldObj().playSoundEffect(tnt.posX, tnt.posY, tnt.posZ, "random.explode", 0.2F, (1F + (supertile.getWorldObj().rand.nextFloat() - supertile.getWorldObj().rand.nextFloat()) * 0.2F) * 0.7F); - sync(); - } - - for(int i = 0; i < 50; i++) - Botania.proxy.sparkleFX(tnt.worldObj, tnt.posX + Math.random() * 4 - 2, tnt.posY + Math.random() * 4 - 2, tnt.posZ + Math.random() * 4 - 2, 1F, (float) Math.random() * 0.25F, (float) Math.random() * 0.25F, (float) (Math.random() * 0.65F + 1.25F), 12); - - supertile.getWorldObj().spawnParticle("hugeexplosion", tnt.posX, tnt.posY, tnt.posZ, 1D, 0D, 0D); - return; - } - } - } - } + public void onUpdate() { + super.onUpdate(); + if(mana == 0) { + AxisAlignedBB box = AxisAlignedBB.getBoundingBox( + supertile.xCoord - RANGE, + supertile.yCoord - RANGE, + supertile.zCoord - RANGE, + supertile.xCoord + RANGE + 1, + supertile.yCoord + RANGE + 1, + supertile.zCoord + RANGE + 1); + if (!processVanillaTNT(box)) processIC2Explosive(box); + } + } + + // can't unify these because something something type safety + private boolean processVanillaTNT(AxisAlignedBB box){ + List tntList = supertile.getWorldObj() + .getEntitiesWithinAABB(EntityTNTPrimed.class, box); + for (EntityTNTPrimed tnt : tntList) { + if (tnt.fuse == 1 && !tnt.isDead && validLocation(tnt)) { + handleExplosion(tnt); + return true; + } + } return false; + } + + // can't unify with vanilla because EntityIC2Explosive directly inherits Entity + private boolean processIC2Explosive(AxisAlignedBB box) { + // for iTNT and nukes lul + List tntList = supertile.getWorldObj() + .getEntitiesWithinAABB(EntityIC2Explosive.class, box); + for (EntityIC2Explosive tnt : tntList) { + if (tnt.fuse == 1 && !tnt.isDead && validLocation(tnt)) { + handleExplosion(tnt); + return true; + } + } return false; + } + + private boolean validLocation(Entity tnt) { + return !supertile.getWorldObj().getBlock( + MathHelper.floor_double(tnt.posX), + MathHelper.floor_double(tnt.posY), + MathHelper.floor_double(tnt.posZ)).getMaterial().isLiquid(); + } + + private void handleExplosion(Entity tnt) { + if (!supertile.getWorldObj().isRemote) { + tnt.setDead(); mana += getMaxMana(); + supertile.getWorldObj().playSoundEffect( + tnt.posX, tnt.posY, tnt.posZ, + "random.explode", + 0.2F, + (1F + (supertile.getWorldObj().rand.nextFloat() - supertile.getWorldObj().rand.nextFloat()) * 0.2F) * 0.7F); + sync(); + } + for (int i = 0; i < 50; i++) + Botania.proxy.sparkleFX( + tnt.worldObj, + tnt.posX + Math.random() * 4 - 2, + tnt.posY + Math.random() * 4 - 2, + tnt.posZ + Math.random() * 4 - 2, + 1F, + (float) Math.random() * 0.25F, + (float) Math.random() * 0.25F, + (float) (Math.random() * 0.65F + 1.25F), + 12); + supertile.getWorldObj().spawnParticle( + "hugeexplosion", + tnt.posX, tnt.posY, tnt.posZ, + 1D, 0D, 0D); + } @Override public int getColor() { From 6a69c3b54d51bdf499a5af7b44f38ca3bcabb8a0 Mon Sep 17 00:00:00 2001 From: jkugler Date: Mon, 16 Mar 2026 00:05:16 +0900 Subject: [PATCH 2/8] fix nuke crash --- .../common/block/subtile/generating/SubTileEntropinnyum.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java index a88deb2da4..37c9bf338d 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java +++ b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java @@ -152,7 +152,7 @@ private boolean processExplosion(World world, Entity explosionSource, double pos return false; } - explosionSource.setDead(); + if (explosionSource != null) explosionSource.setDead(); mana += getMaxMana(); supertile.getWorldObj().playSoundEffect(posX, posY, posZ, "random.explode", 0.2F, (1F + (supertile.getWorldObj().rand.nextFloat() - supertile.getWorldObj().rand.nextFloat()) * 0.2F) * 0.7F); sync(); From 4d4315685cab4e93f677951f9e450514cddcdf3b Mon Sep 17 00:00:00 2001 From: jkugler Date: Mon, 16 Mar 2026 00:18:55 +0900 Subject: [PATCH 3/8] do not eat nuclear meltdowns --- .../common/block/subtile/generating/SubTileEntropinnyum.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java index 37c9bf338d..4de5fd3cad 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java +++ b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java @@ -152,7 +152,10 @@ private boolean processExplosion(World world, Entity explosionSource, double pos return false; } - if (explosionSource != null) explosionSource.setDead(); + // ic2 reactor explosion will not be eaten + if (explosionSource == null) return false; + + explosionSource.setDead(); mana += getMaxMana(); supertile.getWorldObj().playSoundEffect(posX, posY, posZ, "random.explode", 0.2F, (1F + (supertile.getWorldObj().rand.nextFloat() - supertile.getWorldObj().rand.nextFloat()) * 0.2F) * 0.7F); sync(); From 81a3525e6151da9cde0649f663cf2342a649bca7 Mon Sep 17 00:00:00 2001 From: jkugler Date: Mon, 16 Mar 2026 19:29:53 +0900 Subject: [PATCH 4/8] make SubTileGenerating marginally more readable why yes, I do enjoy code that is three times wider than my screen, how could you tell? --- .../api/subtile/SubTileGenerating.java | 114 ++++++++++++------ 1 file changed, 78 insertions(+), 36 deletions(-) diff --git a/src/main/java/vazkii/botania/api/subtile/SubTileGenerating.java b/src/main/java/vazkii/botania/api/subtile/SubTileGenerating.java index 02f7a23afc..646dab0c4f 100644 --- a/src/main/java/vazkii/botania/api/subtile/SubTileGenerating.java +++ b/src/main/java/vazkii/botania/api/subtile/SubTileGenerating.java @@ -69,58 +69,95 @@ public void onUpdate() { linkCollector(); - if(canGeneratePassively()) { + if (canGeneratePassively()) { int delay = getDelayBetweenPassiveGeneration(); - if(delay > 0 && ticksExisted % delay == 0 && !supertile.getWorldObj().isRemote) { - if(shouldSyncPassiveGeneration()) + if (delay > 0 && ticksExisted % delay == 0 && !supertile.getWorldObj().isRemote) { + if (shouldSyncPassiveGeneration()) sync(); addMana(getValueForPassiveGeneration()); } } emptyManaIntoCollector(); - if(acceptsRedstone()) { + if (acceptsRedstone()) { redstoneSignal = 0; for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - int redstoneSide = supertile.getWorldObj().getIndirectPowerLevelTo(supertile.xCoord + dir.offsetX, supertile.yCoord + dir.offsetY, supertile.zCoord + dir.offsetZ, dir.ordinal()); + int redstoneSide = supertile.getWorldObj().getIndirectPowerLevelTo( + supertile.xCoord + dir.offsetX, + supertile.yCoord + dir.offsetY, + supertile.zCoord + dir.offsetZ, + dir.ordinal()); redstoneSignal = Math.max(redstoneSignal, redstoneSide); } } - if(supertile.getWorldObj().isRemote) { + if (supertile.getWorldObj().isRemote) { double particleChance = 1F - (double) mana / (double) getMaxMana() / 3.5F; - Color color = new Color(getColor()); - if(Math.random() > particleChance) - BotaniaAPI.internalHandler.sparkleFX(supertile.getWorldObj(), supertile.xCoord + 0.3 + Math.random() * 0.5, supertile.yCoord + 0.5 + Math.random() * 0.5, supertile.zCoord + 0.3 + Math.random() * 0.5, color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, (float) Math.random(), 5); + if (Math.random() > particleChance){ + Color color = new Color(getColor()); + BotaniaAPI.internalHandler.sparkleFX( + supertile.getWorldObj(), + supertile.xCoord + 0.3 + Math.random() * 0.5, + supertile.yCoord + 0.5 + Math.random() * 0.5, + supertile.zCoord + 0.3 + Math.random() * 0.5, + color.getRed() / 255F, + color.getGreen() / 255F, + color.getBlue() / 255F, + (float) Math.random(), 5); + } } boolean passive = isPassiveFlower(); - if(!supertile.getWorldObj().isRemote) { + if (!supertile.getWorldObj().isRemote) { int muhBalance = BotaniaAPI.internalHandler.getPassiveFlowerDecay(); - if(passive && muhBalance > 0 && passiveDecayTicks > muhBalance) { - supertile.getWorldObj().playAuxSFX(2001, supertile.xCoord, supertile.yCoord, supertile.zCoord, Block.getIdFromBlock(supertile.getBlockType())); - if(supertile.getWorldObj().getBlock(supertile.xCoord, supertile.yCoord - 1, supertile.zCoord).isSideSolid(supertile.getWorldObj(), supertile.xCoord, supertile.yCoord - 1, supertile.zCoord, ForgeDirection.UP)) - supertile.getWorldObj().setBlock(supertile.xCoord, supertile.yCoord, supertile.zCoord, Blocks.deadbush); + if (passive && muhBalance > 0 && passiveDecayTicks > muhBalance) { + supertile.getWorldObj().playAuxSFX( + 2001, + supertile.xCoord, + supertile.yCoord, + supertile.zCoord, + Block.getIdFromBlock(supertile.getBlockType())); + if ( + supertile.getWorldObj().getBlock( + supertile.xCoord, + supertile.yCoord - 1, + supertile.zCoord).isSideSolid(supertile.getWorldObj(), + supertile.xCoord, + supertile.yCoord - 1, + supertile.zCoord, + ForgeDirection.UP) + ) + supertile.getWorldObj().setBlock( + supertile.xCoord, + supertile.yCoord, + supertile.zCoord, + Blocks.deadbush); else supertile.getWorldObj().setBlockToAir(supertile.xCoord, supertile.yCoord, supertile.zCoord); } } - if(!overgrowth && passive) + if (!overgrowth && passive) passiveDecayTicks++; } public void linkCollector() { boolean needsNew = false; - if(linkedCollector == null) { + if (linkedCollector == null) { needsNew = true; - if(cachedCollectorCoordinates != null) { + if (cachedCollectorCoordinates != null) { needsNew = false; - if(supertile.getWorldObj().blockExists(cachedCollectorCoordinates.posX, cachedCollectorCoordinates.posY, cachedCollectorCoordinates.posZ)) { + if (supertile.getWorldObj().blockExists( + cachedCollectorCoordinates.posX, + cachedCollectorCoordinates.posY, + cachedCollectorCoordinates.posZ)) { needsNew = true; - TileEntity tileAt = supertile.getWorldObj().getTileEntity(cachedCollectorCoordinates.posX, cachedCollectorCoordinates.posY, cachedCollectorCoordinates.posZ); - if(tileAt != null && tileAt instanceof IManaCollector && !tileAt.isInvalid()) { + TileEntity tileAt = supertile.getWorldObj().getTileEntity( + cachedCollectorCoordinates.posX, + cachedCollectorCoordinates.posY, + cachedCollectorCoordinates.posZ); + if (tileAt != null && tileAt instanceof IManaCollector && !tileAt.isInvalid()) { linkedCollector = tileAt; needsNew = false; } @@ -129,14 +166,14 @@ public void linkCollector() { } } else { TileEntity tileAt = supertile.getWorldObj().getTileEntity(linkedCollector.xCoord, linkedCollector.yCoord, linkedCollector.zCoord); - if(tileAt != null && tileAt instanceof IManaCollector) + if (tileAt != null && tileAt instanceof IManaCollector) linkedCollector = tileAt; } - if(needsNew && ticksExisted == 1) { // New flowers only + if (needsNew && ticksExisted == 1) { // New flowers only IManaNetwork network = BotaniaAPI.internalHandler.getManaNetworkInstance(); int size = network.getAllCollectorsInWorld(supertile.getWorldObj()).size(); - if(BotaniaAPI.internalHandler.shouldForceCheck() || size != sizeLastCheck) { + if (BotaniaAPI.internalHandler.shouldForceCheck() || size != sizeLastCheck) { ChunkCoordinates coords = new ChunkCoordinates(supertile.xCoord, supertile.yCoord, supertile.zCoord); linkedCollector = network.getClosestCollector(coords, supertile.getWorldObj(), RANGE); sizeLastCheck = size; @@ -153,9 +190,9 @@ public void addMana(int mana) { } public void emptyManaIntoCollector() { - if(linkedCollector != null && isValidBinding()) { + if (linkedCollector != null && isValidBinding()) { IManaCollector collector = (IManaCollector) linkedCollector; - if(!collector.isFull() && mana > 0) { + if (!collector.isFull() && mana > 0) { int manaval = Math.min(mana, collector.getMaxMana() - collector.getCurrentMana()); mana -= manaval; collector.recieveMana(manaval); @@ -191,10 +228,10 @@ public ArrayList getDrops(ArrayList list) { } public void populateDropStackNBTs(List drops) { - if(isPassiveFlower() && ticksExisted > 0 && BotaniaAPI.internalHandler.getPassiveFlowerDecay() > 0) { + if (isPassiveFlower() && ticksExisted > 0 && BotaniaAPI.internalHandler.getPassiveFlowerDecay() > 0) { ItemStack drop = drops.get(0); - if(drop != null) { - if(!drop.hasTagCompound()) + if (drop != null) { + if (!drop.hasTagCompound()) drop.setTagCompound(new NBTTagCompound()); NBTTagCompound cmp = drop.getTagCompound(); cmp.setInteger(TAG_PASSIVE_DECAY_TICKS, passiveDecayTicks); @@ -205,7 +242,7 @@ public void populateDropStackNBTs(List drops) { @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack) { super.onBlockPlacedBy(world, x, y, z, entity, stack); - if(isPassiveFlower()) { + if (isPassiveFlower()) { NBTTagCompound cmp = stack.getTagCompound(); passiveDecayTicks = cmp.getInteger(TAG_PASSIVE_DECAY_TICKS); } @@ -213,10 +250,10 @@ public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase e @Override public boolean onWanded(EntityPlayer player, ItemStack wand) { - if(player == null) + if (player == null) return false; - if(!player.worldObj.isRemote) + if (!player.worldObj.isRemote) sync(); knownMana = mana; @@ -251,7 +288,7 @@ public void writeToPacketNBT(NBTTagCompound cmp) { cmp.setInteger(TAG_TICKS_EXISTED, ticksExisted); cmp.setInteger(TAG_PASSIVE_DECAY_TICKS, passiveDecayTicks); - if(cachedCollectorCoordinates != null) { + if (cachedCollectorCoordinates != null) { cmp.setInteger(TAG_COLLECTOR_X, cachedCollectorCoordinates.posX); cmp.setInteger(TAG_COLLECTOR_Y, cachedCollectorCoordinates.posY); cmp.setInteger(TAG_COLLECTOR_Z, cachedCollectorCoordinates.posZ); @@ -268,7 +305,7 @@ public void writeToPacketNBT(NBTTagCompound cmp) { @Override public ChunkCoordinates getBinding() { - if(linkedCollector == null) + if (linkedCollector == null) return null; return new ChunkCoordinates(linkedCollector.xCoord, linkedCollector.yCoord, linkedCollector.zCoord); } @@ -284,9 +321,9 @@ public boolean bindTo(EntityPlayer player, ItemStack wand, int x, int y, int z, range *= range; double dist = (x - supertile.xCoord) * (x - supertile.xCoord) + (y - supertile.yCoord) * (y - supertile.yCoord) + (z - supertile.zCoord) * (z - supertile.zCoord); - if(range >= dist) { + if (range >= dist) { TileEntity tile = player.worldObj.getTileEntity(x, y, z); - if(tile instanceof IManaCollector) { + if (tile instanceof IManaCollector) { linkedCollector = tile; return true; } @@ -297,7 +334,12 @@ public boolean bindTo(EntityPlayer player, ItemStack wand, int x, int y, int z, public boolean isValidBinding() { - return linkedCollector != null && !linkedCollector.isInvalid() && supertile.getWorldObj().getTileEntity(linkedCollector.xCoord, linkedCollector.yCoord, linkedCollector.zCoord) == linkedCollector; + return linkedCollector != null && + !linkedCollector.isInvalid() && + supertile.getWorldObj().getTileEntity( + linkedCollector.xCoord, + linkedCollector.yCoord, + linkedCollector.zCoord) == linkedCollector; } @Override From 0db5c0a1c55e74c7fa5e9a97b368564b84105bae Mon Sep 17 00:00:00 2001 From: jkugler Date: Mon, 16 Mar 2026 20:31:35 +0900 Subject: [PATCH 5/8] SubTileReiujia --- gradle/gradle-daemon-jvm.properties | 6 +- .../api/subtile/SubTileGenerating.java | 3 +- .../generating/SubTileEntropinnyum.java | 8 +- .../subtile/generating/SubTileReiujia.java | 125 ++++++++++++++++++ .../botania/common/lexicon/LexiconData.java | 1 + 5 files changed, 136 insertions(+), 7 deletions(-) create mode 100644 src/main/java/vazkii/botania/common/block/subtile/generating/SubTileReiujia.java diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties index 5d973bb23b..0e9e9a4131 100644 --- a/gradle/gradle-daemon-jvm.properties +++ b/gradle/gradle-daemon-jvm.properties @@ -4,9 +4,9 @@ toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/5ee463876563a toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/5ee463876563a46fff651cce1bc53a4c/redirect toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/d4fd992c9557644e637ebe98263e0ae7/redirect -toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/faa12903720d410b387cc69ccafb1a74/redirect +toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/59a9771cad43219260d9aac9a8ec4d6a/redirect toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect -toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/cd495626d2ee49a75447e3fdc6afb287/redirect -toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/a4c09dd2e2d7079373d30e524bbc2829/redirect +toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/5ee463876563a46fff651cce1bc53a4c/redirect +toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/3689d0bcdd77ac01674ba3c9dbbe94d0/redirect toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/8e1d9ee5d0f13e442218f6884a306da1/redirect toolchainVersion=25 diff --git a/src/main/java/vazkii/botania/api/subtile/SubTileGenerating.java b/src/main/java/vazkii/botania/api/subtile/SubTileGenerating.java index 646dab0c4f..668a5c5e7c 100644 --- a/src/main/java/vazkii/botania/api/subtile/SubTileGenerating.java +++ b/src/main/java/vazkii/botania/api/subtile/SubTileGenerating.java @@ -151,7 +151,8 @@ public void linkCollector() { if (supertile.getWorldObj().blockExists( cachedCollectorCoordinates.posX, cachedCollectorCoordinates.posY, - cachedCollectorCoordinates.posZ)) { + cachedCollectorCoordinates.posZ) + ) { needsNew = true; TileEntity tileAt = supertile.getWorldObj().getTileEntity( cachedCollectorCoordinates.posX, diff --git a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java index 4de5fd3cad..33f4452fb2 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java +++ b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java @@ -85,7 +85,8 @@ private boolean validLocation(Entity tnt) { private void handleExplosion(Entity tnt) { if (!supertile.getWorldObj().isRemote) { - tnt.setDead(); mana += getMaxMana(); + tnt.setDead(); + mana += getMaxMana(); supertile.getWorldObj().playSoundEffect( tnt.posX, tnt.posY, tnt.posZ, "random.explode", @@ -93,7 +94,7 @@ private void handleExplosion(Entity tnt) { (1F + (supertile.getWorldObj().rand.nextFloat() - supertile.getWorldObj().rand.nextFloat()) * 0.2F) * 0.7F); sync(); } - for (int i = 0; i < 50; i++) + for (int i = 0; i < 50; i++) { Botania.proxy.sparkleFX( tnt.worldObj, tnt.posX + Math.random() * 4 - 2, @@ -103,7 +104,8 @@ private void handleExplosion(Entity tnt) { (float) Math.random() * 0.25F, (float) Math.random() * 0.25F, (float) (Math.random() * 0.65F + 1.25F), - 12); + 12); + } supertile.getWorldObj().spawnParticle( "hugeexplosion", tnt.posX, tnt.posY, tnt.posZ, diff --git a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileReiujia.java b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileReiujia.java new file mode 100644 index 0000000000..47615e0fa5 --- /dev/null +++ b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileReiujia.java @@ -0,0 +1,125 @@ + +package vazkii.botania.common.block.subtile.generating; + +import java.util.List; + +import cpw.mods.fml.common.Optional; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityTNTPrimed; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.world.ExplosionEvent; +import vazkii.botania.api.lexicon.LexiconEntry; +import vazkii.botania.api.subtile.RadiusDescriptor; +import vazkii.botania.api.subtile.SubTileGenerating; +import vazkii.botania.common.Botania; +import vazkii.botania.common.lexicon.LexiconData; +import ic2.core.block.EntityIC2Explosive; + +public class SubTileReiujia extends SubTileEntropinnyum { + + public SubTileReiujia() { + MinecraftForge.EVENT_BUS.register(new EventHandler()); + } + + private static final int RANGE = 12; + + private void handleExplosion(Entity tnt) { + if (!supertile.getWorldObj().isRemote) { + tnt.setDead(); + mana += super.getMaxMana(); + supertile.getWorldObj().playSoundEffect( + tnt.posX, tnt.posY, tnt.posZ, + "random.explode", + 0.2F, + (1F + (supertile.getWorldObj().rand.nextFloat() - supertile.getWorldObj().rand.nextFloat()) * 0.2F) * 0.7F); + sync(); + } + for (int i = 0; i < 50; i++){ + Botania.proxy.sparkleFX( + tnt.worldObj, + tnt.posX + Math.random() * 4 - 2, + tnt.posY + Math.random() * 4 - 2, + tnt.posZ + Math.random() * 4 - 2, + 1F, + (float) Math.random() * 0.25F, + (float) Math.random() * 0.25F, + (float) (Math.random() * 0.65F + 1.25F), + 12); + } + supertile.getWorldObj().spawnParticle( + "hugeexplosion", + tnt.posX, tnt.posY, tnt.posZ, + 1D, 0D, 0D); + } + + @Override + public int getMaxMana() { + return 100*super.getMaxMana(); + } + + @Override + public LexiconEntry getEntry() { + return LexiconData.reiujia; + } + + public class EventHandler { + + @SubscribeEvent + public void consumeExplosion(ExplosionEvent.Start event) { + // duplicate code from SubTileEntropinnyum.EventHandler.consumeExplosion + if(processExplosion(event.world, event.explosion.exploder, event.explosion.explosionX, event.explosion.explosionY, event.explosion.explosionZ)) { + event.setCanceled(true); + } + } + + @SubscribeEvent + @Optional.Method(modid = "IC2") + public void consumeExplosionIC2(ic2.api.event.ExplosionEvent event) { + if(processExplosion(event.world, event.entity, event.x, event.y, event.z, event.power)) { + event.setCanceled(true); + } + } + + private boolean processExplosion(World world, Entity explosionSource, double posX, double posY, double posZ) { + return processExplosion(world, explosionSource, posX, posY, posZ, 0); + } + + private boolean processExplosion(World world, Entity explosionSource, double posX, double posY, double posZ, double power) { + if (world.isRemote || mana != 0 || !(Math.abs(supertile.xCoord - posX) <= RANGE && Math.abs(supertile.yCoord - posY) <= RANGE && Math.abs(supertile.zCoord - posZ) <= RANGE)) { + return false; + } + + int entropinnyumMaxMana = SubTileReiujia.super.getMaxMana(); + + if (explosionSource != null){ + explosionSource.setDead(); + mana += entropinnyumMaxMana; + } else { + // ic2 reactor meltdowns have no explosionSource entity + // so assume that that's what happened if we're here + // + // regarding power + // per config nuclear explosion power is capped at 100, where a tnt is 4 + // the factor of 0.25 is not here because stronger flower and radiation I guess + mana += entropinnyumMaxMana * (int)power; + } + + + supertile.getWorldObj().playSoundEffect(posX, posY, posZ, "random.explode", 0.2F, (1F + (supertile.getWorldObj().rand.nextFloat() - supertile.getWorldObj().rand.nextFloat()) * 0.2F) * 0.7F); + sync(); + + for(int i = 0; i < 50; i++) { + Botania.proxy.sparkleFX(world, posX + Math.random() * 4 - 2, posY + Math.random() * 4 - 2, posZ + Math.random() * 4 - 2, 1F, (float) Math.random() * 0.25F, (float) Math.random() * 0.25F, (float) (Math.random() * 0.65F + 1.25F), 12); + } + + supertile.getWorldObj().spawnParticle("hugeexplosion", posX, posY, posZ, 1D, 0D, 0D); + return true; + } + + } + +} \ No newline at end of file diff --git a/src/main/java/vazkii/botania/common/lexicon/LexiconData.java b/src/main/java/vazkii/botania/common/lexicon/LexiconData.java index e86c49f457..f0a06b4771 100644 --- a/src/main/java/vazkii/botania/common/lexicon/LexiconData.java +++ b/src/main/java/vazkii/botania/common/lexicon/LexiconData.java @@ -138,6 +138,7 @@ public final class LexiconData { public static LexiconEntry spectrolus; public static LexiconEntry rafflowsia; public static LexiconEntry dandelifeon; + public static LexiconEntry reiujia; public static LexiconEntry pylon; public static LexiconEntry manaEnchanting; From e07d9e1351c83ffedbcc240f1c3b1103dec6dc06 Mon Sep 17 00:00:00 2001 From: jkugler Date: Mon, 16 Mar 2026 22:05:40 +0900 Subject: [PATCH 6/8] add to enums, book entry, texture --- .../botania/common/block/BlockSpecialFlower.java | 1 + .../vazkii/botania/common/block/ModBlocks.java | 2 ++ .../botania/common/lexicon/LexiconData.java | 3 +++ .../vazkii/botania/common/lib/LibBlockNames.java | 1 + .../vazkii/botania/common/lib/LibLexicon.java | 1 + src/main/resources/assets/botania/lang/en_US.lang | 6 ++++++ .../assets/botania/textures/blocks/reiujia.png | Bin 0 -> 500 bytes 7 files changed, 14 insertions(+) create mode 100644 src/main/resources/assets/botania/textures/blocks/reiujia.png diff --git a/src/main/java/vazkii/botania/common/block/BlockSpecialFlower.java b/src/main/java/vazkii/botania/common/block/BlockSpecialFlower.java index 87c1e9e3bd..fff70206d6 100644 --- a/src/main/java/vazkii/botania/common/block/BlockSpecialFlower.java +++ b/src/main/java/vazkii/botania/common/block/BlockSpecialFlower.java @@ -75,6 +75,7 @@ public class BlockSpecialFlower extends BlockFlower implements ITileEntityProvid LibBlockNames.SUBTILE_SPECTROLUS, LibBlockNames.SUBTILE_RAFFLOWSIA, LibBlockNames.SUBTILE_DANDELIFEON, + LibBlockNames.SUBTILE_REIUJIA, // Functional LibBlockNames.SUBTILE_JADED_AMARANTHUS, diff --git a/src/main/java/vazkii/botania/common/block/ModBlocks.java b/src/main/java/vazkii/botania/common/block/ModBlocks.java index a8c3636310..439d6090f8 100644 --- a/src/main/java/vazkii/botania/common/block/ModBlocks.java +++ b/src/main/java/vazkii/botania/common/block/ModBlocks.java @@ -114,6 +114,7 @@ import vazkii.botania.common.block.subtile.generating.SubTileNarslimmus; import vazkii.botania.common.block.subtile.generating.SubTileNightshade; import vazkii.botania.common.block.subtile.generating.SubTileRafflowsia; +import vazkii.botania.common.block.subtile.generating.SubTileReiujia; import vazkii.botania.common.block.subtile.generating.SubTileSpectrolus; import vazkii.botania.common.block.subtile.generating.SubTileThermalily; import vazkii.botania.common.block.tile.TileAlfPortal; @@ -485,6 +486,7 @@ private static void initTileEntities() { BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_SPECTROLUS, SubTileSpectrolus.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_DANDELIFEON, SubTileDandelifeon.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_RAFFLOWSIA, SubTileRafflowsia.class); + BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_REIUJIA, SubTileReiujia.class); registerSubTileWithMini(LibBlockNames.SUBTILE_BELLETHORN, SubTileBellethorn.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_DREADTHORN, SubTileDreadthorn.class); diff --git a/src/main/java/vazkii/botania/common/lexicon/LexiconData.java b/src/main/java/vazkii/botania/common/lexicon/LexiconData.java index f0a06b4771..6fa920e634 100644 --- a/src/main/java/vazkii/botania/common/lexicon/LexiconData.java +++ b/src/main/java/vazkii/botania/common/lexicon/LexiconData.java @@ -702,6 +702,9 @@ public static void init() { new PageText("3"), new PageText("4"), new PageText("5"), new PageText("6"), new PageText("10"), new PageText("7"), new PagePetalRecipe<>("8", ModPetalRecipes.dandelifeonRecipe), new PageCraftingRecipe("9", ModCraftingRecipes.recipeCellBlock)); + + reiujia = new BLexiconEntry(LibLexicon.GFLOWER_REIUJIA, categoryGenerationFlowers); + reiujia.setLexiconPages(new PageText("0")); // DEVICES ENTRIES pylon = new BLexiconEntry(LibLexicon.DEVICE_PYLON, categoryDevices); diff --git a/src/main/java/vazkii/botania/common/lib/LibBlockNames.java b/src/main/java/vazkii/botania/common/lib/LibBlockNames.java index 3d0992cb11..e0332d235a 100644 --- a/src/main/java/vazkii/botania/common/lib/LibBlockNames.java +++ b/src/main/java/vazkii/botania/common/lib/LibBlockNames.java @@ -126,6 +126,7 @@ public final class LibBlockNames { public static final String SUBTILE_SPECTROLUS = "spectrolus"; public static final String SUBTILE_DANDELIFEON = "dandelifeon"; public static final String SUBTILE_RAFFLOWSIA = "rafflowsia"; + public static final String SUBTILE_REIUJIA = "reiujia"; public static final String SUBTILE_BELLETHORN = "bellethorn"; public static final String SUBTILE_DREADTHORN = "dreadthorn"; diff --git a/src/main/java/vazkii/botania/common/lib/LibLexicon.java b/src/main/java/vazkii/botania/common/lib/LibLexicon.java index a2c0cee51a..12c69633b1 100644 --- a/src/main/java/vazkii/botania/common/lib/LibLexicon.java +++ b/src/main/java/vazkii/botania/common/lib/LibLexicon.java @@ -109,6 +109,7 @@ public final class LibLexicon { public static final String GFLOWER_SPECTROLUS = "spectrolus"; public static final String GFLOWER_RAFFLOWSIA = "rafflowsia"; public static final String GFLOWER_DANDELIFEON = "dandelifeon"; + public static final String GFLOWER_REIUJIA = "reiujia"; public static final String DEVICE_PYLON = "pylon"; public static final String DEVICE_MANA_ENCHANTING = "manaEnchanting"; diff --git a/src/main/resources/assets/botania/lang/en_US.lang b/src/main/resources/assets/botania/lang/en_US.lang index f7d6279cc1..a862ebd021 100644 --- a/src/main/resources/assets/botania/lang/en_US.lang +++ b/src/main/resources/assets/botania/lang/en_US.lang @@ -3098,6 +3098,12 @@ botania.page.dandelifeon7=&1Cellular Blocks&0 are crafted with &1Cactus&0, &1Car botania.page.dandelifeon8=&oCellCraft^2&r. botania.page.dandelifeon9=Creating &1Cellular Blocks&0 +# -- REIUJIA +botania.entry.reiujia=Reiujia +botania.tagline.reiujia=If you can't solve a problem with brute force, you're not using enough of it. +botania.page.reiujia0=In order to generate a blast of &4Mana&0, one might in fact, require a blast nearby. Igniting a block of &1TNT&0 in the near an &1Entropinnyum&0, if it doesn't fall in water, will have the latter absorb all the entropy generated by the blast into itself, creating a large amount of &4Mana&0 and nullifying any possible damage. Lastly, to absorb the explosion, the flower must not have any &4Mana&0 stored in it or the process will fail. +botania.page.reiujia0=In principle there is no reason the &1Entropinnyum&0's blast absorption ability couldn't be scaled. The only limiting factor is that flowers are generally not too sturdy. Perhaps some magical reinforcement and attunement to the proper energy type will do the trick. + # - NATURAL APPARATUS # -- MANA PYLON botania.entry.pylon=Mana Pylon diff --git a/src/main/resources/assets/botania/textures/blocks/reiujia.png b/src/main/resources/assets/botania/textures/blocks/reiujia.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec8b45f29248fe9e2280a213a939ead9679a996 GIT binary patch literal 500 zcmVYAX9X8WNB|8RBvx=!KdMT0004h zNkl6@^rco$R(i&eZ~i#55M<$UL_*@ zPpMvjq30#@?3OwaU|E(V5(#DKc_~&ta8%!Cr{E~J-xIJbOS0K4x~?PT7%p%(b`7_0 z+qUWo0GOsJFH0Mox%!XGW24;k2Y9~xnuvD4W4Hq_^t=GPzYrzYxWfFaucXF(yiG=E ztQhPbK4z!jcqee*3{aX%v-n97`B)`Asj+#_$GPB3HMUT08ju?FWC$11wBG;PkFw+qMe&<1&2y21oUMYPVkyR&)KY z&|V=&lg6VNnzL`%OIEu6#;$;AnzD8ANzdV)fSV%lCF&WyFA#Dx`Te=h;H9(t`PJkg qQ}skVf%f> Date: Tue, 17 Mar 2026 21:01:52 +0900 Subject: [PATCH 7/8] fixed mana generation behavior --- .../subtile/generating/SubTileEntropinnyum.java | 3 +-- .../block/subtile/generating/SubTileReiujia.java | 15 ++++++++++++--- src/main/resources/assets/botania/lang/en_US.lang | 2 ++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java index 33f4452fb2..1c5b22a254 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java +++ b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileEntropinnyum.java @@ -51,7 +51,6 @@ public void onUpdate() { } } - // can't unify these because something something type safety private boolean processVanillaTNT(AxisAlignedBB box){ List tntList = supertile.getWorldObj() .getEntitiesWithinAABB(EntityTNTPrimed.class, box); @@ -83,7 +82,7 @@ private boolean validLocation(Entity tnt) { MathHelper.floor_double(tnt.posZ)).getMaterial().isLiquid(); } - private void handleExplosion(Entity tnt) { + protected void handleExplosion(Entity tnt) { if (!supertile.getWorldObj().isRemote) { tnt.setDead(); mana += getMaxMana(); diff --git a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileReiujia.java b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileReiujia.java index 47615e0fa5..1dd1fa2758 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileReiujia.java +++ b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileReiujia.java @@ -27,10 +27,11 @@ public SubTileReiujia() { private static final int RANGE = 12; - private void handleExplosion(Entity tnt) { + @Override + protected void handleExplosion(Entity tnt) { if (!supertile.getWorldObj().isRemote) { tnt.setDead(); - mana += super.getMaxMana(); + mana += super.getMaxMana(); supertile.getWorldObj().playSoundEffect( tnt.posX, tnt.posY, tnt.posZ, "random.explode", @@ -89,6 +90,13 @@ private boolean processExplosion(World world, Entity explosionSource, double pos } private boolean processExplosion(World world, Entity explosionSource, double posX, double posY, double posZ, double power) { + /*System.out.println( + world + " " + + explosionSource + " " + + posX + " " + + posY + " " + + posZ + " " + + power);*/ if (world.isRemote || mana != 0 || !(Math.abs(supertile.xCoord - posX) <= RANGE && Math.abs(supertile.yCoord - posY) <= RANGE && Math.abs(supertile.zCoord - posZ) <= RANGE)) { return false; } @@ -107,7 +115,8 @@ private boolean processExplosion(World world, Entity explosionSource, double pos // the factor of 0.25 is not here because stronger flower and radiation I guess mana += entropinnyumMaxMana * (int)power; } - + // load bearing debug print ??? + System.out.println("mana " + mana); supertile.getWorldObj().playSoundEffect(posX, posY, posZ, "random.explode", 0.2F, (1F + (supertile.getWorldObj().rand.nextFloat() - supertile.getWorldObj().rand.nextFloat()) * 0.2F) * 0.7F); sync(); diff --git a/src/main/resources/assets/botania/lang/en_US.lang b/src/main/resources/assets/botania/lang/en_US.lang index a862ebd021..9d2693d1a9 100644 --- a/src/main/resources/assets/botania/lang/en_US.lang +++ b/src/main/resources/assets/botania/lang/en_US.lang @@ -1277,6 +1277,8 @@ tile.botania:flower.dandelifeon.name=Dandelifeon tile.botania:flower.dandelifeon.reference=C'est la vie tile.botania:flower.rafflowsia.name=Rafflowsia tile.botania:flower.rafflowsia.reference=Trap Hole Nightmare +tile.botania:flower.reiujia.name=Reiujia +tile.botania:flower.reiujia.reference=The culmination of mystic wisdom # - FUNCTIONAL tile.botania:flower.bellethorn.name=Bellethorne From 4f6981359674cacf6d81a1c55de3adaefd07d9fd Mon Sep 17 00:00:00 2001 From: jkugler Date: Tue, 17 Mar 2026 22:51:26 +0900 Subject: [PATCH 8/8] add spark support --- .../subtile/generating/SubTileReiujia.java | 89 +++++++++++++++++-- .../botania/common/entity/EntitySpark.java | 11 ++- .../vazkii/botania/common/item/ItemSpark.java | 20 ++++- 3 files changed, 111 insertions(+), 9 deletions(-) diff --git a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileReiujia.java b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileReiujia.java index 1dd1fa2758..10878694a5 100644 --- a/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileReiujia.java +++ b/src/main/java/vazkii/botania/common/block/subtile/generating/SubTileReiujia.java @@ -5,21 +5,28 @@ import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.eventhandler.SubscribeEvent; + import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityTNTPrimed; +import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.world.World; + import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.world.ExplosionEvent; + +import ic2.core.block.EntityIC2Explosive; + import vazkii.botania.api.lexicon.LexiconEntry; +import vazkii.botania.api.mana.spark.ISparkAttachable; +import vazkii.botania.api.mana.spark.ISparkEntity; import vazkii.botania.api.subtile.RadiusDescriptor; import vazkii.botania.api.subtile.SubTileGenerating; import vazkii.botania.common.Botania; import vazkii.botania.common.lexicon.LexiconData; -import ic2.core.block.EntityIC2Explosive; -public class SubTileReiujia extends SubTileEntropinnyum { +public class SubTileReiujia extends SubTileEntropinnyum implements ISparkAttachable { public SubTileReiujia() { MinecraftForge.EVENT_BUS.register(new EventHandler()); @@ -62,6 +69,10 @@ public int getMaxMana() { return 100*super.getMaxMana(); } + public int getCurrentMana() { + return mana; + } + @Override public LexiconEntry getEntry() { return LexiconData.reiujia; @@ -97,7 +108,12 @@ private boolean processExplosion(World world, Entity explosionSource, double pos posY + " " + posZ + " " + power);*/ - if (world.isRemote || mana != 0 || !(Math.abs(supertile.xCoord - posX) <= RANGE && Math.abs(supertile.yCoord - posY) <= RANGE && Math.abs(supertile.zCoord - posZ) <= RANGE)) { + if (world.isRemote || + mana != 0 || + !( Math.abs(supertile.xCoord - posX) <= RANGE && + Math.abs(supertile.yCoord - posY) <= RANGE && + Math.abs(supertile.zCoord - posZ) <= RANGE) + ) { return false; } @@ -118,17 +134,78 @@ private boolean processExplosion(World world, Entity explosionSource, double pos // load bearing debug print ??? System.out.println("mana " + mana); - supertile.getWorldObj().playSoundEffect(posX, posY, posZ, "random.explode", 0.2F, (1F + (supertile.getWorldObj().rand.nextFloat() - supertile.getWorldObj().rand.nextFloat()) * 0.2F) * 0.7F); + supertile.getWorldObj().playSoundEffect( + posX, + posY, + posZ, + "random.explode", + 0.2F, + (1F + (supertile.getWorldObj().rand.nextFloat() - supertile.getWorldObj().rand.nextFloat()) * 0.2F) * 0.7F); sync(); for(int i = 0; i < 50; i++) { - Botania.proxy.sparkleFX(world, posX + Math.random() * 4 - 2, posY + Math.random() * 4 - 2, posZ + Math.random() * 4 - 2, 1F, (float) Math.random() * 0.25F, (float) Math.random() * 0.25F, (float) (Math.random() * 0.65F + 1.25F), 12); + Botania.proxy.sparkleFX( + world, + posX + Math.random() * 4 - 2, + posY + Math.random() * 4 - 2, + posZ + Math.random() * 4 - 2, + 1F, + (float) Math.random() * 0.25F, + (float) Math.random() * 0.25F, + (float) (Math.random() * 0.65F + 1.25F), + 12); } supertile.getWorldObj().spawnParticle("hugeexplosion", posX, posY, posZ, 1D, 0D, 0D); return true; } - } + //// ISparkAttachable + + @Override + public boolean canAttachSpark(ItemStack stack) { + return true; + } + + @Override + public void attachSpark(ISparkEntity entity) { + // NO-OP + } + + @Override + public ISparkEntity getAttachedSpark() { + List sparks = supertile.getWorldObj().getEntitiesWithinAABB( + ISparkEntity.class, + AxisAlignedBB.getBoundingBox( + supertile.xCoord, + supertile.yCoord + 1, + supertile.zCoord, + supertile.xCoord + 1, + supertile.yCoord + 2, + supertile.zCoord + 1)); + if(sparks.size() == 1) { + Entity e = (Entity) sparks.get(0); + return (ISparkEntity) e; + } + + return null; + } + + // generating flower should never accept mana + @Override + public int getAvailableSpaceForMana() { return 0; } + @Override + public boolean areIncomingTranfersDone() { return true; } + + //// IManaReceiver + + @Override + public boolean isFull() { return true; } + @Override + public void recieveMana(int mana) { + // NO-OP + } + @Override + public boolean canRecieveManaFromBursts() { return false; } } \ No newline at end of file diff --git a/src/main/java/vazkii/botania/common/entity/EntitySpark.java b/src/main/java/vazkii/botania/common/entity/EntitySpark.java index 68f17a649c..cda96ad999 100644 --- a/src/main/java/vazkii/botania/common/entity/EntitySpark.java +++ b/src/main/java/vazkii/botania/common/entity/EntitySpark.java @@ -33,6 +33,8 @@ import vazkii.botania.api.mana.spark.ISparkAttachable; import vazkii.botania.api.mana.spark.ISparkEntity; import vazkii.botania.api.mana.spark.SparkHelper; +import vazkii.botania.api.subtile.SubTileEntity; +import vazkii.botania.common.block.tile.TileSpecialFlower; import vazkii.botania.common.Botania; import vazkii.botania.common.core.helper.Vector3; import vazkii.botania.common.item.ModItems; @@ -323,8 +325,13 @@ public ISparkAttachable getAttachedTile() { int y = MathHelper.floor_double(posY) - 1; int z = MathHelper.floor_double(posZ); TileEntity tile = worldObj.getTileEntity(x, y, z); - if(tile != null && tile instanceof ISparkAttachable) - return (ISparkAttachable) tile; + if (tile != null){ + if (tile instanceof ISparkAttachable) return (ISparkAttachable)tile; + else if (tile instanceof TileSpecialFlower){ + SubTileEntity subtile = ((TileSpecialFlower)tile).getSubTile(); + if (subtile instanceof ISparkAttachable) return (ISparkAttachable)subtile; + } + } return null; } diff --git a/src/main/java/vazkii/botania/common/item/ItemSpark.java b/src/main/java/vazkii/botania/common/item/ItemSpark.java index 049dd807fc..1b81fe3b59 100644 --- a/src/main/java/vazkii/botania/common/item/ItemSpark.java +++ b/src/main/java/vazkii/botania/common/item/ItemSpark.java @@ -21,9 +21,11 @@ import vazkii.botania.api.internal.VanillaPacketDispatcher; import vazkii.botania.api.mana.IManaGivingItem; import vazkii.botania.api.mana.spark.ISparkAttachable; +import vazkii.botania.api.subtile.SubTileEntity; import vazkii.botania.client.core.helper.IconHelper; import vazkii.botania.common.achievement.ICraftAchievement; import vazkii.botania.common.achievement.ModAchievements; +import vazkii.botania.common.block.tile.TileSpecialFlower; import vazkii.botania.common.entity.EntitySpark; import vazkii.botania.common.lib.LibItemNames; @@ -50,7 +52,23 @@ public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int } return true; } - } + } else if (tile instanceof TileSpecialFlower) { + SubTileEntity subtile = ((TileSpecialFlower)tile).getSubTile(); + if(subtile instanceof ISparkAttachable attach) { + if(attach.canAttachSpark(stack) && attach.getAttachedSpark() == null) { + stack.stackSize--; + if(!world.isRemote) { + EntitySpark spark = new EntitySpark(world); + spark.setPosition(x + 0.5, y + 1.5, z + 0.5); + world.spawnEntityInWorld(spark); + attach.attachSpark(spark); + VanillaPacketDispatcher.dispatchTEToNearbyPlayers(world, x, y, z); + } + return true; + } + } + } + System.out.println("false"); return false; }