Finish new 1.14 walls, add boxlist: model, use for scaffolding

This commit is contained in:
Mike Primm 2019-05-17 23:58:15 -05:00
parent 0fd04cb66a
commit 313b7f3beb
3 changed files with 131 additions and 3 deletions

View File

@ -315,6 +315,10 @@ public class HDBlockModels {
// Patch index ordering, corresponding to BlockStep ordinal order
public static final int boxPatchList[] = { 1, 4, 0, 3, 2, 5 };
private static class BoxLimits {
double xmin = 0.0, xmax = 1.0, ymin = 0.0, ymax = 1.0, zmin = 0.0, zmax = 1.0;
int[] patches = new int[6]; // Default all to patch0
}
/**
* Load models from file
* @param core
@ -875,6 +879,87 @@ public class HDBlockModels {
Log.severe("Box block model missing required parameters = line " + rdr.getLineNumber() + " of " + fname);
}
}
// Shortcut for defining a patchblock that is a simple rectangular prism, with sidex corresponding to full block sides
else if(line.startsWith("boxlist:")) {
ArrayList<String> blknames = new ArrayList<String>();
databits.clear();
line = line.substring(8);
String[] args = line.split(",");
ArrayList<BoxLimits> boxes = new ArrayList<BoxLimits>();
for(String a : args) {
String[] av = a.split("=");
if(av.length < 2) continue;
if(av[0].equals("id")) {
blknames.add(getBlockName(modname,av[1]));
}
else if(av[0].equals("data")) {
if(av[1].equals("*")) {
databits.clear();
}
else if (av[1].indexOf('-') > 0) {
String[] sp = av[1].split("-");
int m0 = getIntValue(varvals, sp[0]);
int m1 = getIntValue(varvals, sp[1]);
for (int m = m0; m <= m1; m++) {
databits.set(m);
}
}
else
databits.set(getIntValue(varvals,av[1]));
}
else if(av[0].equals("box")) {
String[] prms = av[1].split(":");
BoxLimits box = new BoxLimits();
if (prms.length > 0)
box.xmin = Double.parseDouble(prms[0]);
if (prms.length > 1)
box.xmax = Double.parseDouble(prms[1]);
if (prms.length > 2)
box.ymin = Double.parseDouble(prms[2]);
if (prms.length > 3)
box.ymax = Double.parseDouble(prms[3]);
if (prms.length > 4)
box.zmin = Double.parseDouble(prms[4]);
if (prms.length > 5)
box.zmax = Double.parseDouble(prms[5]);
if (prms.length > 6) {
String[] pl = prms[6].split("/");
for (int p = 0; (p < 6) && (p < pl.length); p++) {
box.patches[p] = Integer.parseInt(pl[p]);
}
}
boxes.add(box);
}
}
/* If we have everything, build block */
pmodlist.clear();
if (blknames.size() > 0) {
ArrayList<RenderPatch> pd = new ArrayList<RenderPatch>();
for (BoxLimits bl : boxes) {
CustomRenderer.addBox(pdf, pd, bl.xmin, bl.xmax, bl.ymin, bl.ymax, bl.zmin, bl.zmax, bl.patches);
}
PatchDefinition[] patcharray = new PatchDefinition[pd.size()];
for (int i = 0; i < patcharray.length; i++) {
patcharray[i] = (PatchDefinition) pd.get(i);
}
if(patcharray.length > max_patches)
max_patches = patcharray.length;
for(String nm : blknames) {
DynmapBlockState bs = DynmapBlockState.getBaseStateByName(nm);
if (bs.isNotAir()) {
pmodlist.add(new HDBlockPatchModel(bs, databits, patcharray, blockset));
cnt++;
}
else {
Log.severe("Invalid boxlist block name " + nm + " at line " + rdr.getLineNumber());
}
}
}
else {
Log.severe("Box list block model missing required parameters = line " + rdr.getLineNumber() + " of " + fname);
}
}
else if(line.startsWith("customblock:")) {
ArrayList<String> blknames = new ArrayList<String>();
HashMap<String,String> custargs = new HashMap<String,String>();

View File

@ -1468,6 +1468,19 @@ patchblock:id=bubble_column
# Red nether brick slab
# Polished andesite slab
# Diorite slab
[1.14-]boxblock:id=polished_granite_slab,id=smooth_red_sandstone_slab,id=mossy_stone_brick_slab,id=polished_diorite_slab,id=mossy_cobblestone_slab,id=end_stone_brick_slab,id=smooth_sandstone_slab,id=smooth_quarts_slab,id=granite_slab,id=andesite_slab,id=red_nether_brick_slab,id=polished_andesite_slab,id=diorite_slab,data=0,data=1,ymin=0.5
[1.14-]boxblock:id=polished_granite_slab,id=smooth_red_sandstone_slab,id=mossy_stone_brick_slab,id=polished_diorite_slab,id=mossy_cobblestone_slab,id=end_stone_brick_slab,id=smooth_sandstone_slab,id=smooth_quarts_slab,id=granite_slab,id=andesite_slab,id=red_nether_brick_slab,id=polished_andesite_slab,id=diorite_slab,data=2,data=3,ymax=0.5
[1.14-]boxblock:id=polished_granite_slab,id=smooth_red_sandstone_slab,id=mossy_stone_brick_slab,id=polished_diorite_slab,id=mossy_cobblestone_slab,id=end_stone_brick_slab,id=smooth_sandstone_slab,id=smooth_quartz_slab,id=granite_slab,id=andesite_slab,id=red_nether_brick_slab,id=polished_andesite_slab,id=diorite_slab,data=0,data=1,ymin=0.5
[1.14-]boxblock:id=polished_granite_slab,id=smooth_red_sandstone_slab,id=mossy_stone_brick_slab,id=polished_diorite_slab,id=mossy_cobblestone_slab,id=end_stone_brick_slab,id=smooth_sandstone_slab,id=smooth_quartz_slab,id=granite_slab,id=andesite_slab,id=red_nether_brick_slab,id=polished_andesite_slab,id=diorite_slab,data=2,data=3,ymax=0.5
# Brick wall
# Prismarine wall
# Red sandstone wall
# Mossy stone brick wall
# Granite wall
# Stone brick wall
# Nether brick wall
# Red nether brick wall
# Sandstone wall
# End stone brick wall
# Diorite wall
[1.14-]customblock:id=brick_wall,id=prismarine_wall,id=red_sandstone_wall,id=mossy_stone_brick_wall,id=granite_wall,id=stone_brick_wall,id=nether_brick_wall,id=andesite_wall,id=red_nether_brick_wall,id=sandstone_wall,id=end_stone_brick_wall,id=diorite_wall,class=org.dynmap.hdmap.renderer.FenceWallBlockStateRenderer,type=wall
# Scaffolding
[1.14-]boxlist:id=scaffolding,box=0:1:0.99:1:0:1:0/0/-1/-1/-1/-1,box=0:0.125:0:1:0:0.125:2/-1/1/1/1/1,box=0:0.125:0:1:0.875:1:2/-1/1/1/1/1,box=0.875:1:0:1:0.875:1:2/-1/1/1/1/1,box=0.875:1:0:1:0:0.125:2/-1/1/1/1/1,box=0.125:0.875:0.875:1:0:0.125:2/-1/1/1/1/1,box=0.125:0.875:0.875:1:0.875:1:2/-1/1/1/1/1,box=0.875:1:0.875:1:0.125:0.875:2/-1/1/1/1/1,box=0:0.125:0.875:1:0.125:0.875:2/-1/1/1/1/1

View File

@ -2172,6 +2172,10 @@ block:id=horn_coral,patch0-1=0:horn_coral,transparency=TRANSPARENT
[1.14-]texture:id=smooth_stone
[1.14-]texture:id=bamboo_stage0
[1.14-]texture:id=bamboo_stalk
[1.14-]texture:id=scaffolding_top
[1.14-]texture:id=scaffolding_side
[1.14-]texture:id=scaffolding_bottom
# Signpost
[1.14-]block:id=oak_sign,patch0=0,patch1=1,patch2=2,patch3=3,patch4=4,patch5=5,patch6=6,patch7=7,patch8=8,patch9=9,transparency=TRANSPARENT,txtid=oak_sign
[1.14-]block:id=spruce_sign,patch0=0,patch1=1,patch2=2,patch3=3,patch4=4,patch5=5,patch6=6,patch7=7,patch8=8,patch9=9,transparency=TRANSPARENT,txtid=spruce_sign
@ -2280,3 +2284,29 @@ block:id=horn_coral,patch0-1=0:horn_coral,transparency=TRANSPARENT
# Diorite slab
[1.14-]block:id=diorite_slab,data=0,data=1,data=2,data=3,allsides=0:diorite,topbottom=0:diorite,stdrot=true,transparency=SEMITRANSPARENT
[1.14-]block:id=diorite_slab,data=4,data=5,allsides=0:diorite,topbottom=0:diorite,stdrot=true
# Brick wall
[1.14-]block:id=brick_wall,patch0-2=0:bricks,transparency=TRANSPARENT
# Prismarine wall
[1.14-]block:id=prismarine_wall,patch0-2=0:prismarine,transparency=TRANSPARENT
# Red sandstone wall
[1.14-]block:id=red_sandstone_wall,patch0-2=0:red_sandstone,transparency=TRANSPARENT
# Mossy stone brick wall
[1.14-]block:id=mossy_stone_brick_wall,patch0-2=0:mossy_stone_bricks,transparency=TRANSPARENT
# Granite wall
[1.14-]block:id=granite_wall,patch0-2=0:granite,transparency=TRANSPARENT
# Stone brick wall
[1.14-]block:id=stone_brick_wall,patch0-2=0:stone_bricks,transparency=TRANSPARENT
# Nether brick wall
[1.14-]block:id=nether_brick_wall,patch0-2=0:nether_bricks,transparency=TRANSPARENT
# Andesite wall
[1.14-]block:id=andesite_wall,patch0-2=0:andesite,transparency=TRANSPARENT
# Red nether brick wall
[1.14-]block:id=red_nether_brick_wall,patch0-2=0:red_nether_bricks,transparency=TRANSPARENT
# Sandstone wall
[1.14-]block:id=sandstone_wall,patch0-2=0:sandstone,transparency=TRANSPARENT
# End stone brick wall
[1.14-]block:id=end_stone_brick_wall,patch0-2=0:end_stone_bricks,transparency=TRANSPARENT
# Diorite wall
[1.14-]block:id=diorite_wall,patch0-2=0:diorite,transparency=TRANSPARENT
# Scaffolding
[1.14-]block:id=scaffolding,patch0=0:scaffolding_top,patch1=0:scaffolding_side,patch2=0:scaffolding_bottom,transparency=TRANSPARENT