Finish first pass on pre 1.13 blocks

This commit is contained in:
Mike Primm 2018-08-18 17:55:35 -04:00
parent 2fc1f92e20
commit 667fc7dd15
6 changed files with 345 additions and 190 deletions

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap;
import java.util.Arrays;
import java.util.BitSet;
import java.util.List;
import org.dynmap.hdmap.TexturePack;
@ -78,13 +79,13 @@ public class HDBlockStateTextureMap {
}
// Add block state to table, with given block IDs and state indexes
public void addToTable(List<String> blocknames, List<Integer> stateidx) {
public void addToTable(List<String> blocknames, BitSet stateidx) {
/* Add entries to lookup table */
for (String blkname : blocknames) {
DynmapBlockState baseblk = DynmapBlockState.getBaseStateByName(blkname);
if (baseblk.isNotAir()) {
if (stateidx != null) {
for (Integer stateid : stateidx) {
for (int stateid = stateidx.nextSetBit(0); stateid >= 0; stateid = stateidx.nextSetBit(stateid+1)) {
DynmapBlockState bs = baseblk.getState(stateid);
if (bs.isAir()) {
Log.warning("Invalid texture block state: " + blkname + ":" + stateid);

View File

@ -10,6 +10,7 @@ import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.BitSet;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
@ -481,7 +482,7 @@ public class TexturePack {
private Map<Integer, Integer> key_to_index = new HashMap<Integer, Integer>();
private List<Integer> texture_ids = new ArrayList<Integer>();
private List<String> blocknames = new ArrayList<String>();
private List<Integer> stateids = new ArrayList<Integer>();
private BitSet stateids = new BitSet();
private BlockTransparency trans = BlockTransparency.OPAQUE;
private int colorMult = 0;
private CustomColorMultiplier custColorMult = null;
@ -545,7 +546,7 @@ public class TexturePack {
/**
* Add settings for texture map
*/
private static void addTextureIndex(String id, List<String> blocknames, List<Integer> stateids, BlockTransparency trans, int colorMult, CustomColorMultiplier custColorMult, String blockset) {
private static void addTextureIndex(String id, List<String> blocknames, BitSet stateids, BlockTransparency trans, int colorMult, CustomColorMultiplier custColorMult, String blockset) {
TextureMap idx = textmap_by_id.get(id);
if(idx == null) { /* Add empty one, if not found */
idx = new TextureMap();
@ -1933,7 +1934,7 @@ public class TexturePack {
}
else if(line.startsWith("block:")) {
List<String> blknames = new ArrayList<String>();
List<Integer> stateids = null;
BitSet stateids = null;
int srctxtid = TXTID_TERRAINPNG;
if (!terrain_ok)
srctxtid = TXTID_INVALID; // Mark as not usable
@ -1977,8 +1978,19 @@ public class TexturePack {
stateids = null;
}
else {
if (stateids == null) { stateids = new ArrayList<Integer>(); }
stateids.add(getIntValue(varvals,av[1]));
if (stateids == null) { stateids = new BitSet(); }
// See if range
if (av[1].indexOf('-') >= 0) {
String[] tok = av[1].split("-");
int v1 = getIntValue(varvals, tok[0]);
int v2 = getIntValue(varvals, tok[1]);
for (int v = v1; v <= v2; v++) {
stateids.set(v);
}
}
else {
stateids.set(getIntValue(varvals,av[1]));
}
}
}
else if(av[0].equals("top") || av[0].equals("y-") || av[0].equals("face1")) {
@ -2143,7 +2155,7 @@ public class TexturePack {
}
else if(line.startsWith("copyblock:")) {
List<String> blknames = new ArrayList<String>();
List<Integer> stateids = null;
BitSet stateids = null;
line = line.substring(line.indexOf(':')+1);
String[] args = line.split(",");
String srcname = null;
@ -2163,8 +2175,19 @@ public class TexturePack {
stateids = null; // Set all
}
else {
if (stateids == null) { stateids = new ArrayList<Integer>(); }
stateids.add(getIntValue(varvals,av[1]));
if (stateids == null) { stateids = new BitSet(); }
// See if range
if (av[1].indexOf('-') >= 0) {
String[] tok = av[1].split("-");
int v1 = getIntValue(varvals, tok[0]);
int v2 = getIntValue(varvals, tok[1]);
for (int v = v1; v <= v2; v++) {
stateids.set(v);
}
}
else {
stateids.set(getIntValue(varvals,av[1]));
}
}
}
else if(av[0].equals("srcid")) {
@ -2210,7 +2233,7 @@ public class TexturePack {
}
}
else {
for (Integer stateid : stateids) {
for (int stateid = stateids.nextSetBit(0); stateid >= 0; stateid = stateids.nextSetBit(stateid+1)) {
DynmapBlockState dblk2 = dblk.getState(stateid);
HDBlockStateTextureMap.copyToStateIndex(dblk2, map);
}
@ -2259,7 +2282,7 @@ public class TexturePack {
}
else if(line.startsWith("texturemap:")) {
List<String> blknames = new ArrayList<String>();
List<Integer> stateids = new ArrayList<Integer>();
BitSet stateids = null;
String mapid = null;
line = line.substring(line.indexOf(':') + 1);
BlockTransparency trans = BlockTransparency.OPAQUE;
@ -2283,7 +2306,19 @@ public class TexturePack {
stateids = null;
}
else {
stateids.add(getIntValue(varvals,av[1]));
if (stateids == null) { stateids = new BitSet(); }
// See if range
if (av[1].indexOf('-') >= 0) {
String[] tok = av[1].split("-");
int v1 = getIntValue(varvals, tok[0]);
int v2 = getIntValue(varvals, tok[1]);
for (int v = v1; v <= v2; v++) {
stateids.set(v);
}
}
else {
stateids.set(getIntValue(varvals,av[1]));
}
}
}
else if(av[0].equals("transparency")) {
@ -2316,10 +2351,6 @@ public class TexturePack {
}
}
}
/* If no states, assume all */
if (stateids.isEmpty()) {
stateids = null;
}
/* If we have everything, build texture map */
if((blknames.size() > 0) && (mapid != null)) {
addTextureIndex(mapid, blknames, stateids, trans, colorMult, custColorMult, blockset);

View File

@ -0,0 +1,64 @@
package org.dynmap.hdmap.renderer;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map;
import org.dynmap.renderer.CustomRenderer;
import org.dynmap.renderer.MapDataContext;
import org.dynmap.renderer.RenderPatch;
import org.dynmap.renderer.RenderPatchFactory;
import org.dynmap.renderer.RenderPatchFactory.SideVisible;
public class HeadRenderer extends CustomRenderer {
private static final int NUM_DIRECTIONS = 16;
private RenderPatch basemesh[];
private RenderPatch meshes[][] = new RenderPatch[NUM_DIRECTIONS][];
@Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false;
ArrayList<RenderPatch> list = new ArrayList<RenderPatch>();
list.add(rpf.getPatch(0.75, 0.0, 0.25, 0.25, 0.0, 0.25, 0.75, 0.0, 0.75, 0, 1, 0, 1, SideVisible.TOP, 0));
list.add(rpf.getPatch(0.75, 0.5, 0.25, 0.25, 0.5, 0.25, 0.75, 0.5, 0.75, 0, 1, 0, 1, SideVisible.TOP, 0));
RenderPatch side = rpf.getPatch(0.75, 0.0, 0.25, 0.25, 0.0, 0.25, 0.75, 0.5, 0.25, 0, 1, 0, 1, SideVisible.TOP, 0);
RenderPatch side2 = rpf.getRotatedPatch(side, 0, 90, 0, 0);
RenderPatch side3 = rpf.getRotatedPatch(side, 0, 180, 0, 0);
RenderPatch side4 = rpf.getRotatedPatch(side, 0, 270, 0, 0);
list.add(side4);
list.add(side);
list.add(side2);
list.add(side3);
basemesh = list.toArray(new RenderPatch[list.size()]);
return true;
}
@Override
public int getMaximumTextureCount() {
return 6;
}
private static final int faces[] = { 0, 1, 2, 3, 4, 5 };
@Override
public RenderPatch[] getRenderPatchList(MapDataContext ctx) {
int idx = ctx.getBlockType().stateIndex;
while(idx < 0) idx += NUM_DIRECTIONS; // Normalize (bad values from some mods)
if(idx < meshes.length) {
if(meshes[idx] == null) {
RenderPatchFactory rpf = ctx.getPatchFactory();
RenderPatch[] rp = new RenderPatch[basemesh.length];
for(int i = 0; i < rp.length; i++) {
rp[i] = rpf.getRotatedPatch(basemesh[i], 0, 45*idx/2, 0, faces[i]);
}
meshes[idx] = rp;
}
return meshes[idx];
}
else
return meshes[0];
}
}

View File

@ -0,0 +1,64 @@
package org.dynmap.hdmap.renderer;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map;
import org.dynmap.renderer.CustomRenderer;
import org.dynmap.renderer.MapDataContext;
import org.dynmap.renderer.RenderPatch;
import org.dynmap.renderer.RenderPatchFactory;
import org.dynmap.renderer.RenderPatchFactory.SideVisible;
public class WallHeadRenderer extends CustomRenderer {
private static final int NUM_DIRECTIONS = 16;
private RenderPatch basemesh[];
private RenderPatch meshes[][] = new RenderPatch[NUM_DIRECTIONS][];
@Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false;
ArrayList<RenderPatch> list = new ArrayList<RenderPatch>();
list.add(rpf.getPatch(0.75, 0.0, 0.25, 0.25, 0.0, 0.25, 0.75, 0.0, 0.75, 0, 1, 0, 1, SideVisible.TOP, 0));
list.add(rpf.getPatch(0.75, 0.5, 0.25, 0.25, 0.5, 0.25, 0.75, 0.5, 0.75, 0, 1, 0, 1, SideVisible.TOP, 0));
RenderPatch side = rpf.getPatch(0.75, 0.0, 0.25, 0.25, 0.0, 0.25, 0.75, 0.5, 0.25, 0, 1, 0, 1, SideVisible.TOP, 0);
RenderPatch side2 = rpf.getRotatedPatch(side, 0, 90, 0, 0);
RenderPatch side3 = rpf.getRotatedPatch(side, 0, 180, 0, 0);
RenderPatch side4 = rpf.getRotatedPatch(side, 0, 270, 0, 0);
list.add(side4);
list.add(side);
list.add(side2);
list.add(side3);
basemesh = list.toArray(new RenderPatch[list.size()]);
return true;
}
@Override
public int getMaximumTextureCount() {
return 6;
}
private static final int faces[] = { 0, 1, 2, 3, 4, 5 };
@Override
public RenderPatch[] getRenderPatchList(MapDataContext ctx) {
int idx = ctx.getBlockType().stateIndex;
while(idx < 0) idx += NUM_DIRECTIONS; // Normalize (bad values from some mods)
if(idx < meshes.length) {
if(meshes[idx] == null) {
RenderPatchFactory rpf = ctx.getPatchFactory();
RenderPatch[] rp = new RenderPatch[basemesh.length];
for(int i = 0; i < rp.length; i++) {
rp[i] = rpf.getRotatedPatch(basemesh[i], 0, 45*idx/2, 0, faces[i]);
}
meshes[idx] = rp;
}
return meshes[idx];
}
else
return meshes[0];
}
}

View File

@ -239,10 +239,15 @@ ignore-updates:id=redstone_wall_torch,id=redstone_torch
customblock:id=oak_fence,id=spruce_fence,id=birch_fence,id=jungle_fence,id=acacia_fence,id=dark_oak_fence,id=nether_brick_fence,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=fence,link0=107
# Stone pressure plate
# Wooden pressure plate
# Oak pressure plate
# Spruce pressure plate
# Birch pressure plate
# Jungle pressure plate
# Acacia pressure plate
# Dark Oak pressure plate
# Light weighted pressure plate
# Heavy weighted pressure plate
boxblock:id=wooden_pressure_plate,id=stone_pressure_plate,id=light_weighted_pressure_plate,id=heavy_weighted_pressure_plate,xmin=0.0625,xmax=0.9275,ymax=0.0625,zmin=0.0625,zmax=0.9275
boxblock:id=oak_pressure_plate,id=spruce_pressure_plate,id=birch_pressure_plate,id=jungle_pressure_plate,id=acacia_pressure_plate,id=dark_oak_pressure_plate,id=stone_pressure_plate,id=light_weighted_pressure_plate,id=heavy_weighted_pressure_plate,xmin=0.0625,xmax=0.9275,ymax=0.0625,zmin=0.0625,zmax=0.9275
# Trapdoor (closed)
boxblock:id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor,id=acacia_trapdoor,id=dark_oak_trapdoor,data=12,data=13,data=14,data=15,data=28,data=29,data=30,data=31,data=44,data=45,data=46,data=47,data=60,data=61,data=62,data=63,ymax=0.1875
@ -261,65 +266,56 @@ boxblock:id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor
# Carrot
# Potatoes
patchblock:id=wheat,id=carrots,id=potatoes,patch0=VertX075,patch1=VertX075@90,patch2=VertX025,patch3=VertX025@90
# Stone Button - facing bottom
# Oak button - facing bottom
# Spruce button - facing bottom
# Birch button - facing bottom
# Jungle button - facing bottom
# Acacia button - facing bottom
# Dark oak button - facing bottom
boxblock:id=stone_button,id=wooden_button,data=0,data=8,xmin=0.3125,xmax=0.6875,ymin=0.875,zmin=0.375,zmax=0.625
# Stone Button - facing south
# Wooden Button - facing south
boxblock:id=stone_button,id=wooden_button,data=1,data=9,xmax=0.125,ymin=0.375,ymax=0.625,zmin=0.3125,zmax=0.6875
# Stone Button - facing north
# Wooden Button - facing north
boxblock:id=stone_button,id=wooden_button,data=2,data=10,xmin=0.875,ymin=0.375,ymax=0.625,zmin=0.3125,zmax=0.6875
# Stone Button - facing west
# Wooden Button - facing west
boxblock:id=stone_button,id=wooden_button,data=3,data=11,zmax=0.125,ymin=0.375,ymax=0.625,xmin=0.3125,xmax=0.6875
# Stone Button - facing east
# Wooden Button - facing east
boxblock:id=stone_button,id=wooden_button,data=4,data=12,zmin=0.875,ymin=0.375,ymax=0.625,xmin=0.3125,xmax=0.6875
# Stone Button - facing top
# Wooden Button - facing top
boxblock:id=stone_button,id=wooden_button,data=5,data=13,xmin=0.3125,xmax=0.6875,ymax=0.125,zmin=0.375,zmax=0.625
# Stone Button
# Oak button
# Spruce button
# Birch button
# Jungle button
# Acacia button
# Dark oak button
boxblock:id=stone_button,id=oak_button,id=spruce_button,id=birch_button,id=jungle_button,id=acacia_button,id=dark_oak_button,data=0,data=8,xmin=0.3125,xmax=0.6875,ymin=0.875,zmin=0.375,zmax=0.625
boxblock:id=stone_button,id=oak_button,id=spruce_button,id=birch_button,id=jungle_button,id=acacia_button,id=dark_oak_button,data=1,data=9,xmax=0.125,ymin=0.375,ymax=0.625,zmin=0.3125,zmax=0.6875
boxblock:id=stone_button,id=oak_button,id=spruce_button,id=birch_button,id=jungle_button,id=acacia_button,id=dark_oak_button,data=2,data=10,xmin=0.875,ymin=0.375,ymax=0.625,zmin=0.3125,zmax=0.6875
boxblock:id=stone_button,id=oak_button,id=spruce_button,id=birch_button,id=jungle_button,id=acacia_button,id=dark_oak_button,data=3,data=11,zmax=0.125,ymin=0.375,ymax=0.625,xmin=0.3125,xmax=0.6875
boxblock:id=stone_button,id=oak_button,id=spruce_button,id=birch_button,id=jungle_button,id=acacia_button,id=dark_oak_button,data=4,data=12,zmin=0.875,ymin=0.375,ymax=0.625,xmin=0.3125,xmax=0.6875
boxblock:id=stone_button,id=oak_button,id=spruce_button,id=birch_button,id=jungle_button,id=acacia_button,id=dark_oak_button,data=5,data=13,xmin=0.3125,xmax=0.6875,ymax=0.125,zmin=0.375,zmax=0.625
# Rails - flat - east/west
# Powered rails - flat - east/west
# Detector rails - flat - east/west
# (157) Activator Rail
patchblock:id=rail,id=golden_rail,id=detector_rail,id=activator_rail,data=0,patch0=HorizY001ZTop
patchblock:id=rail,id=powered_rail,id=detector_rail,id=activator_rail,data=0,patch0=HorizY001ZTop
# Powered rails - flat - east/west (powered)
# (157) Activator Rail
patchblock:id=golden_rail,id=activator_rail,data=8,patch0=HorizY001ZTop
patchblock:id=powered_rail,id=activator_rail,data=8,patch0=HorizY001ZTop
# Rails - flat - north/south
# Powered rails - flat - north/south
# Detector rails - flat - north/south
# (157) Activator Rail
patchblock:id=rail,id=golden_rail,id=detector_rail,id=activator_rail,data=1,patch0=HorizY001ZTop@90
patchblock:id=rail,id=powered_rail,id=detector_rail,id=activator_rail,data=1,patch0=HorizY001ZTop@90
# Powered rails - flat - north/south (powred)
# (157) Activator Rail
patchblock:id=golden_rail,id=activator_rail,data=9,patch0=HorizY001ZTop@90
patchblock:id=powered_rail,id=activator_rail,data=9,patch0=HorizY001ZTop@90
# Rails - ascending to south
# Powered rails - ascending to south (powered or unpowered)
# Detector rails - ascending to south
# (157) Activator Rail
patchblock:id=rail,id=golden_rail,id=detector_rail,id=activator_rail,data=2,data=10,patch0=SlopeXUpZTop
patchblock:id=rail,id=powered_rail,id=detector_rail,id=activator_rail,data=2,data=10,patch0=SlopeXUpZTop
# Rails - ascending to north
# Powered rails - ascending to north
# Detector rails - ascending to north
# (157) Activator Rail
patchblock:id=rail,id=golden_rail,id=detector_rail,id=activator_rail,data=3,data=11,patch0=SlopeXUpZTop@180
patchblock:id=rail,id=powered_rail,id=detector_rail,id=activator_rail,data=3,data=11,patch0=SlopeXUpZTop@180
# Rails - ascending to east
# Powered rails - ascending to east
# Detector rails - ascending to east
# (157) Activator Rail
patchblock:id=rail,id=golden_rail,id=detector_rail,id=activator_rail,data=4,data=12,patch0=SlopeXUpZTop@270
patchblock:id=rail,id=powered_rail,id=detector_rail,id=activator_rail,data=4,data=12,patch0=SlopeXUpZTop@270
# Rails - ascending to west
# Powered rails - ascending to west
# Detector rails - ascending to west
# (157) Activator Rail
patchblock:id=rail,id=golden_rail,id=detector_rail,id=activator_rail,data=5,data=13,patch0=SlopeXUpZTop@90
patchblock:id=rail,id=powered_rail,id=detector_rail,id=activator_rail,data=5,data=13,patch0=SlopeXUpZTop@90
# Rails - northeast corner
patchblock:id=rail,data=6,patch0=HorizY001ZTop@90
# Rails - southeast corner
@ -490,8 +486,9 @@ rotate:id=white_bed,data=0,rot=180
block:id=white_bed,id=orange_bed,id=magenta_bed,id=light_blue_bed,id=yellow_bed,id=lime_bed,id=pink_bed,id=gray_bed,id=light_gray_bed,id=cyan_bed,id=purple_bed,id=blue_bed,id=brown_bed,id=green_bed,id=red_bed,id=black_bed,data=3,scale=16
rotate:id=white_bed,data=0,rot=270
# Wooden/Iron Door
customblock:id=wooden_door,id=iron_door,class=org.dynmap.hdmap.renderer.DoorRenderer
# Oak door
# Iron Door
customblock:id=oak_door,id=iron_door,class=org.dynmap.hdmap.renderer.DoorRenderer
# Wall lever, facing south
patchblock:id=lever,data=1,patch0=WLeverBase1@270,patch1=WLeverBase2@270,patch2=WLeverBase3@270,patch3=WLeverBase4@270,patch4=WLeverBase5@270,patch5=WLeverSide1@270,patch6=WLeverSide2@270,patch7=WLeverSide3@270,patch8=WLeverSide4@270
@ -751,6 +748,14 @@ patchblock:id=tall_seagrass,id=seagrass,id=fern,id=grass,id=cobweb,id=tall_grass
# Red mushroom
patchblock:id=dandelion,id=poppy,id=blue_orchid,id=allium,id=azure_bluet,id=red_tulip,id=orange_tulip,id=white_tulip,id=pink_tulip,id=oxeye_daisy,id=brown_mushroom,id=red_mushroom,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
# Sunflower
# Lilac
# Rose bush
# Peony
# Tall grass
# Large fern
patchblock:id=sunflower,id=lilac,id=rose_bush,id=peony,id=tall_grass,id=large_fern,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
# Sapling (oak, spruce, birch, jungle, acacia, dark oak)
patchblock:id=oak_sapling,id=spruce_sapling,id=birch_sapling,id=jungle_sapling,id=acacia_sapling,id=dark_oak_sapling,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
@ -784,8 +789,8 @@ patchblock:id=vine,data=13,patch0=VertX0In@270,patch1=VertX0In@90,patch2=VertX0I
patchblock:id=vine,data=11,patch0=VertX0In,patch1=VertX0In@180,patch2=VertX0In@270
# Vines - N+S+E+W sides of block
patchblock:id=vine,data=15,patch0=VertX0In@270,patch1=VertX0In@90,patch2=VertX0In@180,patch3=VertX0In
# Fence gate
customblock:id=fence_gate,class=org.dynmap.hdmap.renderer.FenceGateBlockRenderer
# Oak fence gate
customblock:id=oak_fence_gate,class=org.dynmap.hdmap.renderer.FenceGateBlockRenderer
# Pumpkin stem
# Mellon stem
block:id=pumpkin_stem,id=melon_stem,scale=16
@ -807,28 +812,28 @@ layer:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
----------------
----------------
# Lily pad
patchblock:id=waterlily,patch0=HorizY001ZTop
patchblock:id=lily_pad,patch0=HorizY001ZTop
# Water (1 down)
# Lava (1 down)
boxblock:id=flowing_water,id=water,id=flowing_lava,id=lava,data=1,ymax=0.875
boxblock:id=water,id=lava,data=1,ymax=0.875
# Water (2 down)
# Lava (2 down)
boxblock:id=flowing_water,id=water,id=flowing_lava,id=lava,data=2,ymax=0.75
boxblock:id=water,id=lava,data=2,ymax=0.75
# Water (3 down)
# Lava (3 down)
boxblock:id=flowing_water,id=water,id=flowing_lava,id=lava,data=3,ymax=0.625
boxblock:id=water,id=lava,data=3,ymax=0.625
# Water (4 down)
# Lava (4 down)
boxblock:id=flowing_water,id=water,id=flowing_lava,id=lava,data=4,ymax=0.5
boxblock:id=water,id=lava,data=4,ymax=0.5
# Water (5 down)
# Lava (5 down)
boxblock:id=flowing_water,id=water,id=flowing_lava,id=lava,data=5,ymax=0.375
boxblock:id=water,id=lava,data=5,ymax=0.375
# Water (6 down)
# Lava (6 down)
boxblock:id=flowing_water,id=water,id=flowing_lava,id=lava,data=6,ymax=0.25
boxblock:id=water,id=lava,data=6,ymax=0.25
# Water (7 down)
# Lava (7 down)
boxblock:id=flowing_water,id=water,id=flowing_lava,id=lava,data=7,ymax=0.125
boxblock:id=water,id=lava,data=7,ymax=0.125
# Enchantment Table
boxblock:id=enchanting_table,ymax=0.75
@ -1025,12 +1030,12 @@ patchblock:id=flower_pot,data=1,data=2,data=7,data=8,patch0=FlowerPotTop,patch1=
patchblock:id=flower_pot,data=3,data=4,data=5,data=6,data=10,data=11,patch0=FlowerPotTop,patch1=FlowerPotBottom,patch2=FlowerPotSide,patch3=FlowerPotSide@90,patch4=FlowerPotSide@180,patch5=FlowerPotSide@270,patch6=FlowerPotDirt,patch7=FlowerPotPlant,patch8=FlowerPotPlant@90
# Flower pot with cactus
patchblock:id=flower_pot,data=9,patch0=FlowerPotTop,patch1=FlowerPotBottom,patch2=FlowerPotSide,patch3=FlowerPotSide@90,patch4=FlowerPotSide@180,patch5=FlowerPotSide@270,patch6=FlowerPotDirt,patch7=FlowerPotCactusSide,patch8=FlowerPotCactusSide@90,,patch9=FlowerPotCactusSide@180,,patch10=FlowerPotCactusSide@270,,patch11=FlowerPotCactusTop
# Head
patch:id=HeadTop,Ox=0.75,Oy=0.5,Oz=0.75,Ux=0.25,Uy=0.5,Uz=0.75,Vx=0.75,Vy=0.5,Vz=0.25,visibility=bottom
patch:id=HeadBottom,Ox=0.25,Oy=0.0,Oz=0.25,Ux=0.75,Uy=0.0,Uz=0.25,Vx=0.25,Vy=0.0,Vz=0.75,visibility=top
patch:id=HeadSide,Ox=0.75,Oy=0.0,Oz=0.25,Ux=0.25,Uy=0.0,Uz=0.25,Vx=0.75,Vy=0.5,Vz=0.25,visibility=top
#patchblock:id=skull,patch0=HeadTop,patch1=HeadBottom,patch2=HeadSide,patch3=HeadSide@90,patch4=HeadSide@180,patch5=HeadSide@270
customblock:id=skull,class=org.dynmap.hdmap.renderer.SkullRenderer
# Wall head (TODO: Fix renderer)
customblock:id=skeleton_wall_skull,id=wither_skeleton_wall_skull,id=zombie_wall_head,id=player_wall_head,id=creeper_wall_head,id=dragon_wall_head,class=org.dynmap.hdmap.renderer.WallHeadRenderer
# Head (TODO: Fix renderer)
customblock:id=skeleton_skull,id=wither_skeleton_skull,id=zombie_head,id=player_head,id=creeper_head,id=dragon_head,class=org.dynmap.hdmap.renderer.HeadRenderer
# Anvil
patch:id=AnvilBaseSide,Ox=0.0,Oy=0.0,Oz=0.125,Ux=1.0,Uy=0.0,Uz=0.125,Vx=0.0,Vy=1.0,Vz=0.125,Umin=0.125,Umax=0.875,Vmin=0.0,Vmax=0.25,visibility=both
patch:id=AnvilBaseTop,Ox=0.0,Oy=0.25,Oz=0.0,Ux=1.0,Uy=0.25,Uz=0.0,Vx=0.0,Vy=0.25,Vz=1.0,Umin=0.125,Umax=0.875,Vmin=0.125,Vmax=0.875,visibility=bottom
@ -1052,7 +1057,7 @@ patchrotate:id=anvil,data=1,rot=90
patchblock:id=anvil,data=3,data=7,data=11,data=15
patchrotate:id=anvil,data=1,rot=180
# (151) Daylight Sensor
# Daylight Sensor
boxblock:id=daylight_detector,ymax=0.375
# (149) Redstone Comparator (inactive)
@ -1187,8 +1192,10 @@ layer:11,12,13,14,15
****************
****************
# Colored glass pane (160)
customblock:id=stained_glass_pane,class=org.dynmap.hdmap.renderer.PaneRenderer
# Glass pane
customblock:id=glass_pane,class=org.dynmap.hdmap.renderer.PaneRenderer
# Colored glass pane
customblock:id=white_stained_glass_pane,class=org.dynmap.hdmap.renderer.PaneRenderer
customblock:id=orange_stained_glass_pane,class=org.dynmap.hdmap.renderer.PaneRenderer
customblock:id=magenta_stained_glass_pane,class=org.dynmap.hdmap.renderer.PaneRenderer
@ -1212,9 +1219,6 @@ customblock:id=acacia_stairs,id=dark_oak_stairs,class=org.dynmap.hdmap.renderer.
# (171) Carpet
boxblock:id=black_carpet,id=red_carpet,id=green_carpet,id=brown_carpet,id=blue_carpet,id=purple_carpet,id=cyan_carpet,id=light_gray_carpet,id=gray_carpet,id=pink_carpet,id=lime_carpet,id=yellow_carpet,id=light_blue_carpet,id=magenta_carpet,id=orange_carpet,id=white_carpet,ymax=0.0625
# (175) Double Plant
customblock:id=double_plant,data=0,data=1,data=2,data=3,data=4,data=5,class=org.dynmap.hdmap.renderer.PlantRenderer,metacnt=6
customblock:id=double_plant,data=8,data=9,data=10,data=11,data=12,data=13,data=14,data=15,class=org.dynmap.hdmap.renderer.PlantRenderer,metacnt=6,metasrc=below
# Iron Trapdoor
boxblock:id=iron_trapdoor,data=0,data=1,data=2,data=3,ymax=0.1875
@ -1224,9 +1228,6 @@ boxblock:id=iron_trapdoor,data=6,data=14,xmin=0.8125
boxblock:id=iron_trapdoor,data=7,data=15,xmax=0.1875
boxblock:id=iron_trapdoor,data=8,data=9,data=10,data=11,ymin=0.8125
# Inverted Daylight Sensor
boxblock:id=daylight_detector_inverted,ymax=0.375
# Red Sandstone stairs
customblock:id=red_sandstone_stairs,class=org.dynmap.hdmap.renderer.StairStateRenderer

View File

@ -345,20 +345,20 @@ texture:id=damaged_anvil_top
texture:id=tripwire_hook
texture:id=podzol_top
texture:id=podzol_side
texture:id=double_plant_fern_bottom
texture:id=double_plant_fern_top
texture:id=double_plant_grass_bottom
texture:id=double_plant_grass_top
texture:id=double_plant_paeonia_bottom
texture:id=double_plant_paeonia_top
texture:id=double_plant_rose_bottom
texture:id=double_plant_rose_top
texture:id=double_plant_sunflower_back
texture:id=double_plant_sunflower_bottom
texture:id=double_plant_sunflower_front
texture:id=double_plant_sunflower_top
texture:id=double_plant_syringa_bottom
texture:id=double_plant_syringa_top
texture:id=large_fern_bottom
texture:id=large_fern_top
texture:id=tall_grass_bottom
texture:id=tall_grass_top
texture:id=peony_bottom
texture:id=peony_top
texture:id=rose_bush_bottom
texture:id=rose_bush_top
texture:id=sunflower_back
texture:id=sunflower_bottom
texture:id=sunflower_front
texture:id=sunflower_top
texture:id=lilac_bottom
texture:id=lilac_top
texture:id=black_stained_glass,material=GLASS
texture:id=blue_stained_glass,material=GLASS
texture:id=brown_stained_glass,material=GLASS
@ -391,7 +391,7 @@ texture:id=red_stained_glass_pane_top,material=GLASS
texture:id=light_gray_stained_glass_pane_top,material=GLASS
texture:id=white_stained_glass_pane_top,material=GLASS
texture:id=yellow_stained_glass_pane_top,material=GLASS
texture:id=ice_packed
texture:id=packed_ice
texture:id=acacia_leaves
texture:id=dark_oak_leaves
texture:id=acacia_log
@ -414,11 +414,11 @@ texture:id=polished_diorite
texture:id=andesite
texture:id=polished_andesite
texture:id=wet_sponge
texture:id=slime
texture:id=slime_block
texture:id=iron_trapdoor
texture:id=prismarine_bricks
texture:id=prismarine_dark
texture:id=prismarine_rough
texture:id=dark_prismarine
texture:id=prismarine
texture:id=sea_lantern
texture:id=daylight_detector_inverted_top
texture:id=red_sandstone_bottom
@ -450,11 +450,11 @@ texture:id=chorus_flower_dead
texture:id=purpur_block
texture:id=purpur_pillar_top
texture:id=purpur_pillar
texture:id=end_bricks
texture:id=beetroots_stage_0
texture:id=beetroots_stage_1
texture:id=beetroots_stage_2
texture:id=beetroots_stage_3
texture:id=end_stone_bricks
texture:id=beetroots_stage0
texture:id=beetroots_stage1
texture:id=beetroots_stage2
texture:id=beetroots_stage3
texture:id=grass_path_top
texture:id=grass_path_side
texture:id=command_block_back
@ -816,17 +816,17 @@ block:id=sticky_piston,data=4,north=0:piston_top_sticky,south=0:piston_bottom,to
# Sticky piston - facing south
block:id=sticky_piston,data=5,north=0:piston_bottom,south=0:piston_top_sticky,top=5000:piston_side,bottom=0:piston_side,east=4000:piston_side,west=6000:piston_side,transparency=TRANSPARENT
# Sticky piston - extended facing down (TODO: side)
block:id=sticky_piston,data=8,top=0:piston_bottom,bottom=0:piston_inner,allsides=5262,transparency=TRANSPARENT
block:id=sticky_piston,data=6,top=0:piston_bottom,bottom=0:piston_inner,allsides=5262,transparency=TRANSPARENT
# Sticky piston - extended facing up (TODO: side)
block:id=sticky_piston,data=9,top=0:piston_inner,bottom=0:piston_bottom,allsides=262,transparency=TRANSPARENT
block:id=sticky_piston,data=7,top=0:piston_inner,bottom=0:piston_bottom,allsides=262,transparency=TRANSPARENT
# Sticky piston - extended facing east (TODO: side)
block:id=sticky_piston,data=10,east=0:piston_inner,west=0:piston_bottom,top=6262,bottom=4262,north=4262,south=6262,transparency=TRANSPARENT
block:id=sticky_piston,data=8,east=0:piston_inner,west=0:piston_bottom,top=6262,bottom=4262,north=4262,south=6262,transparency=TRANSPARENT
# Sticky piston - extended facing west (TODO: side)
block:id=sticky_piston,data=11,west=0:piston_inner,east=0:piston_bottom,top=4262,bottom=6262,north=6262,south=4262,transparency=TRANSPARENT
block:id=sticky_piston,data=9,west=0:piston_inner,east=0:piston_bottom,top=4262,bottom=6262,north=6262,south=4262,transparency=TRANSPARENT
# Sticky piston - extended facing north (TODO: side)
block:id=sticky_piston,data=12,north=0:piston_inner,south=0:piston_bottom,top=262,bottom=5262,east=6262,west=4262,transparency=TRANSPARENT
block:id=sticky_piston,data=10,north=0:piston_inner,south=0:piston_bottom,top=262,bottom=5262,east=6262,west=4262,transparency=TRANSPARENT
# Sticky piston - extended facing south (TODO: side)
block:id=sticky_piston,data=13,north=0:piston_bottom,south=0:piston_inner,top=5262,bottom=262,east=4262,west=6262,transparency=TRANSPARENT
block:id=sticky_piston,data=11,north=0:piston_bottom,south=0:piston_inner,top=5262,bottom=262,east=4262,west=6262,transparency=TRANSPARENT
# Web
block:id=cobweb,patch0-1=0:cobweb,transparency=TRANSPARENT
# Grass
@ -1458,19 +1458,21 @@ block:id=light_weighted_pressure_plate,allfaces=0:gold_block,stdrot=true,transpa
# Heavy weighted pressure plate
block:id=heavy_weighted_pressure_plate,allfaces=0:iron_block,stdrot=true,transparency=TRANSPARENT
# (149) Redstone Comparator (inactive)
block:id=unpowered_comparator,data=0,data=4,data=8,data=12,top=6000:comparator,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
block:id=unpowered_comparator,data=1,data=5,data=9,data=13,top=5000:comparator,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
block:id=unpowered_comparator,data=2,data=6,data=10,data=14,top=4000:comparator,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
block:id=unpowered_comparator,data=3,data=7,data=11,data=15,top=0:comparator,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
# (150) Redstone Comparator (active)
block:id=powered_comparator,data=0,data=4,data=8,data=12,top=6000:comparator_on,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
block:id=powered_comparator,data=1,data=5,data=9,data=13,top=5000:comparator_on,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
block:id=powered_comparator,data=2,data=6,data=10,data=14,top=4000:comparator_on,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
block:id=powered_comparator,data=3,data=7,data=11,data=15,top=0:comparator_on,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
# Redstone Comparator (active)
block:id=comparator,data=0,data=2,top=6000:comparator_on,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
block:id=comparator,data=4,data=6,top=5000:comparator_on,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
block:id=comparator,data=8,data=10,top=4000:comparator_on,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
block:id=comparator,data=12,data=14,top=0:comparator_on,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
# Redstone Comparator (inactive)
block:id=comparator,data=1,data=3,top=6000:comparator,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
block:id=comparator,data=5,data=7,top=5000:comparator,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
block:id=comparator,data=9,data=11,top=4000:comparator,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
block:id=comparator,data=13,data=15,top=0:comparator,allsides=0:stone,bottom=0:stone,transparency=TRANSPARENT
# (151) Daylight Sensor
block:id=daylight_detector,data=*,allsides=0:daylight_detector_side,bottom=0:daylight_detector_side,top=0:daylight_detector_top,stdrot=true,transparency=TRANSPARENT
# Daylight Sensor
# Inverted Daylight Sensor
block:id=daylight_detector,data=16-31,allsides=0:daylight_detector_side,bottom=0:daylight_detector_side,top=0:daylight_detector_top,stdrot=true,transparency=TRANSPARENT
block:id=daylight_detector,data=0-15,allsides=0:daylight_detector_side,bottom=0:daylight_detector_side,top=0:daylight_detector_inverted_top,stdrot=true,transparency=TRANSPARENT
# (152) Block of Redstone
block:id=redstone_block,data=*,allfaces=0:redstone_block,stdrot=true
@ -1481,41 +1483,39 @@ block:id=nether_quartz_ore,data=*,allfaces=0:nether_quartz_ore,stdrot=true
# (154) Hopper
block:id=hopper,data=*,allsides=0:hopper_outside,top=0:hopper_inside,bottom=0:hopper_outside,stdrot=true
# (155:0) Block of Quartz
block:id=quartz_block,data=0,top=0:quartz_block_top,bottom=0:quartz_block_bottom,allsides=0:quartz_block_side,stdrot=true
# (155:1) Chiseled Quartz Block
block:id=quartz_block,data=1,top=0:chiseled_quartz_block_top,bottom=0:quartz_block_bottom,allsides=0:chiseled_quartz_block,stdrot=true
# (155:2) Pillar Quartz Block (vertical)
block:id=quartz_block,data=2,top=0:quartz_pillar_top,bottom=0:quartz_pillar_top,allsides=0:quartz_pillar,stdrot=true
# (155:3) Pillar Quartz Block (north-south)
block:id=quartz_block,data=3,top=4000:quartz_pillar,bottom=4000:quartz_pillar,east=6000:quartz_pillar,west=6000:quartz_pillar,north=0:quartz_pillar_top,south=0:quartz_pillar_top,stdrot=true
# (155:4) Pillar Quartz Block (east-west)
block:id=quartz_block,data=4,top=0:quartz_pillar,bottom=0:quartz_pillar,north=6000:quartz_pillar,south=6000:quartz_pillar,east=0:quartz_pillar_top,west=0:quartz_pillar_top,stdrot=true
# Block of Quartz
block:id=quartz_block,top=0:quartz_block_top,bottom=0:quartz_block_bottom,allsides=0:quartz_block_side,stdrot=true
# Chiseled Quartz Block
block:id=chiseled_quartz_block,top=0:chiseled_quartz_block_top,bottom=0:quartz_block_bottom,allsides=0:chiseled_quartz_block,stdrot=true
# Quartz Pillar
block:id=quartz_pillar,data=0,top=0:quartz_pillar_top,bottom=0:quartz_pillar_top,allsides=0:quartz_pillar,stdrot=true
block:id=quartz_pillar,data=1,top=4000:quartz_pillar,bottom=4000:quartz_pillar,east=6000:quartz_pillar,west=6000:quartz_pillar,north=0:quartz_pillar_top,south=0:quartz_pillar_top,stdrot=true
block:id=quartz_pillar,data=2,top=0:quartz_pillar,bottom=0:quartz_pillar,north=6000:quartz_pillar,south=6000:quartz_pillar,east=0:quartz_pillar_top,west=0:quartz_pillar_top,stdrot=true
# (156) Quartz Stairs
block:id=quartz_stairs,data=*,patch0=0:quartz_block_side,patch1=0:quartz_block_top,patch2=0:quartz_block_bottom,transparency=SEMITRANSPARENT
# Quartz Stairs
block:id=quartz_stairs,patch0=0:quartz_block_side,patch1=0:quartz_block_top,patch2=0:quartz_block_bottom,transparency=SEMITRANSPARENT
# (157) Activator Rail
# Activator Rail
# Activator rail - heading east-west - unpowered
block:id=activator_rail,data=0,patch0=0:activator_rail,transparency=TRANSPARENT
block:id=activator_rail,data=7,patch0=0:activator_rail,transparency=TRANSPARENT
# Activator rail - incline to east - unpowered
# Activator rail - incline to west - unpowered
block:id=activator_rail,data=4,data=5,patch0=0:activator_rail,transparency=TRANSPARENT
block:id=activator_rail,data=8,data=9,patch0=0:activator_rail,transparency=TRANSPARENT
# Activator rail - heading east-west - powered
block:id=activator_rail,data=8,patch0=0:activator_rail_on,transparency=TRANSPARENT
block:id=activator_rail,data=1,patch0=0:activator_rail_on,transparency=TRANSPARENT
# Activator rail - incline to east - powered
# Activator rail - incline to west - powered
block:id=activator_rail,data=12,data=13,patch0=0:activator_rail_on,transparency=TRANSPARENT
block:id=activator_rail,data=2,data=3,patch0=0:activator_rail_on,transparency=TRANSPARENT
# Activator rail - heading north-south - unpowered
block:id=activator_rail,data=1,patch0=0:activator_rail,transparency=TRANSPARENT
block:id=activator_rail,data=6,patch0=0:activator_rail,transparency=TRANSPARENT
# Activator rail - inclined to north - unpowered
# Activator rail - inclined to south - unpowered
block:id=activator_rail,data=2,data=3,patch0=0:activator_rail,transparency=TRANSPARENT
block:id=activator_rail,data=10,data=11,patch0=0:activator_rail,transparency=TRANSPARENT
# Activator rail - heading north-south - powered
block:id=activator_rail,data=9,patch0=0:activator_rail_on,transparency=TRANSPARENT
block:id=activator_rail,data=0,patch0=0:activator_rail_on,transparency=TRANSPARENT
# Activator rail - inclined to north - powered
# Activator rail - inclined to south - powered
block:id=activator_rail,data=10,data=11,patch0=0:activator_rail_on,transparency=TRANSPARENT
block:id=activator_rail,data=4,data=5,patch0=0:activator_rail_on,transparency=TRANSPARENT
# (158) Dropper
block:id=dropper,data=0,top=0:furnace_top,east=0:furnace_top,south=0:furnace_top,north=0:furnace_top,west=0:furnace_top,bottom=6000:dropper_front_vertical
@ -1589,30 +1589,43 @@ block:id=terracotta,data=*,stdrot=true,allfaces=0:terracotta
# (173) Coal block
block:id=coal_block,data=*,stdrot=true,allfaces=0:coal_block
# (174) Packed Ice
block:id=packed_ice,allfaces=0:ice_packed,stdrot=true
# (175) Double Plant
block:id=double_plant,data=0,data=1,data=2,data=3,data=4,data=5,patch0=0:double_plant_sunflower_bottom,patch1=0:double_plant_syringa_bottom,patch2=1000:double_plant_grass_bottom,patch3=1000:double_plant_fern_bottom,patch4=0:double_plant_rose_bottom,patch5=0:double_plant_paeonia_bottom,transparency=TRANSPARENT
block:id=double_plant,data=8,data=9,data=10,data=11,data=12,data=13,data=14,data=15,patch0=0:double_plant_sunflower_top,patch1=0:double_plant_syringa_top,patch2=1000:double_plant_grass_top,patch3=1000:double_plant_fern_top,patch4=0:double_plant_rose_top,patch5=0:double_plant_paeonia_top,transparency=TRANSPARENT
block:id=packed_ice,allfaces=0:packed_ice,stdrot=true
# Sunflower
block:id=sunflower,data=0,patch0-1=0:sunflower_top,transparency=TRANSPARENT
block:id=sunflower,data=1,patch0-1=0:sunflower_bottom,transparency=TRANSPARENT
# Lilac
block:id=lilac,data=0,patch0-1=0:lilac_top,transparency=TRANSPARENT
block:id=lilac,data=1,patch0-1=0:lilac_bottom,transparency=TRANSPARENT
# Rose bush
block:id=rose_bush,data=0,patch0-1=0:rose_bush_top,transparency=TRANSPARENT
block:id=rose_bush,data=1,patch0-1=0:rose_bush_bottom,transparency=TRANSPARENT
# Peony
block:id=peony,data=0,patch0-1=0:peony_top,transparency=TRANSPARENT
block:id=peony,data=1,patch0-1=0:peony_bottom,transparency=TRANSPARENT
# Tall grass
block:id=tall_grass,data=0,patch0-1=1000:tall_grass_top,transparency=TRANSPARENT
block:id=tall_grass,data=1,patch0-1=1000:tall_grass_bottom,transparency=TRANSPARENT
# Large fern
block:id=large_fern,data=0,patch0-1=1000:large_fern_top,transparency=TRANSPARENT
block:id=large_fern,data=1,patch0-1=1000:large_fern_bottom,transparency=TRANSPARENT
# Wet Sponge
block:id=wet_sponge,allfaces=0:wet_sponge,stdrot=true
# Slime Block
block:id=slime,data=*,allfaces=0:slime,stdrot=true
block:id=slime_block,data=*,allfaces=0:slime_block,stdrot=true
# Barrier
block:id=barrier,data=*,transparency=TRANSPARENT
# Iron Trapdoor
block:id=iron_trapdoor,allfaces=0:iron_trapdoor,stdrot=true,transparency=TRANSPARENT
# Prismarine
block:id=prismarine,data=0,allfaces=0:prismarine_rough,stdrot=true
block:id=prismarine,allfaces=0:prismarine,stdrot=true
# Prismarine Bricks
block:id=prismarine,data=1,allfaces=0:prismarine_bricks,stdrot=true
block:id=prismarine_bricks,allfaces=0:prismarine_bricks,stdrot=true
# Dark Prismarine
block:id=prismarine,data=2,allfaces=0:prismarine_dark,stdrot=true
block:id=dark_prismarine,allfaces=0:dark_prismarine,stdrot=true
# Sea Lantern
block:id=sea_lantern,data=*,allfaces=0:sea_lantern,stdrot=true
# Inverted Daylight Sensor
block:id=daylight_detector_inverted,data=*,allsides=0:daylight_detector_side,bottom=0:daylight_detector_side,top=0:daylight_detector_inverted_top,stdrot=true,transparency=TRANSPARENT
# Red Sandstone
block:id=red_sandstone,bottom=0:red_sandstone_bottom,top=0:red_sandstone_top,allsides=0:red_sandstone,stdrot=true
@ -1626,13 +1639,6 @@ block:id=cut_red_sandstone,allsides=0:cut_red_sandstone,topbottom=0:red_sandston
# Red Sandstone stairs
block:id=red_sandstone_stairs,data=*,patch0=0:red_sandstone,patch1=0:red_sandstone_top,patch2=0:red_sandstone_bottom,transparency=SEMITRANSPARENT
# Red Sandstone Slab (Double)
block:id=double_stone_slab2,data=0,bottom=0:red_sandstone_bottom,top=0:red_sandstone_top,allsides=0:red_sandstone,stdrot=true
block:id=double_stone_slab2,data=8,allfaces=0:red_sandstone_top,stdrot=true
# Red Sandstone Slab
block:id=stone_slab2,data=0,data=8,bottom=0:red_sandstone_bottom,top=0:red_sandstone_top,allsides=0:red_sandstone,stdrot=true,transparency=SEMITRANSPARENT
# Fence Gate (Spruce)
block:id=spruce_fence_gate,patch0-2=0:spruce_planks,stdrot=true,transparency=TRANSPARENT
@ -1694,28 +1700,20 @@ block:id=purpur_block,data=*,stdrot=true,allfaces=0:purpur_block
# Purpur Pillar
block:id=purpur_pillar,data=0,allsides=0:purpur_pillar,topbottom=0:purpur_pillar_top,stdrot=true
block:id=purpur_pillar,data=4,north=0:purpur_pillar_top,south=0:purpur_pillar_top,east=4000:purpur_pillar,west=4000:purpur_pillar,top=0:purpur_pillar,bottom=0:purpur_pillar
block:id=purpur_pillar,data=8,north=4000:purpur_pillar,south=4000:purpur_pillar,east=0:purpur_pillar_top,west=0:purpur_pillar_top,top=4000:purpur_pillar,bottom=4000:purpur_pillar
block:id=purpur_pillar,data=12,allfaces=0:purpur_pillar,stdrot=true
block:id=purpur_pillar,data=1,north=0:purpur_pillar_top,south=0:purpur_pillar_top,east=4000:purpur_pillar,west=4000:purpur_pillar,top=0:purpur_pillar,bottom=0:purpur_pillar
block:id=purpur_pillar,data=2,north=4000:purpur_pillar,south=4000:purpur_pillar,east=0:purpur_pillar_top,west=0:purpur_pillar_top,top=4000:purpur_pillar,bottom=4000:purpur_pillar
# Purpur Stairs
block:id=purpur_stairs,data=*,patch0-2=0:purpur_block,transparency=SEMITRANSPARENT
# Purpur Slab (Double)
block:id=purpur_double_slab,data=0,bottom=0:purpur_block,top=0:purpur_block,allsides=0:purpur_block,stdrot=true
block:id=purpur_double_slab,data=8,allfaces=0:purpur_block,stdrot=true
# Purpur Slab
block:id=purpur_slab,data=0,data=8,bottom=0:purpur_block,top=0:purpur_block,allsides=0:purpur_block,stdrot=true,transparency=SEMITRANSPARENT
# End Stone Bricks
block:id=end_bricks,data=*,stdrot=true,allfaces=0:end_bricks
block:id=end_stone_bricks,data=*,stdrot=true,allfaces=0:end_stone_bricks
# Beetroot
block:id=beetroots,data=0,patch0-3=0:beetroots_stage_0,transparency=TRANSPARENT
block:id=beetroots,data=1,patch0-3=0:beetroots_stage_1,transparency=TRANSPARENT
block:id=beetroots,data=2,patch0-3=0:beetroots_stage_2,transparency=TRANSPARENT
block:id=beetroots,data=3,patch0-3=0:beetroots_stage_3,transparency=TRANSPARENT
block:id=beetroots,data=0,patch0-3=0:beetroots_stage0,transparency=TRANSPARENT
block:id=beetroots,data=1,patch0-3=0:beetroots_stage1,transparency=TRANSPARENT
block:id=beetroots,data=2,patch0-3=0:beetroots_stage2,transparency=TRANSPARENT
block:id=beetroots,data=3,patch0-3=0:beetroots_stage3,transparency=TRANSPARENT
# Grass Path
block:id=grass_path,allsides=0:grass_path_side,top=0:grass_path_top,bottom=0:dirt,stdrot=true,transparency=SEMITRANSPARENT
@ -1730,12 +1728,12 @@ block:id=repeating_command_block,data=2,top=6000:repeating_command_block_side,bo
block:id=repeating_command_block,data=3,top=4000:repeating_command_block_side,bottom=4000:repeating_command_block_side,south=4000:repeating_command_block_side,north=4000:repeating_command_block_side,east=0:repeating_command_block_back,west=0:repeating_command_block_front
block:id=repeating_command_block,data=4,top=0:repeating_command_block_side,bottom=0:repeating_command_block_side,south=0:repeating_command_block_back,north=0:repeating_command_block_front,east=4000:repeating_command_block_side,west=4000:repeating_command_block_side
block:id=repeating_command_block,data=5,top=5000:repeating_command_block_side,bottom=5000:repeating_command_block_side,south=0:repeating_command_block_front,north=0:repeating_command_block_back,east=6000:repeating_command_block_side,west=6000:repeating_command_block_side
block:id=repeating_command_block,data=8,top=4000:repeating_command_block_back,bottom=4000:repeating_command_block_front,south=5000:repeating_command_block_conditional,north=5000:repeating_command_block_conditional,east=5000:repeating_command_block_conditional,west=5000:repeating_command_block_conditional
block:id=repeating_command_block,data=9,top=4000:repeating_command_block_front,bottom=4000:repeating_command_block_back,south=0:repeating_command_block_conditional,north=0:repeating_command_block_conditional,east=0:repeating_command_block_conditional,west=0:repeating_command_block_conditional
block:id=repeating_command_block,data=10,top=6000:repeating_command_block_conditional,bottom=6000:repeating_command_block_conditional,south=6000:repeating_command_block_conditional,north=6000:repeating_command_block_conditional,east=0:repeating_command_block_front,west=0:repeating_command_block_back
block:id=repeating_command_block,data=11,top=4000:repeating_command_block_conditional,bottom=4000:repeating_command_block_conditional,south=4000:repeating_command_block_conditional,north=4000:repeating_command_block_conditional,east=0:repeating_command_block_back,west=0:repeating_command_block_front
block:id=repeating_command_block,data=12,top=0:repeating_command_block_conditional,bottom=0:repeating_command_block_conditional,south=0:repeating_command_block_back,north=0:repeating_command_block_front,east=4000:repeating_command_block_conditional,west=4000:repeating_command_block_conditional
block:id=repeating_command_block,data=13,top=5000:repeating_command_block_conditional,bottom=5000:repeating_command_block_conditional,south=0:repeating_command_block_front,north=0:repeating_command_block_back,east=6000:repeating_command_block_conditional,west=6000:repeating_command_block_conditional
block:id=repeating_command_block,data=6,top=4000:repeating_command_block_back,bottom=4000:repeating_command_block_front,south=5000:repeating_command_block_conditional,north=5000:repeating_command_block_conditional,east=5000:repeating_command_block_conditional,west=5000:repeating_command_block_conditional
block:id=repeating_command_block,data=7,top=4000:repeating_command_block_front,bottom=4000:repeating_command_block_back,south=0:repeating_command_block_conditional,north=0:repeating_command_block_conditional,east=0:repeating_command_block_conditional,west=0:repeating_command_block_conditional
block:id=repeating_command_block,data=8,top=6000:repeating_command_block_conditional,bottom=6000:repeating_command_block_conditional,south=6000:repeating_command_block_conditional,north=6000:repeating_command_block_conditional,east=0:repeating_command_block_front,west=0:repeating_command_block_back
block:id=repeating_command_block,data=9,top=4000:repeating_command_block_conditional,bottom=4000:repeating_command_block_conditional,south=4000:repeating_command_block_conditional,north=4000:repeating_command_block_conditional,east=0:repeating_command_block_back,west=0:repeating_command_block_front
block:id=repeating_command_block,data=10,top=0:repeating_command_block_conditional,bottom=0:repeating_command_block_conditional,south=0:repeating_command_block_back,north=0:repeating_command_block_front,east=4000:repeating_command_block_conditional,west=4000:repeating_command_block_conditional
block:id=repeating_command_block,data=11,top=5000:repeating_command_block_conditional,bottom=5000:repeating_command_block_conditional,south=0:repeating_command_block_front,north=0:repeating_command_block_back,east=6000:repeating_command_block_conditional,west=6000:repeating_command_block_conditional
# Chain Command Block
block:id=chain_command_block,data=0,top=4000:chain_command_block_back,bottom=4000:chain_command_block_front,south=5000:chain_command_block_side,north=5000:chain_command_block_side,east=5000:chain_command_block_side,west=5000:chain_command_block_side
@ -1744,12 +1742,12 @@ block:id=chain_command_block,data=2,top=6000:chain_command_block_side,bottom=600
block:id=chain_command_block,data=3,top=4000:chain_command_block_side,bottom=4000:chain_command_block_side,south=4000:chain_command_block_side,north=4000:chain_command_block_side,east=0:chain_command_block_back,west=0:chain_command_block_front
block:id=chain_command_block,data=4,top=0:chain_command_block_side,bottom=0:chain_command_block_side,south=0:chain_command_block_back,north=0:chain_command_block_front,east=4000:chain_command_block_side,west=4000:chain_command_block_side
block:id=chain_command_block,data=5,top=5000:chain_command_block_side,bottom=5000:chain_command_block_side,south=0:chain_command_block_front,north=0:chain_command_block_back,east=6000:chain_command_block_side,west=6000:chain_command_block_side
block:id=chain_command_block,data=8,top=4000:chain_command_block_back,bottom=4000:chain_command_block_front,south=5000:chain_command_block_conditional,north=5000:chain_command_block_conditional,east=5000:chain_command_block_conditional,west=5000:chain_command_block_conditional
block:id=chain_command_block,data=9,top=4000:chain_command_block_front,bottom=4000:chain_command_block_back,south=0:chain_command_block_conditional,north=0:chain_command_block_conditional,east=0:chain_command_block_conditional,west=0:chain_command_block_conditional
block:id=chain_command_block,data=10,top=6000:chain_command_block_conditional,bottom=6000:chain_command_block_conditional,south=6000:chain_command_block_conditional,north=6000:chain_command_block_conditional,east=0:chain_command_block_front,west=0:chain_command_block_back
block:id=chain_command_block,data=11,top=4000:chain_command_block_conditional,bottom=4000:chain_command_block_conditional,south=4000:chain_command_block_conditional,north=4000:chain_command_block_conditional,east=0:chain_command_block_back,west=0:chain_command_block_front
block:id=chain_command_block,data=12,top=0:chain_command_block_conditional,bottom=0:chain_command_block_conditional,south=0:chain_command_block_back,north=0:chain_command_block_front,east=4000:chain_command_block_conditional,west=4000:chain_command_block_conditional
block:id=chain_command_block,data=13,top=5000:chain_command_block_conditional,bottom=5000:chain_command_block_conditional,south=0:chain_command_block_front,north=0:chain_command_block_back,east=6000:chain_command_block_conditional,west=6000:chain_command_block_conditional
block:id=chain_command_block,data=6,top=4000:chain_command_block_back,bottom=4000:chain_command_block_front,south=5000:chain_command_block_conditional,north=5000:chain_command_block_conditional,east=5000:chain_command_block_conditional,west=5000:chain_command_block_conditional
block:id=chain_command_block,data=7,top=4000:chain_command_block_front,bottom=4000:chain_command_block_back,south=0:chain_command_block_conditional,north=0:chain_command_block_conditional,east=0:chain_command_block_conditional,west=0:chain_command_block_conditional
block:id=chain_command_block,data=8,top=6000:chain_command_block_conditional,bottom=6000:chain_command_block_conditional,south=6000:chain_command_block_conditional,north=6000:chain_command_block_conditional,east=0:chain_command_block_front,west=0:chain_command_block_back
block:id=chain_command_block,data=9,top=4000:chain_command_block_conditional,bottom=4000:chain_command_block_conditional,south=4000:chain_command_block_conditional,north=4000:chain_command_block_conditional,east=0:chain_command_block_back,west=0:chain_command_block_front
block:id=chain_command_block,data=10,top=0:chain_command_block_conditional,bottom=0:chain_command_block_conditional,south=0:chain_command_block_back,north=0:chain_command_block_front,east=4000:chain_command_block_conditional,west=4000:chain_command_block_conditional
block:id=chain_command_block,data=11,top=5000:chain_command_block_conditional,bottom=5000:chain_command_block_conditional,south=0:chain_command_block_front,north=0:chain_command_block_back,east=6000:chain_command_block_conditional,west=6000:chain_command_block_conditional
# Frosted Ice
block:id=frosted_ice,data=0,allfaces=12000:frosted_ice_0,stdrot=true,transparency=TRANSPARENT
@ -1758,7 +1756,7 @@ block:id=frosted_ice,data=2,allfaces=12000:frosted_ice_2,stdrot=true,transparenc
block:id=frosted_ice,data=3,allfaces=12000:frosted_ice_3,stdrot=true,transparency=TRANSPARENT
# Magma Block
block:id=magma,data=*,stdrot=true,allfaces=0:magma
block:id=magma_block,data=*,stdrot=true,allfaces=0:magma
# Nether Wart Block
block:id=nether_wart_block,data=*,stdrot=true,allfaces=0:nether_wart_block
@ -1768,9 +1766,8 @@ block:id=red_nether_bricks,stdrot=true,allfaces=0:red_nether_bricks
# Bone Block
block:id=bone_block,data=0,allsides=0:bone_block_side,topbottom=0:bone_block_top,stdrot=true
block:id=bone_block,data=4,north=0:bone_block_top,south=0:bone_block_top,east=4000:bone_block_side,west=4000:bone_block_side,top=0:bone_block_side,bottom=0:bone_block_side
block:id=bone_block,data=8,north=4000:bone_block_side,south=4000:bone_block_side,east=0:bone_block_top,west=0:bone_block_top,top=4000:bone_block_side,bottom=4000:bone_block_side
block:id=bone_block,data=12,allfaces=0:bone_block_side,stdrot=true
block:id=bone_block,data=1,north=0:bone_block_top,south=0:bone_block_top,east=4000:bone_block_side,west=4000:bone_block_side,top=0:bone_block_side,bottom=0:bone_block_side
block:id=bone_block,data=2,north=4000:bone_block_side,south=4000:bone_block_side,east=0:bone_block_top,west=0:bone_block_top,top=4000:bone_block_side,bottom=4000:bone_block_side
# Structure Block
block:id=structure_block,data=0,stdrot=true,allfaces=0:structure_block_save
@ -1998,6 +1995,3 @@ block:id=green_concrete_powder,stdrot=true,allfaces=0:green_concrete_powder
block:id=red_concrete_powder,stdrot=true,allfaces=0:red_concrete_powder
block:id=black_concrete_powder,stdrot=true,allfaces=0:black_concrete_powder
# Tall grass
block:id=tall_grass,data=0,patch0-1=1000:tall_grass_top,transparency=TRANSPARENT
block:id=tall_grass,data=1,patch0-1=1000:tall_grass_bottom,transparency=TRANSPARENT