Nature Reclaims is a progressive decay mod intended to cause man-made structures to slowly but surely deteriorate and fall into ruin after being abandoned by the player.
Nature Reclaims was a really old mod that i loved during the good old days.
It has been discontinued since a loong time. During the last summer i decided to remake it in Skirpt (because i am lazy and i don't want to learn how to program a Spigot plugin even if i can program in java, lol).
However, winter came and i discontinued it too.
Here is the source code, as I left it last summer. If someone wants to fork it, remake it, go aheand and complete it... you are welcome! Just mention me in your finished product.
I would really love to see this completed, but i have no time to do it.
Source code:
# TO DO # # Allow piston retracting with SkMorkaz # Fine tune aging timings # ... # CONFIG # options: #Some options: worldname: "Map" #Name of the world you want to enable Nature Reclaims in #Minimum and maxmium hours of life to apply first stage of aging #(Life starts when block is placed, ends when removed) a: 1 b: 10 #Second stage c: 10 d: 20 #Third stage e: 20 f: 30 #Fourth stage g: 30 h: 40 # <<-- After this value, the block will not age anymore. #Minimum hours of life to apply water-caused moulding (growth of moss) a1: 1 #Minimum and maxmium hours of life to make wood start falling if not supported {@wood_a}: 1 {@wood_b}: 10 <<-- After this value, wood will not fall anymore on script load: #More options... #If you have SkMorkaz installed set this to true to re-enable pistons #otherwise pistons will be disabled entirely to prevent bug exploiting. set {skmorkaz} to true # ADD BLOCK TO POSITION AND DATE LISTS # on block place: if event-block is (stone brick or cobblestone or 5 or 5:1 or 5:2 or 5:3 or 5:4 or 5:5 or 43:2): add position of block to {locations::*} add now to {dates::*} # ADD BLOCK TO POSITION AND DATE LISTS ON FARMING # on right click holding an hoe: add position of event-block to {locations::*} add now to {dates::*} # REMOVE BLOCK FROM POSITION AND DATE LISTS # on block break: set {_position} to position of block loop {locations::*}: if loop-value is equal to {_position}: delete {locations::%loop-index%} delete {dates::%loop-index%} # REMOVE BLOCK FROM POSITION AND DATE LISTS ON EXPLOSION # on explode: loop exploded blocks: set {_exploded} to position of loop-value loop {locations::*}: if {_exploded} is equal to loop-value-2: delete {locations::%loop-index%} delete {dates::%loop-index%} # UPDATE BLOCK POSITION ON PISTON PUSH OR PULL # on block piston push: loop {locations::*}: if position of event-block is equal to loop-value: if event-string is "WEST" : subtract 1 from x-coordinate of {locations::%loop-index%} if event-string is "EAST" : add 1 to x-coordinate of {locations::%loop-index%} if event-string is "NORTH": subtract 1 to z-coordinate of {locations::%loop-index%} if event-string is "SOUTH": add 1 to z-coordinate of {locations::%loop-index%} if event-string is "UP": add 1 to y-coordinate of {locations::%loop-index%} if event-string is "DOWN": subtract 1 from y-coordinate of {locations::%loop-index%} on piston retract: #Wip # AGE THE BLOCK (Random-spot and propagation) # on every 1 second in world {@worldname}: loop {locations::*}: set {_location} to loop-value set {_date} to {dates::%loop-index%} set {_mainloopindex} to loop-index # RANDOM-SPOT AGING # if {_date} was more than {@a} second ago: if {_date} was less than {@b} second ago: chance of 10%: if block at {_location} is stone brick: set block at {_location} to cracked stone brick if {_date} was more than {@c} second ago: if {_date} was less than {@d} second ago: if block at {_location} is cracked stone brick: chance of 3%: set block at {_location} to mossy stone brick chance of 50%: if block behind {_location} is air: set block behind {_location} to vine chance of 50%: if block in front of {_location} is air: set block in front of {_location} to vine:4 if {_date} was more than {@e} second ago: if {_date} was less than {@f} second ago: chance of 1%: chance of 10%: if block above {_location} is air: set block above {_location} to cobweb else if block in front of {_location} is air: set block in front of {_location} to cobweb else if block behind {_location} is air: set block behind {_location} to cobweb else if block under {_location} is air: set block under {_location} to cobweb if {_date} was more than {@g} second ago: if {_date} was less than {@h} second ago: if block at {_location} is mossy stone brick: chance of 2%: set block at {_location} to air delete {locations::%loop-index%} delete {dates::%loop-index%} # WATER EROSION AGING (Growth of moss and cracks) # if {_date} was more than 1 second ago: loop blocks in radius 3 around {_location}: if loop-value-2 is water: if block in front of {_location} is air: set block in front of {_location} to vine:4 else if block behind {_location} is air: set block behind {_location} to vine if block at {_location} is stone brick or cracked stone brick: set block at {_location} to mossy stone brick else if block at {_location} is (5 or 5:1 or 5:2 or 5:3 or 5:4 or 5:5 or 43:2): chance of 1%: delete {locations::%{_mainloopindex}%} delete {dates::%{_mainloopindex}%} set block at {_location} to dirt else if block at {_location} is cobblestone: set block at {_location} to mossy cobblestone # WOOD FALLING # if {_date} was more than 1 second ago: if {_date} was less than 10 second ago: if block at {_location} is (5 or 5:1 or 5:2 or 5:3 or 5:4 or 5:5 or 43:2): chance of 1%: set block at {_location} to coarse dirt delete {locations::%{_mainloopindex}%} delete {dates::%{_mainloopindex}%} if block above {_location} is air: chance of 10%: set block above {_location} to oak sapling chance of 3%: if block at {_location} is (5 or 5:1 or 5:2 or 5:3 or 5:4 or 5:5 or 43:2): set {_wood} to the block at {_location} if block below {_wood} is air: set block below {_wood} to {_wood} subtract 1 from y-coordinate of {locations::%{_mainloopindex}%} set block at {_location} to air # GLOWSTONE AND TORCHES DECAY # if {_date} was more than 10 second ago: if {_date} was less than 20 second ago: chance of 25%: loop blocks in radius 10 around {_location}: if loop-value-2 is (torch or glowstone): chance of 5%: set loop-value-2 to air # FARMS DECAY # if {_date} was more than 15 second ago: if {_date} was less than 30 second ago: if block at {_location} is (grass or farmland or dirt): chance of 20%: set block at {_location} to coarse dirt chance of 5%: if block above {_location} is air: set block above {_location} to dead bush delete {locations::%{_mainloopindex}%} delete {dates::%{_mainloopindex}%} # SPAWN SOME WATER PUDDLES # if {_date} was more than 15 second ago: if {_date} was less than 30 second ago: chance of 3%: if block at {_location} is (cobblestone or stone brick or mossy stone brick or cracked stone brick): if block in front of {_location} is not air: if block behind {_location} is not air: if block under {_location} is not air: chance of 1%: set block at {_location} to water delete {locations::%{_mainloopindex}%} delete {dates::%{_mainloopindex}%} # SPAWN DIRT ON BRICKS # if {_date} was more than 30 second ago: if {_date} was less than 40 second ago: if block at {_location} is (cracked stone brick or stone brick or mossy stone brick): chance of 1%: chance of 50%: set block at {_location} to coarse dirt delete {locations::%loop-index%} delete {dates::%loop-index%} chance of 50%: set block above {_location} to oak sapling # FOREST SPREADING # command /test: trigger: message "%{locations::*}%" message "%{dates::*}%" command /cancel: trigger: delete {locations::*} delete {dates::*} command /ll: trigger: message "%light level at player%" to player
9
Nature Reclaims is a progressive decay mod intended to cause man-made structures to slowly but surely deteriorate and fall into ruin after being abandoned by the player.
Currently, mod inter-compatibility is unknown, but is expected to be low due to the relatively high number of modified classes. If you find a mod that works with Nature Reclaims installed, please post in this thread! Bear in mind I'm a fairly accomplished programmer but this is my first project in Minecraft and the Java language, so there was quite a bit of a learning curve and bits and pieces of the mod are somewhat temperamental, so I appreciate all bug reports and offers of assistance in improving it.
Decay is distance-influenced, and only happens beyond 100 blocks of you and beyond 75 blocks of any villager. This means your house won't collapse around you, but that you can watch buildings fall apart from a safe distance. Additionally, only blocks placed by the player after installation will decay. This is an intentional feature to greatly reduce in-game lag.
Decay functions dominantly on exposure, to air/water (flowing or still) and to the block that a given block will decay into (cobble for stone, for example). Blocks age over time whilst decay is enabled (and you/villagers are out of range), so newer blocks will decay much later than older blocks. A simple way to avoid a block decaying is to bury it in a block that it does not decay into (sand is popular), but you can also surround it in Obsidian to severely dampen the rate of decay and anything built in the Nether will not decay at all.
In version 1.0 of Nature Reclaims the following decay lines have been implemented:
New blocks added in this mod:
Future Additions
What once was a house is now almost entirely unrecognisable, choked beneath the foliage.
The diagonal construction of this pyramid helps it to survive longer, but the shallow roof was its downfall.
The wood in this tower would have lasted longer, but the decaying outer stone ring triggered a collapse throughout the structure.
With the more resilient stone bricks as an exterior, this tower can be expected to last for decades at least, perhaps centuries, largely intact (if mildly inhospitable to the explorer). Vines have begun to creep from the grass surrounding it, and most of the windows have fallen apart.
The same test structure after ~fifty minutes of idling decay.
This kind of decay isn't uncommon in reality for older wood-interiored buildings, but later version of this mod (namely those with rotten wood implemented) will allow them to retain their internal structure a lot better than this one did, since wood currently decays to gravel at a fairly rapid rate.
Videos
Downloads
Release V1.0 for Minecraft V1.2.3
Alpha version 0.7
Alpha version 0.6
Alpha version 0.5
Known bugs (most recent version only)
1
Today I got the decay process working, so the last thing I'm doing before I release the 1.2.5 update is fine-tuning the decay rates of different blocks and adding new ones. There's one or two known bugs at the moment, but they're not big ones (mostly cosmetic) and are unlikely to affect the release.
1
Using that, you can find the nearest player to your block within a range and then calculate the actual distance between the player and it.
1
I've already worked out gravel-into-saplings as in my previous post, which causes pileups of gravel to gradually deteriorate (gravel on dirt and beneath gravel will vanish, reducing the pile) until it then turns into one of a variety of foliage, including ferns, tall grass, and saplings. I'd love to put out a release but right now there's no connection between the passage of time and the decay code, so nothing happens ingame (though blocks are still marked for decay by the TileEntityPlayerBlock class, so you could in theory install my current model and build in readiness for a future working version).
That said, my last exam is tomorrow afternoon and having found the entire Life After People series online my mind is brimming with tweaks and new ideas for how things should decay in-game. My summer vacation promises to be a productive one for this mod.
1
Meanwhile, strongholds are clearly very ancient and yet, barring the odd cracked or mossy block, they're very much largely intact. This suggests they'll be around for ages longer and the player would hardly notice at all if they decayed in the slightest.
You do raise an interesting point with the villages though, perhaps I could extend the maintenance implication to villagers, making them a form of decay prevention by storing them around your base like butlers and caretakers.
1
Rotten wood now has a % chance of falling when walked on (rather than every time), and gives off "dust" particles from its surface when walked on as well. This means you can take a risk running across a rotten floor but it won't necessarily collapse underneath you. When it finally does collapse, it gives a quiet TNT explosion sound and still causes sequential collapses throughout rotten structures as before.
Fallen rotten wood now also has a 1 in 10 chance to further collapse when a neighbour block changes (including blocks landing on it from above), rather than simply to fall or decay, disappearing entirely from the world, similarly complete with sound and particle effect. This means that falling wooden floors don't just leave themselves matted across surfaces in vertical structures, but uneven layering as portions entirely collapse.
This also has the side effect of making collapsed structures slightly easier to navigate if you should choose to go exploring in them, or are gone for an extremely long period of time (such as the test tower in the opening post).
1
My main success for the day however was getting the coding integrated to allow for things like this:
With the new decayByMeta functionality, I can have blocks that use metadata to create different variations (slabs, stairs, stone bricks, etc.) decay into different blocks (with their own metadata!) depending on the metadata of the block decaying.
1
I'm currently in the process of developing a map to teach basic redstone uses, including the basic logic gates used and a few examples of practical applications.
It will consists of a few large "this is the basic stuff you need to know before progressing, but I can't really have you try it out without insulting your intelligence" rooms, a total of 8 "build X to open the exit by understanding how to make X" rooms, each with an attached "congratulations! here's your reward!" room. Players will be given the minimum materials needed in each trial room to make the gate circuit required, with an example of the circuit seen in an enclosed room off to the side.
There's a gallery showing recent progress on the AND gate's logic circuitry (which prevents a torch+door exit method, to ensure the player actually creates the proper circuit) can be seen here
To download the current map file, consisting largely of a pseudo-complete "The Basics" room, the OR gate room and its victory room, and the AND gate room, click the following link and insert the folder contained within into your /appdata/.minecraft/saves folder
The Redstone Dungeon
1
Right now, where their movements are random and they select blocks without concern for whether they are naturally or player-placed, they are causing a lot of irritation and annoyance. If they were restricted to only moving player-placed blocks, people would be livid as teams of Endermen tore apart their buildings.
8
The Endermen
See, currently the Endermen are the most interactive mob extant in the Minecraft world. Not only are they able to pick up and place blocks just like the player, but they're neutral towards them until they notice you looking at them. They then display teleportation abilities, unseen in any other mob, and to cap things off they're very divergent in proportion relative to the other mobs too, being three blocks tall instead of two with long spindly limbs and a distinct mouth that actually moves when they're angry.
I have an idea, therefore, as to how they can be given even more importance in the world, especially in relating it to the Nether and recent developments in it.
Now, we know that Jeb has recently added generated structures that seem to resemble raised roads or aqueducts to the Nether, indicating habitation by some creature, probably not the Zombie Pigmen though they do display communal association in their vengeance-wreaking reactions to player attacks. Suffice it to say, this is indicative of there being some organism that lives in the Nether.
The Endermen have strange proportions, strange abilities, and they can move blocks around. They're different to every other mob on the surface world by vast stretches, and they're even harmed by water, even if it's just rain. My suggestion then is that they don't come from the surface world, they originate from the Nether.
More specifically, I propose that Endermen have a goal of creating Nether portals on the surface. They take blocks from a localised area (specially marked in the code, similar to slime spawning) and try to build the 4x1x6 frame of a portal.
The Ender-portals and their grim purpose
And I have ideas beyond that as well. When they complete these portals, no matter what materials they are initially made of, the blocks become Obsidian (or some special material to distinguish it as an Ender-portal, possibly weaker than Obsidian for ease of destruction), and the Endermen then stand in the portal like willing sacrifices and wait for sunlight to ignite them, thereby lighting the portal.
From there, the Endermen's masters, the Enderlords (or somesuch name), can step through to the surface world from the Nether.
The Enderlords
Immune to fire like every Nether mob to date, they would have no fear of the sun, demons walking our earth. In code, this would mean that the portal would have a special marking (like that special block or a damage value like wool) to allow the master mob to spawn in its vicinity, sort of like a big mob spawner.
And if the Enderlords can build structures in the Nether, they can build structures on the surface world, guarding their portals with strongholds and castles, building throne rooms and dungeons with strange-yet-familiar blocks. These would be much more complex and intelligent mobs that could actually pose a threat to the player and give them reason to build defenses and seek out the Endermen. Perhaps they'd even spread a strange Nether contagion to the earth like grass beneath their feet, which made enemy mobs more dangerous or allowed Pigmen or more Endermen to spawn.
The Ender Pearl
The Endermen teleport because that's how they are sent to the surface world to begin their tasks, and they move blocks around to build a way through for their masters. Perhaps the Ender Pearl would render you invisible to Endermen or their masters, the Endermen themselves certainly only pay significant attention to you. Alternatively, the pearls might serve as compasses to the nearest Ender-portal, allowing you to either hunt a large group of Endermen back to their worksite or kill one to get their "map" of sorts. In effect the pearl would be like a little internal compass they use to navigate, which you cut out of them after killing them.
Impact on Gameplay
But what would this mean for gameplay? Well, when the Endermen spawn at night, their first goal is to co-operatively build a portal. So you would spot an Enderman and then carefully follow him to find where they are grouping together to build the portal.
If you left the Endermen alone, there's not necessarily a certainty that they'll actually manage to build one; sand/gravel could swallow the portal in a cave-in before they can get to it to ignite it, or water could flood through it as a block is removed and kill the Endermen getting too close, or sunlight could just never reach the portal site underground or in a cave, and sand/gravel would still fall if they put them on the top row of the portal, breaking the shape. Even if they did start causing trouble, in day 1 you can make a stone sword, potentially even an iron sword, and go hunting the Endermen with some reasonable success, especially once you develop a bow during the daylight hours.
But if you're worried about coming under attack soon (possibly in the early days of a world where your defenses aren't too great) you want to follow them to be sure. In theory, a bucket of water would be the best weapon against this portal-building aspect to the Endermen because water puts out Nether portals and Endermen die in water. Plonking a water source inside the portal then would destroy it, effectively, so there's no reason to call this overpowered, especially since the Endermen are slow-moving when they're not teleporting to attack you so the portal would take time to build. Additionally, between calamities that may befall the Endermen whilst building and the time it would take them and the limited chunks they could build in, you don't have to worry about your world getting pock-marked with portals summoning demon overlords.
Later on, you could build a portal from Obsidian yourself to have a safe route into the Nether, or if you wanted a challenge, you could deliberately find a quenched Enderman-portal and ignite it yourself. This gives structural defenses built by players actual purpose, as well as a top-tier adventuring challenge that is, to some degree, controllable by the player. Stopping a portal being built or ignited is a good goal for a low to mid-level player, whilst combatting the Enderlords head on is definitely high-level challenge.
Minecraft endgame: The Coming of the Enderlords
If you support this idea, check out the getsatisfaction thread and upvote the reddit link!