diff --git a/pe/droidjam.js b/pe/droidjam.js index a0e6a32..e6896a6 100755 --- a/pe/droidjam.js +++ b/pe/droidjam.js @@ -65,6 +65,7 @@ function runServer() { new java.io.InputStreamReader( socket.getInputStream())); writer=new java.io.PrintWriter(socket.getOutputStream(),true); + Level.setTime(0); while(running) { var str = reader.readLine(); @@ -137,6 +138,9 @@ function handleCommand(cmd) { if (m == "world.setBlock") { setBlock(args); } + else if (m == "world.setBlocks") { + setBlocks(args); + } else if (m == "player.getPos") { writer.println(""+Player.getX()+","+Player.getY()+","+Player.getZ()); } @@ -152,9 +156,33 @@ function handleCommand(cmd) { } function setBlock(args) { +// android.util.Log.v("droidjam", "setTile "+args[0]+"|"+args[1]+"|"+args[2]+"|"+args[3]+"|"+args[4]); Level.setTile(args[0], args[1], args[2], args[3], args[4]); } +function setBlocks(args) { + var x0 = parseInt(args[0]); + var y0 = parseInt(args[1]); + var z0 = parseInt(args[2]); + var x1 = parseInt(args[3]); + var y1 = parseInt(args[4]); + var z1 = parseInt(args[5]); + var startx = x0 < x1 ? x0 : x1; + var starty = y0 < y1 ? y0 : y1; + var startz = z0 < z1 ? z0 : z1; + var endx = x0 > x1 ? x0 : x1; + var endy = y0 > y1 ? y0 : y1; + var endz = z0 > z1 ? z0 : z1; + android.util.Log.v("droidjam", "setBlocks: "+startx+"|"+starty+"|"+startz+"|"+endx+"|"+endy+"|"+endz+">"+args[6]+"|"+args[7]); + for (x = startx ; x <= endx ; x++) { + for (y = starty ; y <= endy ; y++) { + for (z = startz ; z <= endz ; z++) { + Level.setTile(x, y, z, args[6], args[7]); + } + } + } +} + function err(msg) { writer.println("ERR "+msg); print("ERR "+msg); diff --git a/python2-scripts.zip b/python2-scripts.zip index 40d8069..4bc8003 100755 Binary files a/python2-scripts.zip and b/python2-scripts.zip differ diff --git a/python2-scripts/mcpipy/donut.py b/python2-scripts/mcpipy/donut.py index 2b06cb9..1fea057 100644 --- a/python2-scripts/mcpipy/donut.py +++ b/python2-scripts/mcpipy/donut.py @@ -12,7 +12,7 @@ from mc import * -def draw_donut(mcx,mcy,mcz,R,r,mcblock,mcmeta): +def draw_donut(mcx,mcy,mcz,R,r,mcblock): for x in range(-R-r,R+r): for y in range(-R-r,R+r): xy_dist = sqrt(x**2 + y**2) @@ -23,13 +23,13 @@ def draw_donut(mcx,mcy,mcz,R,r,mcblock,mcmeta): for z in range(-R-r,R+r): if (ring_dist_sq + z**2 <= r**2): - mc.setBlock(mcx+x, mcy+z, mcz+y, mcblock, mcmeta) + mc.setBlock(mcx+x, mcy+z, mcz+y, mcblock) mc = Minecraft() playerPos = mc.player.getPos() -draw_donut(playerPos.x, playerPos.y + 9, playerPos.z, 18, 9, GLASS, 0) +draw_donut(playerPos.x, playerPos.y + 9, playerPos.z, 18, 9, GLASS) mc.postToChat("Glass donut done") -draw_donut(playerPos.x, playerPos.y + 9, playerPos.z, 18, 6, GRASS, 0) +draw_donut(playerPos.x, playerPos.y + 9, playerPos.z, 18, 6, WATER) mc.postToChat("Water donut done") diff --git a/python2-scripts/mcpipy/fancytree.py b/python2-scripts/mcpipy/fancytree.py index 98af21d..138cd53 100755 --- a/python2-scripts/mcpipy/fancytree.py +++ b/python2-scripts/mcpipy/fancytree.py @@ -7,7 +7,7 @@ def tree(depth,thickness,branchLen): if random.random() < 0.2: return if branchLen < 4: - t.penblock(LEAVES) + t.penblock(LEAVES_OAK_PERMANENT) else: t.penblock(WOOD) t.penwidth(thickness) diff --git a/python2-scripts/mcpipy/lforest.py b/python2-scripts/mcpipy/lforest.py index 5470830..f38fcd9 100755 --- a/python2-scripts/mcpipy/lforest.py +++ b/python2-scripts/mcpipy/lforest.py @@ -48,7 +48,7 @@ def push(): if thickness < 1: thickness = 1 if length <= 1.6: - t.penblock(LEAVES) + t.penblock(LEAVES_OAK_PERMANENT) t.penwidth(thickness) def pop(): diff --git a/python2-scripts/mcpipy/lsystem.py b/python2-scripts/mcpipy/lsystem.py index 575ea88..4e4d0a2 100755 --- a/python2-scripts/mcpipy/lsystem.py +++ b/python2-scripts/mcpipy/lsystem.py @@ -1,121 +1,121 @@ -# -# Copyright (c) 2015 Alexander Pruss -# L-system with turtle graphics -# - -import collections -import random -from mcturtle import * - -def playProgram(s, dictionary): - for c in s: - if c in dictionary: - dictionary[c]() - - -def transform(c, t): - if isinstance(t, basestring): - return t - else: - r = random.random() - for p,out in t: - if rF][+&F]'} -# -# angle = 22.5 -# -# dictionary = { -# '[': t.push, -# ']': t.pop, -# 'F': lambda: t.go(5), -# '-': lambda: t.yaw(-angle), -# '+': lambda: t.yaw(angle), -# '&': lambda: t.pitch(angle), -# '^': lambda: t.pitch(-angle), -# '<': lambda: t.roll(-angle), -# '>': lambda: t.roll(angle), -# '|': lambda: t.pitch(180) -# } -# -# lsystem('F', rules, dictionary, 3) - - -# -# A more complex example with -# rules based on http://www.geekyblogger.com/2008/04/tree-and-l-system.html -# - rules = {'A': '^f[^^f>>>>>>A]>>>[^^f>>>>>>A]>>>>>[^^f>>>>>>A]'} - -#randomized version: -# rules = {'A': [(0.75,'^f[^^f>>>>>>A]>>>[^^f>>>>>>A]>>>>>[^^f>>>>>>A]'), -# (0.25,'^f>>[^^f>>>>>>A]>>>[^^f>>>>>>A]')]} - - axiom = 'fA' - angle = 15 - thickness = 8 - length = 15 - material = WOOD - t.penwidth(thickness) - t.penblock(material) - - stack = [] - def push(): - global length - global thickness - stack.append((length,thickness)) - t.push() - thickness = thickness * 0.6 - length = length * 0.75 - if thickness < 1: - thickness = 1 - if length <= 1: - t.penblock(LEAVES) - t.penwidth(thickness) - - def pop(): - global length - global thickness - length,thickness = stack.pop() - t.pop() - - dictionary = { - '[': push, - ']': pop, - '^': lambda: t.pitch(angle), - '>': lambda: t.roll(angle), - 'f': lambda: t.go(length) - } - -# print evolve(axiom, rules, 11) +# +# Copyright (c) 2015 Alexander Pruss +# L-system with turtle graphics +# + +import collections +import random +from mcturtle import * + +def playProgram(s, dictionary): + for c in s: + if c in dictionary: + dictionary[c]() + + +def transform(c, t): + if isinstance(t, basestring): + return t + else: + r = random.random() + for p,out in t: + if rF][+&F]'} +# +# angle = 22.5 +# +# dictionary = { +# '[': t.push, +# ']': t.pop, +# 'F': lambda: t.go(5), +# '-': lambda: t.yaw(-angle), +# '+': lambda: t.yaw(angle), +# '&': lambda: t.pitch(angle), +# '^': lambda: t.pitch(-angle), +# '<': lambda: t.roll(-angle), +# '>': lambda: t.roll(angle), +# '|': lambda: t.pitch(180) +# } +# +# lsystem('F', rules, dictionary, 3) + + +# +# A more complex example with +# rules based on http://www.geekyblogger.com/2008/04/tree-and-l-system.html +# + rules = {'A': '^f[^^f>>>>>>A]>>>[^^f>>>>>>A]>>>>>[^^f>>>>>>A]'} + +#randomized version: +# rules = {'A': [(0.75,'^f[^^f>>>>>>A]>>>[^^f>>>>>>A]>>>>>[^^f>>>>>>A]'), +# (0.25,'^f>>[^^f>>>>>>A]>>>[^^f>>>>>>A]')]} + + axiom = 'fA' + angle = 15 + thickness = 8 + length = 15 + material = WOOD + t.penwidth(thickness) + t.penblock(material) + + stack = [] + def push(): + global length + global thickness + stack.append((length,thickness)) + t.push() + thickness = thickness * 0.6 + length = length * 0.75 + if thickness < 1: + thickness = 1 + if length <= 1: + t.penblock(LEAVES_OAK_PERMANENT) + t.penwidth(thickness) + + def pop(): + global length + global thickness + length,thickness = stack.pop() + t.pop() + + dictionary = { + '[': push, + ']': pop, + '^': lambda: t.pitch(angle), + '>': lambda: t.roll(angle), + 'f': lambda: t.go(length) + } + +# print evolve(axiom, rules, 11) lsystem(axiom, rules, dictionary, 11) \ No newline at end of file diff --git a/python2-scripts/mcpipy/mcpi/block.py b/python2-scripts/mcpipy/mcpi/block.py index 42f40fa..6f33aa5 100644 --- a/python2-scripts/mcpipy/mcpi/block.py +++ b/python2-scripts/mcpipy/mcpi/block.py @@ -93,35 +93,48 @@ def __repr__(self): FENCE_GATE = Block(107) GLOWING_OBSIDIAN = Block(246) NETHER_REACTOR_CORE = Block(247) -WOOL_WHITE = Block(WOOL.id, 0) -WOOL_ORANGE = Block(WOOL.id, 1) -WOOL_MAGENTA = Block(WOOL.id, 2) -WOOL_LIGHT_BLUE = Block(WOOL.id, 3) -WOOL_YELLOW = Block(WOOL.id, 4) -WOOL_LIME = Block(WOOL.id, 5) -WOOL_PINK = Block(WOOL.id, 6) -WOOL_GRAY = Block(WOOL.id, 7) -WOOL_LIGHT_GRAY = Block(WOOL.id, 8) -WOOL_CYAN = Block(WOOL.id, 9) -WOOL_PURPLE = Block(WOOL.id, 10) -WOOL_BLUE = Block(WOOL.id, 11) -WOOL_BROWN = Block(WOOL.id, 12) -WOOL_GREEN = Block(WOOL.id, 13) -WOOL_RED = Block(WOOL.id, 14) -WOOL_BLACK = Block(WOOL.id, 15) -STAINED_GLASS_WHITE = Block(STAINED_GLASS.id, 0) -STAINED_GLASS_ORANGE = Block(STAINED_GLASS.id, 1) -STAINED_GLASS_MAGENTA = Block(STAINED_GLASS.id, 2) -STAINED_GLASS_LIGHT_BLUE = Block(STAINED_GLASS.id, 3) -STAINED_GLASS_YELLOW = Block(STAINED_GLASS.id, 4) -STAINED_GLASS_LIME = Block(STAINED_GLASS.id, 5) -STAINED_GLASS_PINK = Block(STAINED_GLASS.id, 6) -STAINED_GLASS_GRAY = Block(STAINED_GLASS.id, 7) -STAINED_GLASS_LIGHT_GRAY = Block(STAINED_GLASS.id, 8) -STAINED_GLASS_CYAN = Block(STAINED_GLASS.id, 9) -STAINED_GLASS_PURPLE = Block(STAINED_GLASS.id, 10) -STAINED_GLASS_BLUE = Block(STAINED_GLASS.id, 11) -STAINED_GLASS_BROWN = Block(STAINED_GLASS.id, 12) -STAINED_GLASS_GREEN = Block(STAINED_GLASS.id, 13) -STAINED_GLASS_RED = Block(STAINED_GLASS.id, 14) -STAINED_GLASS_BLACK = Block(STAINED_GLASS.id, 15) +WOOL_WHITE = Block(WOOL.id, 0) +WOOL_ORANGE = Block(WOOL.id, 1) +WOOL_MAGENTA = Block(WOOL.id, 2) +WOOL_LIGHT_BLUE = Block(WOOL.id, 3) +WOOL_YELLOW = Block(WOOL.id, 4) +WOOL_LIME = Block(WOOL.id, 5) +WOOL_PINK = Block(WOOL.id, 6) +WOOL_GRAY = Block(WOOL.id, 7) +WOOL_LIGHT_GRAY = Block(WOOL.id, 8) +WOOL_CYAN = Block(WOOL.id, 9) +WOOL_PURPLE = Block(WOOL.id, 10) +WOOL_BLUE = Block(WOOL.id, 11) +WOOL_BROWN = Block(WOOL.id, 12) +WOOL_GREEN = Block(WOOL.id, 13) +WOOL_RED = Block(WOOL.id, 14) +WOOL_BLACK = Block(WOOL.id, 15) +STAINED_GLASS_WHITE = Block(STAINED_GLASS.id, 0) +STAINED_GLASS_ORANGE = Block(STAINED_GLASS.id, 1) +STAINED_GLASS_MAGENTA = Block(STAINED_GLASS.id, 2) +STAINED_GLASS_LIGHT_BLUE = Block(STAINED_GLASS.id, 3) +STAINED_GLASS_YELLOW = Block(STAINED_GLASS.id, 4) +STAINED_GLASS_LIME = Block(STAINED_GLASS.id, 5) +STAINED_GLASS_PINK = Block(STAINED_GLASS.id, 6) +STAINED_GLASS_GRAY = Block(STAINED_GLASS.id, 7) +STAINED_GLASS_LIGHT_GRAY = Block(STAINED_GLASS.id, 8) +STAINED_GLASS_CYAN = Block(STAINED_GLASS.id, 9) +STAINED_GLASS_PURPLE = Block(STAINED_GLASS.id, 10) +STAINED_GLASS_BLUE = Block(STAINED_GLASS.id, 11) +STAINED_GLASS_BROWN = Block(STAINED_GLASS.id, 12) +STAINED_GLASS_GREEN = Block(STAINED_GLASS.id, 13) +STAINED_GLASS_RED = Block(STAINED_GLASS.id, 14) +STAINED_GLASS_BLACK = Block(STAINED_GLASS.id, 15) +LEAVES_OAK_DECAYABLE = Block(LEAVES.id, 0) +LEAVES_SPRUCE_DECAYABLE = Block(LEAVES.id, 1) +LEAVES_BIRCH_DECAYABLE = Block(LEAVES.id, 2) +LEAVES_JUNGLE_DECAYABLE = Block(LEAVES.id, 3) +LEAVES_OAK_PERMANENT = Block(LEAVES.id, 4) +LEAVES_SPRUCE_PERMANENT = Block(LEAVES.id, 5) +LEAVES_BIRCH_PERMANENT = Block(LEAVES.id, 6) +LEAVES_JUNGLE_PERMANENT = Block(LEAVES.id, 7) +# desktop +LEAVES_ACACIA_DECAYABLE = Block(161,0) +LEAVES_DARK_OAK_DECAYABLE = Block(161,1) +LEAVES_ACACIA_PERMANENT = Block(161,2) +LEAVES_DARK_OAK_PERMANENT = Block(161,3) diff --git a/python3-scripts.zip b/python3-scripts.zip index f5af10b..0be857a 100644 Binary files a/python3-scripts.zip and b/python3-scripts.zip differ diff --git a/python3-scripts/mcpipy/donut.py b/python3-scripts/mcpipy/donut.py index 2b06cb9..1fea057 100644 --- a/python3-scripts/mcpipy/donut.py +++ b/python3-scripts/mcpipy/donut.py @@ -12,7 +12,7 @@ from mc import * -def draw_donut(mcx,mcy,mcz,R,r,mcblock,mcmeta): +def draw_donut(mcx,mcy,mcz,R,r,mcblock): for x in range(-R-r,R+r): for y in range(-R-r,R+r): xy_dist = sqrt(x**2 + y**2) @@ -23,13 +23,13 @@ def draw_donut(mcx,mcy,mcz,R,r,mcblock,mcmeta): for z in range(-R-r,R+r): if (ring_dist_sq + z**2 <= r**2): - mc.setBlock(mcx+x, mcy+z, mcz+y, mcblock, mcmeta) + mc.setBlock(mcx+x, mcy+z, mcz+y, mcblock) mc = Minecraft() playerPos = mc.player.getPos() -draw_donut(playerPos.x, playerPos.y + 9, playerPos.z, 18, 9, GLASS, 0) +draw_donut(playerPos.x, playerPos.y + 9, playerPos.z, 18, 9, GLASS) mc.postToChat("Glass donut done") -draw_donut(playerPos.x, playerPos.y + 9, playerPos.z, 18, 6, GRASS, 0) +draw_donut(playerPos.x, playerPos.y + 9, playerPos.z, 18, 6, WATER) mc.postToChat("Water donut done") diff --git a/python3-scripts/mcpipy/fancytree.py b/python3-scripts/mcpipy/fancytree.py index 98af21d..138cd53 100755 --- a/python3-scripts/mcpipy/fancytree.py +++ b/python3-scripts/mcpipy/fancytree.py @@ -7,7 +7,7 @@ def tree(depth,thickness,branchLen): if random.random() < 0.2: return if branchLen < 4: - t.penblock(LEAVES) + t.penblock(LEAVES_OAK_PERMANENT) else: t.penblock(WOOD) t.penwidth(thickness) diff --git a/python3-scripts/mcpipy/lforest.py b/python3-scripts/mcpipy/lforest.py index e86e0ae..d306835 100755 --- a/python3-scripts/mcpipy/lforest.py +++ b/python3-scripts/mcpipy/lforest.py @@ -48,7 +48,7 @@ def push(): if thickness < 1: thickness = 1 if length <= 1.6: - t.penblock(LEAVES) + t.penblock(LEAVES_OAK_PERMANENT) t.penwidth(thickness) def pop(): diff --git a/python3-scripts/mcpipy/lsystem.py b/python3-scripts/mcpipy/lsystem.py index 9e8b552..d15144e 100755 --- a/python3-scripts/mcpipy/lsystem.py +++ b/python3-scripts/mcpipy/lsystem.py @@ -100,7 +100,7 @@ def push(): if thickness < 1: thickness = 1 if length <= 1: - t.penblock(LEAVES) + t.penblock(LEAVES_OAK_PERMANENT) t.penwidth(thickness) def pop(): diff --git a/python3-scripts/mcpipy/mcpi/block.py b/python3-scripts/mcpipy/mcpi/block.py index 42f40fa..6f33aa5 100644 --- a/python3-scripts/mcpipy/mcpi/block.py +++ b/python3-scripts/mcpipy/mcpi/block.py @@ -93,35 +93,48 @@ def __repr__(self): FENCE_GATE = Block(107) GLOWING_OBSIDIAN = Block(246) NETHER_REACTOR_CORE = Block(247) -WOOL_WHITE = Block(WOOL.id, 0) -WOOL_ORANGE = Block(WOOL.id, 1) -WOOL_MAGENTA = Block(WOOL.id, 2) -WOOL_LIGHT_BLUE = Block(WOOL.id, 3) -WOOL_YELLOW = Block(WOOL.id, 4) -WOOL_LIME = Block(WOOL.id, 5) -WOOL_PINK = Block(WOOL.id, 6) -WOOL_GRAY = Block(WOOL.id, 7) -WOOL_LIGHT_GRAY = Block(WOOL.id, 8) -WOOL_CYAN = Block(WOOL.id, 9) -WOOL_PURPLE = Block(WOOL.id, 10) -WOOL_BLUE = Block(WOOL.id, 11) -WOOL_BROWN = Block(WOOL.id, 12) -WOOL_GREEN = Block(WOOL.id, 13) -WOOL_RED = Block(WOOL.id, 14) -WOOL_BLACK = Block(WOOL.id, 15) -STAINED_GLASS_WHITE = Block(STAINED_GLASS.id, 0) -STAINED_GLASS_ORANGE = Block(STAINED_GLASS.id, 1) -STAINED_GLASS_MAGENTA = Block(STAINED_GLASS.id, 2) -STAINED_GLASS_LIGHT_BLUE = Block(STAINED_GLASS.id, 3) -STAINED_GLASS_YELLOW = Block(STAINED_GLASS.id, 4) -STAINED_GLASS_LIME = Block(STAINED_GLASS.id, 5) -STAINED_GLASS_PINK = Block(STAINED_GLASS.id, 6) -STAINED_GLASS_GRAY = Block(STAINED_GLASS.id, 7) -STAINED_GLASS_LIGHT_GRAY = Block(STAINED_GLASS.id, 8) -STAINED_GLASS_CYAN = Block(STAINED_GLASS.id, 9) -STAINED_GLASS_PURPLE = Block(STAINED_GLASS.id, 10) -STAINED_GLASS_BLUE = Block(STAINED_GLASS.id, 11) -STAINED_GLASS_BROWN = Block(STAINED_GLASS.id, 12) -STAINED_GLASS_GREEN = Block(STAINED_GLASS.id, 13) -STAINED_GLASS_RED = Block(STAINED_GLASS.id, 14) -STAINED_GLASS_BLACK = Block(STAINED_GLASS.id, 15) +WOOL_WHITE = Block(WOOL.id, 0) +WOOL_ORANGE = Block(WOOL.id, 1) +WOOL_MAGENTA = Block(WOOL.id, 2) +WOOL_LIGHT_BLUE = Block(WOOL.id, 3) +WOOL_YELLOW = Block(WOOL.id, 4) +WOOL_LIME = Block(WOOL.id, 5) +WOOL_PINK = Block(WOOL.id, 6) +WOOL_GRAY = Block(WOOL.id, 7) +WOOL_LIGHT_GRAY = Block(WOOL.id, 8) +WOOL_CYAN = Block(WOOL.id, 9) +WOOL_PURPLE = Block(WOOL.id, 10) +WOOL_BLUE = Block(WOOL.id, 11) +WOOL_BROWN = Block(WOOL.id, 12) +WOOL_GREEN = Block(WOOL.id, 13) +WOOL_RED = Block(WOOL.id, 14) +WOOL_BLACK = Block(WOOL.id, 15) +STAINED_GLASS_WHITE = Block(STAINED_GLASS.id, 0) +STAINED_GLASS_ORANGE = Block(STAINED_GLASS.id, 1) +STAINED_GLASS_MAGENTA = Block(STAINED_GLASS.id, 2) +STAINED_GLASS_LIGHT_BLUE = Block(STAINED_GLASS.id, 3) +STAINED_GLASS_YELLOW = Block(STAINED_GLASS.id, 4) +STAINED_GLASS_LIME = Block(STAINED_GLASS.id, 5) +STAINED_GLASS_PINK = Block(STAINED_GLASS.id, 6) +STAINED_GLASS_GRAY = Block(STAINED_GLASS.id, 7) +STAINED_GLASS_LIGHT_GRAY = Block(STAINED_GLASS.id, 8) +STAINED_GLASS_CYAN = Block(STAINED_GLASS.id, 9) +STAINED_GLASS_PURPLE = Block(STAINED_GLASS.id, 10) +STAINED_GLASS_BLUE = Block(STAINED_GLASS.id, 11) +STAINED_GLASS_BROWN = Block(STAINED_GLASS.id, 12) +STAINED_GLASS_GREEN = Block(STAINED_GLASS.id, 13) +STAINED_GLASS_RED = Block(STAINED_GLASS.id, 14) +STAINED_GLASS_BLACK = Block(STAINED_GLASS.id, 15) +LEAVES_OAK_DECAYABLE = Block(LEAVES.id, 0) +LEAVES_SPRUCE_DECAYABLE = Block(LEAVES.id, 1) +LEAVES_BIRCH_DECAYABLE = Block(LEAVES.id, 2) +LEAVES_JUNGLE_DECAYABLE = Block(LEAVES.id, 3) +LEAVES_OAK_PERMANENT = Block(LEAVES.id, 4) +LEAVES_SPRUCE_PERMANENT = Block(LEAVES.id, 5) +LEAVES_BIRCH_PERMANENT = Block(LEAVES.id, 6) +LEAVES_JUNGLE_PERMANENT = Block(LEAVES.id, 7) +# desktop +LEAVES_ACACIA_DECAYABLE = Block(161,0) +LEAVES_DARK_OAK_DECAYABLE = Block(161,1) +LEAVES_ACACIA_PERMANENT = Block(161,2) +LEAVES_DARK_OAK_PERMANENT = Block(161,3)