mirror of https://github.com/webbukkit/dynmap.git
Add basic support for banner rendering
This commit is contained in:
parent
049bbeda83
commit
31bbe96051
|
@ -17,7 +17,7 @@ import org.dynmap.renderer.RenderPatchFactory.SideVisible;
|
|||
* Each crossed-patch is provided with two corner offsets within the cube (xmin,ymin,zmin) and (xmax,ymax,zmax), and a single patch index (default is 0)
|
||||
*/
|
||||
public class CuboidRenderer extends CustomRenderer {
|
||||
private RenderPatch[] model;
|
||||
private RenderPatch[][] models;
|
||||
private int textureCount;
|
||||
|
||||
private static final int[] crossedPatchDefault = { 0 };
|
||||
|
@ -84,9 +84,32 @@ public class CuboidRenderer extends CustomRenderer {
|
|||
CustomRenderer.addBox(rpf, list, xmin, xmax, ymin, ymax, zmin, zmax, patches);
|
||||
}
|
||||
}
|
||||
}
|
||||
model = list.toArray(new RenderPatch[list.size()]);
|
||||
}
|
||||
RenderPatch[] model = list.toArray(new RenderPatch[list.size()]);
|
||||
|
||||
String rotlist = custparm.get("rotlist"); // See if we have a rotation list
|
||||
if (rotlist != null) {
|
||||
String[] pidx = rotlist.split(":"); // Get list
|
||||
models = new RenderPatch[pidx.length][];
|
||||
for (int idx = 0; idx < pidx.length; idx++) {
|
||||
int rot = Integer.parseInt(pidx[idx]);
|
||||
|
||||
models[idx] = new RenderPatch[model.length];
|
||||
if (rot != 0) {
|
||||
for (int i = 0; i < model.length; i++) {
|
||||
models[idx][i] = rpf.getRotatedPatch(model[i], 0, rot, 0, -1);
|
||||
}
|
||||
}
|
||||
else {
|
||||
models[idx] = model;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
models = new RenderPatch[1][];
|
||||
models[0] = model;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -97,6 +120,7 @@ public class CuboidRenderer extends CustomRenderer {
|
|||
|
||||
@Override
|
||||
public RenderPatch[] getRenderPatchList(MapDataContext ctx) {
|
||||
return model;
|
||||
int idx = ctx.getBlockType().stateIndex;
|
||||
return models[idx % models.length];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,8 +61,11 @@ public class PatchDefinition implements RenderPatch {
|
|||
/**
|
||||
* Construct patch, based on rotation of existing patch clockwise by N
|
||||
* 90 degree steps
|
||||
* @param orig
|
||||
* @param rotate_cnt
|
||||
* @param orig - original patch to copy and rotate
|
||||
* @param rotatex - x rotation in degrees
|
||||
* @param rotatey - y rotation in degrees
|
||||
* @param rotatez - z rotation in degrees
|
||||
* @param textureindex - texture index for new patch (-1 = use same as original patch)
|
||||
*/
|
||||
PatchDefinition(PatchDefinition orig, int rotatex, int rotatey, int rotatez, int textureindex) {
|
||||
Vector3D vec = new Vector3D(orig.x0, orig.y0, orig.z0);
|
||||
|
@ -81,7 +84,7 @@ public class PatchDefinition implements RenderPatch {
|
|||
vmaxatumax = orig.vmaxatumax;
|
||||
vminatumax = orig.vminatumax;
|
||||
sidevis = orig.sidevis;
|
||||
this.textureindex = textureindex;
|
||||
this.textureindex = (textureindex < 0) ? orig.textureindex : textureindex;
|
||||
u = new Vector3D();
|
||||
v = new Vector3D();
|
||||
update();
|
||||
|
|
|
@ -1293,6 +1293,10 @@ boxblock:id=conduit,xmin=0.3125,xmax=0.6875,ymin=0.3125,ymax=0.6875,zmin=0.3125,
|
|||
# Brown huge mushroom
|
||||
customblock:id=red_mushroom_block,id=brown_mushroom_block,class=org.dynmap.hdmap.renderer.MushroomStateRenderer
|
||||
|
||||
# Banners
|
||||
customblock:id=white_banner,id=orange_banner,id=magenta_banner,id=light_blue_banner,id=yellow_banner,id=lime_banner,id=pink_banner,id=gray_banner,id=light_gray_banner,id=cyan_banner,id=purple_banner,id=blue_banner,id=brown_banner,id=green_banner,id=red_banner,id=black_banner,data=0-15,class=org.dynmap.hdmap.renderer.CuboidRenderer,cuboid0=0.46:0:0.46/0.54:1.0:0.54/0:0:0:0:0:0,cuboid1=0:0.96:0.46/1.0:1.0:0.54/0:0:0:0:0:0,cuboid2=0:0.25:0.54/1.0:1.0:0.58/1:1:1:1:1:1,rotlist=0:22:45:68:90:112:135:158:180:202:225:248:270:292:315:338
|
||||
customblock:id=white_wall_banner,id=orange_wall_banner,id=magenta_wall_banner,id=light_blue_wall_banner,id=yellow_wall_banner,id=lime_wall_banner,id=pink_wall_banner,id=gray_wall_banner,id=light_gray_wall_banner,id=cyan_wall_banner,id=purple_wall_banner,id=blue_wall_banner,id=brown_wall_banner,id=green_wall_banner,id=red_wall_banner,id=black_wall_banner,data=0-3,class=org.dynmap.hdmap.renderer.CuboidRenderer,cuboid0=0:0.83:0.96/1.0:0.875:1.0/0:0:0:0:0:0,cuboid1=0:0.0:0.92/1.0:0.875:0.96/1:1:1:1:1:1,rotlist=0:180:270:90
|
||||
|
||||
# 1.13.1 blocks
|
||||
|
||||
# Dead tube coral
|
||||
|
@ -1679,4 +1683,3 @@ patchblock:id=bubble_column
|
|||
[1.17-]boxblock:id=moss_carpet,ymax=0.0625
|
||||
# Pointed dripstone
|
||||
[1.17-]patchblock:id=pointed_dripstone,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
|
||||
|
||||
|
|
|
@ -2080,6 +2080,24 @@ block:id=fire_coral,patch0-1=0:fire_coral,transparency=TRANSPARENT
|
|||
# Horn coral
|
||||
block:id=horn_coral,patch0-1=0:horn_coral,transparency=TRANSPARENT
|
||||
|
||||
# Banners
|
||||
block:id=white_banner,id=white_wall_banner,data=*,patch0=0:oak_planks,patch1=0:white_wool,transparency=TRANSPARENT
|
||||
block:id=orange_banner,id=orange_wall_banner,data=*,patch0=0:oak_planks,patch1=0:orange_wool,transparency=TRANSPARENT
|
||||
block:id=magenta_banner,id=magenta_wall_banner,data=*,patch0=0:oak_planks,patch1=0:magenta_wool,transparency=TRANSPARENT
|
||||
block:id=light_blue_banner,id=light_blue_wall_banner,data=*,patch0=0:oak_planks,patch1=0:light_blue_wool,transparency=TRANSPARENT
|
||||
block:id=yellow_banner,id=yellow_wall_banner,data=*,patch0=0:oak_planks,patch1=0:yellow_wool,transparency=TRANSPARENT
|
||||
block:id=lime_banner,id=lime_wall_banner,data=*,patch0=0:oak_planks,patch1=0:lime_wool,transparency=TRANSPARENT
|
||||
block:id=pink_banner,id=pink_wall_banner,data=*,patch0=0:oak_planks,patch1=0:pink_wool,transparency=TRANSPARENT
|
||||
block:id=gray_banner,id=gray_wall_banner,data=*,patch0=0:oak_planks,patch1=0:gray_wool,transparency=TRANSPARENT
|
||||
block:id=light_gray_banner,id=light_gray_wall_banner,data=*,patch0=0:oak_planks,patch1=0:light_gray_wool,transparency=TRANSPARENT
|
||||
block:id=cyan_banner,id=cyan_wall_banner,data=*,patch0=0:oak_planks,patch1=0:cyan_wool,transparency=TRANSPARENT
|
||||
block:id=purple_banner,id=purple_wall_banner,data=*,patch0=0:oak_planks,patch1=0:purple_wool,transparency=TRANSPARENT
|
||||
block:id=blue_banner,id=blue_wall_banner,data=*,patch0=0:oak_planks,patch1=0:blue_wool,transparency=TRANSPARENT
|
||||
block:id=brown_banner,id=brown_wall_banner,data=*,patch0=0:oak_planks,patch1=0:brown_wool,transparency=TRANSPARENT
|
||||
block:id=green_banner,id=green_wall_banner,data=*,patch0=0:oak_planks,patch1=0:green_wool,transparency=TRANSPARENT
|
||||
block:id=red_banner,id=red_wall_banner,data=*,patch0=0:oak_planks,patch1=0:red_wool,transparency=TRANSPARENT
|
||||
block:id=black_banner,id=black_wall_banner,data=*,patch0=0:oak_planks,patch1=0:black_wool,transparency=TRANSPARENT
|
||||
|
||||
# Dead tube coral
|
||||
[1.13.1-]block:id=dead_tube_coral,patch0-1=0:dead_tube_coral,transparency=TRANSPARENT
|
||||
|
||||
|
@ -2101,6 +2119,7 @@ block:id=horn_coral,patch0-1=0:horn_coral,transparency=TRANSPARENT
|
|||
[-1.13.2]block:id=wall_sign,patch0=0,patch1=1,patch2=2,patch3=3,patch4=4,patch5=5,transparency=TRANSPARENT,txtid=sign
|
||||
|
||||
|
||||
|
||||
[1.14-]texture:id=cornflower
|
||||
[1.14-]texture:id=wither_rose
|
||||
[1.14-]texture:id=lily_of_the_valley
|
||||
|
|
|
@ -94,7 +94,7 @@ public interface RenderPatchFactory {
|
|||
* @param xrot - degrees to rotate around X
|
||||
* @param yrot - degrees to rotate around Y
|
||||
* @param zrot - degrees to rotate around Z
|
||||
* @param textureidx - texture index to be used for rotated patch
|
||||
* @param textureidx - texture index to be used for rotated patch (-1 means same as original patch)
|
||||
* @return patch requested
|
||||
*/
|
||||
public RenderPatch getRotatedPatch(RenderPatch patch, int xrot, int yrot, int zrot, int textureidx);
|
||||
|
|
Loading…
Reference in New Issue