mirror of
https://github.com/webbukkit/dynmap.git
synced 2024-11-30 22:24:06 +01:00
Fix for soul campfire, switch torches to modellist, add origin for
rotate
This commit is contained in:
parent
64fe6d8b39
commit
cd11283685
@ -31,6 +31,7 @@ import org.dynmap.renderer.RenderPatchFactory.SideVisible;
|
|||||||
import org.dynmap.utils.ForgeConfigFile;
|
import org.dynmap.utils.ForgeConfigFile;
|
||||||
import org.dynmap.utils.PatchDefinition;
|
import org.dynmap.utils.PatchDefinition;
|
||||||
import org.dynmap.utils.PatchDefinitionFactory;
|
import org.dynmap.utils.PatchDefinitionFactory;
|
||||||
|
import org.dynmap.utils.Vector3D;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Custom block models - used for non-cube blocks to represent the physical volume associated with the block
|
* Custom block models - used for non-cube blocks to represent the physical volume associated with the block
|
||||||
@ -334,6 +335,7 @@ public class HDBlockModels {
|
|||||||
double[] from = new double[3];
|
double[] from = new double[3];
|
||||||
double[] to = new double[3];
|
double[] to = new double[3];
|
||||||
double xrot = 0, yrot = 0, zrot = 0;
|
double xrot = 0, yrot = 0, zrot = 0;
|
||||||
|
double xrotorig = 8, yrotorig = 8, zrotorig = 8;
|
||||||
ArrayList<ModelBoxSide> sides = new ArrayList<ModelBoxSide>();
|
ArrayList<ModelBoxSide> sides = new ArrayList<ModelBoxSide>();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -841,6 +843,7 @@ public class HDBlockModels {
|
|||||||
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;
|
||||||
|
int[] patchlist = boxPatchList;
|
||||||
for(String a : args) {
|
for(String a : args) {
|
||||||
String[] av = a.split("=");
|
String[] av = a.split("=");
|
||||||
if(av.length < 2) continue;
|
if(av.length < 2) continue;
|
||||||
@ -880,12 +883,19 @@ public class HDBlockModels {
|
|||||||
else if(av[0].equals("zmax")) {
|
else if(av[0].equals("zmax")) {
|
||||||
zmax = Double.parseDouble(av[1]);
|
zmax = Double.parseDouble(av[1]);
|
||||||
}
|
}
|
||||||
|
else if(av[0].equals("patches")) {
|
||||||
|
String[] v = av[1].split("/");
|
||||||
|
patchlist = new int[6];
|
||||||
|
for (int vidx = 0; (vidx < v.length) && (vidx < patchlist.length); vidx++) {
|
||||||
|
patchlist[vidx] = getIntValue(varvals, v[vidx]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* If we have everything, build block */
|
/* If we have everything, build block */
|
||||||
pmodlist.clear();
|
pmodlist.clear();
|
||||||
if (blknames.size() > 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, patchlist);
|
||||||
PatchDefinition[] patcharray = new PatchDefinition[pd.size()];
|
PatchDefinition[] patcharray = new PatchDefinition[pd.size()];
|
||||||
for (int i = 0; i < patcharray.length; i++) {
|
for (int i = 0; i < patcharray.length; i++) {
|
||||||
patcharray[i] = (PatchDefinition) pd.get(i);
|
patcharray[i] = (PatchDefinition) pd.get(i);
|
||||||
@ -1035,7 +1045,7 @@ public class HDBlockModels {
|
|||||||
Log.severe("Invalid modellist FROM value (" + prms[0] + " at line " + rdr.getLineNumber());
|
Log.severe("Invalid modellist FROM value (" + prms[0] + " at line " + rdr.getLineNumber());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (prms.length > 1) { // Handle to (to-x/y/z or to-x/y/z/rotx/roty/rotz)
|
if (prms.length > 1) { // Handle to (to-x/y/z or to-x/y/z/rotx/roty/rotz) or to-x/y/z/rotx/roty/rotz/rorigx/rorigy/rorigz
|
||||||
String[] xyz = prms[1].split("/");
|
String[] xyz = prms[1].split("/");
|
||||||
if (xyz.length >= 3) {
|
if (xyz.length >= 3) {
|
||||||
box.to[0] = Double.parseDouble(xyz[0]);
|
box.to[0] = Double.parseDouble(xyz[0]);
|
||||||
@ -1046,6 +1056,11 @@ public class HDBlockModels {
|
|||||||
box.yrot = Double.parseDouble(xyz[4]);
|
box.yrot = Double.parseDouble(xyz[4]);
|
||||||
box.zrot = Double.parseDouble(xyz[5]);
|
box.zrot = Double.parseDouble(xyz[5]);
|
||||||
}
|
}
|
||||||
|
if (xyz.length >= 9) { // If 9, third set is rotation origin (xrot/yrot/zrot)
|
||||||
|
box.xrotorig = Double.parseDouble(xyz[6]);
|
||||||
|
box.yrotorig = Double.parseDouble(xyz[7]);
|
||||||
|
box.zrotorig = Double.parseDouble(xyz[8]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Log.severe("Invalid modellist TO value (" + prms[1] + " at line " + rdr.getLineNumber());
|
Log.severe("Invalid modellist TO value (" + prms[1] + " at line " + rdr.getLineNumber());
|
||||||
@ -1110,7 +1125,9 @@ public class HDBlockModels {
|
|||||||
if (patch != null) {
|
if (patch != null) {
|
||||||
// If any rotations, apply them here
|
// If any rotations, apply them here
|
||||||
if ((bl.xrot != 0) || (bl.yrot != 0) || (bl.zrot != 0)) {
|
if ((bl.xrot != 0) || (bl.yrot != 0) || (bl.zrot != 0)) {
|
||||||
patch = pdf.getPatch(patch, bl.xrot, bl.yrot, bl.zrot, patch.textureindex);
|
patch = pdf.getPatch(patch, -bl.xrot, -bl.yrot, -bl.zrot,
|
||||||
|
new Vector3D(bl.xrotorig / 16, bl.yrotorig / 16, bl.zrotorig / 16),
|
||||||
|
patch.textureindex);
|
||||||
}
|
}
|
||||||
pd.add(patch);
|
pd.add(patch);
|
||||||
}
|
}
|
||||||
|
@ -80,16 +80,30 @@ public class PatchDefinition implements RenderPatch {
|
|||||||
* @param textureindex - texture index for new patch (-1 = use same as original patch)
|
* @param textureindex - texture index for new patch (-1 = use same as original patch)
|
||||||
*/
|
*/
|
||||||
PatchDefinition(PatchDefinition orig, double rotatex, double rotatey, double rotatez, int textureindex) {
|
PatchDefinition(PatchDefinition orig, double rotatex, double rotatey, double rotatez, int textureindex) {
|
||||||
|
this(orig, rotatex, rotatey, rotatez, null, textureindex);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Construct patch, based on rotation of existing patch clockwise by N
|
||||||
|
* 90 degree steps
|
||||||
|
* @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 rotorigin - rotation origin (x, y, z)
|
||||||
|
* @param textureindex - texture index for new patch (-1 = use same as original patch)
|
||||||
|
*/
|
||||||
|
PatchDefinition(PatchDefinition orig, double rotatex, double rotatey, double rotatez, Vector3D rotorigin, int textureindex) {
|
||||||
|
if (rotorigin == null) rotorigin = offsetCenter;
|
||||||
Vector3D vec = new Vector3D(orig.x0, orig.y0, orig.z0);
|
Vector3D vec = new Vector3D(orig.x0, orig.y0, orig.z0);
|
||||||
rotate(vec, rotatex, rotatey, rotatez); /* Rotate origin */
|
rotate(vec, rotatex, rotatey, rotatez, rotorigin); /* Rotate origin */
|
||||||
x0 = vec.x; y0 = vec.y; z0 = vec.z;
|
x0 = vec.x; y0 = vec.y; z0 = vec.z;
|
||||||
/* Rotate U */
|
/* Rotate U */
|
||||||
vec.x = orig.xu; vec.y = orig.yu; vec.z = orig.zu;
|
vec.x = orig.xu; vec.y = orig.yu; vec.z = orig.zu;
|
||||||
rotate(vec, rotatex, rotatey, rotatez); /* Rotate origin */
|
rotate(vec, rotatex, rotatey, rotatez, rotorigin); /* Rotate origin */
|
||||||
xu = vec.x; yu = vec.y; zu = vec.z;
|
xu = vec.x; yu = vec.y; zu = vec.z;
|
||||||
/* Rotate V */
|
/* Rotate V */
|
||||||
vec.x = orig.xv; vec.y = orig.yv; vec.z = orig.zv;
|
vec.x = orig.xv; vec.y = orig.yv; vec.z = orig.zv;
|
||||||
rotate(vec, rotatex, rotatey, rotatez); /* Rotate origin */
|
rotate(vec, rotatex, rotatey, rotatez, rotorigin); /* Rotate origin */
|
||||||
xv = vec.x; yv = vec.y; zv = vec.z;
|
xv = vec.x; yv = vec.y; zv = vec.z;
|
||||||
umin = orig.umin; vmin = orig.vmin;
|
umin = orig.umin; vmin = orig.vmin;
|
||||||
umax = orig.umax; vmax = orig.vmax;
|
umax = orig.umax; vmax = orig.vmax;
|
||||||
@ -102,8 +116,10 @@ public class PatchDefinition implements RenderPatch {
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rotate(Vector3D vec, double xcnt, double ycnt, double zcnt) {
|
private void rotate(Vector3D vec, double xcnt, double ycnt, double zcnt, Vector3D origin) {
|
||||||
vec.subtract(offsetCenter); /* Shoft to center of block */
|
// If no rotation, skip
|
||||||
|
if ((xcnt == 0) && (ycnt == 0) && (zcnt == 0)) return;
|
||||||
|
vec.subtract(origin); /* Shoft to center of block */
|
||||||
/* Do X rotation */
|
/* Do X rotation */
|
||||||
double rot = Math.toRadians(xcnt);
|
double rot = Math.toRadians(xcnt);
|
||||||
double nval = vec.z * Math.sin(rot) + vec.y * Math.cos(rot);
|
double nval = vec.z * Math.sin(rot) + vec.y * Math.cos(rot);
|
||||||
@ -119,7 +135,7 @@ public class PatchDefinition implements RenderPatch {
|
|||||||
nval = vec.y * Math.sin(rot) + vec.x * Math.cos(rot);
|
nval = vec.y * Math.sin(rot) + vec.x * Math.cos(rot);
|
||||||
vec.y = vec.y * Math.cos(rot) - vec.x * Math.sin(rot);
|
vec.y = vec.y * Math.cos(rot) - vec.x * Math.sin(rot);
|
||||||
vec.x = nval;
|
vec.x = nval;
|
||||||
vec.add(offsetCenter); /* Shoft back to corner */
|
vec.add(origin); /* Shoft back to corner */
|
||||||
}
|
}
|
||||||
public void update(double x0, double y0, double z0, double xu,
|
public void update(double x0, double y0, double z0, double xu,
|
||||||
double yu, double zu, double xv, double yv, double zv, double umin,
|
double yu, double zu, double xv, double yv, double zv, double umin,
|
||||||
@ -387,8 +403,8 @@ public class PatchDefinition implements RenderPatch {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// If rotation, rotate face corners
|
// If rotation, rotate face corners
|
||||||
if (rot == ModelBlockModel.SideRotation.DEG90) {
|
if (rot == ModelBlockModel.SideRotation.DEG270) {
|
||||||
// 90 degrees CW - origin is now upper left (V), V is now upper right (U+V-O), U is lower left (O)
|
// 270 degrees CCW - origin is now upper left (V), V is now upper right (U+V-O), U is lower left (O)
|
||||||
Vector3D save = lowleft;
|
Vector3D save = lowleft;
|
||||||
lowleft = lowright;
|
lowleft = lowright;
|
||||||
lowright = upright;
|
lowright = upright;
|
||||||
@ -396,7 +412,7 @@ public class PatchDefinition implements RenderPatch {
|
|||||||
upleft = save;
|
upleft = save;
|
||||||
}
|
}
|
||||||
else if (rot == ModelBlockModel.SideRotation.DEG180) {
|
else if (rot == ModelBlockModel.SideRotation.DEG180) {
|
||||||
// 180 degrees CW - origin is now upper right, U is now upper left (V), V is lower right (U)
|
// 180 degrees CCW - origin is now upper right, U is now upper left (V), V is lower right (U)
|
||||||
Vector3D save = lowleft;
|
Vector3D save = lowleft;
|
||||||
lowleft = upright;
|
lowleft = upright;
|
||||||
upright = save;
|
upright = save;
|
||||||
@ -404,8 +420,8 @@ public class PatchDefinition implements RenderPatch {
|
|||||||
lowright = upleft;
|
lowright = upleft;
|
||||||
upleft = save;
|
upleft = save;
|
||||||
}
|
}
|
||||||
else if (rot == ModelBlockModel.SideRotation.DEG270) {
|
else if (rot == ModelBlockModel.SideRotation.DEG90) {
|
||||||
// 270 degrees CW - origin is now lower right (V), U is now upper right (topright), V is lower right (O)
|
// 90 degrees CCW - origin is now lower right (V), U is now upper right (topright), V is lower right (O)
|
||||||
Vector3D save = lowright;
|
Vector3D save = lowright;
|
||||||
lowright = lowleft;
|
lowright = lowleft;
|
||||||
lowleft = upleft;
|
lowleft = upleft;
|
||||||
|
@ -88,25 +88,35 @@ public class PatchDefinitionFactory implements RenderPatchFactory {
|
|||||||
return getPatch((PatchDefinition)patch, xrot, yrot, zrot, textureindex);
|
return getPatch((PatchDefinition)patch, xrot, yrot, zrot, textureindex);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
|
public RenderPatch getRotatedPatch(RenderPatch patch, double xrot, double yrot,
|
||||||
|
double zrot, double rotorigx, double rotorigy, double rotorigz, int textureindex) {
|
||||||
|
return getPatch((PatchDefinition)patch, xrot, yrot, zrot,
|
||||||
|
new Vector3D(rotorigx, rotorigy, rotorigz), textureindex);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
public RenderPatch getRotatedPatch(RenderPatch patch, int xrot, int yrot,
|
public RenderPatch getRotatedPatch(RenderPatch patch, int xrot, int yrot,
|
||||||
int zrot, int textureindex) {
|
int zrot, int textureindex) {
|
||||||
return getPatch((PatchDefinition)patch, xrot, yrot, zrot, textureindex);
|
return getPatch((PatchDefinition)patch, xrot, yrot, zrot, textureindex);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PatchDefinition getPatch(PatchDefinition patch, double xrot, double yrot,
|
public PatchDefinition getPatch(PatchDefinition patch, double xrot, double yrot,
|
||||||
double zrot, int textureindex) {
|
double zrot, Vector3D rotorig, int textureindex) {
|
||||||
PatchDefinition pd = new PatchDefinition(patch, xrot, yrot, zrot, textureindex);
|
PatchDefinition pd = new PatchDefinition((PatchDefinition)patch, xrot, yrot, zrot, rotorig, textureindex);
|
||||||
if(pd.validate() == false)
|
if (pd.validate() == false)
|
||||||
return null;
|
return null;
|
||||||
synchronized(lock) {
|
synchronized(lock) {
|
||||||
PatchDefinition pd2 = patches.get(pd); /* See if in cache already */
|
PatchDefinition pd2 = patches.get(pd); /* See if in cache already */
|
||||||
if(pd2 == null) {
|
if (pd2 == null) {
|
||||||
patches.put(pd, pd);
|
patches.put(pd, pd);
|
||||||
pd2 = pd;
|
pd2 = pd;
|
||||||
}
|
}
|
||||||
return pd2;
|
return pd2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public PatchDefinition getPatch(PatchDefinition patch, double xrot, double yrot,
|
||||||
|
double zrot, int textureindex) {
|
||||||
|
return getPatch(patch, xrot, yrot, zrot, null, textureindex);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Get named patch with given attributes. Name can encode rotation and patch index info
|
* Get named patch with given attributes. Name can encode rotation and patch index info
|
||||||
* "name" - simple name
|
* "name" - simple name
|
||||||
|
@ -216,28 +216,25 @@ boxblock:id=snow,data=6,ymax=0.875
|
|||||||
|
|
||||||
# Torch
|
# Torch
|
||||||
# Redstone torch
|
# Redstone torch
|
||||||
patchblock:id=torch,id=redstone_torch,patch0=VertX04375#0,patch1=VertX04375@90#0,patch2=VertX04375@180#0,patch3=VertX04375@270#0,patch4=TorchTop#0
|
modellist:id=torch,id=redstone_torch,box=7/0/7:9/10/9:d/0/7/13/9/15:u/0/7/6/9/8,box=7/0/0:9/16/16:w/0:e/0,box=0/0/7:16/16/9:n/0:s/0
|
||||||
# Torch - pointing south
|
# Wall Torch
|
||||||
patchblock:id=wall_torch,data=3,patch0=TorchSide1#0,patch1=TorchSide2#0,patch2=TorchSide3#0,patch3=TorchSide4#0,patch4=TorchTopSlope@270#0
|
modellist:id=wall_torch,data=3,box=-1/3.5/7:1/13.5/9/0/0/-22.5/0/3.5/8:d/0/7/13/9/15,u/0/7/6/9/8,box=-1/3.5/0:1/19.5/16/0/0/-22.5/0/3.5/8:w/0:e/0,box=-8/3.5/7:8/19.5/9/0/0/-22.5/0/3.5/8:n/0:s/0
|
||||||
# Torch - pointing north
|
patchblock:id=wall_torch,data=0
|
||||||
patchblock:id=wall_torch,data=2,patch0=TorchSide1@180#0,patch1=TorchSide2@180#0,patch2=TorchSide3@180#0,patch3=TorchSide4@180#0,patch4=TorchTopSlope@90#0
|
patchrotate:id=wall_torch,data=3,roty=270
|
||||||
# Torch - pointing west
|
patchblock:id=wall_torch,data=1
|
||||||
patchblock:id=wall_torch,data=1,patch0=TorchSide1@90#0,patch1=TorchSide2@90#0,patch2=TorchSide3@90#0,patch3=TorchSide4@90#0,patch4=TorchTopSlope#0
|
patchrotate:id=wall_torch,data=3,roty=90
|
||||||
# Torch - pointing east
|
patchblock:id=wall_torch,data=2
|
||||||
patchblock:id=wall_torch,data=0,patch0=TorchSide1@270#0,patch1=TorchSide2@270#0,patch2=TorchSide3@270#0,patch3=TorchSide4@270#0,patch4=TorchTopSlope@180#0
|
patchrotate:id=wall_torch,data=3,roty=180
|
||||||
|
|
||||||
# Redstone torch on - pointing south
|
# Redstone torch
|
||||||
# Redstone torch off - pointing south
|
patchblock:id=redstone_wall_torch,data=0,data=1
|
||||||
patchblock:id=redstone_wall_torch,data=6,data=7,patch0=TorchSide1#0,patch1=TorchSide2#0,patch2=TorchSide3#0,patch3=TorchSide4#0,patch4=TorchTopSlope@270#0
|
patchrotate:id=wall_torch,data=3,roty=270
|
||||||
# Redstone torch on - pointing north
|
patchblock:id=redstone_wall_torch,data=2,data=3
|
||||||
# Redstone torch off - pointing north
|
patchrotate:id=wall_torch,data=3,roty=90
|
||||||
patchblock:id=redstone_wall_torch,data=4,data=5,patch0=TorchSide1@180#0,patch1=TorchSide2@180#0,patch2=TorchSide3@180#0,patch3=TorchSide4@180#0,patch4=TorchTopSlope@90#0
|
patchblock:id=redstone_wall_torch,data=4,data=5
|
||||||
# Redstone torch on - pointing west
|
patchrotate:id=wall_torch,data=3,roty=180
|
||||||
# Redstone torch off - pointing west
|
patchblock:id=redstone_wall_torch,data=6,data=7
|
||||||
patchblock:id=redstone_wall_torch,data=2,data=3,patch0=TorchSide1@90#0,patch1=TorchSide2@90#0,patch2=TorchSide3@90#0,patch3=TorchSide4@90#0,patch4=TorchTopSlope#0
|
patchrotate:id=wall_torch,data=3,roty=0
|
||||||
# Redstone torch on - pointing east
|
|
||||||
# Redstone torch off - pointing east
|
|
||||||
patchblock:id=redstone_wall_torch,data=0,data=1,patch0=TorchSide1@270#0,patch1=TorchSide2@270#0,patch2=TorchSide3@270#0,patch3=TorchSide4@270#0,patch4=TorchTopSlope@180#0
|
|
||||||
|
|
||||||
ignore-updates:id=redstone_wall_torch,id=redstone_torch
|
ignore-updates:id=redstone_wall_torch,id=redstone_torch
|
||||||
|
|
||||||
@ -1586,32 +1583,39 @@ patchblock:id=bubble_column
|
|||||||
# Soul Fire
|
# Soul Fire
|
||||||
[1.16-]patchblock:id=soul_fire,patch0=VertX0,patch1=VertX0@90,patch2=VertX0@180,patch3=VertX0@270,patch4=SlopeXUpZTop675,patch5=SlopeXUpZTop675@90,patch6=SlopeXUpZTop675@180,patch4=SlopeXUpZTop675@270
|
[1.16-]patchblock:id=soul_fire,patch0=VertX0,patch1=VertX0@90,patch2=VertX0@180,patch3=VertX0@270,patch4=SlopeXUpZTop675,patch5=SlopeXUpZTop675@90,patch6=SlopeXUpZTop675@180,patch4=SlopeXUpZTop675@270
|
||||||
# Soul Torch
|
# Soul Torch
|
||||||
[1.16-]patchblock:id=soul_torch,patch0=VertX04375#0,patch1=VertX04375@90#0,patch2=VertX04375@180#0,patch3=VertX04375@270#0,patch4=TorchTop#0
|
[1.16-]patchblock:id=soul_torch
|
||||||
|
[1.16-]patchrotate:id=torch,data=0,roty=0
|
||||||
# Soul wall torch
|
# Soul wall torch
|
||||||
[1.16-]patchblock:id=soul_wall_torch,data=3,patch0=TorchSide1#0,patch1=TorchSide2#0,patch2=TorchSide3#0,patch3=TorchSide4#0,patch4=TorchTopSlope@270#0
|
[1.16-]patchblock:id=soul_wall_torch,data=3
|
||||||
[1.16-]patchblock:id=soul_wall_torch,data=2,patch0=TorchSide1@180#0,patch1=TorchSide2@180#0,patch2=TorchSide3@180#0,patch3=TorchSide4@180#0,patch4=TorchTopSlope@90#0
|
[1.16-]patchrotate:id=wall_torch,data=3,roty=0
|
||||||
[1.16-]patchblock:id=soul_wall_torch,data=1,patch0=TorchSide1@90#0,patch1=TorchSide2@90#0,patch2=TorchSide3@90#0,patch3=TorchSide4@90#0,patch4=TorchTopSlope#0
|
[1.16-]patchblock:id=soul_wall_torch,data=0
|
||||||
[1.16-]patchblock:id=soul_wall_torch,data=0,patch0=TorchSide1@270#0,patch1=TorchSide2@270#0,patch2=TorchSide3@270#0,patch3=TorchSide4@270#0,patch4=TorchTopSlope@180#0
|
[1.16-]patchrotate:id=wall_torch,data=3,roty=270
|
||||||
|
[1.16-]patchblock:id=soul_wall_torch,data=1
|
||||||
|
[1.16-]patchrotate:id=wall_torch,data=3,roty=90
|
||||||
|
[1.16-]patchblock:id=soul_wall_torch,data=2
|
||||||
|
[1.16-]patchrotate:id=wall_torch,data=3,roty=180
|
||||||
# Chain
|
# Chain
|
||||||
[1.16-]patchblock:id=chain,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
|
[1.16-]patchblock:id=chain,patch0=VertX1Z0ToX0Z1,patch1=VertX1Z0ToX0Z1@90
|
||||||
# Soul Lantern (hanging, then not hanging)
|
# Soul Lantern (hanging, then not hanging)
|
||||||
[1.16-]boxlist:id=soul_lantern,data=0,data=1,box=0.3125:0.6875:0:0.4375:0.3125:0.6875:0/0/1/1/1/1,box=0.375:0.625:0.4375:0.5625:0.375:0.625:-1/2/3/3/3/3,box=0.4:0.6:0.5625:0.6875:0.5:0.5:-1/-1/-1/-1/4/4:45,box=0.5:0.5:0.5625:0.6875:0.4:0.6:-1/-1/5/5/-1/-1:45
|
[1.16-]boxlist:id=soul_lantern,data=0,data=1,box=0.3125:0.6875:0:0.4375:0.3125:0.6875:0/0/1/1/1/1,box=0.375:0.625:0.4375:0.5625:0.375:0.625:-1/2/3/3/3/3,box=0.4:0.6:0.5625:0.6875:0.5:0.5:-1/-1/-1/-1/4/4:45,box=0.5:0.5:0.5625:0.6875:0.4:0.6:-1/-1/5/5/-1/-1:45
|
||||||
[1.16-]boxlist:id=soul_lantern,data=2,data=3,box=0.3125:0.6875:0.0625:0.5:0.3125:0.6875:0/0/1/1/1/1,box=0.375:0.625:0.5:0.625:0.375:0.625:2/2/3/3/3/3,box=0.4:0.6:0.6875:0.9375:0.5:0.5:-1/-1/-1/-1/6/6:45,box=0.5:0.5:0.6875:0.9375:0.4:0.6:-1/-1/6/6/-1/-1:45
|
[1.16-]boxlist:id=soul_lantern,data=2,data=3,box=0.3125:0.6875:0.0625:0.5:0.3125:0.6875:0/0/1/1/1/1,box=0.375:0.625:0.5:0.625:0.375:0.625:2/2/3/3/3/3,box=0.4:0.6:0.6875:0.9375:0.5:0.5:-1/-1/-1/-1/6/6:45,box=0.5:0.5:0.6875:0.9375:0.4:0.6:-1/-1/6/6/-1/-1:45
|
||||||
# Soul Campfire
|
# Soul Campfire
|
||||||
[1.16-]boxlist:id=soul_campfire,data=0,data=1,data=2,data=3,box=0.0625:0.3125:0:0.25:0:1:0/0/1/0/0/0,box=0:1:0.1875:0.4375:0.6875:0.9375:0/1/1/1/0/0,box=0.6875:0.9375:0:0.25:0:1:0/0/0/0/1/0,box=0:1:0.1875:0.4375:0.0625:0.3125:0/1/1/1/0/0,box=0.3125:0.6875:0:0.0625:0:1:0/1/0/0/0/0,box=0.49:0.51:0:1:0:1:-1/-1/2/2/2/2,box=0:1:0:1:0.49:0.51:-1/-1/2/2/2/2
|
|
||||||
[1.16-]boxlist:id=soul_campfire,data=4,data=5,data=6,data=7,box=0.0625:0.3125:0:0.25:0:1:0/0/0/0/0/0,box=0:1:0.1875:0.4375:0.6875:0.9375:0/0/0/0/0/0,box=0.6875:0.9375:0:0.25:0:1:0/0/0/0/0/0,box=0:1:0.1875:0.4375:0.0625:0.3125:0/0/0/0/0/0,box=0.3125:0.6875:0:0.0625:0:1:0/0/0/0/0/0
|
|
||||||
[1.16-]patchblock:id=soul_campfire,data=8,data=9,data=10,data=11
|
[1.16-]patchblock:id=soul_campfire,data=8,data=9,data=10,data=11
|
||||||
[1.16-]patchrotate:id=soul_campfire,data=0,roty=180
|
[1.16-]patchrotate:id=campfire,data=8,roty=0
|
||||||
[1.16-]patchblock:id=soul_campfire,data=12,data=13,data=14,data=15
|
[1.16-]patchblock:id=soul_campfire,data=0,data=1,data=2,data=3
|
||||||
[1.16-]patchrotate:id=soul_campfire,data=4,roty=180
|
[1.16-]patchrotate:id=campfire,data=8,roty=180
|
||||||
[1.16-]patchblock:id=soul_campfire,data=16,data=17,data=18,data=19
|
[1.16-]patchblock:id=soul_campfire,data=16,data=17,data=18,data=19
|
||||||
[1.16-]patchrotate:id=soul_campfire,data=0,roty=270
|
[1.16-]patchrotate:id=campfire,data=8,roty=270
|
||||||
[1.16-]patchblock:id=soul_campfire,data=20,data=21,data=22,data=23
|
|
||||||
[1.16-]patchrotate:id=soul_campfire,data=4,roty=270
|
|
||||||
[1.16-]patchblock:id=soul_campfire,data=24,data=25,data=26,data=27
|
[1.16-]patchblock:id=soul_campfire,data=24,data=25,data=26,data=27
|
||||||
[1.16-]patchrotate:id=soul_campfire,data=0,roty=90
|
[1.16-]patchrotate:id=campfire,data=8,roty=90
|
||||||
|
[1.16-]patchblock:id=soul_campfire,data=12,data=13,data=14,data=15
|
||||||
|
[1.16-]patchrotate:id=campfire,data=12,roty=0
|
||||||
|
[1.16-]patchblock:id=soul_campfire,data=4,data=5,data=6,data=7
|
||||||
|
[1.16-]patchrotate:id=campfire,data=12,roty=180
|
||||||
|
[1.16-]patchblock:id=soul_campfire,data=20,data=21,data=22,data=23
|
||||||
|
[1.16-]patchrotate:id=campfire,data=12,roty=270
|
||||||
[1.16-]patchblock:id=soul_campfire,data=28,data=29,data=30,data=31
|
[1.16-]patchblock:id=soul_campfire,data=28,data=29,data=30,data=31
|
||||||
[1.16-]patchrotate:id=soul_campfire,data=4,roty=90
|
[1.16-]patchrotate:id=campfire,data=12,roty=90
|
||||||
# Warped Fungus
|
# Warped Fungus
|
||||||
# Warped Roots
|
# Warped Roots
|
||||||
# Nether Sprouts
|
# Nether Sprouts
|
||||||
@ -2315,3 +2319,12 @@ patchblock:id=bubble_column
|
|||||||
[1.17-]patchblock:id=%small_dripleaf,data=10,data=11,patch0=patch918,patch1=patch919,patch2=patch920,patch3=patch921
|
[1.17-]patchblock:id=%small_dripleaf,data=10,data=11,patch0=patch918,patch1=patch919,patch2=patch920,patch3=patch921
|
||||||
[1.17-]patchblock:id=%small_dripleaf,data=12,data=13,patch0=patch922,patch1=patch923,patch2=patch924,patch3=patch925,patch4=patch926,patch5=patch927,patch6=patch928,patch7=patch929,patch8=patch930,patch9=patch931,patch10=patch932,patch11=patch933,patch12=patch934,patch13=patch935,patch14=patch936,patch15=patch937,patch16=patch938,patch17=patch939,patch18=patch914,patch19=patch915,patch20=patch916,patch21=patch917
|
[1.17-]patchblock:id=%small_dripleaf,data=12,data=13,patch0=patch922,patch1=patch923,patch2=patch924,patch3=patch925,patch4=patch926,patch5=patch927,patch6=patch928,patch7=patch929,patch8=patch930,patch9=patch931,patch10=patch932,patch11=patch933,patch12=patch934,patch13=patch935,patch14=patch936,patch15=patch937,patch16=patch938,patch17=patch939,patch18=patch914,patch19=patch915,patch20=patch916,patch21=patch917
|
||||||
[1.17-]patchblock:id=%small_dripleaf,data=14,data=15,patch0=patch918,patch1=patch919,patch2=patch920,patch3=patch921
|
[1.17-]patchblock:id=%small_dripleaf,data=14,data=15,patch0=patch918,patch1=patch919,patch2=patch920,patch3=patch921
|
||||||
|
|
||||||
|
modellist:id=magenta_glazed_terracotta,data=1,box=0/0/0:16/16/16:d/0:u/0:n90/0:s270/0:w/0:e180/0
|
||||||
|
patchblock:id=magenta_glazed_terracotta,data=0
|
||||||
|
patchrotate:id=magenta_glazed_terracotta,data=1,roty=180
|
||||||
|
patchblock:id=magenta_glazed_terracotta,data=2
|
||||||
|
patchrotate:id=magenta_glazed_terracotta,data=1,roty=90
|
||||||
|
patchblock:id=magenta_glazed_terracotta,data=3
|
||||||
|
patchrotate:id=magenta_glazed_terracotta,data=1,roty=270
|
||||||
|
|
||||||
|
@ -880,7 +880,7 @@ block:id=obsidian,allfaces=0:obsidian,stdrot=true
|
|||||||
# Torch
|
# Torch
|
||||||
block:id=torch,patch0=0:torch,transparency=TRANSPARENT
|
block:id=torch,patch0=0:torch,transparency=TRANSPARENT
|
||||||
# Wall torch
|
# Wall torch
|
||||||
block:id=wall_torch,data=0,data=1,data=2,data=3,patch0=0:torch,transparency=TRANSPARENT
|
block:id=wall_torch,data=*,patch0=0:torch,transparency=TRANSPARENT
|
||||||
# Fire
|
# Fire
|
||||||
block:id=fire,patch0-3=0:fire_0,patch4-7=0:fire_1,transparency=TRANSPARENT
|
block:id=fire,patch0-3=0:fire_0,patch4-7=0:fire_1,transparency=TRANSPARENT
|
||||||
# Monster spawner
|
# Monster spawner
|
||||||
@ -1786,10 +1786,7 @@ block:id=orange_glazed_terracotta,data=0,stdrot=true,topbottom=0:orange_glazed_t
|
|||||||
block:id=orange_glazed_terracotta,data=1,stdrot=true,topbottom=6000:orange_glazed_terracotta,east=0:orange_glazed_terracotta,west=5000:orange_glazed_terracotta,north=4000:orange_glazed_terracotta,south=6000:orange_glazed_terracotta
|
block:id=orange_glazed_terracotta,data=1,stdrot=true,topbottom=6000:orange_glazed_terracotta,east=0:orange_glazed_terracotta,west=5000:orange_glazed_terracotta,north=4000:orange_glazed_terracotta,south=6000:orange_glazed_terracotta
|
||||||
block:id=orange_glazed_terracotta,data=2,stdrot=true,topbottom=5000:orange_glazed_terracotta,south=0:orange_glazed_terracotta,north=5000:orange_glazed_terracotta,east=4000:orange_glazed_terracotta,west=6000:orange_glazed_terracotta
|
block:id=orange_glazed_terracotta,data=2,stdrot=true,topbottom=5000:orange_glazed_terracotta,south=0:orange_glazed_terracotta,north=5000:orange_glazed_terracotta,east=4000:orange_glazed_terracotta,west=6000:orange_glazed_terracotta
|
||||||
block:id=orange_glazed_terracotta,data=3,stdrot=true,topbottom=4000:orange_glazed_terracotta,west=0:orange_glazed_terracotta,east=5000:orange_glazed_terracotta,south=4000:orange_glazed_terracotta,north=6000:orange_glazed_terracotta
|
block:id=orange_glazed_terracotta,data=3,stdrot=true,topbottom=4000:orange_glazed_terracotta,west=0:orange_glazed_terracotta,east=5000:orange_glazed_terracotta,south=4000:orange_glazed_terracotta,north=6000:orange_glazed_terracotta
|
||||||
block:id=magenta_glazed_terracotta,data=0,stdrot=true,topbottom=0:magenta_glazed_terracotta,north=0:magenta_glazed_terracotta,south=5000:magenta_glazed_terracotta,west=4000:magenta_glazed_terracotta,east=6000:magenta_glazed_terracotta
|
block:id=magenta_glazed_terracotta,data=*,patch0=0:magenta_glazed_terracotta
|
||||||
block:id=magenta_glazed_terracotta,data=1,stdrot=true,topbottom=6000:magenta_glazed_terracotta,east=0:magenta_glazed_terracotta,west=5000:magenta_glazed_terracotta,north=4000:magenta_glazed_terracotta,south=6000:magenta_glazed_terracotta
|
|
||||||
block:id=magenta_glazed_terracotta,data=2,stdrot=true,topbottom=5000:magenta_glazed_terracotta,south=0:magenta_glazed_terracotta,north=5000:magenta_glazed_terracotta,east=4000:magenta_glazed_terracotta,west=6000:magenta_glazed_terracotta
|
|
||||||
block:id=magenta_glazed_terracotta,data=3,stdrot=true,topbottom=4000:magenta_glazed_terracotta,west=0:magenta_glazed_terracotta,east=5000:magenta_glazed_terracotta,south=4000:magenta_glazed_terracotta,north=6000:magenta_glazed_terracotta
|
|
||||||
block:id=light_blue_glazed_terracotta,data=0,stdrot=true,topbottom=0:light_blue_glazed_terracotta,north=0:light_blue_glazed_terracotta,south=5000:light_blue_glazed_terracotta,west=4000:light_blue_glazed_terracotta,east=6000:light_blue_glazed_terracotta
|
block:id=light_blue_glazed_terracotta,data=0,stdrot=true,topbottom=0:light_blue_glazed_terracotta,north=0:light_blue_glazed_terracotta,south=5000:light_blue_glazed_terracotta,west=4000:light_blue_glazed_terracotta,east=6000:light_blue_glazed_terracotta
|
||||||
block:id=light_blue_glazed_terracotta,data=1,stdrot=true,topbottom=6000:light_blue_glazed_terracotta,east=0:light_blue_glazed_terracotta,west=5000:light_blue_glazed_terracotta,north=4000:light_blue_glazed_terracotta,south=6000:light_blue_glazed_terracotta
|
block:id=light_blue_glazed_terracotta,data=1,stdrot=true,topbottom=6000:light_blue_glazed_terracotta,east=0:light_blue_glazed_terracotta,west=5000:light_blue_glazed_terracotta,north=4000:light_blue_glazed_terracotta,south=6000:light_blue_glazed_terracotta
|
||||||
block:id=light_blue_glazed_terracotta,data=2,stdrot=true,topbottom=5000:light_blue_glazed_terracotta,south=0:light_blue_glazed_terracotta,north=5000:light_blue_glazed_terracotta,east=4000:light_blue_glazed_terracotta,west=6000:light_blue_glazed_terracotta
|
block:id=light_blue_glazed_terracotta,data=2,stdrot=true,topbottom=5000:light_blue_glazed_terracotta,south=0:light_blue_glazed_terracotta,north=5000:light_blue_glazed_terracotta,east=4000:light_blue_glazed_terracotta,west=6000:light_blue_glazed_terracotta
|
||||||
@ -2474,7 +2471,7 @@ block:id=black_banner,id=black_wall_banner,data=*,patch0=0:oak_planks,patch1=0:b
|
|||||||
[1.16-]block:id=soul_lantern,patch0=0:soul_lantern,transparency=TRANSPARENT
|
[1.16-]block:id=soul_lantern,patch0=0:soul_lantern,transparency=TRANSPARENT
|
||||||
[1.16-]block:id=soul_lantern,patch0=0:soul_lantern,patch1=1:soul_lantern,patch2=2:soul_lantern,patch3=3:soul_lantern,patch4=4:soul_lantern,patch5=5:soul_lantern,patch6=6:soul_lantern,patch7=7:soul_lantern,transparency=TRANSPARENT
|
[1.16-]block:id=soul_lantern,patch0=0:soul_lantern,patch1=1:soul_lantern,patch2=2:soul_lantern,patch3=3:soul_lantern,patch4=4:soul_lantern,patch5=5:soul_lantern,patch6=6:soul_lantern,patch7=7:soul_lantern,transparency=TRANSPARENT
|
||||||
# Soul Campfire
|
# Soul Campfire
|
||||||
[1.16-]block:id=soul_campfire,patch0=0:campfire_log,patch1=0:soul_campfire_log_lit,patch2=0:soul_campfire_fire,transparency=TRANSPARENT
|
[1.16-]block:id=soul_campfire,data=*,patch0=0:campfire_log,patch1=0:soul_campfire_log_lit,patch2=0:soul_campfire_fire,transparency=TRANSPARENT
|
||||||
# Warped Stem
|
# Warped Stem
|
||||||
[1.16-]block:id=warped_stem,data=1,allsides=0:warped_stem,topbottom=0:warped_stem_top,stdrot=true
|
[1.16-]block:id=warped_stem,data=1,allsides=0:warped_stem,topbottom=0:warped_stem_top,stdrot=true
|
||||||
[1.16-]block:id=warped_stem,data=0,north=0:warped_stem_top,south=0:warped_stem_top,east=4000:warped_stem,west=4000:warped_stem,top=0:warped_stem,bottom=0:warped_stem
|
[1.16-]block:id=warped_stem,data=0,north=0:warped_stem_top,south=0:warped_stem_top,east=4000:warped_stem,west=4000:warped_stem,top=0:warped_stem,bottom=0:warped_stem
|
||||||
|
@ -98,6 +98,22 @@ public interface RenderPatchFactory {
|
|||||||
* @return patch requested
|
* @return patch requested
|
||||||
*/
|
*/
|
||||||
public RenderPatch getRotatedPatch(RenderPatch patch, double xrot, double yrot, double zrot, int textureidx);
|
public RenderPatch getRotatedPatch(RenderPatch patch, double xrot, double yrot, double zrot, int textureidx);
|
||||||
|
/**
|
||||||
|
* Get/create patch with given attributes.
|
||||||
|
*
|
||||||
|
* Generate from existing patch, after rotating xrot degrees around the X axis then yrot degrees around the Y axis, and then zrot degrees arond Z.
|
||||||
|
*
|
||||||
|
* @param patch - original patch
|
||||||
|
* @param xrot - degrees to rotate around X
|
||||||
|
* @param yrot - degrees to rotate around Y
|
||||||
|
* @param zrot - degrees to rotate around Z
|
||||||
|
* @param rotorigx - origin of rotation x (0-1)
|
||||||
|
* @param rotorigy - origin of rotation y (0-1)
|
||||||
|
* @param rotorigz - origin of rotation z (0-1)
|
||||||
|
* @param textureidx - texture index to be used for rotated patch (-1 means same as original patch)
|
||||||
|
* @return patch requested
|
||||||
|
*/
|
||||||
|
public RenderPatch getRotatedPatch(RenderPatch patch, double xrot, double yrot, double zrot, double rotorigx, double rotorigy, double rotorigz, int textureidx);
|
||||||
/**
|
/**
|
||||||
* Get/create patch with given attributes.
|
* Get/create patch with given attributes.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user