Get 1.13 stairs renderer working

This commit is contained in:
Mike Primm 2018-08-13 02:52:34 -05:00
parent 3474c988d6
commit 8f17133725
34 changed files with 317 additions and 126 deletions

View File

@ -1,5 +1,6 @@
package org.dynmap.hdmap; package org.dynmap.hdmap;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.Log; import org.dynmap.Log;
@ -11,7 +12,7 @@ import org.dynmap.renderer.RenderPatch;
public class CustomBlockModel extends HDBlockModel { public class CustomBlockModel extends HDBlockModel {
public CustomRenderer render; public CustomRenderer render;
public CustomBlockModel(String blockname, int databits, String classname, Map<String,String> classparm, String blockset) { public CustomBlockModel(String blockname, BitSet databits, String classname, Map<String,String> classparm, String blockset) {
super(blockname, databits, blockset); super(blockname, databits, blockset);
try { try {
Class<?> cls = Class.forName(classname); /* Get class */ Class<?> cls = Class.forName(classname); /* Get class */
@ -24,7 +25,7 @@ public class CustomBlockModel extends HDBlockModel {
if(render.getTileEntityFieldsNeeded() != null) { if(render.getTileEntityFieldsNeeded() != null) {
DynmapBlockState bbs = DynmapBlockState.getBaseStateByName(blockname); DynmapBlockState bbs = DynmapBlockState.getBaseStateByName(blockname);
for(int i = 0; i < bbs.getStateCount(); i++) { for(int i = 0; i < bbs.getStateCount(); i++) {
if ((databits & (1 << i)) != 0) { if (databits.isEmpty() || databits.get(i)) {
DynmapBlockState bs = bbs.getState(i); DynmapBlockState bs = bbs.getState(i);
HDBlockModels.customModelsRequestingTileData.set(bs.globalStateIndex); HDBlockModels.customModelsRequestingTileData.set(bs.globalStateIndex);
} }

View File

@ -1,5 +1,7 @@
package org.dynmap.hdmap; package org.dynmap.hdmap;
import java.util.BitSet;
import org.dynmap.renderer.DynmapBlockState; import org.dynmap.renderer.DynmapBlockState;
public abstract class HDBlockModel { public abstract class HDBlockModel {
@ -10,12 +12,12 @@ public abstract class HDBlockModel {
* @param databits - bitmap of block data bits matching this model (bit N is set if data=N would match) * @param databits - bitmap of block data bits matching this model (bit N is set if data=N would match)
* @param blockset - ID of block definition set * @param blockset - ID of block definition set
*/ */
protected HDBlockModel(String blockname, int databits, String blockset) { protected HDBlockModel(String blockname, BitSet databits, String blockset) {
this.blockset = blockset; this.blockset = blockset;
DynmapBlockState bblk = DynmapBlockState.getBaseStateByName(blockname); DynmapBlockState bblk = DynmapBlockState.getBaseStateByName(blockname);
if (bblk.isNotAir()) { if (bblk.isNotAir()) {
for (int i = 0; i < bblk.getStateCount(); i++) { for (int i = 0; i < bblk.getStateCount(); i++) {
if((databits & (1<<i)) != 0) { if (databits.isEmpty() || databits.get(i)) {
DynmapBlockState bs = bblk.getState(i); DynmapBlockState bs = bblk.getState(i);
HDBlockModel prev = HDBlockModels.models_by_id_data.put(bs.globalStateIndex, this); HDBlockModel prev = HDBlockModels.models_by_id_data.put(bs.globalStateIndex, this);
if((prev != null) && (prev != this)) { if((prev != null) && (prev != this)) {

View File

@ -324,6 +324,7 @@ public class HDBlockModels {
int cnt = 0; int cnt = 0;
boolean need_mod_cfg = false; boolean need_mod_cfg = false;
boolean mod_cfg_loaded = false; boolean mod_cfg_loaded = false;
BitSet databits = new BitSet();
String modname = "minecraft"; String modname = "minecraft";
String modversion = null; String modversion = null;
final String mcver = core.getDynmapPluginPlatformVersion(); final String mcver = core.getDynmapPluginPlatformVersion();
@ -363,7 +364,7 @@ public class HDBlockModels {
} }
else if(line.startsWith("block:")) { else if(line.startsWith("block:")) {
ArrayList<String> blknames = new ArrayList<String>(); ArrayList<String> blknames = new ArrayList<String>();
int databits = 0; databits.clear();
scale = 0; scale = 0;
line = line.substring(6); line = line.substring(6);
String[] args = line.split(","); String[] args = line.split(",");
@ -375,16 +376,16 @@ public class HDBlockModels {
} }
else if(av[0].equals("data")) { else if(av[0].equals("data")) {
if(av[1].equals("*")) if(av[1].equals("*"))
databits = 0xFFFF; databits.clear();
else else
databits |= (1 << getIntValue(varvals,av[1])); databits.set(getIntValue(varvals,av[1]));
} }
else if(av[0].equals("scale")) { else if(av[0].equals("scale")) {
scale = Integer.parseInt(av[1]); scale = Integer.parseInt(av[1]);
} }
} }
/* If we have everything, build block */ /* If we have everything, build block */
if((blknames.size() > 0) && (databits != 0) && (scale > 0)) { if((blknames.size() > 0) && (scale > 0)) {
modlist.clear(); modlist.clear();
for(String bname : blknames) { for(String bname : blknames) {
DynmapBlockState bblk = DynmapBlockState.getBaseStateByName(bname); DynmapBlockState bblk = DynmapBlockState.getBaseStateByName(bname);
@ -521,7 +522,7 @@ public class HDBlockModels {
} }
else if(line.startsWith("ignore-updates:")) { else if(line.startsWith("ignore-updates:")) {
ArrayList<String> blknames = new ArrayList<String>(); ArrayList<String> blknames = new ArrayList<String>();
int blkdat = 0; databits.clear();
line = line.substring(line.indexOf(':')+1); line = line.substring(line.indexOf(':')+1);
String[] args = line.split(","); String[] args = line.split(",");
for(String a : args) { for(String a : args) {
@ -532,18 +533,19 @@ public class HDBlockModels {
} }
else if(av[0].equals("data")) { else if(av[0].equals("data")) {
if(av[1].equals("*")) if(av[1].equals("*"))
blkdat = 0xFFFF; databits.clear();
else else
blkdat |= (1 << getIntValue(varvals,av[1])); databits.set(getIntValue(varvals,av[1]));
} }
} }
if(blkdat == 0) blkdat = 0xFFFF;
for (String nm : blknames) { for (String nm : blknames) {
DynmapBlockState bbs = DynmapBlockState.getBaseStateByName(nm); DynmapBlockState bbs = DynmapBlockState.getBaseStateByName(nm);
if (bbs.isNotAir()) { if (bbs.isNotAir()) {
for (int i = 0; i < bbs.getStateCount(); i++) { for (int i = 0; i < bbs.getStateCount(); i++) {
DynmapBlockState bs = bbs.getState(i); DynmapBlockState bs = bbs.getState(i);
changeIgnoredBlocks.set(bs.globalStateIndex); if (databits.isEmpty() || databits.get(i)) {
changeIgnoredBlocks.set(bs.globalStateIndex);
}
} }
} }
else { else {
@ -681,7 +683,7 @@ public class HDBlockModels {
} }
else if(line.startsWith("patchblock:")) { else if(line.startsWith("patchblock:")) {
ArrayList<String> blknames = new ArrayList<String>(); ArrayList<String> blknames = new ArrayList<String>();
int databits = 0; databits.clear();
line = line.substring(11); line = line.substring(11);
String[] args = line.split(","); String[] args = line.split(",");
ArrayList<PatchDefinition> patches = new ArrayList<PatchDefinition>(); ArrayList<PatchDefinition> patches = new ArrayList<PatchDefinition>();
@ -693,9 +695,9 @@ public class HDBlockModels {
} }
else if(av[0].equals("data")) { else if(av[0].equals("data")) {
if(av[1].equals("*")) if(av[1].equals("*"))
databits = 0xFFFF; databits.clear();
else else
databits |= (1 << getIntValue(varvals,av[1])); databits.set(getIntValue(varvals,av[1]));
} }
else if(av[0].startsWith("patch")) { else if(av[0].startsWith("patch")) {
int patchnum0, patchnum1; int patchnum0, patchnum1;
@ -730,7 +732,7 @@ public class HDBlockModels {
} }
/* If we have everything, build block */ /* If we have everything, build block */
pmodlist.clear(); pmodlist.clear();
if((blknames.size() > 0) && (databits != 0)) { if (blknames.size() > 0) {
PatchDefinition[] patcharray = patches.toArray(new PatchDefinition[patches.size()]); PatchDefinition[] patcharray = patches.toArray(new PatchDefinition[patches.size()]);
if(patcharray.length > max_patches) if(patcharray.length > max_patches)
max_patches = patcharray.length; max_patches = patcharray.length;
@ -753,7 +755,7 @@ public class HDBlockModels {
// Shortcut for defining a patchblock that is a simple rectangular prism, with sidex corresponding to full block sides // Shortcut for defining a patchblock that is a simple rectangular prism, with sidex corresponding to full block sides
else if(line.startsWith("boxblock:")) { else if(line.startsWith("boxblock:")) {
ArrayList<String> blknames = new ArrayList<String>(); ArrayList<String> blknames = new ArrayList<String>();
int databits = 0; databits.clear();
line = line.substring(9); line = line.substring(9);
String[] args = line.split(","); String[] args = line.split(",");
double xmin = 0.0, xmax = 1.0, ymin = 0.0, ymax = 1.0, zmin = 0.0, zmax = 1.0; double xmin = 0.0, xmax = 1.0, ymin = 0.0, ymax = 1.0, zmin = 0.0, zmax = 1.0;
@ -765,9 +767,9 @@ public class HDBlockModels {
} }
else if(av[0].equals("data")) { else if(av[0].equals("data")) {
if(av[1].equals("*")) if(av[1].equals("*"))
databits = 0xFFFF; databits.clear();
else else
databits |= (1 << getIntValue(varvals,av[1])); databits.set(getIntValue(varvals,av[1]));
} }
else if(av[0].equals("xmin")) { else if(av[0].equals("xmin")) {
xmin = Double.parseDouble(av[1]); xmin = Double.parseDouble(av[1]);
@ -790,7 +792,7 @@ public class HDBlockModels {
} }
/* If we have everything, build block */ /* If we have everything, build block */
pmodlist.clear(); pmodlist.clear();
if((blknames.size() > 0) && (databits != 0)) { if (blknames.size() > 0) {
ArrayList<RenderPatch> pd = new ArrayList<RenderPatch>(); ArrayList<RenderPatch> pd = new ArrayList<RenderPatch>();
CustomRenderer.addBox(pdf, pd, xmin, xmax, ymin, ymax, zmin, zmax, boxPatchList); CustomRenderer.addBox(pdf, pd, xmin, xmax, ymin, ymax, zmin, zmax, boxPatchList);
PatchDefinition[] patcharray = new PatchDefinition[pd.size()]; PatchDefinition[] patcharray = new PatchDefinition[pd.size()];
@ -817,7 +819,7 @@ public class HDBlockModels {
else if(line.startsWith("customblock:")) { else if(line.startsWith("customblock:")) {
ArrayList<String> blknames = new ArrayList<String>(); ArrayList<String> blknames = new ArrayList<String>();
HashMap<String,String> custargs = new HashMap<String,String>(); HashMap<String,String> custargs = new HashMap<String,String>();
int databits = 0; databits.clear();
line = line.substring(12); line = line.substring(12);
String[] args = line.split(","); String[] args = line.split(",");
String cls = null; String cls = null;
@ -829,9 +831,9 @@ public class HDBlockModels {
} }
else if(av[0].equals("data")) { else if(av[0].equals("data")) {
if(av[1].equals("*")) if(av[1].equals("*"))
databits = 0xFFFF; databits.clear();
else else
databits |= (1 << getIntValue(varvals,av[1])); databits.set(getIntValue(varvals,av[1]));
} }
else if(av[0].equals("class")) { else if(av[0].equals("class")) {
cls = av[1]; cls = av[1];
@ -846,7 +848,7 @@ public class HDBlockModels {
} }
} }
/* If we have everything, build block */ /* If we have everything, build block */
if((blknames.size() > 0) && (databits != 0) && (cls != null)) { if ((blknames.size() > 0) && (cls != null)) {
for (String nm : blknames) { for (String nm : blknames) {
DynmapBlockState bs = DynmapBlockState.getBaseStateByName(nm); DynmapBlockState bs = DynmapBlockState.getBaseStateByName(nm);
if (bs.isNotAir()) { if (bs.isNotAir()) {

View File

@ -1,5 +1,7 @@
package org.dynmap.hdmap; package org.dynmap.hdmap;
import java.util.BitSet;
import org.dynmap.utils.PatchDefinition; import org.dynmap.utils.PatchDefinition;
public class HDBlockPatchModel extends HDBlockModel { public class HDBlockPatchModel extends HDBlockModel {
@ -14,7 +16,7 @@ public class HDBlockPatchModel extends HDBlockModel {
* @param patches - list of patches (surfaces composing model) * @param patches - list of patches (surfaces composing model)
* @param blockset - ID of set of blocks defining model * @param blockset - ID of set of blocks defining model
*/ */
public HDBlockPatchModel(String blockname, int databits, PatchDefinition[] patches, String blockset) { public HDBlockPatchModel(String blockname, BitSet databits, PatchDefinition[] patches, String blockset) {
super(blockname, databits, blockset); super(blockname, databits, blockset);
this.patches = patches; this.patches = patches;
int max = 0; int max = 0;

View File

@ -1,5 +1,6 @@
package org.dynmap.hdmap; package org.dynmap.hdmap;
import java.util.BitSet;
import java.util.HashMap; import java.util.HashMap;
public class HDBlockVolumetricModel extends HDBlockModel { public class HDBlockVolumetricModel extends HDBlockModel {
@ -17,7 +18,7 @@ public class HDBlockVolumetricModel extends HDBlockModel {
* if array is short, other elements area are assumed to be zero (fills from bottom of block up) * if array is short, other elements area are assumed to be zero (fills from bottom of block up)
* @param blockset - ID of set of blocks defining model * @param blockset - ID of set of blocks defining model
*/ */
public HDBlockVolumetricModel(String blockname, int databits, int nativeres, long[] blockflags, String blockset) { public HDBlockVolumetricModel(String blockname, BitSet databits, int nativeres, long[] blockflags, String blockset) {
super(blockname, databits, blockset); super(blockname, databits, blockset);
this.nativeres = nativeres; this.nativeres = nativeres;

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.renderer.CustomRenderer; import org.dynmap.renderer.CustomRenderer;
@ -18,7 +19,7 @@ public class BoxRenderer extends CustomRenderer {
private static final int patchlist[] = { 1, 4, 2, 5, 0, 3 }; private static final int patchlist[] = { 1, 4, 2, 5, 0, 3 };
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
double xmin = 0.0, xmax = 1.0; double xmin = 0.0, xmax = 1.0;

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.renderer.CustomRenderer; import org.dynmap.renderer.CustomRenderer;
@ -24,7 +25,7 @@ public class CTMVertTextureRenderer extends CustomRenderer {
private RenderPatch[] mesh_both_neighbor; private RenderPatch[] mesh_both_neighbor;
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
blk = DynmapBlockState.getBaseStateByName(blkname); blk = DynmapBlockState.getBaseStateByName(blkname);

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.renderer.CustomRenderer; import org.dynmap.renderer.CustomRenderer;
@ -29,7 +30,7 @@ public class ChestRenderer extends CustomRenderer {
private boolean double_chest = false; private boolean double_chest = false;
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.Log; import org.dynmap.Log;
@ -28,7 +29,7 @@ public class CuboidRenderer extends CustomRenderer {
return f; return f;
} }
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
ArrayList<RenderPatch> list = new ArrayList<RenderPatch>(); ArrayList<RenderPatch> list = new ArrayList<RenderPatch>();

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.renderer.CustomRenderer; import org.dynmap.renderer.CustomRenderer;
@ -20,7 +21,7 @@ public class DoorRenderer extends CustomRenderer {
private RenderPatch[][] models = new RenderPatch[32][]; private RenderPatch[][] models = new RenderPatch[32][];
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
int[] txt = new int[6]; int[] txt = new int[6];

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -18,7 +19,7 @@ public class FenceGateBlockRenderer extends CustomRenderer {
private RenderPatch[][] meshes = new RenderPatch[8][]; private RenderPatch[][] meshes = new RenderPatch[8][];
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
buildMeshes(rpf); buildMeshes(rpf);

View File

@ -41,7 +41,7 @@ public class FenceWallBlockRenderer extends CustomRenderer {
} }
} }
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
addIDs(blkname); addIDs(blkname);

View File

@ -49,7 +49,7 @@ public class FrameRenderer extends CustomRenderer {
} }
} }
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
String linkset = custparm.get("linkset"); String linkset = custparm.get("linkset");

View File

@ -2,6 +2,7 @@ package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.BitSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -199,7 +200,7 @@ public class ImmibisMicroRenderer extends CustomRenderer {
{ 22, 101, 22, 22, 22, 22 } // 89 = dropper { 22, 101, 22, 22, 22, 22 } // 89 = dropper
}; };
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
/* Flesh out sides map */ /* Flesh out sides map */

View File

@ -1,5 +1,6 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.hdmap.HDBlockStateTextureMap; import org.dynmap.hdmap.HDBlockStateTextureMap;
@ -27,7 +28,7 @@ public class PaneRenderer extends CustomRenderer {
private RenderPatch[][] meshes = new RenderPatch[16][]; private RenderPatch[][] meshes = new RenderPatch[16][];
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
buildPatches(rpf); buildPatches(rpf);

View File

@ -1,5 +1,6 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.renderer.CustomRenderer; import org.dynmap.renderer.CustomRenderer;
@ -19,7 +20,7 @@ public class PlantRenderer extends CustomRenderer {
private int metaCnt = 16; private int metaCnt = 16;
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
String idxsrc = custparm.get("metasrc"); String idxsrc = custparm.get("metasrc");

View File

@ -2,6 +2,7 @@ package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.renderer.CustomRenderer; import org.dynmap.renderer.CustomRenderer;
@ -158,7 +159,7 @@ public class RPMicroRenderer extends CustomRenderer {
{ 69 } // 68 = Copper Block (blockStorage:5) { 69 } // 68 = Copper Block (blockStorage:5)
}; };
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
/* Flesh out sides map */ /* Flesh out sides map */

View File

@ -1,5 +1,6 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.renderer.CustomRenderer; import org.dynmap.renderer.CustomRenderer;
@ -42,7 +43,7 @@ public class RPRotatedBoxRenderer extends CustomRenderer {
private String[] tileEntityAttribs = { "rot" }; private String[] tileEntityAttribs = { "rot" };
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.renderer.MapDataContext; import org.dynmap.renderer.MapDataContext;
@ -12,7 +13,7 @@ public class RPSupportFrameRenderer extends RPMicroRenderer {
private int frame_txt_side; private int frame_txt_side;
private int frame_txt_edge; private int frame_txt_edge;
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
frame_txt_side = super.getMaximumTextureCount(); /* Get index for side and edge textures */ frame_txt_side = super.getMaximumTextureCount(); /* Get index for side and edge textures */

View File

@ -35,7 +35,7 @@ public class RailCraftSlabBlockRenderer extends CustomRenderer {
} }
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
setID(blkname); /* Mark block as a stair */ setID(blkname); /* Mark block as a stair */

View File

@ -1,5 +1,6 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.Log; import org.dynmap.Log;
@ -16,7 +17,7 @@ public class RailCraftTrackRenderer extends CustomRenderer {
private int maxTrackId; private int maxTrackId;
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.renderer.CustomRenderer; import org.dynmap.renderer.CustomRenderer;
@ -23,7 +24,7 @@ public class RedstoneWireRenderer extends CustomRenderer {
private RenderPatch[][] meshes = new RenderPatch[256][]; private RenderPatch[][] meshes = new RenderPatch[256][];
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
blkbs = DynmapBlockState.getBaseStateByName(blkname); blkbs = DynmapBlockState.getBaseStateByName(blkname);

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.Log; import org.dynmap.Log;
@ -20,7 +21,7 @@ public class RotatedBoxRenderer extends CustomRenderer {
private String[] tileEntityAttribs = null; private String[] tileEntityAttribs = null;
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
/* See if index attribute defined */ /* See if index attribute defined */

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.Log; import org.dynmap.Log;
@ -32,7 +33,7 @@ public class RotatedPatchRenderer extends CustomRenderer {
private String[] tileEntityAttribs = null; private String[] tileEntityAttribs = null;
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
ArrayList<RenderPatch> patches = new ArrayList<RenderPatch>(); ArrayList<RenderPatch> patches = new ArrayList<RenderPatch>();

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.renderer.CustomRenderer; import org.dynmap.renderer.CustomRenderer;
@ -18,7 +19,7 @@ public class SkullRenderer extends CustomRenderer {
private RenderPatch meshes[][] = new RenderPatch[NUM_FACES * NUM_DIRECTIONS][]; private RenderPatch meshes[][] = new RenderPatch[NUM_FACES * NUM_DIRECTIONS][];
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;

View File

@ -38,7 +38,7 @@ public class StairBlockRenderer extends CustomRenderer {
} }
} }
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
setID(blkname); /* Mark block as a stair */ setID(blkname); /* Mark block as a stair */

View File

@ -0,0 +1,162 @@
package org.dynmap.hdmap.renderer;
import java.util.ArrayList;
import java.util.BitSet;
import java.util.List;
import java.util.Map;
import org.dynmap.renderer.CustomRenderer;
import org.dynmap.renderer.MapDataContext;
import org.dynmap.renderer.RenderPatch;
import org.dynmap.renderer.RenderPatchFactory;
public class StairStateRenderer extends CustomRenderer {
private static final int TEXTURE_SIDES = 0;
private static final int TEXTURE_TOP = 1;
private static final int TEXTURE_BOTTOM = 2;
// Array of meshes for normal steps - index = (data value & 7)
private RenderPatch[][] stepmeshes = new RenderPatch[8][];
// Array of meshes for 3/4 steps - index = (data value & 7), with extra one clockwise from normal step
private RenderPatch[][] step_3_4_meshes = new RenderPatch[8][];
// Array of meshes for 1/4 steps - index = (data value & 7), with clockwise quarter clopped from normal step
private RenderPatch[][] step_1_4_meshes = new RenderPatch[8][];
@Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false;
/* Build step meshes */
for(int i = 0; i < 8; i++) {
stepmeshes[i] = buildStepMeshes(rpf, i);
step_1_4_meshes[i] = buildCornerStepMeshes(rpf, i);
step_3_4_meshes[i] = buildIntCornerStepMeshes(rpf, i);
}
return true;
}
@Override
public int getMaximumTextureCount() {
return 3;
}
private static final int[] patchlist = { TEXTURE_BOTTOM, TEXTURE_TOP, TEXTURE_SIDES, TEXTURE_SIDES, TEXTURE_SIDES, TEXTURE_SIDES };
private void addBox(RenderPatchFactory rpf, List<RenderPatch> list, double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) {
addBox(rpf, list, xmin, xmax, ymin, ymax, zmin, zmax, patchlist);
}
private RenderPatch[] buildStepMeshes(RenderPatchFactory rpf, int dat) {
ArrayList<RenderPatch> list = new ArrayList<RenderPatch>();
/* If inverted, add half top */
if((dat & 0x4) != 0) {
addBox(rpf, list, 0, 1, 0.5, 1, 0, 1);
}
else { // Else, add half bottom
addBox(rpf, list, 0, 1, 0.0, 0.5, 0, 1);
}
switch(dat & 0x3) {
case 0:
addBox(rpf, list, 0.5, 1, 0, 1, 0, 1);
break;
case 1:
addBox(rpf, list, 0, 0.5, 0, 1, 0, 1);
break;
case 2:
addBox(rpf, list, 0, 1, 0, 1, 0.5, 1);
break;
case 3:
addBox(rpf, list, 0, 1, 0, 1, 0, 0.5);
break;
}
return list.toArray(new RenderPatch[list.size()]);
}
private RenderPatch[] buildCornerStepMeshes(RenderPatchFactory rpf, int dat) {
ArrayList<RenderPatch> list = new ArrayList<RenderPatch>();
/* If inverted, add half top */
if((dat & 0x4) != 0) {
addBox(rpf, list, 0, 1, 0.5, 1, 0, 1);
}
else { // Else, add half bottom
addBox(rpf, list, 0, 1, 0.0, 0.5, 0, 1);
}
switch(dat & 0x3) {
case 0:
addBox(rpf, list, 0.5, 1, 0, 1, 0.5, 1.0);
break;
case 1:
addBox(rpf, list, 0, 0.5, 0, 1, 0, 0.5);
break;
case 2:
addBox(rpf, list, 0, 0.5, 0, 1, 0.5, 1.0);
break;
case 3:
addBox(rpf, list, 0.5, 1, 0, 1, 0, 0.5);
break;
}
return list.toArray(new RenderPatch[list.size()]);
}
private RenderPatch[] buildIntCornerStepMeshes(RenderPatchFactory rpf, int dat) {
ArrayList<RenderPatch> list = new ArrayList<RenderPatch>();
/* If inverted, add half top */
if((dat & 0x4) != 0) {
addBox(rpf, list, 0, 1, 0.5, 1, 0, 1);
}
else { // Else, add half bottom
addBox(rpf, list, 0, 1, 0.0, 0.5, 0, 1);
}
switch(dat & 0x3) {
case 3:
addBox(rpf, list, 0.5, 1, 0, 1, 0, 1);
addBox(rpf, list, 0, 0.5, 0, 1, 0, 0.5);
break;
case 0:
addBox(rpf, list, 0.5, 1, 0, 1, 0, 1);
addBox(rpf, list, 0, 0.5, 0, 1, 0.5, 1);
break;
case 1:
addBox(rpf, list, 0, 0.5, 0, 1, 0, 1);
addBox(rpf, list, 0.5, 1, 0, 1, 0, 0.5);
break;
case 2:
addBox(rpf, list, 0, 0.5, 0, 1, 0, 1);
addBox(rpf, list, 0.5, 1, 0, 1, 0.5, 1);
break;
}
return list.toArray(new RenderPatch[list.size()]);
}
// Outer and inner left equivalent to outer and innter right minus 90 degrees
private static final int midx_by_facing[] = { 3, 2, 1, 0 };
private static final int midx_by_facing_left[] = { 1, 0, 2, 3 };
@Override
public RenderPatch[] getRenderPatchList(MapDataContext ctx) {
int idx = ctx.getBlockType().stateIndex;
// Parse index
int shape = (idx >> 1) % 5; // 0=straight, 1=inner left, 2 = inner right, 3=outer left, 4=outer right
int half = (idx / 10) % 2; // 0=top, 1=bottom
int facing = (idx / 20) % 4; // 0=north, 1=south, 2=west, 3=east
// Compute model index
RenderPatch[] rp = null;
switch (shape) {
case 0: // Straight
rp = stepmeshes[midx_by_facing[facing] + ((1-half) * 4)];
break;
case 1: // inner left
rp = step_3_4_meshes[midx_by_facing_left[facing] + ((1-half) * 4)];
break;
case 2: // inner right
rp = step_3_4_meshes[midx_by_facing[facing] + ((1-half) * 4)];
break;
case 3: // Outer left
rp = step_1_4_meshes[midx_by_facing_left[facing] + ((1-half) * 4)];
break;
case 4: // Outer right
rp = step_1_4_meshes[midx_by_facing[facing] + ((1-half) * 4)];
break;
}
return rp;
}
}

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import java.util.Random; import java.util.Random;
@ -12,7 +13,7 @@ import org.dynmap.renderer.RenderPatchFactory;
public class TFCLooseRockRenderer extends CustomRenderer { public class TFCLooseRockRenderer extends CustomRenderer {
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;

View File

@ -36,7 +36,7 @@ public class TFCSupportRenderer extends CustomRenderer {
} }
} }
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
String vert = custparm.get("vert"); String vert = custparm.get("vert");

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -25,7 +26,7 @@ public class TFCWoodRenderer extends CustomRenderer {
private RenderPatch[][] meshes = new RenderPatch[32][]; private RenderPatch[][] meshes = new RenderPatch[32][];
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
blkbs = DynmapBlockState.getBaseStateByName(blkname); blkbs = DynmapBlockState.getBaseStateByName(blkname);

View File

@ -1,6 +1,7 @@
package org.dynmap.hdmap.renderer; package org.dynmap.hdmap.renderer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.BitSet;
import java.util.Map; import java.util.Map;
import org.dynmap.renderer.CustomRenderer; import org.dynmap.renderer.CustomRenderer;
@ -23,7 +24,7 @@ public class ThaumFurnaceRenderer extends CustomRenderer {
private static final int TXTIDX_LAVA = 24; /* Lava */ private static final int TXTIDX_LAVA = 24; /* Lava */
@Override @Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm)) if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))
return false; return false;
blkbs = DynmapBlockState.getBaseStateByName(blkname); /* Remember our block ID */ blkbs = DynmapBlockState.getBaseStateByName(blkname); /* Remember our block ID */

View File

@ -175,7 +175,7 @@ ignore-updates:id=leaves,id=leaves2,data=*
# Birch Wood stair # Birch Wood stair
# Jungle Wood stair # Jungle Wood stair
# (156) Quartz Stairs # (156) Quartz Stairs
customblock:idoak_stairs,id=stone_stairs,id=brick_stairs,id=stone_brick_stairs,id=nether_brick_stairs,id=sandstone_stairs,id=spruce_stairs,id=birch_stairs,id=jungle_stairs,id=quartz_stairs,data=*,class=org.dynmap.hdmap.renderer.StairBlockRenderer customblock:idoak_stairs,id=stone_stairs,id=brick_stairs,id=stone_brick_stairs,id=nether_brick_stairs,id=sandstone_stairs,id=spruce_stairs,id=birch_stairs,id=jungle_stairs,id=quartz_stairs,data=*,class=org.dynmap.hdmap.renderer.StairStateRenderer
# Slab (stone, sandstone, wood, cobblestone) # Slab (stone, sandstone, wood, cobblestone)
# Wood Slab # Wood Slab
@ -1143,123 +1143,123 @@ layer:11,12,13,14,15
**************** ****************
# Colored glass pane (160) # Colored glass pane (160)
[1.7.0-]customblock:id=stained_glass_pane,data=*,class=org.dynmap.hdmap.renderer.PaneRenderer customblock:id=stained_glass_pane,data=*,class=org.dynmap.hdmap.renderer.PaneRenderer
# Acacia Stairs (163) # Acacia Stairs (163)
# Dark Oak Stairs (164) # Dark Oak Stairs (164)
[1.7.0-]customblock:id=acacia_stairs,id=dark_oak_stairs,data=*,class=org.dynmap.hdmap.renderer.StairBlockRenderer customblock:id=acacia_stairs,id=dark_oak_stairs,data=*,class=org.dynmap.hdmap.renderer.StairStateRenderer
# (171) Carpet # (171) Carpet
boxblock:id=carpet,data=*,ymax=0.0625 boxblock:id=carpet,data=*,ymax=0.0625
# (175) Double Plant # (175) Double Plant
[1.7.0-]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=0,data=1,data=2,data=3,data=4,data=5,class=org.dynmap.hdmap.renderer.PlantRenderer,metacnt=6
[1.7.0-]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 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
# 1.8 blocks # 1.8 blocks
# Iron Trapdoor # Iron Trapdoor
[1.8.0-]boxblock:id=iron_trapdoor,data=0,data=1,data=2,data=3,ymax=0.1875 boxblock:id=iron_trapdoor,data=0,data=1,data=2,data=3,ymax=0.1875
[1.8.0-]boxblock:id=iron_trapdoor,data=4,data=12,zmin=0.8125 boxblock:id=iron_trapdoor,data=4,data=12,zmin=0.8125
[1.8.0-]boxblock:id=iron_trapdoor,data=5,data=13,zmax=0.1875 boxblock:id=iron_trapdoor,data=5,data=13,zmax=0.1875
[1.8.0-]boxblock:id=iron_trapdoor,data=6,data=14,xmin=0.8125 boxblock:id=iron_trapdoor,data=6,data=14,xmin=0.8125
[1.8.0-]boxblock:id=iron_trapdoor,data=7,data=15,xmax=0.1875 boxblock:id=iron_trapdoor,data=7,data=15,xmax=0.1875
[1.8.0-]boxblock:id=iron_trapdoor,data=8,data=9,data=10,data=11,ymin=0.8125 boxblock:id=iron_trapdoor,data=8,data=9,data=10,data=11,ymin=0.8125
# Inverted Daylight Sensor # Inverted Daylight Sensor
[1.8.0-]boxblock:id=daylight_detector_inverted,data=*,ymax=0.375 boxblock:id=daylight_detector_inverted,data=*,ymax=0.375
# Red Sandstone stairs # Red Sandstone stairs
[1.8.0-]customblock:id=red_sandstone_stairs,data=*,class=org.dynmap.hdmap.renderer.StairBlockRenderer customblock:id=red_sandstone_stairs,data=*,class=org.dynmap.hdmap.renderer.StairStateRenderer
# Red Sandstone Slab # Red Sandstone Slab
[1.8.0-]boxblock:id=stone_slab2,data=0,ymax=0.5 boxblock:id=stone_slab2,data=0,ymax=0.5
[1.8.0-]boxblock:id=stone_slab2,data=8,ymin=0.5 boxblock:id=stone_slab2,data=8,ymin=0.5
# Fence Gate (Spruce) # Fence Gate (Spruce)
[1.8.0-]customblock:id=spruce_fence_gate,data=*,class=org.dynmap.hdmap.renderer.FenceGateBlockRenderer customblock:id=spruce_fence_gate,data=*,class=org.dynmap.hdmap.renderer.FenceGateBlockRenderer
# Fence Gate (Birch) # Fence Gate (Birch)
[1.8.0-]customblock:id=birch_fence_gate,data=*,class=org.dynmap.hdmap.renderer.FenceGateBlockRenderer customblock:id=birch_fence_gate,data=*,class=org.dynmap.hdmap.renderer.FenceGateBlockRenderer
# Fence Gate (Jungle) # Fence Gate (Jungle)
[1.8.0-]customblock:id=jungle_fence_gate,data=*,class=org.dynmap.hdmap.renderer.FenceGateBlockRenderer customblock:id=jungle_fence_gate,data=*,class=org.dynmap.hdmap.renderer.FenceGateBlockRenderer
# Fence Gate (Dark Oak) # Fence Gate (Dark Oak)
[1.8.0-]customblock:id=dark_oak_fence_gate,data=*,class=org.dynmap.hdmap.renderer.FenceGateBlockRenderer customblock:id=dark_oak_fence_gate,data=*,class=org.dynmap.hdmap.renderer.FenceGateBlockRenderer
# Fence Gate (Acacia) # Fence Gate (Acacia)
[1.8.0-]customblock:id=acacia_fence_gate,data=*,class=org.dynmap.hdmap.renderer.FenceGateBlockRenderer customblock:id=acacia_fence_gate,data=*,class=org.dynmap.hdmap.renderer.FenceGateBlockRenderer
# Fence (Spruce) # Fence (Spruce)
[1.8.0-]customblock:id=spruce_fence,data=*,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=fence,link0=183 customblock:id=spruce_fence,data=*,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=fence,link0=183
# Fence (Birch) # Fence (Birch)
[1.8.0-]customblock:id=birch_fence,data=*,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=fence,link0=184 customblock:id=birch_fence,data=*,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=fence,link0=184
# Fence (Jungle) # Fence (Jungle)
[1.8.0-]customblock:id=jungle_fence,data=*,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=fence,link0=185 customblock:id=jungle_fence,data=*,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=fence,link0=185
# Fence (Dark Oak) # Fence (Dark Oak)
[1.8.0-]customblock:id=dark_oak_fence,data=*,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=fence,link0=186 customblock:id=dark_oak_fence,data=*,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=fence,link0=186
# Fence (Acacia) # Fence (Acacia)
[1.8.0-]customblock:id=acacia_fence,data=*,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=fence,link0=187 customblock:id=acacia_fence,data=*,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=fence,link0=187
# Wooden Door Block (Spruce) # Wooden Door Block (Spruce)
# Wooden Door Block (Birch) # Wooden Door Block (Birch)
# Wooden Door Block (Jungle) # Wooden Door Block (Jungle)
# Wooden Door Block (Acacia) # Wooden Door Block (Acacia)
# Wooden Door Block (Dark Oak) # Wooden Door Block (Dark Oak)
[1.8.0-]customblock:id=spruce_door,id=birch_door,id=jungle_door,id=acacia_door,id=dark_oak_door,data=*,class=org.dynmap.hdmap.renderer.DoorRenderer customblock:id=spruce_door,id=birch_door,id=jungle_door,id=acacia_door,id=dark_oak_door,data=*,class=org.dynmap.hdmap.renderer.DoorRenderer
# 1.9 models # 1.9 models
# End rod # End rod
#[1.9.0-]block:id=end_rod,data=*,patch0=0:end_rod,transparency=TRANSPARENT #block:id=end_rod,data=*,patch0=0:end_rod,transparency=TRANSPARENT
# Chorus Plant # Chorus Plant
[1.9.0-]customblock:id=chorus_plant,data=*,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=wall,link0=200 customblock:id=chorus_plant,data=*,class=org.dynmap.hdmap.renderer.FenceWallBlockRenderer,type=wall,link0=200
# Chorus Flower # Chorus Flower
[1.9.0-]block:id=chorus_flower,data=*,scale=8 block:id=chorus_flower,data=*,scale=8
[1.9.0-]layer:0,7 layer:0,7
[1.9.0-]-------- --------
[1.9.0-]-******- -******-
[1.9.0-]-******- -******-
[1.9.0-]-******- -******-
[1.9.0-]-******- -******-
[1.9.0-]-******- -******-
[1.9.0-]-******- -******-
[1.9.0-]-------- --------
[1.9.0-]layer:1,2,3,4,5,6 layer:1,2,3,4,5,6
[1.9.0-]-******- -******-
[1.9.0-]******** ********
[1.9.0-]******** ********
[1.9.0-]******** ********
[1.9.0-]******** ********
[1.9.0-]******** ********
[1.9.0-]******** ********
[1.9.0-]-******- -******-
# Purpur Block # Purpur Block
# Purpur Pillar # Purpur Pillar
# Purpur Stairs # Purpur Stairs
[1.9.0-]customblock:id=purpur_stairs,data=*,class=org.dynmap.hdmap.renderer.StairBlockRenderer customblock:id=purpur_stairs,data=*,class=org.dynmap.hdmap.renderer.StairStateRenderer
# Purpur Slab (Double) # Purpur Slab (Double)
# Purpur Slab # Purpur Slab
[1.9.0-]boxblock:id=purpur_slab,data=0,data=1,data=2,data=3,data=4,data=5,data=6,data=7,ymax=0.5 boxblock:id=purpur_slab,data=0,data=1,data=2,data=3,data=4,data=5,data=6,data=7,ymax=0.5
[1.9.0-]boxblock:id=purpur_slab,data=8,data=9,data=10,data=11,data=12,data=13,data=14,data=15,ymin=0.5 boxblock:id=purpur_slab,data=8,data=9,data=10,data=11,data=12,data=13,data=14,data=15,ymin=0.5
# End Stone Bricks # End Stone Bricks
# Beetroot # Beetroot
[1.9.0-]patchblock:id=beetroots,data=*,patch0=VertX075,patch1=VertX075@90,patch2=VertX025,patch3=VertX025@90 patchblock:id=beetroots,data=*,patch0=VertX075,patch1=VertX075@90,patch2=VertX025,patch3=VertX025@90
# Grass Path # Grass Path
[1.9.0-]boxblock:id=grass_path,data=*,ymax=0.9375 boxblock:id=grass_path,data=*,ymax=0.9375
# 209 End Gateway # 209 End Gateway

View File

@ -105,7 +105,7 @@ texture:id=brown_wool
texture:id=cyan_wool texture:id=cyan_wool
texture:id=gray_wool texture:id=gray_wool
texture:id=green_wool texture:id=green_wool
texture:id=light_blue_wppl texture:id=light_blue_wool
texture:id=lime_wool texture:id=lime_wool
texture:id=magenta_wool texture:id=magenta_wool
texture:id=orange_wool texture:id=orange_wool
@ -174,9 +174,9 @@ texture:id=furnace_front_on
texture:id=dispenser_front_horizontal texture:id=dispenser_front_horizontal
texture:id=dispenser_front_vertical texture:id=dispenser_front_vertical
texture:id=sandstone_bottom texture:id=sandstone_bottom
texture:id=sandstone_carved texture:id=chiseled_sandstone
texture:id=sandstone_normal texture:id=sandstone
texture:id=sandstone_smooth texture:id=cut_sandstone
texture:id=sandstone_top texture:id=sandstone_top
texture:id=noteblock texture:id=noteblock
texture:id=rail_golden_powered texture:id=rail_golden_powered
@ -411,9 +411,9 @@ texture:id=prismarine_rough
texture:id=sea_lantern texture:id=sea_lantern
texture:id=daylight_detector_inverted_top texture:id=daylight_detector_inverted_top
texture:id=red_sandstone_bottom texture:id=red_sandstone_bottom
texture:id=red_sandstone_carved texture:id=chiseled_red_sandstone
texture:id=red_sandstone_normal texture:id=red_sandstone
texture:id=red_sandstone_smooth texture:id=cut_red_sandstone
texture:id=red_sandstone_top texture:id=red_sandstone_top
texture:id=dark_oak_planks texture:id=dark_oak_planks
texture:id=acacia_door_lower texture:id=acacia_door_lower
@ -721,11 +721,11 @@ block:id=dispenser,data=6,data=7,face0=0:furnace_top,face1=0:furnace_top,face2=0
block:id=dispenser,data=8,data=9,face0=0:furnace_top,face1=0:furnace_top,face2=0:furnace_side,face3=0:furnace_side,face4=0:dispenser_front_horizontal,face5=0:furnace_side,stdrot=true block:id=dispenser,data=8,data=9,face0=0:furnace_top,face1=0:furnace_top,face2=0:furnace_side,face3=0:furnace_side,face4=0:dispenser_front_horizontal,face5=0:furnace_side,stdrot=true
block:id=dispenser,data=10,data=11,face0=0:furnace_top,face1=0:furnace_top,face2=0:furnace_side,face3=0:furnace_side,face4=0:furnace_side,face5=0:dispenser_front_horizontal,stdrot=true block:id=dispenser,data=10,data=11,face0=0:furnace_top,face1=0:furnace_top,face2=0:furnace_side,face3=0:furnace_side,face4=0:furnace_side,face5=0:dispenser_front_horizontal,stdrot=true
# Sandstone # Sandstone
block:id=sandstone,bottom=0:sandstone_bottom,top=0:sandstone_top,allsides=0:sandstone_normal,stdrot=true block:id=sandstone,bottom=0:sandstone_bottom,top=0:sandstone_top,allsides=0:sandstone,stdrot=true
# Carved Sandstone # Carved Sandstone
block:id=chiseled_sandstone,allsides=0:sandstone_carved,topbottom=0:sandstone_top,stdrot=true block:id=chiseled_sandstone,allsides=0:chiseled_sandstone,topbottom=0:sandstone_top,stdrot=true
# Smooth Sandstone # Smooth Sandstone
block:id=cut_sandstone,allsides=0:sandstone_smooth,topbottom=0:sandstone_top,stdrot=true block:id=cut_sandstone,allsides=0:cut_sandstone,topbottom=0:sandstone_top,stdrot=true
# Note Block # Note Block
block:id=note_block,allfaces=0:noteblock,stdrot=true block:id=note_block,allfaces=0:noteblock,stdrot=true
# White Bed # White Bed
@ -828,7 +828,7 @@ block:id=dead_bush,patch0-1=0:dead_bush,transparency=TRANSPARENT
block:id=seagrass,patch0-1=1000:seagrass,transparency=TRANSPARENT block:id=seagrass,patch0-1=1000:seagrass,transparency=TRANSPARENT
# Tall seagrass # Tall seagrass
block:id=seagrass,data=0,patch0-1=1000:tall_seagrass_top,transparency=TRANSPARENT block:id=seagrass,data=0,patch0-1=1000:tall_seagrass_top,transparency=TRANSPARENT
block:id=seagrass,data=1.patch0-1=1000:tall_seagrass_bottom,transparency=TRANSPARENT block:id=seagrass,data=1,patch0-1=1000:tall_seagrass_bottom,transparency=TRANSPARENT
# Piston - facing down # Piston - facing down
block:id=piston,data=0,top=0:piston_bottom,bottom=0:piston_top_normal,allsides=5000:piston_side,transparency=TRANSPARENT block:id=piston,data=0,top=0:piston_bottom,bottom=0:piston_top_normal,allsides=5000:piston_side,transparency=TRANSPARENT
# Piston - facing up # Piston - facing up
@ -920,7 +920,7 @@ block:id=iron_block,allfaces=0:iron_block,stdrot=true
block:id=double_stone_slab,data=0,allsides=0:stone_slab_side,topbottom=0:stone_slab_top,stdrot=true block:id=double_stone_slab,data=0,allsides=0:stone_slab_side,topbottom=0:stone_slab_top,stdrot=true
block:id=double_stone_slab,data=8,allfaces=0:stone_slab_top,stdrot=true block:id=double_stone_slab,data=8,allfaces=0:stone_slab_top,stdrot=true
# Double Slab - Sandstone # Double Slab - Sandstone
block:id=double_stone_slab,data=1,bottom=0:sandstone_bottom,top=0:sandstone_top,allsides=0:sandstone_normal,stdrot=true block:id=double_stone_slab,data=1,bottom=0:sandstone_bottom,top=0:sandstone_top,allsides=0:sandstone,stdrot=true
block:id=double_stone_slab,data=9,allfaces=0:sandstone_top,stdrot=true block:id=double_stone_slab,data=9,allfaces=0:sandstone_top,stdrot=true
# Double Slab - Wood # Double Slab - Wood
block:id=double_stone_slab,data=2,allfaces=0:oak_planks,stdrot=true block:id=double_stone_slab,data=2,allfaces=0:oak_planks,stdrot=true
@ -943,7 +943,7 @@ block:id=double_stone_slab,data=15,top=0:quartz_block_top,bottom=0:quartz_block_
# Slab - stone # Slab - stone
block:id=stone_slab,data=0,data=8,allsides=0:stone_slab_side,topbottom=0:stone_slab_top,stdrot=true,transparency=SEMITRANSPARENT block:id=stone_slab,data=0,data=8,allsides=0:stone_slab_side,topbottom=0:stone_slab_top,stdrot=true,transparency=SEMITRANSPARENT
# Slab - Sandstone # Slab - Sandstone
block:id=stone_slab,data=1,data=9,bottom=0:sandstone_bottom,top=0:sandstone_top,allsides=0:sandstone_normal,stdrot=true,transparency=SEMITRANSPARENT block:id=stone_slab,data=1,data=9,bottom=0:sandstone_bottom,top=0:sandstone_top,allsides=0:sandstone,stdrot=true,transparency=SEMITRANSPARENT
# Slab - Wood # Slab - Wood
block:id=stone_slab,data=2,data=10,allfaces=0:oak_planks,stdrot=true,transparency=SEMITRANSPARENT block:id=stone_slab,data=2,data=10,allfaces=0:oak_planks,stdrot=true,transparency=SEMITRANSPARENT
# Slab - Cobblestone # Slab - Cobblestone
@ -1286,7 +1286,7 @@ block:id=wooden_slab,data=5,data=13,allfaces=0:dark_oak_planks,stdrot=true,trans
# Cocoa Plant (TODO: handle different stages, orientations) # Cocoa Plant (TODO: handle different stages, orientations)
block:id=cocoa,data=*,allsides=0:cocoa_stage_2 block:id=cocoa,data=*,allsides=0:cocoa_stage_2
# Sandstone stairs # Sandstone stairs
block:id=sandstone_stairs,data=*,patch0=0:sandstone_normal,patch1=0:sandstone_top,patch2=0:sandstone_bottom,transparency=SEMITRANSPARENT block:id=sandstone_stairs,data=*,patch0=0:sandstone,patch1=0:sandstone_top,patch2=0:sandstone_bottom,transparency=SEMITRANSPARENT
# Emerald Ore # Emerald Ore
block:id=emerald_ore,data=*,allfaces=0:emerald_ore,stdrot=true block:id=emerald_ore,data=*,allfaces=0:emerald_ore,stdrot=true
# Ender Chest (facing east) # Ender Chest (facing east)
@ -1332,7 +1332,7 @@ block:id=flower_pot,data=8,patch0-5=0:flower_pot,patch6=0:dirt,patch7-8=0:mushro
# Flower pot with cactus # Flower pot with cactus
block:id=flower_pot,data=9,patch0-5=0:flower_pot,patch6=0:dirt,patch7-10=0:cactus_side,patch11=0:cactus_top,transparency=TRANSPARENT block:id=flower_pot,data=9,patch0-5=0:flower_pot,patch6=0:dirt,patch7-10=0:cactus_side,patch11=0:cactus_top,transparency=TRANSPARENT
# Flower pot with dead bush # Flower pot with dead bush
block:id=flower_pot,data=10,patch0-5=0:flower_pot,patch6=0:dirt,patch7-8=0:deadbush,transparency=TRANSPARENT block:id=flower_pot,data=10,patch0-5=0:flower_pot,patch6=0:dirt,patch7-8=0:dead_bush,transparency=TRANSPARENT
# Flower pot with fern # Flower pot with fern
block:id=flower_pot,data=11,patch0-5=0:flower_pot,patch6=0:dirt,patch7-8=1000:fern,transparency=TRANSPARENT block:id=flower_pot,data=11,patch0-5=0:flower_pot,patch6=0:dirt,patch7-8=1000:fern,transparency=TRANSPARENT
# Carrots # Carrots
@ -1521,23 +1521,23 @@ block:id=sea_lantern,data=*,allfaces=0:sea_lantern,stdrot=true
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 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 # Red Sandstone
block:id=red_sandstone,data=0,bottom=0:red_sandstone_bottom,top=0:red_sandstone_top,allsides=0:red_sandstone_normal,stdrot=true block:id=red_sandstone,bottom=0:red_sandstone_bottom,top=0:red_sandstone_top,allsides=0:red_sandstone,stdrot=true
# Carved Red Sandstone # Carved Red Sandstone
block:id=red_sandstone,data=1,data=3,data=4,data=5,data=6,data=7,data=8,data=9,data=10,data=11,data=12,data=13,data=14,data=15,allsides=0:red_sandstone_carved,topbottom=0:red_sandstone_top,stdrot=true block:id=chiseled_red_sandstone,allsides=0:chiseled_red_sandstone,topbottom=0:red_sandstone_top,stdrot=true
# Smooth Red Sandstone # Smooth Red Sandstone
block:id=red_sandstone,data=2,allsides=0:red_sandstone_smooth,topbottom=0:red_sandstone_top,stdrot=true block:id=cut_red_sandstone,allsides=0:cut_red_sandstone,topbottom=0:red_sandstone_top,stdrot=true
# Red Sandstone stairs # Red Sandstone stairs
block:id=red_sandstone_stairs,data=*,patch0=0:red_sandstone_normal,patch1=0:red_sandstone_top,patch2=0:red_sandstone_bottom,transparency=SEMITRANSPARENT 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) # 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_normal,stdrot=true 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 block:id=double_stone_slab2,data=8,allfaces=0:red_sandstone_top,stdrot=true
# Red Sandstone Slab # 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_normal,stdrot=true,transparency=SEMITRANSPARENT 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) # Fence Gate (Spruce)
block:id=spruce_fence_gate,patch0-2=0:spruce_planks,stdrot=true,transparency=TRANSPARENT block:id=spruce_fence_gate,patch0-2=0:spruce_planks,stdrot=true,transparency=TRANSPARENT

View File

@ -1,5 +1,6 @@
package org.dynmap.renderer; package org.dynmap.renderer;
import java.util.BitSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -28,7 +29,7 @@ public abstract class CustomRenderer {
* @param custparm - parameter strings for custom renderer - renderer specific * @param custparm - parameter strings for custom renderer - renderer specific
* @return true if initialized successfully, false if not * @return true if initialized successfully, false if not
*/ */
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, int blockdatamask, Map<String,String> custparm) { public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
return true; return true;
} }
/** /**