I tried posting about this previously, so if you got that ignore this post.

Ran into an issue, the filter does not work. When I try to run it it freezes my mac and nothing happens for upwards of an hour. I did this on a relatively small area of roughly 1000x1000x256.

I'm running 0.1.7.1 on a mac. Could you tell me how to fix it?

Cheers,
Emizaquel

There is nothing to fix. If you know even the littlest thing about coding, check my code. You'll see that the bigger the Y-axis selection you have, the more cycles there are to run in the for loop. Meaning, try having a smaller Y selection, or even better, try using the filter only where it is needed, since it's a really resource intensive one.

There is nothing to fix. If you know even the littlest thing about coding, check my code. You'll see that the bigger the Y-axis selection you have, the more cycles there are to run in the for loop. Meaning, try having a smaller Y selection, or even better, try using the filter only where it is needed, since it's a really resource intensive one.

I did not even see a progress bar come up, is this normal?

I did not even see a progress bar come up, is this normal?

I am not a Mac user so I have to ask. Does opening MCEdit open a terminal window as well? If so, there is a counter for the times the program has looped..

I am not a Mac user so I have to ask. Does opening MCEdit open a terminal window as well? If so, there is a counter for the times the program has looped..

No, no terminal appears, How long do you think a 300x400x100 area would take to process?

I am not a Mac user so I have to ask. Does opening MCEdit open a terminal window as well? If so, there is a counter for the times the program has looped..

Hi,

I re-wrote your script a bit, after I spent some time teaching myself a little python. works fine, if you want it here you go. I do want to know how to add a progress bar though.

Cheers

# You can modify, reuse or distribute this filter.
# If you do so, make sure to give credit to Lazini
# http://youtube.com/user/lazini
# Modified by Emizaquel
displayName = "Overhang Filler"
inputs = (
("Fills the empty blocks under an overhang with the bottom block ID and Type", "label"),
)
def perform(level, box, options):
for z in xrange(box.minz, box.maxz):
for x in xrange(box.minx, box.maxx):
for y in xrange(box.maxy, box.miny, -1):
if(level.blockAt(x,y,z) == 0 and level.blockAt(x,y+1,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y+1,z))

Yes! Your method is much more efficient.. Wow, my coding skills are dusty! (Haven't coded since literally past summer due to intense studying).

As far as I remember, there is no way to add a progress bar, sadly. Although, you can add a counter variable and print it in each loop (it will be printed in the command prompt window). Reminder: total loops: (box.maxx-box.minx)*(box.maxz-box.minz)*(box.maxy-box.miny)

So, you could add something like: print "Repeated times: ", counter, " out of ", product, " of total loops."
Right under level.setBlockDataAt(.....)

Yes! Your method is much more efficient.. Wow, my coding skills are dusty! (Haven't coded since literally past summer due to intense studying).

As far as I remember, there is no way to add a progress bar, sadly. Although, you can add a counter variable and print it in each loop (it will be printed in the command prompt window). Reminder: total loops: (box.maxx-box.minx)*(box.maxz-box.minz)*(box.maxy-box.miny)

So, you could add something like: print "Repeated times: ", counter, " out of ", product, " of total loops."
Right under level.setBlockDataAt(.....)

So I spent some time and came up with this, it's much larger since it also includes a crevice, a slope and rudimentary blending tools, but I'm not happy with the blending aspect, but I don't really know how to do any better than that, any advice on how to improve that would probably be helpful.

Cheers,
Emizaquel

P.S. I'm stress testing it right now, I'll get back to you on that in about 36 hours.

# You can modify, reuse or distribute this filter.
# If you do so, make sure to give credit to Lazini
# http://youtube.com/user/lazini
# Modified by Emizaquel
# You can find me at https://www.youtube.com/channel/UCKd5GQZJgrHPheKdGPIso4A or on minecraftforum.net
displayName = "Overhang Filler V2"
inputs = (
("Fills the empty blocks under an overhang with the bottom block ID and Type", "label"),
("Crevice", True),
("Fills in crevices, in that, any gap of five blocks or less between two blocks is considered a crevice.", "label"),
("Slope", True),
("Gradient", 3),
("Adds a slope of specified gradient to vertical walls", "label"),
("Curve", True),
("Attempts to blend a slope into flat land, note that this only works if the Slope option has been selected.", "label"),
)
def perform(level, box, options):
CreviceCheck = options["Crevice"]
SlopeCheck = options["Slope"]
SlopeGrad = options["Gradient"]
CurveCheck = False
if(SlopeCheck == True):
CurveCheck = options["Curve"]
for y in range(box.maxy, box.miny-1, -1):
for x in range(box.minx, box.maxx):
for z in range(box.minz, box.maxz):
if(level.blockAt(x,y,z) == 0):
if(level.blockAt(x,y+1,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y+1,z))
if(CreviceCheck == True):
if(level.blockAt(x+1,y,z) != 0 and level.blockAt(x-1,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y,z))
if(level.blockAt(x,y,z+1) != 0 and level.blockAt(x,y,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+1))
if(level.blockAt(x+1,y,z+1) != 0 and level.blockAt(x-1,y,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y,z+1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y,z+1))
if(level.blockAt(x+1,y,z-1) != 0 and level.blockAt(x-1,y,z+1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y,z-1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y,z-1))
if(level.blockAt(x+2,y,z) != 0 and level.blockAt(x-1,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z))
if(level.blockAt(x,y,z+2) != 0 and level.blockAt(x,y,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+2))
if(level.blockAt(x+2,y,z+2) != 0 and level.blockAt(x-1,y,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z+2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z+2))
if(level.blockAt(x+2,y,z-2) != 0 and level.blockAt(x-1,y,z+1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z-2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z-2))
if(level.blockAt(x+1,y,z) != 0 and level.blockAt(x-2,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y,z))
if(level.blockAt(x,y,z+1) != 0 and level.blockAt(x,y,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+1))
if(level.blockAt(x+1,y,z+1) != 0 and level.blockAt(x-2,y,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y,z+1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y,z+1))
if(level.blockAt(x+1,y,z-1) != 0 and level.blockAt(x-2,y,z+2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y,z-1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y,z-1))
if(level.blockAt(x+2,y,z) != 0 and level.blockAt(x-2,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z))
if(level.blockAt(x,y,z+2) != 0 and level.blockAt(x,y,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+2))
if(level.blockAt(x+2,y,z+2) != 0 and level.blockAt(x-2,y,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z+2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z+2))
if(level.blockAt(x+2,y,z-2) != 0 and level.blockAt(x-2,y,z+2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z-2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z-2))
if(level.blockAt(x+2,y,z) != 0 and level.blockAt(x-3,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z))
if(level.blockAt(x,y,z+2) != 0 and level.blockAt(x,y,z-3) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+2))
if(level.blockAt(x+2,y,z+2) != 0 and level.blockAt(x-3,y,z-3) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z+2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z+2))
if(level.blockAt(x+2,y,z-2) != 0 and level.blockAt(x-3,y,z+3) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z-2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z-2))
if(level.blockAt(x+3,y,z) != 0 and level.blockAt(x-2,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+3,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+3,y,z))
if(level.blockAt(x,y,z+3) != 0 and level.blockAt(x,y,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+3))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+3))
if(level.blockAt(x+3,y,z+3) != 0 and level.blockAt(x-2,y,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+3,y,z+3))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+3,y,z+3))
if(level.blockAt(x+3,y,z-3) != 0 and level.blockAt(x-2,y,z+2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+3,y,z-3))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+3,y,z-3))
if(level.blockAt(x+3,y,z) != 0 and level.blockAt(x-3,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+3,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+3,y,z))
if(level.blockAt(x,y,z+3) != 0 and level.blockAt(x,y,z-3) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+3))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+3))
if(level.blockAt(x+3,y,z+3) != 0 and level.blockAt(x-3,y,z-3) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+3,y,z+3))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+3,y,z+3))
if(level.blockAt(x+3,y,z-3) != 0 and level.blockAt(x-3,y,z+3) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+3,y,z-3))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+3,y,z-3))
if(SlopeCheck == True):
if(level.blockAt(x+1,y+SlopeGrad,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y+SlopeGrad,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y+SlopeGrad,z))
if(level.blockAt(x-1,y+SlopeGrad,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x-1,y+SlopeGrad,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x-1,y+SlopeGrad,z))
if(level.blockAt(x,y+SlopeGrad,z+1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+SlopeGrad,z+1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y+SlopeGrad,z+1))
if(level.blockAt(x,y+SlopeGrad,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+SlopeGrad,z-1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y+SlopeGrad,z-1))
if(CurveCheck == True):
if(level.blockAt(x,y-1,z) != 0):
if(level.blockAt(x+1,y+4,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y+1,z))
elif(level.blockAt(x-1,y+4,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x-1,y+1,z))
elif(level.blockAt(x,y+4,z+1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z+1))
elif(level.blockAt(x,y+4,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z-1))
elif(level.blockAt(x+2,y+4,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y+1,z))
elif(level.blockAt(x-2,y+4,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x-2,y+1,z))
elif(level.blockAt(x,y+4,z+2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z+2))
elif(level.blockAt(x,y+4,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z-2))
if(level.blockAt(x,y-2,z) != 0):
if(level.blockAt(x+1,y+2,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y+1,z))
elif(level.blockAt(x-1,y+2,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x-1,y+1,z))
elif(level.blockAt(x,y+2,z+1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z+1))
elif(level.blockAt(x,y+2,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z-1))
if(level.blockAt(x,y-4,z) != 0):
if(level.blockAt(x+1,y+1,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y+1,z))
elif(level.blockAt(x-1,y+1,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x-1,y+1,z))
elif(level.blockAt(x,y+1,z+1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z+1))
elif(level.blockAt(x,y+1,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z-1))

So I spent some time and came up with this, it's much larger since it also includes a crevice, a slope and rudimentary blending tools, but I'm not happy with the blending aspect, but I don't really know how to do any better than that, any advice on how to improve that would probably be helpful.

Cheers,
Emizaquel

P.S. I'm stress testing it right now, I'll get back to you on that in about 36 hours.

# You can modify, reuse or distribute this filter.
# If you do so, make sure to give credit to Lazini
# http://youtube.com/user/lazini
# Modified by Emizaquel
# You can find me at https://www.youtube.com/channel/UCKd5GQZJgrHPheKdGPIso4A or on minecraftforum.net
displayName = "Overhang Filler V2"
inputs = (
("Fills the empty blocks under an overhang with the bottom block ID and Type", "label"),
("Crevice", True),
("Fills in crevices, in that, any gap of five blocks or less between two blocks is considered a crevice.", "label"),
("Slope", True),
("Gradient", 3),
("Adds a slope of specified gradient to vertical walls", "label"),
("Curve", True),
("Attempts to blend a slope into flat land, note that this only works if the Slope option has been selected.", "label"),
)
def perform(level, box, options):
CreviceCheck = options["Crevice"]
SlopeCheck = options["Slope"]
SlopeGrad = options["Gradient"]
CurveCheck = False
if(SlopeCheck == True):
CurveCheck = options["Curve"]
for y in range(box.maxy, box.miny-1, -1):
for x in range(box.minx, box.maxx):
for z in range(box.minz, box.maxz):
if(level.blockAt(x,y,z) == 0):
if(level.blockAt(x,y+1,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y+1,z))
if(CreviceCheck == True):
if(level.blockAt(x+1,y,z) != 0 and level.blockAt(x-1,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y,z))
if(level.blockAt(x,y,z+1) != 0 and level.blockAt(x,y,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+1))
if(level.blockAt(x+1,y,z+1) != 0 and level.blockAt(x-1,y,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y,z+1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y,z+1))
if(level.blockAt(x+1,y,z-1) != 0 and level.blockAt(x-1,y,z+1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y,z-1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y,z-1))
if(level.blockAt(x+2,y,z) != 0 and level.blockAt(x-1,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z))
if(level.blockAt(x,y,z+2) != 0 and level.blockAt(x,y,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+2))
if(level.blockAt(x+2,y,z+2) != 0 and level.blockAt(x-1,y,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z+2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z+2))
if(level.blockAt(x+2,y,z-2) != 0 and level.blockAt(x-1,y,z+1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z-2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z-2))
if(level.blockAt(x+1,y,z) != 0 and level.blockAt(x-2,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y,z))
if(level.blockAt(x,y,z+1) != 0 and level.blockAt(x,y,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+1))
if(level.blockAt(x+1,y,z+1) != 0 and level.blockAt(x-2,y,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y,z+1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y,z+1))
if(level.blockAt(x+1,y,z-1) != 0 and level.blockAt(x-2,y,z+2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y,z-1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y,z-1))
if(level.blockAt(x+2,y,z) != 0 and level.blockAt(x-2,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z))
if(level.blockAt(x,y,z+2) != 0 and level.blockAt(x,y,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+2))
if(level.blockAt(x+2,y,z+2) != 0 and level.blockAt(x-2,y,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z+2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z+2))
if(level.blockAt(x+2,y,z-2) != 0 and level.blockAt(x-2,y,z+2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z-2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z-2))
if(level.blockAt(x+2,y,z) != 0 and level.blockAt(x-3,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z))
if(level.blockAt(x,y,z+2) != 0 and level.blockAt(x,y,z-3) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+2))
if(level.blockAt(x+2,y,z+2) != 0 and level.blockAt(x-3,y,z-3) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z+2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z+2))
if(level.blockAt(x+2,y,z-2) != 0 and level.blockAt(x-3,y,z+3) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y,z-2))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+2,y,z-2))
if(level.blockAt(x+3,y,z) != 0 and level.blockAt(x-2,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+3,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+3,y,z))
if(level.blockAt(x,y,z+3) != 0 and level.blockAt(x,y,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+3))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+3))
if(level.blockAt(x+3,y,z+3) != 0 and level.blockAt(x-2,y,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+3,y,z+3))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+3,y,z+3))
if(level.blockAt(x+3,y,z-3) != 0 and level.blockAt(x-2,y,z+2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+3,y,z-3))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+3,y,z-3))
if(level.blockAt(x+3,y,z) != 0 and level.blockAt(x-3,y,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+3,y,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+3,y,z))
if(level.blockAt(x,y,z+3) != 0 and level.blockAt(x,y,z-3) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y,z+3))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y,z+3))
if(level.blockAt(x+3,y,z+3) != 0 and level.blockAt(x-3,y,z-3) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+3,y,z+3))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+3,y,z+3))
if(level.blockAt(x+3,y,z-3) != 0 and level.blockAt(x-3,y,z+3) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+3,y,z-3))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+3,y,z-3))
if(SlopeCheck == True):
if(level.blockAt(x+1,y+SlopeGrad,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y+SlopeGrad,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x+1,y+SlopeGrad,z))
if(level.blockAt(x-1,y+SlopeGrad,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x-1,y+SlopeGrad,z))
level.setBlockDataAt(x,y,z, level.blockDataAt(x-1,y+SlopeGrad,z))
if(level.blockAt(x,y+SlopeGrad,z+1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+SlopeGrad,z+1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y+SlopeGrad,z+1))
if(level.blockAt(x,y+SlopeGrad,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+SlopeGrad,z-1))
level.setBlockDataAt(x,y,z, level.blockDataAt(x,y+SlopeGrad,z-1))
if(CurveCheck == True):
if(level.blockAt(x,y-1,z) != 0):
if(level.blockAt(x+1,y+4,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y+1,z))
elif(level.blockAt(x-1,y+4,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x-1,y+1,z))
elif(level.blockAt(x,y+4,z+1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z+1))
elif(level.blockAt(x,y+4,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z-1))
elif(level.blockAt(x+2,y+4,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+2,y+1,z))
elif(level.blockAt(x-2,y+4,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x-2,y+1,z))
elif(level.blockAt(x,y+4,z+2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z+2))
elif(level.blockAt(x,y+4,z-2) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z-2))
if(level.blockAt(x,y-2,z) != 0):
if(level.blockAt(x+1,y+2,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y+1,z))
elif(level.blockAt(x-1,y+2,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x-1,y+1,z))
elif(level.blockAt(x,y+2,z+1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z+1))
elif(level.blockAt(x,y+2,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z-1))
if(level.blockAt(x,y-4,z) != 0):
if(level.blockAt(x+1,y+1,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x+1,y+1,z))
elif(level.blockAt(x-1,y+1,z) != 0):
level.setBlockAt(x,y,z, level.blockAt(x-1,y+1,z))
elif(level.blockAt(x,y+1,z+1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z+1))
elif(level.blockAt(x,y+1,z-1) != 0):
level.setBlockAt(x,y,z, level.blockAt(x,y+1,z-1))

Not sure how you would go about the smoothing part, but your code seems to be working pretty well. What's your exact problem/dissatisfaction with it?

P.S. You could take a look at the smooth.py filter that comes with MCEdit and see how it works. I am trying to figure it out right now, but given the time I have in my hands, it's kinda difficult due to.. Well... Finals..

Not sure how you would go about the smoothing part, but your code seems to be working pretty well. What's your exact problem/dissatisfaction with it?

P.S. You could take a look at the smooth.py filter that comes with MCEdit and see how it works. I am trying to figure it out right now, but given the time I have in my hands, it's kinda difficult due to.. Well... Finals..

My only issue isn't really an issue for most people. I'm trying to run it on an absolutely massive area (roughly 4500x4500 blocks) and it's taking a long time. A modified version has been running for a day and it hasn't make much progress. The modified filter is definitely slower since it uses a random slope function, but I hope that it will be done in a few days time.

My computer failed somewhere through the script (it got about 10% or so through this time, but I had to restart it a few times when I wanted to make some changes). Seems to be working tho.

Anyways, I'm gong to be travelling soon and this script will need several days to run and my computer isn't in the best of shape right now so I'd like to make an offer to the guys on the forum.

I'd like to pay you... say US$ 25 ( I am willing to negotiate this.) to run this filter (slightly modified) on a provided map file. It can run in the background but it will take a few days of uninterrupted (no shutting down/logging out) running to complete. Just e-mail me at [email protected] if you are interested.

Preface: I know I am bumping this and I am sorry. xD

I make a lot of "note block" songs and, at the moment, they are massive structures. However, a few years ago, Wireless note block songs were a thing.

As seen Now, every filter I find does not function. I would really like if someone could make a working filter that is compliant with 1.12 sounds. You could download oddwhirl's or grande1899's script and edit it if you don't want to start from scratch...

There is nothing to fix. If you know even the littlest thing about coding, check my code. You'll see that the

biggerthe Y-axis selection you have, themorecycles there are to run in the for loop. Meaning, try having asmallerY selection, or even better,try using the filter, since it's a really resource intensive one.onlywhere it is neededMCEdit: Minecraft World Editor

I did not even see a progress bar come up, is this normal?

I am not a Mac user so I have to ask. Does opening MCEdit open a terminal window as well? If so, there is a counter for the times the program has looped..

MCEdit: Minecraft World Editor

No, no terminal appears, How long do you think a 300x400x100 area would take to process?

Hi,

I re-wrote your script a bit, after I spent some time teaching myself a little python. works fine, if you want it here you go. I do want to know how to add a progress bar though.

Cheers

Yes!Your method ismuchmore efficient.. Wow, my coding skills are dusty!(Haven't coded sinceliterallypast summer due to intense studying).As far as I remember, there is no way to add a progress bar, sadly. Although, you can add a counter variable and print it in each loop

(it will be printed in the command prompt window). Reminder: total loops: (box.maxx-box.minx)*(box.maxz-box.minz)*(box.maxy-box.miny)So, you could add something like:

print "Repeated times: ", counter, " out of ", product, " of total loops."Right under

level.setBlockDataAt(.....)MCEdit: Minecraft World Editor

So I spent some time and came up with this, it's much larger since it also includes a crevice, a slope and rudimentary blending tools, but I'm not happy with the blending aspect, but I don't really know how to do any better than that, any advice on how to improve that would probably be helpful.

Cheers,

Emizaquel

P.S. I'm stress testing it right now, I'll get back to you on that in about 36 hours.

Not sure how you would go about the

smoothingpart, but your code seems to be working pretty well. What's your exact problem/dissatisfaction with it?P.S.You could take a look at thesmooth.pyfilter that comes with MCEdit and see how it works. I am trying to figure it out right now, but given the time I have in my hands, it's kinda difficult due to..Well...Finals..MCEdit: Minecraft World Editor

My only issue isn't really an issue for most people. I'm trying to run it on an absolutely massive area (roughly 4500x4500 blocks) and it's taking a long time. A modified version has been running for a day and it hasn't make much progress. The modified filter is definitely slower since it uses a random slope function, but I hope that it will be done in a few days time.

Hi,

My computer failed somewhere through the script (it got about 10% or so through this time, but I had to restart it a few times when I wanted to make some changes). Seems to be working tho.

Anyways, I'm gong to be travelling soon and this script will need several days to run and my computer isn't in the best of shape right now so I'd like to make an offer to the guys on the forum.

I'd like to pay you... say US$ 25 ( I am willing to negotiate this.) to run this filter (slightly modified) on a provided map file. It can run in the background but it will take a few days of uninterrupted (no shutting down/logging out) running to complete. Just e-mail me at [email protected] if you are interested.

Cheers,

Emizaquel

Preface: I know I am bumping this and I am sorry. xD

I make a lot of "note block" songs and, at the moment, they are massive structures. However, a few years ago, Wireless note block songs were a thing.

As seen Now, every filter I find does not function. I would really like if someone could make a working filter that is compliant with 1.12 sounds. You could download oddwhirl's or grande1899's script and edit it if you don't want to start from scratch...

Thanks,

IHostileI