mirror of
https://github.com/BlueMap-Minecraft/BlueMap.git
synced 2024-09-27 14:52:57 +02:00
Merge branch 'master' into fix/heightmaps
This commit is contained in:
commit
1d37b38b32
2
.gitignore
vendored
2
.gitignore
vendored
@ -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
|
||||
|
@ -372,7 +372,7 @@ private ConfigTemplate createNetherMapTemplate(String name, Path worldFolder, Ke
|
||||
.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 @@ private ConfigTemplate createEndMapTemplate(String name, Path worldFolder, Key d
|
||||
.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)
|
||||
|
@ -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);
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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},
|
||||
|
@ -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);
|
||||
})
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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") {
|
||||
|
@ -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 enum MinecraftResource {
|
||||
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;
|
||||
|
@ -186,7 +186,7 @@ private TextureGallery loadTextureGallery() throws IOException {
|
||||
|
||||
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);
|
||||
}
|
||||
|
@ -33,10 +33,12 @@
|
||||
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 static TextureGallery readTexturesFile(InputStream in) throws IOException
|
||||
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 static TextureGallery readTexturesFile(InputStream in) throws IOException
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -26,6 +26,7 @@
|
||||
|
||||
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 static Texture from(ResourcePath<Texture> resourcePath, BufferedImage ima
|
||||
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 @@ private static boolean checkHalfTransparent(BufferedImage image){
|
||||
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);
|
||||
}
|
||||
|
@ -191,6 +191,8 @@ public void deleteMeta(String mapId, String name) throws IOException {
|
||||
@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;
|
||||
|
||||
|
@ -162,10 +162,10 @@ public String selectMapIds() {
|
||||
@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 String insertStorageMeta() {
|
||||
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 String initializeMap() {
|
||||
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 String initializeMapTileCompression() {
|
||||
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 String initializeMapTile() {
|
||||
"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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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",
|
||||
|
@ -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 },
|
||||
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"variants": {
|
||||
"": { "model": "bluemap:block/missing" }
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "block/cube_all",
|
||||
"textures": {
|
||||
"all": "bluemap:block/missing"
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 2.8 KiB |
@ -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
|
||||
}
|
||||
}
|
@ -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"
|
||||
}
|
@ -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 }
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"variants": {
|
||||
"": { "model": "block/bubble_column" }
|
||||
}
|
||||
}
|
@ -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"}
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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"}
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
{
|
||||
"variants": {
|
||||
"": {
|
||||
"model": "minecraft:block/short_grass"
|
||||
}
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"variants": {
|
||||
"": { "model": "block/lava" }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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"}
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
{
|
||||
"variants": {
|
||||
"": { "model": "block/water" }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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 }
|
||||
}
|
||||
}
|
@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/black"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/black"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/blue"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/blue"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/brown"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/brown"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/cyan"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/cyan"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/gray"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/gray"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/green"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/green"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/light_blue"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/light_blue"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/light_gray"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/light_gray"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/lime"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/lime"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/magenta"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/magenta"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/orange"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/orange"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/pink"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/pink"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/purple"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/purple"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/red"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_head",
|
||||
"textures": {
|
||||
"bed": "entity/bed/red"
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent":"block/bed/bed_foot",
|
||||
"textures": {
|
||||
"bed": "entity/bed/white"
|
||||
}
|
||||
}
|
@ -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
Loading…
Reference in New Issue
Block a user