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...
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 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(.....)
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 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..
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