From b00e722ab096b1c7fc15f6f172231e56014c1909 Mon Sep 17 00:00:00 2001 From: arpruss Date: Fri, 29 May 2015 15:19:54 -0500 Subject: [PATCH] foo --- pe/droidjam.js | 28 ++++ python2-scripts.zip | Bin 113000 -> 113168 bytes python2-scripts/mcpipy/donut.py | 8 +- python2-scripts/mcpipy/fancytree.py | 2 +- python2-scripts/mcpipy/lforest.py | 2 +- python2-scripts/mcpipy/lsystem.py | 240 +++++++++++++-------------- python2-scripts/mcpipy/mcpi/block.py | 77 +++++---- python3-scripts.zip | Bin 112935 -> 113087 bytes python3-scripts/mcpipy/donut.py | 8 +- python3-scripts/mcpipy/fancytree.py | 2 +- python3-scripts/mcpipy/lforest.py | 2 +- python3-scripts/mcpipy/lsystem.py | 2 +- python3-scripts/mcpipy/mcpi/block.py | 77 +++++---- 13 files changed, 251 insertions(+), 197 deletions(-) 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 40d8069d8e1d7cb5669a1e2c5765ffd18f439f31..4bc800326a5727789eb451e5aea31419e38f0b2e 100755 GIT binary patch delta 10025 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 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 f5af10b55fb689cb1e0778e36cad1316e4dd6c13..0be857a1d7335e18026f38252bc7f4868385751a 100644 GIT binary patch delta 11577 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 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)