rescale rotated block elements like vanilla (cross plants, amethyst, campfire, fire, raised rails), euler x/y/z element rotations (hanging sign chains), inverted inner-face elements (spawner, vault), vanilla-like water: single surface blend with depth sky light instead of path-length density, water faces against glass/ice/leaves, block geometry and water test scenes
This commit is contained in:
1 parent
2c2e9e2e32
commit
318a309580
7 files changed
+510
-38
No files matched your search
@@ -176,6 +176,19 @@ public class PPTest extends JavaPlugin {
|
||||
scenes.put("rf_vlayers_close", new Scene("rf_vlayers_close", this::rfVisualLayers, 3.2, 1.5, -2.4, 3.2, 0.5, 1));
|
||||
scenes.put("rf_vstates", new Scene("rf_vstates", this::rfVisualStates, 5.5, 3.4, -6, 5.5, 0.9, 2.5));
|
||||
scenes.put("rf_vstates_close", new Scene("rf_vstates_close", this::rfVisualStates, 3.2, 1.7, -2.6, 3.2, 0.9, 0.5));
|
||||
// Block geometry (vanilla FaceBakery): rescaled element rotations (cross plants, amethyst, campfire, fire,
|
||||
// raised rails, tripwire hooks, coral wall fans, dripleaf, stems, sea pickles), Euler x/y/z element
|
||||
// rotations (hanging sign rot 3/7/11/15 chains), inverted elements (spawner/vault inner faces), 22.5° steps.
|
||||
scenes.put("geo_plants", new Scene("geo_plants", this::geoPlants, 5.5, 2.6, -3.2, 5.5, 0.4, 2.2));
|
||||
scenes.put("geo_plants_close", new Scene("geo_plants_close", this::geoPlants, 2.5, 1.1, -0.9, 2.5, 0.5, 1));
|
||||
scenes.put("geo_misc", new Scene("geo_misc", this::geoMisc, 6, 3.4, -4.5, 6, 0.5, 3));
|
||||
scenes.put("geo_misc_close", new Scene("geo_misc_close", this::geoMisc, 3, 1.6, -1.6, 3, 0.4, 1));
|
||||
scenes.put("geo_misc_signs", new Scene("geo_misc_signs", this::geoMisc, 4, 2.4, 3.5, 4, 2.2, 7));
|
||||
// Water depth vs. translucency: a pool with columns 1-6 blocks deep (x pairs), each with a glass block,
|
||||
// a gold block and white stained glass on the sand bottom; seen from the shore, from above and from inside.
|
||||
scenes.put("geo_water", new Scene("geo_water", this::geoWater, 6, 3.5, -5, 6, -3, 2.5));
|
||||
scenes.put("geo_water_top", new Scene("geo_water_top", this::geoWater, 6, 9, 2.4, 6, -4, 2.5));
|
||||
scenes.put("geo_water_under", new Scene("geo_water_under", this::geoWater, 11.5, -3.3, 0.3, 4, -5, 3));
|
||||
}
|
||||
|
||||
private void rfVisualLayers(Location o) {
|
||||
@@ -587,7 +600,7 @@ public class PPTest extends JavaPlugin {
|
||||
Location eye = o.clone().add(sc.camX, sc.camY, sc.camZ);
|
||||
Vector look = o.clone().add(sc.lookX, sc.lookY, sc.lookZ).toVector().subtract(eye.toVector());
|
||||
eye.setDirection(look);
|
||||
RenderJob job = r.prepare(eye, sc.name.endsWith("_sq") ? new Resolution(384, 384) : sc.name.startsWith("proj_") || sc.name.startsWith("rf_") || sc.name.startsWith("pose_") || sc.name.startsWith("frames") ? new Resolution(960, 640) : new Resolution(480, 320), null);
|
||||
RenderJob job = r.prepare(eye, sc.name.endsWith("_sq") ? new Resolution(384, 384) : sc.name.startsWith("proj_") || sc.name.startsWith("rf_") || sc.name.startsWith("pose_") || sc.name.startsWith("frames") || sc.name.startsWith("geo_") ? new Resolution(960, 640) : new Resolution(480, 320), null);
|
||||
if (sc.name.equals("dbg")) {
|
||||
try {
|
||||
java.lang.reflect.Field f = DefaultScreenRenderer.class.getDeclaredField("objectBaker");
|
||||
@@ -1588,6 +1601,102 @@ public class PPTest extends JavaPlugin {
|
||||
frame(o, 5, 5, 5, BlockFace.NORTH, false, synthMap(), 0, true);
|
||||
}
|
||||
|
||||
/** Rows of cross/rescaled plants on grass (z=0..3), potted plants and stems; see the geo_* scenes. */
|
||||
private void geoPlants(Location o) {
|
||||
for (int x = -1; x <= 12; x++) for (int z = -1; z <= 5; z++) put(o, x, -1, z, "grass_block");
|
||||
String[] row0 = {"short_grass", "fern", "dandelion", "poppy", "azure_bluet", "oxeye_daisy", "cornflower",
|
||||
"oak_sapling", "birch_sapling", "cherry_sapling", "dead_bush", "brown_mushroom"};
|
||||
String[] row1 = {"sweet_berry_bush[age=3]", "sugar_cane", "cobweb", "red_tulip", "wither_rose", "bush",
|
||||
"short_dry_grass", "firefly_bush", "mangrove_propagule[hanging=false,stage=1]", "lily_of_the_valley",
|
||||
"pumpkin_stem[age=7]", "crimson_roots"};
|
||||
String[] row3 = {"potted_fern", "potted_oak_sapling", "potted_red_tulip", "potted_dead_bush",
|
||||
"potted_azalea_bush", "potted_mangrove_propagule", "big_dripleaf_stem[facing=north]",
|
||||
"sea_pickle[pickles=4,waterlogged=false]", "sea_pickle[pickles=1,waterlogged=false]", "azalea",
|
||||
"flowering_azalea", "pointed_dripstone[thickness=tip,vertical_direction=up]"};
|
||||
for (int x = 0; x < 12; x++) {
|
||||
put(o, x, 0, 0, row0[x]);
|
||||
put(o, x, 0, 1, row1[x]);
|
||||
put(o, x, 0, 3, row3[x]);
|
||||
}
|
||||
for (int x = 0; x < 12; x += 3) {
|
||||
put(o, x, 0, 2, "tall_grass[half=lower]");
|
||||
put(o, x, 1, 2, "tall_grass[half=upper]");
|
||||
put(o, x + 1, 0, 2, "sunflower[half=lower]");
|
||||
put(o, x + 1, 1, 2, "sunflower[half=upper]");
|
||||
}
|
||||
put(o, 2, 0, 2, "big_dripleaf[facing=north,tilt=none]");
|
||||
put(o, 5, 0, 2, "melon_stem[age=4]");
|
||||
put(o, 8, 0, 2, "attached_pumpkin_stem[facing=east]");
|
||||
put(o, 9, 0, 2, "pumpkin");
|
||||
put(o, 11, 0, 2, "large_fern[half=lower]");
|
||||
put(o, 11, 1, 2, "large_fern[half=upper]");
|
||||
}
|
||||
|
||||
/**
|
||||
* Row z=0: amethyst cluster/buds (up/north/east), campfires, fire; z=2: raised rails, tripwire hooks, coral wall
|
||||
* fans, spawner/vault/trial spawner (inverted inner faces), snow layer 2; z=6/7: hanging signs rot 0-15 under a
|
||||
* stone ceiling (rot 3/7/11/15 = Euler chain rotation).
|
||||
*/
|
||||
private void geoMisc(Location o) {
|
||||
put(o, 0, 0, 0, "amethyst_cluster[facing=up]");
|
||||
put(o, 1, 0, 0, "large_amethyst_bud[facing=up]");
|
||||
put(o, 2, 0, 0, "medium_amethyst_bud[facing=up]");
|
||||
put(o, 3, 0, 0, "small_amethyst_bud[facing=up]");
|
||||
put(o, 4, 0, 1, "amethyst_block");
|
||||
put(o, 4, 0, 0, "amethyst_cluster[facing=north]");
|
||||
put(o, 5, 0, 1, "amethyst_block");
|
||||
put(o, 5, 1, 1, "large_amethyst_bud[facing=up]");
|
||||
put(o, 6, 0, 0, "campfire[lit=true,facing=south]");
|
||||
put(o, 7, 0, 0, "campfire[lit=false,facing=east]");
|
||||
put(o, 8, 0, 0, "soul_campfire[lit=true,facing=south]");
|
||||
put(o, 9, 0, 0, "netherrack");
|
||||
put(o, 9, 1, 0, "fire");
|
||||
put(o, 10, 0, 1, "stone");
|
||||
put(o, 10, 0, 0, "fire[north=true]");
|
||||
put(o, 11, 0, 0, "soul_fire");
|
||||
put(o, 11, -1, 0, "soul_sand");
|
||||
put(o, 0, 0, 2, "rail[shape=ascending_east]");
|
||||
put(o, 1, 0, 2, "stone");
|
||||
put(o, 2, 0, 2, "powered_rail[shape=ascending_north,powered=true]");
|
||||
put(o, 2, 0, 1, "stone");
|
||||
put(o, 3, 0, 2, "detector_rail[shape=ascending_west]");
|
||||
put(o, 2, 0, 3, "stone");
|
||||
put(o, 4, 0, 3, "stone");
|
||||
put(o, 4, 0, 2, "tripwire_hook[attached=true,facing=north,powered=false]");
|
||||
put(o, 5, 0, 3, "stone");
|
||||
put(o, 5, 0, 2, "tripwire_hook[attached=true,facing=north,powered=true]");
|
||||
put(o, 6, 0, 3, "stone");
|
||||
put(o, 6, 0, 2, "tube_coral_wall_fan[facing=north,waterlogged=false]");
|
||||
put(o, 7, 0, 3, "stone");
|
||||
put(o, 7, 0, 2, "fire_coral_wall_fan[facing=north,waterlogged=false]");
|
||||
put(o, 8, 0, 2, "spawner");
|
||||
put(o, 9, 0, 2, "vault[facing=north]");
|
||||
put(o, 10, 0, 2, "trial_spawner");
|
||||
put(o, 11, 0, 2, "snow[layers=2]");
|
||||
for (int x = -1; x <= 9; x++) for (int z = 5; z <= 8; z++) put(o, x, 4, z, "stone");
|
||||
for (int r = 0; r < 16; r++) put(o, r % 8, 3, 6 + r / 8, "oak_hanging_sign[rotation=" + r + ",attached=false]");
|
||||
}
|
||||
|
||||
/** Pool: water columns 1..6 deep (two blocks wide each) on sand, with glass/gold/white stained glass at the bottom. */
|
||||
private void geoWater(Location o) {
|
||||
for (int x = -1; x <= 12; x++)
|
||||
for (int z = -1; z <= 5; z++)
|
||||
for (int y = -8; y <= -1; y++) {
|
||||
boolean wall = x == -1 || x == 12 || z == -1 || z == 5;
|
||||
int depth = x < 0 || x > 11 ? 0 : x / 2 + 1;
|
||||
String b = wall ? "smooth_stone" : y >= -depth ? "water" : y == -depth - 1 ? "sand" : "stone";
|
||||
put(o, x, y, z, b);
|
||||
}
|
||||
for (int x = 0; x < 12; x += 2) {
|
||||
int y = -(x / 2 + 1);
|
||||
put(o, x, y, 1, "glass");
|
||||
put(o, x + 1, y, 1, "glass");
|
||||
put(o, x, y, 2, "gold_block");
|
||||
put(o, x + 1, y, 3, "white_stained_glass");
|
||||
}
|
||||
for (int x = -1; x <= 12; x++) put(o, x, 0, 6, "stone");
|
||||
}
|
||||
|
||||
/** Black wall z=6 with a white vertical stripe (x=5) and a white horizontal stripe (y=5). */
|
||||
private void camStripes(Location o) {
|
||||
for (int a = -6; a < 18; a++)
|
||||
|
||||
Reference in new issue
Block a user