added advanced model registry

This commit is contained in:
Lars Neuhaus 2025-03-21 19:22:15 +01:00
parent c5c21d89b6
commit ab97315910
2217 changed files with 26787 additions and 57 deletions

View File

@ -3,9 +3,13 @@ package eu.mhsl.minecraft.pixelpic;
import eu.mhsl.minecraft.pixelpic.commands.PixelPicCommand;
import eu.mhsl.minecraft.pixelpic.render.render.DefaultScreenRenderer;
import eu.mhsl.minecraft.pixelpic.render.render.Renderer;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.Objects;
public final class Main extends JavaPlugin {
private static Main instance;
private Renderer screenRenderer;
@ -14,61 +18,11 @@ public final class Main extends JavaPlugin {
public void onEnable() {
instance = this;
Bukkit.getPluginCommand("pixelPic").setExecutor(new PixelPicCommand());
//
// Bukkit.getPluginCommand("test2").setExecutor((sender, command, label, args) -> {
// if(!(sender instanceof Player player)) return false;
// Bukkit.broadcast(Component.text("HI"));
//
// Resolution.Pixels pixels = Resolution.Pixels._256P;
// Resolution.AspectRatio aspectRatio = Resolution.AspectRatio._1_1;
// Resolution resolution = new Resolution(pixels, aspectRatio);
// BufferedImage image = screenRenderer.render((Player) sender, resolution);
// Bukkit.broadcast(Component.text(image.toString()));
//
// File file = new File(getDataFolder(), "Bild" + ".png");
// try {
// getDataFolder().mkdir();
// ImageIO.write(image, "png", file);
// } catch (Exception e) {
// return true;
// }
//
// ItemStack map = new ItemStack(Material.FILLED_MAP, 1);
// MapMeta meta = (MapMeta) map.getItemMeta();
// MapView mapView = Bukkit.createMap(Bukkit.getWorlds().getFirst());
// mapView.addRenderer(new ImageMapRenderer(image, 0, 0));
// meta.setMapView(mapView);
// map.setItemMeta(meta);
// player.getInventory().addItem(map);
//
// ItemStack map2 = new ItemStack(Material.FILLED_MAP, 1);
// MapMeta meta1 = (MapMeta) map2.getItemMeta();
// MapView mapView4 = Bukkit.createMap(Bukkit.getWorlds().getFirst());
// mapView4.addRenderer(new ImageMapRenderer(image, 1, 0));
// meta1.setMapView(mapView4);
// map2.setItemMeta(meta1);
// player.getInventory().addItem(map2);
//
// ItemStack map3 = new ItemStack(Material.FILLED_MAP, 1);
// MapMeta meta2 = (MapMeta) map3.getItemMeta();
// MapView mapView3 = Bukkit.createMap(Bukkit.getWorlds().getFirst());
// mapView3.addRenderer(new ImageMapRenderer(image, 0, 1));
// meta2.setMapView(mapView3);
// map3.setItemMeta(meta2);
// player.getInventory().addItem(map3);
//
// ItemStack map4 = new ItemStack(Material.FILLED_MAP, 1);
// MapMeta meta3 = (MapMeta) map4.getItemMeta();
// MapView mapView2 = Bukkit.createMap(Bukkit.getWorlds().getFirst());
// mapView2.addRenderer(new ImageMapRenderer(image, 1, 1));
// meta3.setMapView(mapView2);
// map4.setItemMeta(meta3);
// player.getInventory().addItem(map4);
//
// player.updateInventory();
//
// return true;
// });
Bukkit.getPluginCommand("test").setExecutor((sender, command, label, args) -> {
Bukkit.broadcast(Component.text(Material.STONE.getBlockTranslationKey().replace("block.minecraft.", "")));
return true;
});
}
@Override

View File

@ -1,7 +1,7 @@
package eu.mhsl.minecraft.pixelpic.render.raytrace;
import eu.mhsl.minecraft.pixelpic.render.model.Model;
import eu.mhsl.minecraft.pixelpic.render.registry.DefaultModelRegistry;
import eu.mhsl.minecraft.pixelpic.render.registry.AdvancedModelRegistry;
import eu.mhsl.minecraft.pixelpic.render.registry.ModelRegistry;
import eu.mhsl.minecraft.pixelpic.render.util.BlockRaytracer;
import eu.mhsl.minecraft.pixelpic.render.util.Intersection;
@ -29,7 +29,7 @@ public class DefaultRaytracer implements Raytracer {
this.maxDistance = maxDistance;
this.reflectionDepth = reflectionDepth;
this.textureRegistry = new DefaultModelRegistry();
this.textureRegistry = new AdvancedModelRegistry();
this.textureRegistry.initialize();
this.reflectedBlock = null;

View File

@ -0,0 +1,109 @@
package eu.mhsl.minecraft.pixelpic.render.registry;
import eu.mhsl.minecraft.pixelpic.render.model.AbstractModel;
import eu.mhsl.minecraft.pixelpic.render.model.Model;
import org.bukkit.Color;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.*;
import static eu.mhsl.minecraft.pixelpic.render.registry.DefaultModelRegistry.TEXTURE_SIZE;
public class AdvancedModelRegistry implements ModelRegistry {
private final Map<Material, Map<BlockData, Model>> modelMap = new HashMap<>();
@Override
public void initialize() {
// registerModel(Material.STONE, AbstractModel.Builder.createSimple(getTextureArray(Material.STONE.getBlockTranslationKey().replace("block.minecraft.", ""))).build());
for (Material currentMaterial : Material.values()) {
if(!currentMaterial.isBlock()) continue;
List<String> blockTextures = getBlockTextures(currentMaterial);
for (String blockTexture : blockTextures) {
try {
registerModel(currentMaterial, AbstractModel.Builder.createSimple(getTextureArray(blockTexture)).build());
} catch (Exception ignored) { }
}
}
}
@Override
public Model getModel(Block block) {
return ModelRegistry.super.getModel(block);
}
@Override
public Model getModel(Material material, BlockData blockData) {
return modelMap.computeIfAbsent(material, key -> new HashMap<>()).getOrDefault(blockData,
blockData == null ? getDefaultModel()
: modelMap.get(material).getOrDefault(null, getDefaultModel()));
}
@Override
public Model getDefaultModel() {
return AbstractModel.Builder.createStatic(Color.PURPLE.asRGB()).build();
}
private void registerModel(Material material, Model blockModel) {
modelMap.computeIfAbsent(material, key -> new HashMap<>())
.put(null, blockModel);
}
private List<String> getBlockTextures(Material material) {
if(!material.isBlock()) return new ArrayList<>();
String blockName = material.name().toLowerCase();
try {
if(!Arrays.deepEquals(getTextureArray(blockName), new int[0][0])) {
return List.of(blockName);
}
} catch (Exception e) {
String[] possibleVariants = {
blockName + "_top",
blockName + "_side",
blockName + "_bottom",
blockName + "_front",
blockName + "_back",
blockName + "_left",
blockName + "_right"
};
List<String> results = new ArrayList<>();
for (String variant : possibleVariants) {
try {
if(!Arrays.deepEquals(getTextureArray(variant), new int[0][0])) {
results.add(variant);
}
} catch (Exception ignored) { }
}
return results;
}
return new ArrayList<>();
}
private int[][] getTextureArray(String textureName) {
int[][] texture = new int[TEXTURE_SIZE][TEXTURE_SIZE];
BufferedImage img = null;
URL url = this.getClass().getClassLoader().getResource(String.format("textures/block/%s.png", textureName));
if (url == null) {
throw new RuntimeException("Block Texture Resource not found.");
}
try (InputStream input = url.openConnection().getInputStream()) {
img = ImageIO.read(input);
} catch (IOException e) {
throw new RuntimeException(e);
}
for (int pixelY = 0; pixelY < TEXTURE_SIZE; pixelY++) {
for (int pixelX = 0; pixelX < TEXTURE_SIZE; pixelX++) {
texture[pixelY][pixelX] = img.getRGB(pixelX, pixelY);
}
}
return texture;
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/button",
"textures": {
"texture": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/button_inventory",
"textures": {
"texture": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/button_pressed",
"textures": {
"texture": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_bottom_left",
"textures": {
"bottom": "minecraft:block/acacia_door_bottom",
"top": "minecraft:block/acacia_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_bottom_left_open",
"textures": {
"bottom": "minecraft:block/acacia_door_bottom",
"top": "minecraft:block/acacia_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_bottom_right",
"textures": {
"bottom": "minecraft:block/acacia_door_bottom",
"top": "minecraft:block/acacia_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_bottom_right_open",
"textures": {
"bottom": "minecraft:block/acacia_door_bottom",
"top": "minecraft:block/acacia_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_top_left",
"textures": {
"bottom": "minecraft:block/acacia_door_bottom",
"top": "minecraft:block/acacia_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_top_left_open",
"textures": {
"bottom": "minecraft:block/acacia_door_bottom",
"top": "minecraft:block/acacia_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_top_right",
"textures": {
"bottom": "minecraft:block/acacia_door_bottom",
"top": "minecraft:block/acacia_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_top_right_open",
"textures": {
"bottom": "minecraft:block/acacia_door_bottom",
"top": "minecraft:block/acacia_door_top"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_fence_gate",
"textures": {
"texture": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_fence_gate_open",
"textures": {
"texture": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_fence_gate_wall",
"textures": {
"texture": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_fence_gate_wall_open",
"textures": {
"texture": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/fence_inventory",
"textures": {
"texture": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/fence_post",
"textures": {
"texture": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/fence_side",
"textures": {
"texture": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,5 @@
{
"textures": {
"particle": "minecraft:block/stripped_acacia_log"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/leaves",
"textures": {
"all": "minecraft:block/acacia_leaves"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_column",
"textures": {
"end": "minecraft:block/acacia_log_top",
"side": "minecraft:block/acacia_log"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_column_horizontal",
"textures": {
"end": "minecraft:block/acacia_log_top",
"side": "minecraft:block/acacia_log"
}
}

View File

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

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/pressure_plate_up",
"textures": {
"texture": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/pressure_plate_down",
"textures": {
"texture": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cross",
"textures": {
"cross": "minecraft:block/acacia_sapling"
}
}

View File

@ -0,0 +1,5 @@
{
"textures": {
"particle": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "minecraft:block/slab",
"textures": {
"bottom": "minecraft:block/acacia_planks",
"side": "minecraft:block/acacia_planks",
"top": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "minecraft:block/slab_top",
"textures": {
"bottom": "minecraft:block/acacia_planks",
"side": "minecraft:block/acacia_planks",
"top": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "minecraft:block/stairs",
"textures": {
"bottom": "minecraft:block/acacia_planks",
"side": "minecraft:block/acacia_planks",
"top": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "minecraft:block/inner_stairs",
"textures": {
"bottom": "minecraft:block/acacia_planks",
"side": "minecraft:block/acacia_planks",
"top": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "minecraft:block/outer_stairs",
"textures": {
"bottom": "minecraft:block/acacia_planks",
"side": "minecraft:block/acacia_planks",
"top": "minecraft:block/acacia_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_orientable_trapdoor_bottom",
"textures": {
"texture": "minecraft:block/acacia_trapdoor"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_orientable_trapdoor_open",
"textures": {
"texture": "minecraft:block/acacia_trapdoor"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_orientable_trapdoor_top",
"textures": {
"texture": "minecraft:block/acacia_trapdoor"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_column",
"textures": {
"end": "minecraft:block/acacia_log",
"side": "minecraft:block/acacia_log"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/rail_flat",
"textures": {
"rail": "minecraft:block/activator_rail"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/rail_flat",
"textures": {
"rail": "minecraft:block/activator_rail_on"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_rail_raised_ne",
"textures": {
"rail": "minecraft:block/activator_rail_on"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_rail_raised_sw",
"textures": {
"rail": "minecraft:block/activator_rail_on"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_rail_raised_ne",
"textures": {
"rail": "minecraft:block/activator_rail"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_rail_raised_sw",
"textures": {
"rail": "minecraft:block/activator_rail"
}
}

View File

@ -0,0 +1,5 @@
{
"textures": {
"particle": "minecraft:missingno"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cross",
"textures": {
"cross": "minecraft:block/allium"
}
}

View File

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

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cross",
"textures": {
"cross": "minecraft:block/amethyst_cluster"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_column",
"textures": {
"end": "minecraft:block/ancient_debris_top",
"side": "minecraft:block/ancient_debris_side"
}
}

View File

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

View File

@ -0,0 +1,8 @@
{
"parent": "minecraft:block/slab",
"textures": {
"bottom": "minecraft:block/andesite",
"side": "minecraft:block/andesite",
"top": "minecraft:block/andesite"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "minecraft:block/slab_top",
"textures": {
"bottom": "minecraft:block/andesite",
"side": "minecraft:block/andesite",
"top": "minecraft:block/andesite"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "minecraft:block/stairs",
"textures": {
"bottom": "minecraft:block/andesite",
"side": "minecraft:block/andesite",
"top": "minecraft:block/andesite"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "minecraft:block/inner_stairs",
"textures": {
"bottom": "minecraft:block/andesite",
"side": "minecraft:block/andesite",
"top": "minecraft:block/andesite"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "minecraft:block/outer_stairs",
"textures": {
"bottom": "minecraft:block/andesite",
"side": "minecraft:block/andesite",
"top": "minecraft:block/andesite"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/wall_inventory",
"textures": {
"wall": "minecraft:block/andesite"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_wall_post",
"textures": {
"wall": "minecraft:block/andesite"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_wall_side",
"textures": {
"wall": "minecraft:block/andesite"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_wall_side_tall",
"textures": {
"wall": "minecraft:block/andesite"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/template_anvil",
"textures": {
"top": "minecraft:block/anvil_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/stem_fruit",
"textures": {
"stem": "minecraft:block/melon_stem",
"upperstem": "minecraft:block/attached_melon_stem"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/stem_fruit",
"textures": {
"stem": "minecraft:block/pumpkin_stem",
"upperstem": "minecraft:block/attached_pumpkin_stem"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/template_azalea",
"textures": {
"side": "minecraft:block/azalea_side",
"top": "minecraft:block/azalea_top"
}
}

View File

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

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cross",
"textures": {
"cross": "minecraft:block/azure_bluet"
}
}

View File

@ -0,0 +1,19 @@
{
"textures": {
"all": "block/bamboo_stalk",
"particle": "block/bamboo_stalk"
},
"elements": [
{ "from": [ 7, 0, 7 ],
"to": [ 9, 16, 9 ],
"faces": {
"down": { "uv": [ 13, 4, 15, 6 ], "texture": "#all", "cullface": "down" },
"up": { "uv": [ 13, 0, 15, 2], "texture": "#all", "cullface": "up" },
"north": { "uv": [ 0, 0, 2, 16 ], "texture": "#all" },
"south": { "uv": [ 0, 0, 2, 16 ], "texture": "#all" },
"west": { "uv": [ 0, 0, 2, 16 ], "texture": "#all" },
"east": { "uv": [ 0, 0, 2, 16 ], "texture": "#all" }
}
}
]
}

View File

@ -0,0 +1,19 @@
{
"textures": {
"all": "block/bamboo_stalk",
"particle": "block/bamboo_stalk"
},
"elements": [
{ "from": [ 6.5, 0, 6.5 ],
"to": [ 9.5, 16, 9.5 ],
"faces": {
"down": { "uv": [ 13, 4, 16, 7 ], "texture": "#all", "cullface": "down" },
"up": { "uv": [ 13, 0, 16, 3 ], "texture": "#all", "cullface": "up" },
"north": { "uv": [ 0, 0, 3, 16 ], "texture": "#all" },
"south": { "uv": [ 0, 0, 3, 16 ], "texture": "#all" },
"west": { "uv": [ 0, 0, 3, 16 ], "texture": "#all" },
"east": { "uv": [ 0, 0, 3, 16 ], "texture": "#all" }
}
}
]
}

View File

@ -0,0 +1,19 @@
{
"textures": {
"all": "block/bamboo_stalk",
"particle": "block/bamboo_stalk"
},
"elements": [
{ "from": [ 7, 0, 7 ],
"to": [ 9, 16, 9 ],
"faces": {
"down": { "uv": [ 13, 4, 15, 6 ], "texture": "#all", "cullface": "down" },
"up": { "uv": [ 13, 0, 15, 2], "texture": "#all", "cullface": "up" },
"north": { "uv": [ 3, 0, 5, 16 ], "texture": "#all" },
"south": { "uv": [ 3, 0, 5, 16 ], "texture": "#all" },
"west": { "uv": [ 3, 0, 5, 16 ], "texture": "#all" },
"east": { "uv": [ 3, 0, 5, 16 ], "texture": "#all" }
}
}
]
}

View File

@ -0,0 +1,19 @@
{
"textures": {
"all": "block/bamboo_stalk",
"particle": "block/bamboo_stalk"
},
"elements": [
{ "from": [ 6.5, 0, 6.5 ],
"to": [ 9.5, 16, 9.5 ],
"faces": {
"down": { "uv": [ 13, 4, 16, 7 ], "texture": "#all", "cullface": "down" },
"up": { "uv": [ 13, 0, 16, 3 ], "texture": "#all", "cullface": "up" },
"north": { "uv": [ 3, 0, 6, 16 ], "texture": "#all" },
"south": { "uv": [ 3, 0, 6, 16 ], "texture": "#all" },
"west": { "uv": [ 3, 0, 6, 16 ], "texture": "#all" },
"east": { "uv": [ 3, 0, 6, 16 ], "texture": "#all" }
}
}
]
}

View File

@ -0,0 +1,19 @@
{
"textures": {
"all": "block/bamboo_stalk",
"particle": "block/bamboo_stalk"
},
"elements": [
{ "from": [ 7, 0, 7 ],
"to": [ 9, 16, 9 ],
"faces": {
"down": { "uv": [ 13, 4, 15, 6 ], "texture": "#all", "cullface": "down" },
"up": { "uv": [ 13, 0, 15, 2], "texture": "#all", "cullface": "up" },
"north": { "uv": [ 6, 0, 8, 16 ], "texture": "#all" },
"south": { "uv": [ 6, 0, 8, 16 ], "texture": "#all" },
"west": { "uv": [ 6, 0, 8, 16 ], "texture": "#all" },
"east": { "uv": [ 6, 0, 8, 16 ], "texture": "#all" }
}
}
]
}

View File

@ -0,0 +1,19 @@
{
"textures": {
"all": "block/bamboo_stalk",
"particle": "block/bamboo_stalk"
},
"elements": [
{ "from": [ 6.5, 0, 6.5 ],
"to": [ 9.5, 16, 9.5 ],
"faces": {
"down": { "uv": [ 13, 4, 16, 7 ], "texture": "#all", "cullface": "down" },
"up": { "uv": [ 13, 0, 16, 3 ], "texture": "#all", "cullface": "up" },
"north": { "uv": [ 6, 0, 9, 16 ], "texture": "#all" },
"south": { "uv": [ 6, 0, 9, 16 ], "texture": "#all" },
"west": { "uv": [ 6, 0, 9, 16 ], "texture": "#all" },
"east": { "uv": [ 6, 0, 9, 16 ], "texture": "#all" }
}
}
]
}

View File

@ -0,0 +1,19 @@
{
"textures": {
"all": "block/bamboo_stalk",
"particle": "block/bamboo_stalk"
},
"elements": [
{ "from": [ 7, 0, 7 ],
"to": [ 9, 16, 9 ],
"faces": {
"down": { "uv": [ 13, 4, 15, 6 ], "texture": "#all", "cullface": "down" },
"up": { "uv": [ 13, 0, 15, 2], "texture": "#all", "cullface": "up" },
"north": { "uv": [ 9, 0, 11, 16 ], "texture": "#all" },
"south": { "uv": [ 9, 0, 11, 16 ], "texture": "#all" },
"west": { "uv": [ 9, 0, 11, 16 ], "texture": "#all" },
"east": { "uv": [ 9, 0, 11, 16 ], "texture": "#all" }
}
}
]
}

View File

@ -0,0 +1,19 @@
{
"textures": {
"all": "block/bamboo_stalk",
"particle": "block/bamboo_stalk"
},
"elements": [
{ "from": [ 6.5, 0, 6.5 ],
"to": [ 9.5, 16, 9.5 ],
"faces": {
"down": { "uv": [ 13, 4, 16, 7 ], "texture": "#all", "cullface": "down" },
"up": { "uv": [ 13, 0, 16, 3 ], "texture": "#all", "cullface": "up" },
"north": { "uv": [ 9, 0, 12, 16 ], "texture": "#all" },
"south": { "uv": [ 9, 0, 12, 16 ], "texture": "#all" },
"west": { "uv": [ 9, 0, 12, 16 ], "texture": "#all" },
"east": { "uv": [ 9, 0, 12, 16 ], "texture": "#all" }
}
}
]
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_column",
"textures": {
"end": "minecraft:block/bamboo_block_top",
"side": "minecraft:block/bamboo_block"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_column_uv_locked_x",
"textures": {
"end": "minecraft:block/bamboo_block_top",
"side": "minecraft:block/bamboo_block"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_column_uv_locked_y",
"textures": {
"end": "minecraft:block/bamboo_block_top",
"side": "minecraft:block/bamboo_block"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/cube_column_uv_locked_z",
"textures": {
"end": "minecraft:block/bamboo_block_top",
"side": "minecraft:block/bamboo_block"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/button",
"textures": {
"texture": "minecraft:block/bamboo_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/button_inventory",
"textures": {
"texture": "minecraft:block/bamboo_planks"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/button_pressed",
"textures": {
"texture": "minecraft:block/bamboo_planks"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_bottom_left",
"textures": {
"bottom": "minecraft:block/bamboo_door_bottom",
"top": "minecraft:block/bamboo_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_bottom_left_open",
"textures": {
"bottom": "minecraft:block/bamboo_door_bottom",
"top": "minecraft:block/bamboo_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_bottom_right",
"textures": {
"bottom": "minecraft:block/bamboo_door_bottom",
"top": "minecraft:block/bamboo_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_bottom_right_open",
"textures": {
"bottom": "minecraft:block/bamboo_door_bottom",
"top": "minecraft:block/bamboo_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_top_left",
"textures": {
"bottom": "minecraft:block/bamboo_door_bottom",
"top": "minecraft:block/bamboo_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_top_left_open",
"textures": {
"bottom": "minecraft:block/bamboo_door_bottom",
"top": "minecraft:block/bamboo_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_top_right",
"textures": {
"bottom": "minecraft:block/bamboo_door_bottom",
"top": "minecraft:block/bamboo_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/door_top_right_open",
"textures": {
"bottom": "minecraft:block/bamboo_door_bottom",
"top": "minecraft:block/bamboo_door_top"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/template_custom_fence_gate",
"textures": {
"particle": "minecraft:block/bamboo_fence_gate_particle",
"texture": "minecraft:block/bamboo_fence_gate"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/template_custom_fence_gate_open",
"textures": {
"particle": "minecraft:block/bamboo_fence_gate_particle",
"texture": "minecraft:block/bamboo_fence_gate"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/template_custom_fence_gate_wall",
"textures": {
"particle": "minecraft:block/bamboo_fence_gate_particle",
"texture": "minecraft:block/bamboo_fence_gate"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/template_custom_fence_gate_wall_open",
"textures": {
"particle": "minecraft:block/bamboo_fence_gate_particle",
"texture": "minecraft:block/bamboo_fence_gate"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/custom_fence_inventory",
"textures": {
"texture": "minecraft:block/bamboo_fence"
}
}

View File

@ -0,0 +1,7 @@
{
"parent": "minecraft:block/custom_fence_post",
"textures": {
"particle": "minecraft:block/bamboo_fence_particle",
"texture": "minecraft:block/bamboo_fence"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/custom_fence_side_east",
"textures": {
"texture": "minecraft:block/bamboo_fence"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/custom_fence_side_north",
"textures": {
"texture": "minecraft:block/bamboo_fence"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/custom_fence_side_south",
"textures": {
"texture": "minecraft:block/bamboo_fence"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "minecraft:block/custom_fence_side_west",
"textures": {
"texture": "minecraft:block/bamboo_fence"
}
}

View File

@ -0,0 +1,5 @@
{
"textures": {
"particle": "minecraft:block/bamboo_planks"
}
}

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