mirror of
https://github.com/webbukkit/dynmap.git
synced 2025-02-03 13:31:32 +01:00
Finish new 1.14 walls, add boxlist: model, use for scaffolding
This commit is contained in:
parent
0fd04cb66a
commit
313b7f3beb
@ -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>();
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user