Merge branch 'master' into fix/heightmaps

This commit is contained in:
Lukas Rieger (Blue) 2023-12-24 10:42:40 +01:00
commit 1d37b38b32
No known key found for this signature in database
GPG Key ID: 2D09EC5ED2687FF2
161 changed files with 2849 additions and 162 deletions

2
.gitignore vendored
View File

@ -14,6 +14,8 @@ node_modules/
*.launch
release.md
# exclude generated resource
BlueMapCommon/src/main/resources/de/bluecolored/bluemap/webapp.zip
BlueMapCore/src/main/resources/de/bluecolored/bluemap/*/resourceExtensions.zip

View File

@ -372,7 +372,7 @@ public class BlueMapConfigManager implements BlueMapConfiguration {
.setVariable("world", formatPath(worldFolder))
.setVariable("dimension", dimension.getFormatted())
.setVariable("sky-color", "#290000")
.setVariable("void-color", "#000000")
.setVariable("void-color", "#150000")
.setVariable("ambient-light", "0.6")
.setVariable("remove-caves-below-y", "-10000")
.setConditional("max-y-comment", false)
@ -386,7 +386,7 @@ public class BlueMapConfigManager implements BlueMapConfiguration {
.setVariable("world", formatPath(worldFolder))
.setVariable("dimension", dimension.getFormatted())
.setVariable("sky-color", "#080010")
.setVariable("void-color", "#000000")
.setVariable("void-color", "#080010")
.setVariable("ambient-light", "0.6")
.setVariable("remove-caves-below-y", "-10000")
.setConditional("max-y-comment", true)

View File

@ -2,6 +2,7 @@
// !!! SET YOUR SQL-CONNECTION SETTINGS HERE: !!!
$driver = 'mysql'; // 'mysql' (MySQL) or 'pgsql' (PostgreSQL)
$hostname = '127.0.0.1';
$port = 3306;
$username = 'root';
@ -85,6 +86,14 @@ function getMimeType($path) {
return $mimeDefault;
}
function send($data) {
if (is_resource($data)) {
fpassthru($data);
} else {
echo $data;
}
}
// determine relative request-path
$root = dirname($_SERVER['PHP_SELF']);
if ($root === "/" || $root === "\\") $root = "";
@ -111,9 +120,12 @@ if (startsWith($path, "/maps/")) {
$mapId = $pathParts[0];
$mapPath = explode("?", $pathParts[1], 2)[0];
// get sql-connection
$sql = new mysqli($hostname, $username, $password, $database, $port);
if ($sql->errno) error(500, "Failed to connect to Database!");
// Initialize PDO
try {
$sql = new PDO("$driver:host=$hostname;dbname=$database", $username, $password);
$sql->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e ) { error(500, "Failed to connect to database"); }
// provide map-tiles
if (startsWith($mapPath, "tiles/")) {
@ -126,67 +138,72 @@ if (startsWith($path, "/maps/")) {
$compression = $lod === 0 ? $hiresCompression : "none";
// query for tile
$statement = $sql->prepare("
SELECT t.`data`
FROM `bluemap_map_tile` t
INNER JOIN `bluemap_map` m
ON t.`map` = m.`id`
INNER JOIN `bluemap_map_tile_compression` c
ON t.`compression` = c.`id`
WHERE m.`map_id` = ?
AND t.`lod` = ?
AND t.`x` = ?
AND t.`z` = ?
AND c.`compression` = ?
");
$statement->bind_param("siiis", $mapId, $lod, $tileX, $tileZ, $compression);
$statement->execute();
if ($statement->errno) error(500, "Database query failed!");
try {
$statement = $sql->prepare("
SELECT t.data
FROM bluemap_map_tile t
INNER JOIN bluemap_map m
ON t.map = m.id
INNER JOIN bluemap_map_tile_compression c
ON t.compression = c.id
WHERE m.map_id = :map_id
AND t.lod = :lod
AND t.x = :x
AND t.z = :z
AND c.compression = :compression
");
$statement->bindParam( ':map_id', $mapId, PDO::PARAM_STR );
$statement->bindParam( ':lod', $lod, PDO::PARAM_INT );
$statement->bindParam( ':x', $tileX, PDO::PARAM_INT );
$statement->bindParam( ':z', $tileZ, PDO::PARAM_INT );
$statement->bindParam( ':compression', $compression, PDO::PARAM_STR);
$statement->setFetchMode(PDO::FETCH_ASSOC);
$statement->execute();
// return result
$result = $statement->get_result();
if ($result && $line = $result->fetch_assoc()) {
if ($compression !== "none")
header("Content-Encoding: $compression");
if ($lod === 0) {
header("Content-Type: application/json");
} else {
header("Content-Type: image/png");
// return result
if ($line = $statement->fetch()) {
if ($compression !== "none")
header("Content-Encoding: $compression");
if ($lod === 0) {
header("Content-Type: application/json");
} else {
header("Content-Type: image/png");
}
send($line["data"]);
exit;
}
echo $line["data"];
exit;
}
} catch (PDOException $e) { error(500, "Failed to fetch data"); }
// empty json response if nothing found
header("Content-Type: application/json");
echo "{}";
exit;
}
// provide meta-files
$statement = $sql->prepare("
SELECT t.`value`
FROM `bluemap_map_meta` t
INNER JOIN `bluemap_map` m
ON t.`map` = m.`id`
WHERE m.`map_id` = ?
AND t.`key` = ?
");
$statement->bind_param("ss", $mapId, $mapPath);
$statement->execute();
if ($statement->errno) error(500, "Database query failed!");
try {
$statement = $sql->prepare("
SELECT t.value
FROM bluemap_map_meta t
INNER JOIN bluemap_map m
ON t.map = m.id
WHERE m.map_id = :map_id
AND t.key = :map_path
");
$statement->bindParam( ':map_id', $mapId, PDO::PARAM_STR );
$statement->bindParam( ':map_path', $mapPath, PDO::PARAM_STR );
$statement->setFetchMode(PDO::FETCH_ASSOC);
$statement->execute();
$result = $statement->get_result();
if ($result && $line = $result->fetch_assoc()) {
header("Content-Type: ".getMimeType($mapPath));
echo $line["value"];
exit;
}
if ($line = $statement->fetch()) {
header("Content-Type: ".getMimeType($mapPath));
send($line["value"]);
exit;
}
} catch (PDOException $e) { error(500, "Failed to fetch data"); }
}
// no match => 404
error(404);
error(404);

View File

@ -2,13 +2,13 @@
<div class="control-bar">
<MenuButton :close="appState.menu.isOpen" :back="false" @action="appState.menu.reOpenPage()" :title="$t('menu.tooltip')" />
<div class="space thin-hide"></div>
<SvgButton v-if="appState.maps.length > 0" class="thin-hide" :title="$t('maps.tooltip')"
<SvgButton v-if="appState.maps.length > 1" class="thin-hide" :title="$t('maps.tooltip')"
@action="appState.menu.openPage('maps', $t('maps.title'))">
<svg viewBox="0 0 30 30">
<polygon points="26.708,22.841 19.049,25.186 11.311,20.718 3.292,22.841 7.725,5.96 13.475,4.814 19.314,7.409 25.018,6.037 "/>
</svg>
</SvgButton>
<SvgButton v-if="showMapMenu && (markers.markerSets.length > 0 || markers.markers.length > 0)" class="thin-hide" :title="$t('markers.tooltip')"
<SvgButton v-if="showMapMenu && showMarkerMenu" class="thin-hide" :title="$t('markers.tooltip')"
@action="appState.menu.openPage('markers', $t('markers.title'), {markerSet: markers})">
<svg viewBox="0 0 30 30">
<path d="M15,3.563c-4.459,0-8.073,3.615-8.073,8.073c0,6.483,8.196,14.802,8.196,14.802s7.951-8.013,7.951-14.802
@ -101,12 +101,24 @@
},
showMapMenu() {
return this.mapViewer.mapState === "loading" || this.mapViewer.mapState === "loaded";
},
showMarkerMenu() {
return this.hasMarkers(this.markers)
}
},
methods: {
openPlayerList() {
let playerList = this.playerMarkerSet;
this.appState.menu.openPage('markers', this.$t("players.title"), {markerSet: playerList});
},
hasMarkers(markerSet) {
if (markerSet.markers.length > 0) return true;
for (let set of markerSet.markerSets) {
if (set.id !== "bm-players" && set.id !== "bm-popup-set") {
if (this.hasMarkers(set)) return true;
}
}
return false;
}
}
}

View File

@ -43,6 +43,7 @@ export default {
animation = animate(t => {
let u = EasingFunctions.easeOutQuad(t);
this.mapViewer.uniforms.sunlightStrength.value = startValue * (1-u) + targetValue * u;
this.$bluemap.mapViewer.redraw();
}, 300);
}
}

View File

@ -8,15 +8,15 @@
<Group :title="$t('lighting.title')">
<Slider :value="mapViewer.uniforms.sunlightStrength.value" :min="0" :max="1" :step="0.01"
@update="mapViewer.uniforms.sunlightStrength.value = $event">{{$t('lighting.sunlight')}}</Slider>
@update="mapViewer.uniforms.sunlightStrength.value = $event; $bluemap.mapViewer.redraw()">{{$t('lighting.sunlight')}}</Slider>
<Slider :value="mapViewer.uniforms.ambientLight.value" :min="0" :max="1" :step="0.01"
@update="mapViewer.uniforms.ambientLight.value = $event">{{$t('lighting.ambientLight')}}</Slider>
@update="mapViewer.uniforms.ambientLight.value = $event; $bluemap.mapViewer.redraw()">{{$t('lighting.ambientLight')}}</Slider>
</Group>
<Group :title="$t('resolution.title')">
<SimpleButton v-for="stage of qualityStages" :key="stage.name"
:active="mapViewer.superSampling === stage.value"
@action="$bluemap.mapViewer.superSampling = stage.value; $bluemap.saveUserSettings();"
@action="$bluemap.mapViewer.superSampling = stage.value; $bluemap.saveUserSettings(); $bluemap.mapViewer.redraw()"
>{{stage.name}}</SimpleButton>
</Group>

View File

@ -708,6 +708,12 @@ export class BlueMapApp {
}
}
switch (values[9]) {
case "flat" : this.setFlatView(0); break;
case "free" : this.setFreeFlight(0, controls.position.y); break;
default : this.setPerspectiveView(0); break;
}
controls.position.x = parseFloat(values[1]);
controls.position.y = parseFloat(values[2]);
controls.position.z = parseFloat(values[3]);
@ -717,11 +723,7 @@ export class BlueMapApp {
controls.tilt = parseFloat(values[7]);
controls.ortho = parseFloat(values[8]);
switch (values[9]) {
case "flat" : this.setFlatView(0); break;
case "free" : this.setFreeFlight(0, controls.position.y); break;
default : this.setPerspectiveView(0); break;
}
this.updatePageAddress();
return true;
}

View File

@ -113,6 +113,9 @@ export class MapViewer {
this.markers = new MarkerSet("bm-root");
this.lastFrame = 0;
this.lastRedrawChange = 0;
events.addEventListener("bluemapCameraMoved", this.redraw)
events.addEventListener("bluemapTileLoaded", this.redraw)
// initialize
this.initializeRootElement();
@ -160,6 +163,8 @@ export class MapViewer {
this.camera.aspect = this.rootElement.clientWidth / this.rootElement.clientHeight;
this.camera.updateProjectionMatrix();
this.redraw();
};
/**
@ -261,6 +266,13 @@ export class MapViewer {
}
}
/**
* Call to wake up the render-loop and render on high-fps for a while
*/
redraw = () => {
this.lastRedrawChange = Date.now();
}
/**
* @private
* The render-loop to update and possibly render a new frame.
@ -272,7 +284,6 @@ export class MapViewer {
// calculate delta time
if (this.lastFrame <= 0) this.lastFrame = now;
let delta = now - this.lastFrame;
this.lastFrame = now;
// update stats
this.stats.begin();
@ -283,7 +294,10 @@ export class MapViewer {
}
// render
this.render(delta);
if (delta >= 1000 || Date.now() - this.lastRedrawChange < 1000) {
this.lastFrame = now;
this.render(delta);
}
// update stats
this.stats.update();

View File

@ -63,7 +63,7 @@ export class Map {
name: id,
startPos: {x: 0, z: 0},
skyColor: new Color(),
voidColor: new Color(),
voidColor: new Color(0, 0, 0),
ambientLight: 0,
hires: {
tileSize: {x: 32, z: 32},

View File

@ -24,7 +24,7 @@
*/
import { Vector2, Scene, Group } from 'three';
import { Tile } from './Tile.js';
import {alert, hashTile} from '../util/Utils.js';
import {alert, dispatchEvent, hashTile} from '../util/Utils.js';
import {TileMap} from "./TileMap";
export class TileManager {
@ -194,6 +194,11 @@ export class TileManager {
this.tiles.set(tileHash, tile);
tile.load(this.tileLoader)
.then(() => {
dispatchEvent(this.events, "bluemapTileLoaded", {
tileManager: this,
tile: tile
});
if (this.loadTimeout) clearTimeout(this.loadTimeout);
this.loadTimeout = setTimeout(this.loadCloseTiles, 0);
})

View File

@ -204,7 +204,11 @@ export const animate = function (animationFrame, durationMs = 1000, postAnimatio
}
};
window.requestAnimationFrame(time => animation.frame(time));
if (durationMs !== 0) {
window.requestAnimationFrame(time => animation.frame(time));
} else {
animation.frame(0);
}
return animation;
}

View File

@ -123,7 +123,7 @@ tasks.processResources {
//resource Extensions
val resourceIds: Array<String> = arrayOf(
"1_13", "1_15", "1_16", "1_18"
"1_13", "1_15", "1_16", "1_18", "1_20_3"
)
tasks.register("zipResourceExtensions") {

View File

@ -38,7 +38,7 @@ public class MinecraftVersion implements Comparable<MinecraftVersion> {
private static final Pattern VERSION_REGEX = Pattern.compile("(?<major>\\d+)\\.(?<minor>\\d+)(?:\\.(?<patch>\\d+))?(?:-(?:pre|rc)\\d+)?");
public static final MinecraftVersion LATEST_SUPPORTED = new MinecraftVersion(1, 20, 2);
public static final MinecraftVersion LATEST_SUPPORTED = new MinecraftVersion(1, 20, 3);
public static final MinecraftVersion EARLIEST_SUPPORTED = new MinecraftVersion(1, 13);
private final int major, minor, patch;
@ -152,7 +152,8 @@ public class MinecraftVersion implements Comparable<MinecraftVersion> {
MC_1_18 (new MinecraftVersion(1, 18), "mc1_18", "https://piston-data.mojang.com/v1/objects/020aa79e63a7aab5d6f30e5ec7a6c08baee6b64c/client.jar"),
MC_1_19 (new MinecraftVersion(1, 19), "mc1_18", "https://piston-data.mojang.com/v1/objects/a45634ab061beb8c878ccbe4a59c3315f9c0266f/client.jar"),
MC_1_19_4 (new MinecraftVersion(1, 19, 4), "mc1_18", "https://piston-data.mojang.com/v1/objects/958928a560c9167687bea0cefeb7375da1e552a8/client.jar"),
MC_1_20 (new MinecraftVersion(1, 20), "mc1_18", "https://piston-data.mojang.com/v1/objects/e575a48efda46cf88111ba05b624ef90c520eef1/client.jar");
MC_1_20 (new MinecraftVersion(1, 20), "mc1_18", "https://piston-data.mojang.com/v1/objects/e575a48efda46cf88111ba05b624ef90c520eef1/client.jar"),
MC_1_20_3 (new MinecraftVersion(1, 20, 3), "mc1_20_3", "https://piston-data.mojang.com/v1/objects/b178a327a96f2cf1c9f98a45e5588d654a3e4369/client.jar");
private final MinecraftVersion version;
private final String resourcePrefix;

View File

@ -186,7 +186,7 @@ public class BmMap {
private void saveTextureGallery() {
try (OutputStream out = storage.writeMeta(id, META_FILE_TEXTURES)) {
this.textureGallery.writeTexturesFile(this.resourcePack, out);
this.textureGallery.writeTexturesFile(out);
} catch (IOException ex) {
Logger.global.logError("Failed to save textures for map '" + getId() + "'!", ex);
}

View File

@ -33,10 +33,12 @@ import de.bluecolored.bluemap.core.resources.ResourcePath;
import de.bluecolored.bluemap.core.resources.adapter.ResourcesGson;
import de.bluecolored.bluemap.core.resources.resourcepack.ResourcePack;
import de.bluecolored.bluemap.core.resources.resourcepack.texture.Texture;
import de.bluecolored.bluemap.core.util.Key;
import org.jetbrains.annotations.Nullable;
import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
@ -47,46 +49,53 @@ public class TextureGallery {
.setFieldNamingPolicy(FieldNamingPolicy.IDENTITY)
.create();
private final Map<ResourcePath<Texture>, Integer> ordinalMap;
private final Map<ResourcePath<Texture>, TextureMapping> textureMappings;
private int nextId;
public TextureGallery() {
this.ordinalMap = new HashMap<>();
this.textureMappings = new HashMap<>();
this.nextId = 0;
}
public void clear() {
this.ordinalMap.clear();
this.textureMappings.clear();
this.nextId = 0;
}
public int get(@Nullable ResourcePath<Texture> textureResourcePath) {
if (textureResourcePath == null) textureResourcePath = ResourcePack.MISSING_TEXTURE;
Integer ordinal = ordinalMap.get(textureResourcePath);
return ordinal != null ? ordinal : 0;
TextureMapping mapping = textureMappings.get(textureResourcePath);
return mapping != null ? mapping.getId() : 0;
}
public synchronized int put(ResourcePath<Texture> textureResourcePath) {
Integer ordinal = ordinalMap.putIfAbsent(textureResourcePath, nextId);
if (ordinal == null) return nextId++;
return ordinal;
public synchronized void put(ResourcePath<Texture> textureResourcePath) {
textureMappings.compute(textureResourcePath, (r, mapping) -> {
if (mapping == null)
return new TextureMapping(nextId++, textureResourcePath.getResource());
Texture texture = textureResourcePath.getResource();
if (texture != null) mapping.setTexture(texture);
return mapping;
});
}
public synchronized void put(ResourcePack resourcePack) {
resourcePack.getTextures().keySet().forEach(this::put);
this.put(ResourcePack.MISSING_TEXTURE); // put this first
resourcePack.getTextures().keySet()
.stream()
.sorted(Comparator.comparing(Key::getFormatted))
.forEach(this::put);
}
public void writeTexturesFile(ResourcePack resourcePack, OutputStream out) throws IOException {
public void writeTexturesFile(OutputStream out) throws IOException {
Texture[] textures = new Texture[nextId];
Arrays.fill(textures, Texture.MISSING);
ordinalMap.forEach((textureResourcePath, ordinal) -> {
Texture texture = textureResourcePath.getResource(resourcePack::getTexture);
if (texture != null) textures[ordinal] = texture;
// make sure the resource-path doesn't get lost
if (textures[ordinal].getResourcePath().equals(ResourcePack.MISSING_TEXTURE))
textures[ordinal] = Texture.missing(textureResourcePath);
this.textureMappings.forEach((textureResourcePath, mapping) -> {
int ordinal = mapping.getId();
Texture texture = mapping.getTexture();
if (texture == null) texture = Texture.missing(textureResourcePath);
textures[ordinal] = texture;
});
try (Writer writer = new OutputStreamWriter(out)) {
@ -105,7 +114,7 @@ public class TextureGallery {
for (int ordinal = 0; ordinal < textures.length; ordinal++) {
Texture texture = textures[ordinal];
if (texture != null) {
gallery.ordinalMap.put(textures[ordinal].getResourcePath(), ordinal);
gallery.textureMappings.put(texture.getResourcePath(), new TextureMapping(ordinal, texture));
}
}
} catch (JsonIOException ex) {
@ -114,4 +123,27 @@ public class TextureGallery {
return gallery;
}
static class TextureMapping {
private final int id;
private @Nullable Texture texture;
public TextureMapping(int id, @Nullable Texture texture) {
this.id = id;
this.texture = texture;
}
public int getId() {
return id;
}
public @Nullable Texture getTexture() {
return texture;
}
public void setTexture(@Nullable Texture texture) {
this.texture = texture;
}
}
}

View File

@ -26,6 +26,7 @@ package de.bluecolored.bluemap.core.resources.resourcepack.texture;
import de.bluecolored.bluemap.api.debug.DebugDump;
import de.bluecolored.bluemap.core.resources.ResourcePath;
import de.bluecolored.bluemap.core.util.BufferedImageUtil;
import de.bluecolored.bluemap.core.util.math.Color;
import javax.imageio.ImageIO;
@ -112,7 +113,7 @@ public class Texture {
boolean halfTransparent = checkHalfTransparent(image);
//calculate color
Color color = calculateColor(image);
Color color = BufferedImageUtil.averageColor(image);
//write to Base64
ByteArrayOutputStream os = new ByteArrayOutputStream();
@ -136,36 +137,6 @@ public class Texture {
return false;
}
private static Color calculateColor(BufferedImage image){
float alpha = 0f, red = 0f, green = 0f, blue = 0f;
int count = 0;
for (int x = 0; x < image.getWidth(); x++){
for (int y = 0; y < image.getHeight(); y++){
int pixel = image.getRGB(x, y);
float pixelAlpha = ((pixel >> 24) & 0xff) / 255f;
float pixelRed = ((pixel >> 16) & 0xff) / 255f;
float pixelGreen = ((pixel >> 8) & 0xff) / 255f;
float pixelBlue = (pixel & 0xff) / 255f;
count++;
alpha += pixelAlpha;
red += pixelRed * pixelAlpha;
green += pixelGreen * pixelAlpha;
blue += pixelBlue * pixelAlpha;
}
}
if (count == 0 || alpha == 0) return new Color();
red /= alpha;
green /= alpha;
blue /= alpha;
alpha /= count;
return new Color().set(red, green, blue, alpha, false);
}
public static Texture missing(ResourcePath<Texture> resourcePath) {
return new Texture(resourcePath);
}

View File

@ -191,6 +191,8 @@ public class FileStorage extends Storage {
@Override
public void purgeMap(String mapId, Function<ProgressInfo, Boolean> onProgress) throws IOException {
final Path directory = getFilePath(mapId);
if (!Files.exists(directory)) return;
final int subFilesCount;
final LinkedList<Path> subFiles;

View File

@ -162,10 +162,10 @@ public class MySQLDialect implements Dialect {
@Language("MySQL")
public String initializeStorageMeta() {
return "CREATE TABLE IF NOT EXISTS `bluemap_storage_meta` (" +
"`key` varchar(255) NOT NULL, " +
"`key` varchar(190) NOT NULL, " +
"`value` varchar(255) DEFAULT NULL, " +
"PRIMARY KEY (`key`)" +
")";
") COLLATE 'utf8mb4_bin'";
}
@Override
@ -187,10 +187,10 @@ public class MySQLDialect implements Dialect {
public String initializeMap() {
return "CREATE TABLE `bluemap_map` (" +
"`id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"`map_id` VARCHAR(255) NOT NULL," +
"`map_id` VARCHAR(190) NOT NULL," +
"PRIMARY KEY (`id`)," +
"UNIQUE INDEX `map_id` (`map_id`)" +
");";
") COLLATE 'utf8mb4_bin';";
}
@Override
@ -198,10 +198,10 @@ public class MySQLDialect implements Dialect {
public String initializeMapTileCompression() {
return "CREATE TABLE `bluemap_map_tile_compression` (" +
"`id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"`compression` VARCHAR(255) NOT NULL," +
"`compression` VARCHAR(190) NOT NULL," +
"PRIMARY KEY (`id`)," +
"UNIQUE INDEX `compression` (`compression`)" +
");";
") COLLATE 'utf8mb4_bin';";
}
@Override
@ -209,11 +209,11 @@ public class MySQLDialect implements Dialect {
public String initializeMapMeta() {
return "CREATE TABLE `bluemap_map_meta` (" +
"`map` SMALLINT UNSIGNED NOT NULL," +
"`key` varchar(255) NOT NULL," +
"`key` varchar(190) NOT NULL," +
"`value` LONGBLOB NOT NULL," +
"PRIMARY KEY (`map`, `key`)," +
"CONSTRAINT `fk_bluemap_map_meta_map` FOREIGN KEY (`map`) REFERENCES `bluemap_map` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT" +
")";
") COLLATE 'utf8mb4_bin'";
}
@Override
@ -230,7 +230,7 @@ public class MySQLDialect implements Dialect {
"PRIMARY KEY (`map`, `lod`, `x`, `z`)," +
"CONSTRAINT `fk_bluemap_map_tile_map` FOREIGN KEY (`map`) REFERENCES `bluemap_map` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT," +
"CONSTRAINT `fk_bluemap_map_tile_compression` FOREIGN KEY (`compression`) REFERENCES `bluemap_map_tile_compression` (`id`) ON UPDATE RESTRICT ON DELETE RESTRICT" +
");";
") COLLATE 'utf8mb4_bin';";
}
@Override

View File

@ -0,0 +1,63 @@
package de.bluecolored.bluemap.core.util;
import de.bluecolored.bluemap.core.util.math.Color;
import org.jetbrains.annotations.Nullable;
import java.awt.image.BufferedImage;
import java.awt.image.RenderedImage;
public class BufferedImageUtil {
public static Color averageColor(BufferedImage image) {
Color average = new Color();
Color color = new Color();
float[] buffer = null;
int count = 0;
for (int x = 0; x < image.getWidth(); x++) {
for (int y = 0; y < image.getHeight(); y++) {
buffer = readPixel(image, x, y, color, buffer);
count++;
average.add(color.premultiplied());
}
}
average.div(count);
return average;
}
public static Color readPixel(BufferedImage image, int x, int y, @Nullable Color target) {
readPixel(image, x, y, target, null);
return target;
}
private static float[] readPixel(BufferedImage image, int x, int y, @Nullable Color target, float @Nullable [] buffer) {
if (target == null) target = new Color();
// workaround for java bug: 5051418
if (image.getType() == BufferedImage.TYPE_BYTE_GRAY) {
buffer = readPixelDirect(image, x, y, target, buffer);
} else {
readPixelDefault(image, x, y, target);
}
return buffer;
}
private static void readPixelDefault(BufferedImage image, int x, int y, Color target) {
target.set(image.getRGB(x, y), image.getColorModel().isAlphaPremultiplied());
}
private static float[] readPixelDirect(RenderedImage image, int x, int y, Color target, float @Nullable [] buffer) {
buffer = image.getData().getPixel(x, y, buffer);
float a = buffer.length >= 4 ? buffer[3] / 255f : 1f;
float r = buffer[0] / 255f;
float g = buffer.length >= 3 ? buffer[1] / 255f : r;
float b = buffer.length >= 3 ? buffer[2] / 255f : r;
target.set(r, g, b, a, image.getColorModel().isAlphaPremultiplied());
return buffer;
}
}

View File

@ -7,6 +7,7 @@
"minecraft:lava_cauldron": "#ffffff",
"minecraft:grass_block": "@grass",
"minecraft:grass": "@grass",
"minecraft:short_grass": "@grass",
"minecraft:tall_grass": "@grass",
"minecraft:fern": "@grass",
"minecraft:large_fern": "@grass",

View File

@ -6,6 +6,7 @@
"minecraft:bubble_column": { "alwaysWaterlogged": true },
"minecraft:grass": { "randomOffset": true },
"minecraft:short_grass": { "randomOffset": true },
"minecraft:tall_grass": { "randomOffset": true },
"minecraft:fern": { "randomOffset": true },
"minecraft:dandelion": { "randomOffset": true },

View File

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "bluemap:block/missing" }
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "bluemap:block/missing"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,324 @@
{
"minecraft:the_void": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4159204
},
"minecraft:plains": {
"humidity": 0.4,
"temperature": 0.8,
"watercolor": 4159204
},
"minecraft:sunflower_plains": {
"humidity": 0.4,
"temperature": 0.8,
"watercolor": 4159204
},
"minecraft:snowy_plains": {
"humidity": 0.5,
"temperature": 0.0,
"watercolor": 4159204
},
"minecraft:ice_spikes": {
"humidity": 0.5,
"temperature": 0.0,
"watercolor": 4159204
},
"minecraft:desert": {
"humidity": 0.0,
"temperature": 2.0,
"watercolor": 4159204
},
"minecraft:swamp": {
"humidity": 0.9,
"temperature": 0.8,
"watercolor": 6388580,
"grasscolor": "#6A7039",
"foliagecolor": 6975545
},
"minecraft:mangrove_swamp": {
"humidity": 0.9,
"temperature": 0.8,
"watercolor": "#3A7A6A",
"grasscolor": "#6A7039",
"foliagecolor": "#8DB127"
},
"minecraft:forest": {
"humidity": 0.8,
"temperature": 0.7,
"watercolor": 4159204
},
"minecraft:flower_forest": {
"humidity": 0.8,
"temperature": 0.7,
"watercolor": 4159204
},
"minecraft:birch_forest": {
"humidity": 0.6,
"temperature": 0.6,
"watercolor": 4159204
},
"minecraft:dark_forest": {
"humidity": 0.8,
"temperature": 0.7,
"watercolor": 4159204,
"foliagecolor": "#28340a55",
"grasscolor": "#28340a88"
},
"minecraft:old_growth_birch_forest": {
"humidity": 0.6,
"temperature": 0.6,
"watercolor": 4159204
},
"minecraft:old_growth_pine_taiga": {
"humidity": 0.8,
"temperature": 0.3,
"watercolor": 4159204
},
"minecraft:old_growth_spruce_taiga": {
"humidity": 0.8,
"temperature": 0.25,
"watercolor": 4159204
},
"minecraft:taiga": {
"humidity": 0.8,
"temperature": 0.25,
"watercolor": 4159204
},
"minecraft:snowy_taiga": {
"humidity": 0.4,
"temperature": -0.5,
"watercolor": 4020182
},
"minecraft:savanna": {
"humidity": 0.0,
"temperature": 1.2,
"watercolor": 4159204
},
"minecraft:savanna_plateau": {
"humidity": 0.0,
"temperature": 1.0,
"watercolor": 4159204
},
"minecraft:windswept_hills": {
"humidity": 0.3,
"temperature": 0.2,
"watercolor": 4159204
},
"minecraft:windswept_gravelly_hills": {
"humidity": 0.3,
"temperature": 0.2,
"watercolor": 4159204
},
"minecraft:windswept_forest": {
"humidity": 0.3,
"temperature": 0.2,
"watercolor": 4159204
},
"minecraft:windswept_savanna": {
"humidity": 0.0,
"temperature": 1.1,
"watercolor": 4159204
},
"minecraft:jungle": {
"humidity": 0.9,
"temperature": 0.95,
"watercolor": 4159204
},
"minecraft:sparse_jungle": {
"humidity": 0.8,
"temperature": 0.95,
"watercolor": 4159204
},
"minecraft:bamboo_jungle": {
"humidity": 0.9,
"temperature": 0.95,
"watercolor": 4159204
},
"minecraft:badlands": {
"humidity": 0.0,
"temperature": 2.0,
"watercolor": 4159204,
"foliagecolor": 10387789,
"grasscolor": 9470285
},
"minecraft:eroded_badlands": {
"humidity": 0.0,
"temperature": 2.0,
"watercolor": 4159204,
"foliagecolor": 10387789,
"grasscolor": 9470285
},
"minecraft:wooded_badlands": {
"humidity": 0.0,
"temperature": 2.0,
"watercolor": 4159204,
"foliagecolor": 10387789,
"grasscolor": 9470285
},
"minecraft:meadow": {
"humidity": 0.8,
"temperature": 0.5,
"watercolor": 937679
},
"minecraft:grove": {
"humidity": 0.8,
"temperature": -0.2,
"watercolor": 4159204
},
"minecraft:snowy_slopes": {
"humidity": 0.9,
"temperature": -0.3,
"watercolor": 4159204
},
"minecraft:frozen_peaks": {
"humidity": 0.9,
"temperature": -0.7,
"watercolor": 4159204
},
"minecraft:jagged_peaks": {
"humidity": 0.9,
"temperature": -0.7,
"watercolor": 4159204
},
"minecraft:stony_peaks": {
"humidity": 0.3,
"temperature": 1.0,
"watercolor": 4159204
},
"minecraft:river": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4159204
},
"minecraft:frozen_river": {
"humidity": 0.5,
"temperature": 0.0,
"watercolor": 3750089
},
"minecraft:beach": {
"humidity": 0.4,
"temperature": 0.8,
"watercolor": 4159204
},
"minecraft:snowy_beach": {
"humidity": 0.3,
"temperature": 0.05,
"watercolor": 4020182
},
"minecraft:stony_shore": {
"humidity": 0.3,
"temperature": 0.2,
"watercolor": 4159204
},
"minecraft:warm_ocean": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4445678
},
"minecraft:lukewarm_ocean": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4566514
},
"minecraft:deep_lukewarm_ocean": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4566514
},
"minecraft:ocean": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4159204
},
"minecraft:deep_ocean": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4159204
},
"minecraft:cold_ocean": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4020182
},
"minecraft:deep_cold_ocean": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4020182
},
"minecraft:frozen_ocean": {
"humidity": 0.5,
"temperature": 0.0,
"watercolor": 3750089
},
"minecraft:deep_frozen_ocean": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 3750089
},
"minecraft:mushroom_fields": {
"humidity": 1.0,
"temperature": 0.9,
"watercolor": 4159204
},
"minecraft:dripstone_caves": {
"humidity": 0.4,
"temperature": 0.8,
"watercolor": 4159204
},
"minecraft:lush_caves": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4159204
},
"minecraft:nether_wastes": {
"humidity": 0.0,
"temperature": 2.0,
"watercolor": 4159204
},
"minecraft:warped_forest": {
"humidity": 0.0,
"temperature": 2.0,
"watercolor": 4159204
},
"minecraft:crimson_forest": {
"humidity": 0.0,
"temperature": 2.0,
"watercolor": 4159204
},
"minecraft:soul_sand_valley": {
"humidity": 0.0,
"temperature": 2.0,
"watercolor": 4159204
},
"minecraft:basalt_deltas": {
"humidity": 0.0,
"temperature": 2.0,
"watercolor": 4159204
},
"minecraft:the_end": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4159204
},
"minecraft:end_highlands": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4159204
},
"minecraft:end_midlands": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4159204
},
"minecraft:small_end_islands": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4159204
},
"minecraft:end_barrens": {
"humidity": 0.5,
"temperature": 0.5,
"watercolor": 4159204
}
}

View File

@ -0,0 +1,20 @@
{
"default": "@foliage",
"minecraft:water": "@water",
"minecraft:cauldron": "@water",
"minecraft:water_cauldron": "@water",
"minecraft:powder_snow_cauldron": "#ffffff",
"minecraft:lava_cauldron": "#ffffff",
"minecraft:grass_block": "@grass",
"minecraft:grass": "@grass",
"minecraft:short_grass": "@grass",
"minecraft:tall_grass": "@grass",
"minecraft:fern": "@grass",
"minecraft:large_fern": "@grass",
"minecraft:redstone_wire": "@redstone",
"minecraft:birch_leaves": 8431445,
"minecraft:spruce_leaves": 6396257,
"minecraft:stonecutter": "#ffffff",
"minecraft:snow": "#ffffff",
"minecraft:cherry_leaves": "#ffffff"
}

View File

@ -0,0 +1,55 @@
{
"minecraft:seagrass": { "alwaysWaterlogged": true },
"minecraft:tall_seagrass": { "alwaysWaterlogged": true },
"minecraft:kelp": { "alwaysWaterlogged": true },
"minecraft:kelp_plant": { "alwaysWaterlogged": true },
"minecraft:bubble_column": { "alwaysWaterlogged": true },
"minecraft:grass": { "randomOffset": true },
"minecraft:short_grass": { "randomOffset": true },
"minecraft:tall_grass": { "randomOffset": true },
"minecraft:fern": { "randomOffset": true },
"minecraft:dandelion": { "randomOffset": true },
"minecraft:cornflower": { "randomOffset": true },
"minecraft:poppy": { "randomOffset": true },
"minecraft:blue_orchid": { "randomOffset": true },
"minecraft:allium": { "randomOffset": true },
"minecraft:azure_bluet": { "randomOffset": true },
"minecraft:red_tulip": { "randomOffset": true },
"minecraft:orange_tulip": { "randomOffset": true },
"minecraft:white_tulip": { "randomOffset": true },
"minecraft:pink_tulip": { "randomOffset": true },
"minecraft:oxeye_daisy": { "randomOffset": true },
"minecraft:lily_of_the_valley": { "randomOffset": true },
"minecraft:wither_rose": { "randomOffset": true },
"minecraft:crimson_roots": { "randomOffset": true },
"minecraft:warped_roots": { "randomOffset": true },
"minecraft:nether_sprouts": { "randomOffset": true },
"minecraft:rose_bush": { "randomOffset": true },
"minecraft:peony": { "randomOffset": true },
"minecraft:lilac": { "randomOffset": true },
"minecraft:sunflower": { "randomOffset": true },
"minecraft:hanging_roots": { "randomOffset": true },
"minecraft:small_dripleaf": { "randomOffset": true },
"minecraft:glass": { "occluding": false, "cullingIdentical": true },
"minecraft:tinted_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:white_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:orange_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:magenta_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:light_blue_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:yellow_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:lime_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:pink_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:gray_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:light_gray_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:cyan_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:purple_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:blue_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:brown_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:green_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:red_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:black_stained_glass": { "occluding": false, "cullingIdentical": true },
"minecraft:ice": { "cullingIdentical": true }
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"rotation=0": { "model": "block/sign/acacia" },
"rotation=1": { "model": "block/sign/acacia", "y": 22.5 },
"rotation=2": { "model": "block/sign/acacia", "y": 45 },
"rotation=3": { "model": "block/sign/acacia", "y": 67.5 },
"rotation=4": { "model": "block/sign/acacia", "y": 90 },
"rotation=5": { "model": "block/sign/acacia", "y": 112.5 },
"rotation=6": { "model": "block/sign/acacia", "y": 135 },
"rotation=7": { "model": "block/sign/acacia", "y": 157.5 },
"rotation=8": { "model": "block/sign/acacia", "y": 180 },
"rotation=9": { "model": "block/sign/acacia", "y": 202.5 },
"rotation=10": { "model": "block/sign/acacia", "y": 225 },
"rotation=11": { "model": "block/sign/acacia", "y": 247.5 },
"rotation=12": { "model": "block/sign/acacia", "y": 270 },
"rotation=13": { "model": "block/sign/acacia", "y": 292.5 },
"rotation=14": { "model": "block/sign/acacia", "y": 315 },
"rotation=15": { "model": "block/sign/acacia", "y": 337.5 }
}
}

View File

@ -0,0 +1,8 @@
{
"variants": {
"facing=south": { "model": "block/sign/wall_acacia" },
"facing=west": { "model": "block/sign/wall_acacia", "y": 90 },
"facing=north": { "model": "block/sign/wall_acacia", "y": 180 },
"facing=east": { "model": "block/sign/wall_acacia", "y": 270 }
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"rotation=0": { "model": "block/sign/birch" },
"rotation=1": { "model": "block/sign/birch", "y": 22.5 },
"rotation=2": { "model": "block/sign/birch", "y": 45 },
"rotation=3": { "model": "block/sign/birch", "y": 67.5 },
"rotation=4": { "model": "block/sign/birch", "y": 90 },
"rotation=5": { "model": "block/sign/birch", "y": 112.5 },
"rotation=6": { "model": "block/sign/birch", "y": 135 },
"rotation=7": { "model": "block/sign/birch", "y": 157.5 },
"rotation=8": { "model": "block/sign/birch", "y": 180 },
"rotation=9": { "model": "block/sign/birch", "y": 202.5 },
"rotation=10": { "model": "block/sign/birch", "y": 225 },
"rotation=11": { "model": "block/sign/birch", "y": 247.5 },
"rotation=12": { "model": "block/sign/birch", "y": 270 },
"rotation=13": { "model": "block/sign/birch", "y": 292.5 },
"rotation=14": { "model": "block/sign/birch", "y": 315 },
"rotation=15": { "model": "block/sign/birch", "y": 337.5 }
}
}

View File

@ -0,0 +1,8 @@
{
"variants": {
"facing=south": { "model": "block/sign/wall_birch" },
"facing=west": { "model": "block/sign/wall_birch", "y": 90 },
"facing=north": { "model": "block/sign/wall_birch", "y": 180 },
"facing=east": { "model": "block/sign/wall_birch", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/black_head" },
"part=head,facing=east": { "model": "block/bed/black_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/black_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/black_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/black_foot" },
"part=foot,facing=east": { "model": "block/bed/black_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/black_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/black_foot", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/blue_head" },
"part=head,facing=east": { "model": "block/bed/blue_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/blue_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/blue_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/blue_foot" },
"part=foot,facing=east": { "model": "block/bed/blue_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/blue_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/blue_foot", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/brown_head" },
"part=head,facing=east": { "model": "block/bed/brown_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/brown_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/brown_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/brown_foot" },
"part=foot,facing=east": { "model": "block/bed/brown_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/brown_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/brown_foot", "y": 270 }
}
}

View File

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "block/bubble_column" }
}
}

View File

@ -0,0 +1,16 @@
{
"variants": {
"type=single,facing=north": { "model": "block/chest/normal", "y": 90 },
"type=single,facing=east": { "model": "block/chest/normal", "y": 180 },
"type=single,facing=south": { "model": "block/chest/normal", "y": 270 },
"type=single,facing=west": { "model": "block/chest/normal"},
"type=right,facing=north": { "model": "block/chest/normal_double_right", "y": 90 },
"type=right,facing=east": { "model": "block/chest/normal_double_right", "y": 180 },
"type=right,facing=south": { "model": "block/chest/normal_double_right", "y": 270 },
"type=right,facing=west": { "model": "block/chest/normal_double_right"},
"type=left,facing=north": { "model": "block/chest/normal_double_left", "y": 90 },
"type=left,facing=east": { "model": "block/chest/normal_double_left","y": 180 },
"type=left,facing=south": { "model": "block/chest/normal_double_left", "y": 270 },
"type=left,facing=west": { "model": "block/chest/normal_double_left"}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"rotation=0": { "model": "block/sign/crimson" },
"rotation=1": { "model": "block/sign/crimson", "y": 22.5 },
"rotation=2": { "model": "block/sign/crimson", "y": 45 },
"rotation=3": { "model": "block/sign/crimson", "y": 67.5 },
"rotation=4": { "model": "block/sign/crimson", "y": 90 },
"rotation=5": { "model": "block/sign/crimson", "y": 112.5 },
"rotation=6": { "model": "block/sign/crimson", "y": 135 },
"rotation=7": { "model": "block/sign/crimson", "y": 157.5 },
"rotation=8": { "model": "block/sign/crimson", "y": 180 },
"rotation=9": { "model": "block/sign/crimson", "y": 202.5 },
"rotation=10": { "model": "block/sign/crimson", "y": 225 },
"rotation=11": { "model": "block/sign/crimson", "y": 247.5 },
"rotation=12": { "model": "block/sign/crimson", "y": 270 },
"rotation=13": { "model": "block/sign/crimson", "y": 292.5 },
"rotation=14": { "model": "block/sign/crimson", "y": 315 },
"rotation=15": { "model": "block/sign/crimson", "y": 337.5 }
}
}

View File

@ -0,0 +1,8 @@
{
"variants": {
"facing=south": { "model": "block/sign/wall_crimson" },
"facing=west": { "model": "block/sign/wall_crimson", "y": 90 },
"facing=north": { "model": "block/sign/wall_crimson", "y": 180 },
"facing=east": { "model": "block/sign/wall_crimson", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/cyan_head" },
"part=head,facing=east": { "model": "block/bed/cyan_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/cyan_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/cyan_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/cyan_foot" },
"part=foot,facing=east": { "model": "block/bed/cyan_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/cyan_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/cyan_foot", "y": 270 }
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"rotation=0": { "model": "block/sign/dark_oak" },
"rotation=1": { "model": "block/sign/dark_oak", "y": 22.5 },
"rotation=2": { "model": "block/sign/dark_oak", "y": 45 },
"rotation=3": { "model": "block/sign/dark_oak", "y": 67.5 },
"rotation=4": { "model": "block/sign/dark_oak", "y": 90 },
"rotation=5": { "model": "block/sign/dark_oak", "y": 112.5 },
"rotation=6": { "model": "block/sign/dark_oak", "y": 135 },
"rotation=7": { "model": "block/sign/dark_oak", "y": 157.5 },
"rotation=8": { "model": "block/sign/dark_oak", "y": 180 },
"rotation=9": { "model": "block/sign/dark_oak", "y": 202.5 },
"rotation=10": { "model": "block/sign/dark_oak", "y": 225 },
"rotation=11": { "model": "block/sign/dark_oak", "y": 247.5 },
"rotation=12": { "model": "block/sign/dark_oak", "y": 270 },
"rotation=13": { "model": "block/sign/dark_oak", "y": 292.5 },
"rotation=14": { "model": "block/sign/dark_oak", "y": 315 },
"rotation=15": { "model": "block/sign/dark_oak", "y": 337.5 }
}
}

View File

@ -0,0 +1,8 @@
{
"variants": {
"facing=south": { "model": "block/sign/wall_dark_oak" },
"facing=west": { "model": "block/sign/wall_dark_oak", "y": 90 },
"facing=north": { "model": "block/sign/wall_dark_oak", "y": 180 },
"facing=east": { "model": "block/sign/wall_dark_oak", "y": 270 }
}
}

View File

@ -0,0 +1,8 @@
{
"variants": {
"facing=north": { "model": "block/chest/ender", "y": 90 },
"facing=east": { "model": "block/chest/ender", "y": 180 },
"facing=south": { "model": "block/chest/ender", "y":270 },
"facing=west": { "model": "block/chest/ender"}
}
}

View File

@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "minecraft:block/short_grass"
}
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/gray_head" },
"part=head,facing=east": { "model": "block/bed/gray_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/gray_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/gray_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/gray_foot" },
"part=foot,facing=east": { "model": "block/bed/gray_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/gray_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/gray_foot", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/green_head" },
"part=head,facing=east": { "model": "block/bed/green_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/green_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/green_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/green_foot" },
"part=foot,facing=east": { "model": "block/bed/green_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/green_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/green_foot", "y": 270 }
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"rotation=0": { "model": "block/sign/jungle" },
"rotation=1": { "model": "block/sign/jungle", "y": 22.5 },
"rotation=2": { "model": "block/sign/jungle", "y": 45 },
"rotation=3": { "model": "block/sign/jungle", "y": 67.5 },
"rotation=4": { "model": "block/sign/jungle", "y": 90 },
"rotation=5": { "model": "block/sign/jungle", "y": 112.5 },
"rotation=6": { "model": "block/sign/jungle", "y": 135 },
"rotation=7": { "model": "block/sign/jungle", "y": 157.5 },
"rotation=8": { "model": "block/sign/jungle", "y": 180 },
"rotation=9": { "model": "block/sign/jungle", "y": 202.5 },
"rotation=10": { "model": "block/sign/jungle", "y": 225 },
"rotation=11": { "model": "block/sign/jungle", "y": 247.5 },
"rotation=12": { "model": "block/sign/jungle", "y": 270 },
"rotation=13": { "model": "block/sign/jungle", "y": 292.5 },
"rotation=14": { "model": "block/sign/jungle", "y": 315 },
"rotation=15": { "model": "block/sign/jungle", "y": 337.5 }
}
}

View File

@ -0,0 +1,8 @@
{
"variants": {
"facing=south": { "model": "block/sign/wall_jungle" },
"facing=west": { "model": "block/sign/wall_jungle", "y": 90 },
"facing=north": { "model": "block/sign/wall_jungle", "y": 180 },
"facing=east": { "model": "block/sign/wall_jungle", "y": 270 }
}
}

View File

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "block/lava" }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/light_blue_head" },
"part=head,facing=east": { "model": "block/bed/light_blue_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/light_blue_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/light_blue_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/light_blue_foot" },
"part=foot,facing=east": { "model": "block/bed/light_blue_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/light_blue_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/light_blue_foot", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/light_gray_head" },
"part=head,facing=east": { "model": "block/bed/light_gray_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/light_gray_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/light_gray_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/light_gray_foot" },
"part=foot,facing=east": { "model": "block/bed/light_gray_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/light_gray_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/light_gray_foot", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/lime_head" },
"part=head,facing=east": { "model": "block/bed/lime_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/lime_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/lime_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/lime_foot" },
"part=foot,facing=east": { "model": "block/bed/lime_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/lime_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/lime_foot", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/magenta_head" },
"part=head,facing=east": { "model": "block/bed/magenta_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/magenta_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/magenta_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/magenta_foot" },
"part=foot,facing=east": { "model": "block/bed/magenta_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/magenta_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/magenta_foot", "y": 270 }
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"rotation=0": { "model": "block/sign/mangrove" },
"rotation=1": { "model": "block/sign/mangrove", "y": 22.5 },
"rotation=2": { "model": "block/sign/mangrove", "y": 45 },
"rotation=3": { "model": "block/sign/mangrove", "y": 67.5 },
"rotation=4": { "model": "block/sign/mangrove", "y": 90 },
"rotation=5": { "model": "block/sign/mangrove", "y": 112.5 },
"rotation=6": { "model": "block/sign/mangrove", "y": 135 },
"rotation=7": { "model": "block/sign/mangrove", "y": 157.5 },
"rotation=8": { "model": "block/sign/mangrove", "y": 180 },
"rotation=9": { "model": "block/sign/mangrove", "y": 202.5 },
"rotation=10": { "model": "block/sign/mangrove", "y": 225 },
"rotation=11": { "model": "block/sign/mangrove", "y": 247.5 },
"rotation=12": { "model": "block/sign/mangrove", "y": 270 },
"rotation=13": { "model": "block/sign/mangrove", "y": 292.5 },
"rotation=14": { "model": "block/sign/mangrove", "y": 315 },
"rotation=15": { "model": "block/sign/mangrove", "y": 337.5 }
}
}

View File

@ -0,0 +1,8 @@
{
"variants": {
"facing=south": { "model": "block/sign/wall_mangrove" },
"facing=west": { "model": "block/sign/wall_mangrove", "y": 90 },
"facing=north": { "model": "block/sign/wall_mangrove", "y": 180 },
"facing=east": { "model": "block/sign/wall_mangrove", "y": 270 }
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"rotation=0": { "model": "block/sign/oak" },
"rotation=1": { "model": "block/sign/oak", "y": 22.5 },
"rotation=2": { "model": "block/sign/oak", "y": 45 },
"rotation=3": { "model": "block/sign/oak", "y": 67.5 },
"rotation=4": { "model": "block/sign/oak", "y": 90 },
"rotation=5": { "model": "block/sign/oak", "y": 112.5 },
"rotation=6": { "model": "block/sign/oak", "y": 135 },
"rotation=7": { "model": "block/sign/oak", "y": 157.5 },
"rotation=8": { "model": "block/sign/oak", "y": 180 },
"rotation=9": { "model": "block/sign/oak", "y": 202.5 },
"rotation=10": { "model": "block/sign/oak", "y": 225 },
"rotation=11": { "model": "block/sign/oak", "y": 247.5 },
"rotation=12": { "model": "block/sign/oak", "y": 270 },
"rotation=13": { "model": "block/sign/oak", "y": 292.5 },
"rotation=14": { "model": "block/sign/oak", "y": 315 },
"rotation=15": { "model": "block/sign/oak", "y": 337.5 }
}
}

View File

@ -0,0 +1,8 @@
{
"variants": {
"facing=south": { "model": "block/sign/wall_oak" },
"facing=west": { "model": "block/sign/wall_oak", "y": 90 },
"facing=north": { "model": "block/sign/wall_oak", "y": 180 },
"facing=east": { "model": "block/sign/wall_oak", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/orange_head" },
"part=head,facing=east": { "model": "block/bed/orange_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/orange_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/orange_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/orange_foot" },
"part=foot,facing=east": { "model": "block/bed/orange_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/orange_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/orange_foot", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/pink_head" },
"part=head,facing=east": { "model": "block/bed/pink_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/pink_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/pink_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/pink_foot" },
"part=foot,facing=east": { "model": "block/bed/pink_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/pink_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/pink_foot", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/purple_head" },
"part=head,facing=east": { "model": "block/bed/purple_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/purple_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/purple_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/purple_foot" },
"part=foot,facing=east": { "model": "block/bed/purple_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/purple_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/purple_foot", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/red_head" },
"part=head,facing=east": { "model": "block/bed/red_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/red_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/red_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/red_foot" },
"part=foot,facing=east": { "model": "block/bed/red_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/red_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/red_foot", "y": 270 }
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"rotation=0": { "model": "block/sign/spruce" },
"rotation=1": { "model": "block/sign/spruce", "y": 22.5 },
"rotation=2": { "model": "block/sign/spruce", "y": 45 },
"rotation=3": { "model": "block/sign/spruce", "y": 67.5 },
"rotation=4": { "model": "block/sign/spruce", "y": 90 },
"rotation=5": { "model": "block/sign/spruce", "y": 112.5 },
"rotation=6": { "model": "block/sign/spruce", "y": 135 },
"rotation=7": { "model": "block/sign/spruce", "y": 157.5 },
"rotation=8": { "model": "block/sign/spruce", "y": 180 },
"rotation=9": { "model": "block/sign/spruce", "y": 202.5 },
"rotation=10": { "model": "block/sign/spruce", "y": 225 },
"rotation=11": { "model": "block/sign/spruce", "y": 247.5 },
"rotation=12": { "model": "block/sign/spruce", "y": 270 },
"rotation=13": { "model": "block/sign/spruce", "y": 292.5 },
"rotation=14": { "model": "block/sign/spruce", "y": 315 },
"rotation=15": { "model": "block/sign/spruce", "y": 337.5 }
}
}

View File

@ -0,0 +1,8 @@
{
"variants": {
"facing=south": { "model": "block/sign/wall_spruce" },
"facing=west": { "model": "block/sign/wall_spruce", "y": 90 },
"facing=north": { "model": "block/sign/wall_spruce", "y": 180 },
"facing=east": { "model": "block/sign/wall_spruce", "y": 270 }
}
}

View File

@ -0,0 +1,16 @@
{
"variants": {
"type=single,facing=north": { "model": "block/chest/trapped", "y": 90 },
"type=single,facing=east": { "model": "block/chest/trapped", "y": 180 },
"type=single,facing=south": { "model": "block/chest/trapped", "y":270 },
"type=single,facing=west": { "model": "block/chest/trapped"},
"type=right,facing=north": { "model": "block/chest/trapped_double_right", "y": 90 },
"type=right,facing=east": { "model": "block/chest/trapped_double_right", "y": 180 },
"type=right,facing=south": { "model": "block/chest/trapped_double_right", "y":270 },
"type=right,facing=west": { "model": "block/chest/trapped_double_right"},
"type=left,facing=north": { "model": "block/chest/trapped_double_left", "y": 90 },
"type=left,facing=east": { "model": "block/chest/trapped_double_left", "y": 180 },
"type=left,facing=south": { "model": "block/chest/trapped_double_left", "y":270 },
"type=left,facing=west": { "model": "block/chest/trapped_double_left"}
}
}

View File

@ -0,0 +1,20 @@
{
"variants": {
"rotation=0": { "model": "block/sign/warped" },
"rotation=1": { "model": "block/sign/warped", "y": 22.5 },
"rotation=2": { "model": "block/sign/warped", "y": 45 },
"rotation=3": { "model": "block/sign/warped", "y": 67.5 },
"rotation=4": { "model": "block/sign/warped", "y": 90 },
"rotation=5": { "model": "block/sign/warped", "y": 112.5 },
"rotation=6": { "model": "block/sign/warped", "y": 135 },
"rotation=7": { "model": "block/sign/warped", "y": 157.5 },
"rotation=8": { "model": "block/sign/warped", "y": 180 },
"rotation=9": { "model": "block/sign/warped", "y": 202.5 },
"rotation=10": { "model": "block/sign/warped", "y": 225 },
"rotation=11": { "model": "block/sign/warped", "y": 247.5 },
"rotation=12": { "model": "block/sign/warped", "y": 270 },
"rotation=13": { "model": "block/sign/warped", "y": 292.5 },
"rotation=14": { "model": "block/sign/warped", "y": 315 },
"rotation=15": { "model": "block/sign/warped", "y": 337.5 }
}
}

View File

@ -0,0 +1,8 @@
{
"variants": {
"facing=south": { "model": "block/sign/wall_warped" },
"facing=west": { "model": "block/sign/wall_warped", "y": 90 },
"facing=north": { "model": "block/sign/wall_warped", "y": 180 },
"facing=east": { "model": "block/sign/wall_warped", "y": 270 }
}
}

View File

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "block/water" }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/white_head" },
"part=head,facing=east": { "model": "block/bed/white_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/white_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/white_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/white_foot" },
"part=foot,facing=east": { "model": "block/bed/white_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/white_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/white_foot", "y": 270 }
}
}

View File

@ -0,0 +1,12 @@
{
"variants": {
"part=head,facing=north": { "model": "block/bed/yellow_head" },
"part=head,facing=east": { "model": "block/bed/yellow_head", "y": 90 },
"part=head,facing=south": { "model": "block/bed/yellow_head", "y": 180 },
"part=head,facing=west": { "model": "block/bed/yellow_head", "y": 270 },
"part=foot,facing=north": { "model": "block/bed/yellow_foot" },
"part=foot,facing=east": { "model": "block/bed/yellow_foot", "y": 90 },
"part=foot,facing=south": { "model": "block/bed/yellow_foot", "y": 180 },
"part=foot,facing=west": { "model": "block/bed/yellow_foot", "y": 270 }
}
}

View File

@ -0,0 +1,39 @@
{
"elements": [
{
"from": [0, 0, 13],
"to": [3, 3, 16],
"faces": {
"north": {"uv": [14.75, 0.75, 15.5, 1.5], "texture": "#bed"},
"east": {"uv": [14, 0.75, 14.75, 1.5], "texture": "#bed"},
"south": {"uv": [13.25, 0.75, 14, 1.5], "texture": "#bed"},
"west": {"uv": [12.5, 0.75, 13.25, 1.5], "texture": "#bed"},
"up": {"uv": [13.25, 0, 14, 0.75], "texture": "#bed"},
"down": {"uv": [14, 0, 14.75, 0.75], "texture": "#bed"}
}
},
{
"from": [13, 0, 13],
"to": [16, 3, 16],
"faces": {
"north": {"uv": [14, 3.75, 14.75, 4.5], "texture": "#bed"},
"east": {"uv": [13.25, 3.75, 14, 4.5], "texture": "#bed"},
"south": {"uv": [12.5, 3.75, 13.25, 4.5], "texture": "#bed"},
"west": {"uv": [14.75, 3.75, 15.5, 4.5], "texture": "#bed"},
"up": {"uv": [13.25, 3, 14, 3.75], "texture": "#bed"},
"down": {"uv": [14, 3, 14.75, 3.75], "texture": "#bed"}
}
},
{
"from": [0, 3, 0],
"to": [16, 9, 16],
"faces": {
"east": {"uv": [5.5, 7, 7, 11], "rotation": 90, "texture": "#bed"},
"south": {"uv": [5.5, 7, 9.5, 5.5], "texture": "#bed"},
"west": {"uv": [0, 7, 1.5, 11], "rotation": 270, "texture": "#bed"},
"up": {"uv": [1.5, 7, 5.5, 11], "texture": "#bed"},
"down": {"uv": [7, 7, 11, 11], "rotation": 180, "texture": "#bed"}
}
}
]
}

View File

@ -0,0 +1,39 @@
{
"elements": [
{
"from": [0, 0, 0],
"to": [3, 3, 3],
"faces": {
"north": {"uv": [12.5, 2.25, 13.25, 3], "texture": "#bed"},
"east": {"uv": [14.75, 2.25, 15.5, 3], "texture": "#bed"},
"south": {"uv": [14, 2.25, 14.75, 3], "texture": "#bed"},
"west": {"uv": [13.25, 2.25, 14, 3], "texture": "#bed"},
"up": {"uv": [13.25, 1.5, 14, 2.25], "texture": "#bed"},
"down": {"uv": [14, 1.5, 14.75, 2.25], "texture": "#bed"}
}
},
{
"from": [13, 0, 0],
"to": [16, 3, 3],
"faces": {
"north": {"uv": [13.25, 5.25, 14, 6], "texture": "#bed"},
"east": {"uv": [12.5, 5.25, 13.25, 6], "texture": "#bed"},
"south": {"uv": [14.75, 5.25, 15.5, 6], "texture": "#bed"},
"west": {"uv": [14, 5.25, 14.75, 6], "texture": "#bed"},
"up": {"uv": [13.25, 4.5, 14, 5.25], "texture": "#bed"},
"down": {"uv": [14, 4.5, 14.75, 5.25], "texture": "#bed"}
}
},
{
"from": [0, 3, 0],
"to": [16, 9, 16],
"faces": {
"north": {"uv": [1.5, 1.5, 5.5, 0], "texture": "#bed"},
"east": {"uv": [5.5, 1.5, 7, 5.5], "rotation": 90, "texture": "#bed"},
"west": {"uv": [0, 1.5, 1.5, 5.5], "rotation": 270, "texture": "#bed"},
"up": {"uv": [1.5, 1.5, 5.5, 5.5], "texture": "#bed"},
"down": {"uv": [7, 1.5, 11, 5.5], "rotation": 180, "texture": "#bed"}
}
}
]
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/black"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/black"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/blue"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/blue"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/brown"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/brown"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/cyan"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/cyan"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/gray"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/gray"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/green"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/green"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/light_blue"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/light_blue"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/light_gray"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/light_gray"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/lime"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/lime"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/magenta"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/magenta"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/orange"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/orange"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/pink"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/pink"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/purple"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/purple"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/red"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/red"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_foot",
"textures": {
"bed": "entity/bed/white"
}
}

View File

@ -0,0 +1,6 @@
{
"parent":"block/bed/bed_head",
"textures": {
"bed": "entity/bed/white"
}
}

Some files were not shown because too many files have changed in this diff Show More