This commit is contained in:
Mike Primm 2018-09-09 21:48:35 -05:00
commit c00c9619a3
4 changed files with 105 additions and 32 deletions

View File

@ -375,8 +375,17 @@ public class HDBlockModels {
blknames.add(getBlockName(modname,av[1]));
}
else if(av[0].equals("data")) {
if(av[1].equals("*"))
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]));
}
@ -532,8 +541,17 @@ public class HDBlockModels {
blknames.add(getBlockName(modname,av[1]));
}
else if(av[0].equals("data")) {
if(av[1].equals("*"))
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]));
}
@ -717,8 +735,17 @@ public class HDBlockModels {
blknames.add(getBlockName(modname,av[1]));
}
else if(av[0].equals("data")) {
if(av[1].equals("*"))
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]));
}
@ -789,8 +816,17 @@ public class HDBlockModels {
blknames.add(getBlockName(modname,av[1]));
}
else if(av[0].equals("data")) {
if(av[1].equals("*"))
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]));
}
@ -853,8 +889,17 @@ public class HDBlockModels {
blknames.add(getBlockName(modname, av[1]));
}
else if(av[0].equals("data")) {
if(av[1].equals("*"))
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]));
}

View File

@ -14,11 +14,11 @@ import org.dynmap.renderer.RenderPatchFactory;
* Simple renderer for handling single and double chests
*/
public class ChestRenderer extends CustomRenderer {
private enum ChestData {
protected enum ChestData {
SINGLE_WEST, SINGLE_SOUTH, SINGLE_EAST, SINGLE_NORTH, LEFT_WEST, LEFT_SOUTH, LEFT_EAST, LEFT_NORTH, RIGHT_WEST, RIGHT_SOUTH, RIGHT_EAST, RIGHT_NORTH
};
// Models, indexed by ChestData.ordinal()
private RenderPatch[][] models = new RenderPatch[ChestData.values().length][];
protected RenderPatch[][] models = new RenderPatch[ChestData.values().length][];
private static final double OFF1 = 1.0 / 16.0;
private static final double OFF14 = 14.0 / 16.0;
@ -28,7 +28,7 @@ public class ChestRenderer extends CustomRenderer {
private static final int[] LEFT_PATCHES = { 14, 6, 10, 11, 12, 8 };
private static final int[] RIGHT_PATCHES = { 15, 7, 10, 11, 13, 9 };
private boolean double_chest = false;
protected boolean double_chest = false;
@Override
public boolean initializeRenderer(RenderPatchFactory rpf, String blkname, BitSet blockdatamask, Map<String,String> custparm) {
if(!super.initializeRenderer(rpf, blkname, blockdatamask, custparm))

View File

@ -0,0 +1,34 @@
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.DynmapBlockState;
import org.dynmap.renderer.MapDataContext;
import org.dynmap.renderer.RenderPatch;
import org.dynmap.renderer.RenderPatchFactory;
/**
* Simple renderer for handling single and double chests (1.13+)
*/
public class ChestStateRenderer extends ChestRenderer {
protected enum ChestData {
SINGLE_WEST, SINGLE_SOUTH, SINGLE_EAST, SINGLE_NORTH, LEFT_WEST, LEFT_SOUTH, LEFT_EAST, LEFT_NORTH, RIGHT_WEST, RIGHT_SOUTH, RIGHT_EAST, RIGHT_NORTH
};
private ChestData[] byIndex = {
ChestData.SINGLE_NORTH, ChestData.RIGHT_NORTH, ChestData.LEFT_NORTH,
ChestData.SINGLE_SOUTH, ChestData.RIGHT_SOUTH, ChestData.LEFT_SOUTH,
ChestData.SINGLE_WEST, ChestData.RIGHT_WEST, ChestData.LEFT_WEST,
ChestData.SINGLE_EAST, ChestData.RIGHT_EAST , ChestData.LEFT_EAST };
@Override
public RenderPatch[] getRenderPatchList(MapDataContext ctx) {
int idx = ctx.getBlockType().stateIndex / 2; // Ignore waterlogged for model
if (!double_chest) { // If single only, skip to 3x index of state
idx = idx * 3;
}
return models[byIndex[idx].ordinal()];
}
}

View File

@ -262,17 +262,17 @@ customblock:id=oak_fence,id=spruce_fence,id=birch_fence,id=jungle_fence,id=acaci
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
boxblock:id=iron_trapdoor,id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor,id=acacia_trapdoor,id=dark_oak_trapdoor,data=12-15,data=28-31,data=44-47,data=60-63,ymax=0.1875
# Trapdoor (open: west attach)
boxblock:id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor,id=acacia_trapdoor,id=dark_oak_trapdoor,data=32,data=33,data=34,data=35,data=40,data=41,data=42,data=43,zmin=0.8125
boxblock:id=iron_trapdoor,id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor,id=acacia_trapdoor,id=dark_oak_trapdoor,data=32-35,data=40-44,xmin=0.8125
# Trapdoor (open: east attach)
boxblock:id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor,id=acacia_trapdoor,id=dark_oak_trapdoor,data=48,data=49,data=50,data=51,data=56,data=57,data=58,data=59,zmax=0.1875
boxblock:id=iron_trapdoor,id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor,id=acacia_trapdoor,id=dark_oak_trapdoor,data=48-51,data=56-59,xmax=0.1875
# Trapdoor (open: south attach)
boxblock:id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor,id=acacia_trapdoor,id=dark_oak_trapdoor,data=16,data=17,data=18,data=19,data=24,data=25,data=26,data=27,xmin=0.8125
boxblock:id=iron_trapdoor,id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor,id=acacia_trapdoor,id=dark_oak_trapdoor,data=16-19,data=24-27,zmax=0.1875
# Trapdoor (open: north attach)
boxblock:id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor,id=acacia_trapdoor,id=dark_oak_trapdoor,data=0,data=1,data=2,data=3,data=8,data=9,data=10,data=11,xmax=0.1875
boxblock:id=iron_trapdoor,id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor,id=acacia_trapdoor,id=dark_oak_trapdoor,data=0-3,data=8-11,zmin=0.8125
# Trapdoor (closed - top)
boxblock:id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor,id=acacia_trapdoor,id=dark_oak_trapdoor,data=4,data=5,data=6,data=7,data=20,data=21,data=22,data=23,data=36,data=37,data=38,data=39,data=52,data=53,data=54,data=55,ymin=0.8125
boxblock:id=iron_trapdoor,id=oak_trapdoor,id=spruce_trapdoor,id=birch_trapdoor,id=jungle_trapdoor,id=acacia_trapdoor,id=dark_oak_trapdoor,data=4-7,data=20-23,data=36-39,data=52-55,ymin=0.8125
# Crops
# Carrot
@ -285,12 +285,14 @@ patchblock:id=wheat,id=carrots,id=potatoes,patch0=VertX075,patch1=VertX075@90,pa
# 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
boxblock:id=stone_button,id=oak_button,id=spruce_button,id=birch_button,id=jungle_button,id=acacia_button,id=dark_oak_button,data=16-19,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=20-23,xmin=0.375,xmax=0.625,ymin=0.875,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=14-15,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=12-13,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=10-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=8-9,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=0-3,xmin=0.3125,xmax=0.6875,ymax=0.125,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=4-7,xmin=0.375,xmax=0.625,ymax=0.125,zmin=0.3125,zmax=0.6875
# Rails - flat - east/west
patchblock:id=rail,data=0,patch0=HorizY001ZTop
@ -945,9 +947,9 @@ layer:3,4
********
-******-
--****--
# Chest - single, facing west
# Trap Chest - single, facing west
customblock:id=chest,id=trapped_chest,class=org.dynmap.hdmap.renderer.ChestRenderer
# Chest - single or double
# Trap Chest - single or double
customblock:id=chest,id=trapped_chest,class=org.dynmap.hdmap.renderer.ChestStateRenderer
# Cake Block
block:id=cake,scale=16
@ -987,7 +989,7 @@ patchblock:id=tripwire_hook,data=3,data=7,data=11,data=15
patchrotate:id=tripwire_hook,data=0,rot=270
# Ender Chest - facing south
customblock:id=ender_chest,class=org.dynmap.hdmap.renderer.ChestRenderer,doublechest=false
customblock:id=ender_chest,class=org.dynmap.hdmap.renderer.ChestStateRenderer,doublechest=false
# Beacon
patchblock:id=beacon,patch0=BeaconGlassSide,patch1=BeaconGlassSide@90,patch2=BeaconGlassSide@180,patch3=BeaconGlassSide@270,patch4=BeaconGlassTop,patch5=BeaconGlassBottom,patch6=BeaconObsidianSide,patch7=BeaconObsidianSide@90,patch8=BeaconObsidianSide@180,patch9=BeaconObsidianSide@270,patch10=BeaconObsidianTop,patch11=BeaconLightSide,patch12=BeaconLightSide@90,patch13=BeaconLightSide@180,,patch14=BeaconLightSide@270,patch15=BeaconLightTop
@ -1194,14 +1196,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
# Iron Trapdoor
boxblock:id=iron_trapdoor,data=0,data=1,data=2,data=3,ymax=0.1875
boxblock:id=iron_trapdoor,data=4,data=12,zmin=0.8125
boxblock:id=iron_trapdoor,data=5,data=13,zmax=0.1875
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
# Red Sandstone stairs
customblock:id=red_sandstone_stairs,class=org.dynmap.hdmap.renderer.StairStateRenderer