1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-10-30 13:13:00 +00:00

Fabric lol

- Add support for Fabric. This is mostly pretty simple, though does
   require a lot more mixins than Forge.

   Half this diff is due to data generators: we run them separately as
   some aspects (recipes mostly) are different between the loaders.

 - Add integration with Iris (same as our Oculus support) and REI
   (mostly the same as our JEI support).

 - Generic peripherals only support inventories (or rather
   InventoryStorage) right now. Supporting more of the Fabric storage
   API is going to be tricky due to the slotted nature of the API: maybe
   something to revisit after Transfer API V3 (V4?, I've lost track).

Note, this does /not/ mean I will be publishing a Fabric version of
CC:T. My plan is to rebase CC:R on top of this, hopefully simplifying
the maintenance work on their end and making the two mods a little more
consistent.
This commit is contained in:
Jonathan Coates
2022-11-10 19:32:13 +00:00
parent b2b58892e3
commit 8152f19b6e
363 changed files with 7264 additions and 75 deletions

View File

@@ -0,0 +1,71 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.client;
import dan200.computercraft.client.model.turtle.TurtleModelLoader;
import dan200.computercraft.shared.ModRegistry;
import dan200.computercraft.shared.network.client.ClientNetworkContext;
import dan200.computercraft.shared.peripheral.modem.wired.CableBlock;
import dan200.computercraft.shared.platform.NetworkHandler;
import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
import net.fabricmc.fabric.api.event.client.player.ClientPickBlockGatherCallback;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import static dan200.computercraft.core.util.Nullability.assertNonNull;
public class ComputerCraftClient {
public static void init() {
ClientPlayNetworking.registerGlobalReceiver(NetworkHandler.ID, (client, handler, buf, responseSender) -> {
var packet = NetworkHandler.decodeClient(buf);
if (packet != null) client.execute(() -> packet.handle(ClientNetworkContext.get()));
});
ClientRegistry.register();
ClientRegistry.registerItemColours(ColorProviderRegistry.ITEM::register);
ClientRegistry.registerBlockEntityRenderers(BlockEntityRendererRegistry::register);
ClientRegistry.registerMainThread();
ModelLoadingRegistry.INSTANCE.registerModelProvider((manager, out) -> ClientRegistry.registerExtraModels(out));
ModelLoadingRegistry.INSTANCE.registerResourceProvider(loader -> (path, ctx) -> TurtleModelLoader.load(loader, path));
BlockRenderLayerMap.INSTANCE.putBlock(ModRegistry.Blocks.MONITOR_NORMAL.get(), RenderType.cutout());
BlockRenderLayerMap.INSTANCE.putBlock(ModRegistry.Blocks.MONITOR_ADVANCED.get(), RenderType.cutout());
ClientTickEvents.START_CLIENT_TICK.register(client -> ClientHooks.onTick());
// This isn't 100% consistent with Forge, but not worth a mixin.
WorldRenderEvents.START.register(context -> ClientHooks.onRenderTick());
WorldRenderEvents.BLOCK_OUTLINE.register((context, hitResult) -> {
var hit = Minecraft.getInstance().hitResult;
if (hit instanceof BlockHitResult blockHit && blockHit.getBlockPos().equals(hitResult.blockPos())) {
return !ClientHooks.drawHighlight(context.matrixStack(), assertNonNull(context.consumers()), context.camera(), blockHit);
} else {
return true;
}
});
// Easier to hook in as an event than use BlockPickInteractionAware.
ClientPickBlockGatherCallback.EVENT.register((player, hit) -> {
if (hit.getType() != HitResult.Type.BLOCK) return ItemStack.EMPTY;
var pos = ((BlockHitResult) hit).getBlockPos();
var level = Minecraft.getInstance().level;
var state = level.getBlockState(pos);
if (!(state.getBlock() instanceof CableBlock cable)) return ItemStack.EMPTY;
return cable.getCloneItemStack(state, hit, level, pos, player);
});
}
}

View File

@@ -0,0 +1,72 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.client.integration;
import com.google.auto.service.AutoService;
import com.mojang.blaze3d.vertex.VertexFormat;
import dan200.computercraft.client.render.RenderTypes;
import dan200.computercraft.client.render.text.DirectFixedWidthFontRenderer;
import net.fabricmc.loader.api.FabricLoader;
import net.irisshaders.iris.api.v0.IrisApi;
import net.irisshaders.iris.api.v0.IrisTextVertexSink;
import java.nio.ByteBuffer;
import java.util.Optional;
import java.util.function.IntFunction;
@AutoService(ShaderMod.Provider.class)
public class IrisShaderMod implements ShaderMod.Provider {
@Override
public Optional<ShaderMod> get() {
return FabricLoader.getInstance().isModLoaded("iris") ? Optional.of(new Impl()) : Optional.empty();
}
private static final class Impl extends ShaderMod {
@Override
public boolean isRenderingShadowPass() {
return IrisApi.getInstance().isRenderingShadowPass();
}
@Override
public boolean isShaderMod() {
return true;
}
@Override
public DirectFixedWidthFontRenderer.QuadEmitter getQuadEmitter(int vertexCount, IntFunction<ByteBuffer> makeBuffer) {
return IrisApi.getInstance().getMinorApiRevision() >= 1
? new IrisQuadEmitter(vertexCount, makeBuffer)
: super.getQuadEmitter(vertexCount, makeBuffer);
}
private static final class IrisQuadEmitter implements DirectFixedWidthFontRenderer.QuadEmitter {
private final IrisTextVertexSink sink;
private IrisQuadEmitter(int vertexCount, IntFunction<ByteBuffer> makeBuffer) {
sink = IrisApi.getInstance().createTextVertexSink(vertexCount, makeBuffer);
}
@Override
public VertexFormat format() {
return sink.getUnderlyingVertexFormat();
}
@Override
public ByteBuffer buffer() {
return sink.getUnderlyingByteBuffer();
}
@Override
public void quad(float x1, float y1, float x2, float y2, float z, byte[] rgba, float u1, float v1, float u2, float v2) {
sink.quad(x1, y1, x2, y2, z, pack(rgba[0], rgba[1], rgba[2], rgba[3]), u1, v1, u2, v2, RenderTypes.FULL_BRIGHT_LIGHTMAP);
}
private static int pack(int r, int g, int b, int a) {
return (a & 255) << 24 | (b & 255) << 16 | (g & 255) << 8 | r & 255;
}
}
}
}

View File

@@ -0,0 +1,55 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.client.integration.rei;
import dan200.computercraft.api.turtle.TurtleSide;
import dan200.computercraft.shared.ModRegistry;
import dan200.computercraft.shared.integration.RecipeModHelpers;
import dan200.computercraft.shared.pocket.items.PocketComputerItem;
import dan200.computercraft.shared.turtle.items.TurtleItem;
import dev.architectury.event.EventResult;
import me.shedaniel.rei.api.client.plugins.REIClientPlugin;
import me.shedaniel.rei.api.client.registry.display.DisplayRegistry;
import me.shedaniel.rei.api.common.entry.comparison.ItemComparatorRegistry;
import me.shedaniel.rei.plugin.common.BuiltinPlugin;
/**
* REI integration for ComputerCraft.
* <p>
* This is Fabric-only for now - getting the common jar working outside of architectury is awkward.
*/
public class REIComputerCraft implements REIClientPlugin {
@Override
public void registerItemComparators(ItemComparatorRegistry registry) {
registry.register((context, stack) -> {
var turtle = (TurtleItem) stack.getItem();
long hash = 1;
var left = turtle.getUpgrade(stack, TurtleSide.LEFT);
var right = turtle.getUpgrade(stack, TurtleSide.RIGHT);
if (left != null) hash = hash * 31 + left.getUpgradeID().hashCode();
if (right != null) hash = hash * 31 + right.getUpgradeID().hashCode();
return hash;
}, ModRegistry.Items.TURTLE_NORMAL.get(), ModRegistry.Items.TURTLE_ADVANCED.get());
registry.register((context, stack) -> {
var upgrade = PocketComputerItem.getUpgrade(stack);
return upgrade == null ? 1 : upgrade.getUpgradeID().hashCode();
}, ModRegistry.Items.POCKET_COMPUTER_NORMAL.get(), ModRegistry.Items.POCKET_COMPUTER_ADVANCED.get());
}
@Override
public void registerDisplays(DisplayRegistry registry) {
registry.registerDisplayGenerator(BuiltinPlugin.CRAFTING, new UpgradeDisplayGenerator());
// Hide all upgrade recipes
registry.registerVisibilityPredicate((category, display) ->
display.getDisplayLocation().map(RecipeModHelpers::shouldRemoveRecipe).orElse(false)
? EventResult.interruptFalse() : EventResult.pass());
}
}

View File

@@ -0,0 +1,32 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.client.integration.rei;
import dan200.computercraft.shared.integration.UpgradeRecipeGenerator;
import me.shedaniel.rei.api.client.registry.display.DynamicDisplayGenerator;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes;
import me.shedaniel.rei.plugin.common.displays.crafting.DefaultCraftingDisplay;
import java.util.List;
import java.util.Optional;
/**
* Provides custom recipe and usage hints for pocket/turtle upgrades.
*/
class UpgradeDisplayGenerator implements DynamicDisplayGenerator<DefaultCraftingDisplay<?>> {
private final UpgradeRecipeGenerator<DefaultCraftingDisplay<?>> resolver = new UpgradeRecipeGenerator<>(DefaultCraftingDisplay::of);
@Override
public Optional<List<DefaultCraftingDisplay<?>>> getRecipeFor(EntryStack<?> entry) {
return entry.getType() == VanillaEntryTypes.ITEM ? Optional.of(resolver.findRecipesWithOutput(entry.castValue())) : Optional.empty();
}
@Override
public Optional<List<DefaultCraftingDisplay<?>>> getUsageFor(EntryStack<?> entry) {
return entry.getType() == VanillaEntryTypes.ITEM ? Optional.of(resolver.findRecipesWithInput(entry.castValue())) : Optional.empty();
}
}

View File

@@ -0,0 +1,74 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.client.model;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.block.state.BlockState;
import javax.annotation.Nullable;
import java.util.*;
import java.util.stream.Stream;
/**
* A {@link BakedModel} formed from two or more other models stitched together.
*/
public class CompositeBakedModel extends CustomBakedModel {
private final List<BakedModel> models;
public CompositeBakedModel(List<BakedModel> models) {
super(models.get(0));
this.models = models;
}
@Override
public List<BakedQuad> getQuads(@Nullable BlockState blockState, @Nullable Direction face, RandomSource rand) {
@SuppressWarnings({ "unchecked", "rawtypes" })
List<BakedQuad>[] quads = new List[models.size()];
var i = 0;
for (var model : models) quads[i++] = model.getQuads(blockState, face, rand);
return new ConcatListView(quads);
}
private static final class ConcatListView extends AbstractList<BakedQuad> {
private final List<BakedQuad>[] quads;
private ConcatListView(List<BakedQuad>[] quads) {
this.quads = quads;
}
@Override
public Iterator<BakedQuad> iterator() {
return stream().iterator();
}
@Override
public Stream<BakedQuad> stream() {
return Arrays.stream(quads).flatMap(Collection::stream);
}
@Override
public BakedQuad get(int index) {
var i = index;
for (var modelQuads : quads) {
if (i < modelQuads.size()) return modelQuads.get(i);
i -= modelQuads.size();
}
throw new IndexOutOfBoundsException(i);
}
@Override
public int size() {
var size = 0;
for (var modelQuads : quads) size += modelQuads.size();
return size;
}
}
}

View File

@@ -0,0 +1,43 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.client.model;
import net.fabricmc.fabric.api.renderer.v1.model.ForwardingBakedModel;
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState;
import javax.annotation.Nullable;
import java.util.List;
import java.util.function.Supplier;
/**
* A subclass of {@link ForwardingBakedModel} which doesn't forward rendering.
*/
public abstract class CustomBakedModel extends ForwardingBakedModel {
public CustomBakedModel(BakedModel wrapped) {
this.wrapped = wrapped;
}
@Override
public abstract List<BakedQuad> getQuads(@Nullable BlockState blockState, @Nullable Direction face, RandomSource rand);
@Override
public final void emitBlockQuads(BlockAndTintGetter blockView, BlockState state, BlockPos pos, Supplier<RandomSource> randomSupplier, RenderContext context) {
context.fallbackConsumer().accept(this);
}
@Override
public final void emitItemQuads(ItemStack stack, Supplier<RandomSource> randomSupplier, RenderContext context) {
context.fallbackConsumer().accept(this);
}
}

View File

@@ -0,0 +1,89 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.client.model;
import com.mojang.blaze3d.vertex.DefaultVertexFormat;
import com.mojang.blaze3d.vertex.VertexFormat;
import com.mojang.blaze3d.vertex.VertexFormatElement;
import com.mojang.math.Matrix4f;
import com.mojang.math.Transformation;
import com.mojang.math.Vector4f;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.core.Direction;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.block.state.BlockState;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
/**
* A {@link BakedModel} which applies a transformation matrix to its underlying quads.
*/
public class TransformedBakedModel extends CustomBakedModel {
private static final int STRIDE = DefaultVertexFormat.BLOCK.getIntegerSize();
private static final int POS_OFFSET = findOffset(DefaultVertexFormat.BLOCK, DefaultVertexFormat.ELEMENT_POSITION);
private final Matrix4f transformation;
private @Nullable TransformedQuads cache;
public TransformedBakedModel(BakedModel model, Transformation transformation) {
super(model);
this.transformation = transformation.getMatrix();
}
@Override
public List<BakedQuad> getQuads(@Nullable BlockState blockState, @Nullable Direction face, RandomSource rand) {
var cache = this.cache;
var quads = wrapped.getQuads(blockState, face, rand);
if (quads.isEmpty()) return List.of();
// We do some basic caching here to avoid recomputing every frame. Most turtle models don't have culled faces,
// so it's not worth being smarter here.
if (cache != null && quads.equals(cache.original())) return cache.transformed();
List<BakedQuad> transformed = new ArrayList<>(quads.size());
for (var quad : quads) transformed.add(transformQuad(quad));
this.cache = new TransformedQuads(quads, transformed);
return transformed;
}
private BakedQuad transformQuad(BakedQuad quad) {
var vertexData = quad.getVertices().clone();
for (var i = 0; i < 4; i++) {
// Apply the matrix to our position
var start = STRIDE * i + POS_OFFSET;
var x = Float.intBitsToFloat(vertexData[start]);
var y = Float.intBitsToFloat(vertexData[start + 1]);
var z = Float.intBitsToFloat(vertexData[start + 2]);
// Transform the position
var pos = new Vector4f(x, y, z, 1);
pos.transform(transformation);
pos.perspectiveDivide();
vertexData[start] = Float.floatToRawIntBits(pos.x());
vertexData[start + 1] = Float.floatToRawIntBits(pos.y());
vertexData[start + 2] = Float.floatToRawIntBits(pos.z());
}
return new BakedQuad(vertexData, quad.getTintIndex(), quad.getDirection(), quad.getSprite(), quad.isShade());
}
private record TransformedQuads(List<BakedQuad> original, List<BakedQuad> transformed) {
}
private static int findOffset(VertexFormat format, VertexFormatElement element) {
var offset = 0;
for (var other : format.getElements()) {
if (other == element) return offset / Integer.BYTES;
offset += element.getByteSize();
}
throw new IllegalArgumentException("Cannot find " + element + " in " + format);
}
}

View File

@@ -0,0 +1,46 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.client.model.turtle;
import dan200.computercraft.client.model.CompositeBakedModel;
import dan200.computercraft.client.model.TransformedBakedModel;
import net.fabricmc.fabric.api.renderer.v1.model.ForwardingBakedModel;
import net.minecraft.client.multiplayer.ClientLevel;
import net.minecraft.client.renderer.block.model.ItemOverrides;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.ItemStack;
import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.Map;
public class TurtleModel extends ForwardingBakedModel {
private final TurtleModelParts parts;
private final Map<TurtleModelParts.Combination, BakedModel> cachedModels = new HashMap<>();
private final ItemOverrides overrides = new ItemOverrides() {
@Override
public BakedModel resolve(BakedModel model, ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed) {
return cachedModels.computeIfAbsent(parts.getCombination(stack), TurtleModel.this::buildModel);
}
};
public TurtleModel(BakedModel familyModel, BakedModel colourModel) {
wrapped = familyModel;
parts = new TurtleModelParts(familyModel, colourModel, TransformedBakedModel::new);
}
@Override
public ItemOverrides getOverrides() {
return overrides;
}
private BakedModel buildModel(TurtleModelParts.Combination combo) {
var models = parts.buildModel(combo);
return models.size() == 1 ? models.get(0) : new CompositeBakedModel(models);
}
}

View File

@@ -0,0 +1,78 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.client.model.turtle;
import com.mojang.datafixers.util.Pair;
import dan200.computercraft.api.ComputerCraftAPI;
import net.fabricmc.fabric.api.client.model.ModelProviderException;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.resources.model.*;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.resources.ResourceManager;
import net.minecraft.util.GsonHelper;
import javax.annotation.Nullable;
import java.io.IOException;
import java.util.*;
import java.util.function.Function;
public final class TurtleModelLoader {
private static final ResourceLocation COLOUR_TURTLE_MODEL = new ResourceLocation(ComputerCraftAPI.MOD_ID, "block/turtle_colour");
private TurtleModelLoader() {
}
public static @Nullable UnbakedModel load(ResourceManager resources, ResourceLocation path) throws ModelProviderException {
if (!path.getNamespace().equals(ComputerCraftAPI.MOD_ID)) return null;
if (!path.getPath().equals("item/turtle_normal") && !path.getPath().equals("item/turtle_advanced")) {
return null;
}
try (var reader = resources.openAsReader(new ResourceLocation(path.getNamespace(), "models/" + path.getPath() + ".json"))) {
var modelContents = GsonHelper.parse(reader).getAsJsonObject();
var loader = GsonHelper.getAsString(modelContents, "loader", null);
if (!Objects.equals(loader, ComputerCraftAPI.MOD_ID + ":turtle")) return null;
var model = new ResourceLocation(GsonHelper.getAsString(modelContents, "model"));
return new Unbaked(model);
} catch (IOException e) {
throw new ModelProviderException("Failed loading model " + path, e);
}
}
public static final class Unbaked implements UnbakedModel {
private final ResourceLocation model;
private Unbaked(ResourceLocation model) {
this.model = model;
}
@Override
public Collection<ResourceLocation> getDependencies() {
return List.of(model, COLOUR_TURTLE_MODEL);
}
@Override
public Collection<Material> getMaterials(Function<ResourceLocation, UnbakedModel> modelGetter, Set<Pair<String, String>> missingTextureErrors) {
Set<Material> materials = new HashSet<>();
materials.addAll(modelGetter.apply(model).getMaterials(modelGetter, missingTextureErrors));
materials.addAll(modelGetter.apply(COLOUR_TURTLE_MODEL).getMaterials(modelGetter, missingTextureErrors));
return materials;
}
@Override
public BakedModel bake(ModelBakery bakery, Function<Material, TextureAtlasSprite> spriteGetter, ModelState transform, ResourceLocation location) {
var mainModel = bakery.bake(model, transform);
if (mainModel == null) throw new NullPointerException(model + " failed to bake");
var colourModel = bakery.bake(COLOUR_TURTLE_MODEL, transform);
if (colourModel == null) throw new NullPointerException(COLOUR_TURTLE_MODEL + " failed to bake");
return new TurtleModel(mainModel, colourModel);
}
}
}

View File

@@ -0,0 +1,25 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.client.platform;
import com.google.auto.service.AutoService;
import dan200.computercraft.shared.network.client.ClientNetworkContext;
import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos;
import net.minecraft.network.chat.Component;
import net.minecraft.sounds.SoundEvent;
import javax.annotation.Nullable;
@AutoService(ClientNetworkContext.class)
public class ClientNetworkHandlerImpl extends AbstractClientNetworkContext {
@Override
public void handlePlayRecord(BlockPos pos, @Nullable SoundEvent sound, @Nullable String name) {
var mc = Minecraft.getInstance();
mc.levelRenderer.playStreamingMusic(sound, pos);
if (name != null) mc.gui.setNowPlaying(Component.literal(name));
}
}

View File

@@ -0,0 +1,30 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.client.platform;
import com.google.auto.service.AutoService;
import dan200.computercraft.shared.network.NetworkMessage;
import dan200.computercraft.shared.network.server.ServerNetworkContext;
import dan200.computercraft.shared.platform.NetworkHandler;
import net.fabricmc.fabric.api.client.model.BakedModelManagerHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.client.resources.model.ModelManager;
import net.minecraft.resources.ResourceLocation;
@AutoService(dan200.computercraft.impl.client.ClientPlatformHelper.class)
public class ClientPlatformHelperImpl implements ClientPlatformHelper {
@Override
public void sendToServer(NetworkMessage<ServerNetworkContext> message) {
Minecraft.getInstance().player.connection.send(NetworkHandler.encodeServer(message));
}
@Override
public BakedModel getModel(ModelManager manager, ResourceLocation location) {
var model = BakedModelManagerHelper.getModel(manager, location);
return model == null ? manager.getMissingModel() : model;
}
}

View File

@@ -0,0 +1,67 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.mixin.client;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import dan200.computercraft.client.ClientHooks;
import net.minecraft.client.renderer.block.BlockModelShaper;
import net.minecraft.client.renderer.block.BlockRenderDispatcher;
import net.minecraft.client.renderer.block.ModelBlockRenderer;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.core.BlockPos;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.state.BlockState;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
/**
* Provides custom block breaking progress for modems, so it only applies to the current part.
*
* @see BlockRenderDispatcher#renderBreakingTexture(BlockState, BlockPos, BlockAndTintGetter, PoseStack, VertexConsumer)
*/
@Mixin(BlockRenderDispatcher.class)
class BlockRenderDispatcherMixin {
@Shadow
@Final
private RandomSource random;
@Shadow
@Final
private BlockModelShaper blockModelShaper;
@Shadow
@Final
private ModelBlockRenderer modelRenderer;
@Inject(
method = "renderBreakingTexture",
at = @At("HEAD"),
cancellable = true,
require = 0 // This isn't critical functionality, so don't worry if we can't apply it.
)
@SuppressWarnings("UnusedMethod")
private void renderBlockDamage(
BlockState state, BlockPos pos, BlockAndTintGetter world, PoseStack pose, VertexConsumer buffers,
CallbackInfo info
) {
var newState = ClientHooks.getBlockBreakingState(state, pos);
if (newState != null) {
info.cancel();
var model = blockModelShaper.getBlockModel(newState);
modelRenderer.tesselateBlock(
world, model, newState, pos, pose, buffers, true, random, newState.getSeed(pos),
OverlayTexture.NO_OVERLAY
);
}
}
}

View File

@@ -0,0 +1,24 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.mixin.client;
import dan200.computercraft.client.ClientHooks;
import net.minecraft.client.gui.components.DebugScreenOverlay;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.util.List;
@Mixin(DebugScreenOverlay.class)
class DebugScreenOverlayMixin {
@Inject(method = "getSystemInformation", at = @At("RETURN"))
@SuppressWarnings("UnusedMethod")
private void appendDebugInfo(CallbackInfoReturnable<List<String>> cir) {
ClientHooks.addDebugInfo(cir.getReturnValue()::add);
}
}

View File

@@ -0,0 +1,42 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.mixin.client;
import dan200.computercraft.client.ClientRegistry;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.client.renderer.ShaderInstance;
import net.minecraft.server.packs.resources.ResourceManager;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.util.Map;
@Mixin(GameRenderer.class)
class GameRendererMixin {
@Final
@Shadow
@SuppressWarnings("NullAway")
private Map<String, ShaderInstance> shaders;
@Inject(method = "reloadShaders", at = @At(value = "TAIL"))
@SuppressWarnings("UnusedMethod")
private void onReloadShaders(ResourceManager resourceManager, CallbackInfo ci) {
try {
ClientRegistry.registerShaders(resourceManager, (shader, callback) -> {
shaders.put(shader.getName(), shader);
callback.accept(shader);
});
} catch (IOException e) {
throw new UncheckedIOException("Could not reload shaders", e);
}
}
}

View File

@@ -0,0 +1,30 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.mixin.client;
import com.mojang.blaze3d.vertex.PoseStack;
import dan200.computercraft.client.ClientHooks;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.entity.ItemFrameRenderer;
import net.minecraft.world.entity.decoration.ItemFrame;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(ItemFrameRenderer.class)
@SuppressWarnings("UnusedMethod")
class ItemFrameRendererMixin {
@Inject(
method = "render(Lnet/minecraft/world/entity/decoration/ItemFrame;FFLcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;I)V",
at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack;mulPose(Lcom/mojang/math/Quaternion;)V", ordinal = 2, shift = At.Shift.AFTER),
cancellable = true
)
@SuppressWarnings("UnusedMethod")
private void render(ItemFrame entity, float yaw, float partialTicks, PoseStack pose, MultiBufferSource buffers, int light, CallbackInfo ci) {
if (ClientHooks.onRenderItemFrame(pose, buffers, entity, entity.getItem(), light)) ci.cancel();
}
}

View File

@@ -0,0 +1,32 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.mixin.client;
import com.mojang.blaze3d.vertex.PoseStack;
import dan200.computercraft.client.ClientHooks;
import net.minecraft.client.player.AbstractClientPlayer;
import net.minecraft.client.renderer.ItemInHandRenderer;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.item.ItemStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(ItemInHandRenderer.class)
class ItemInHandRendererMixin {
@Inject(method = "renderArmWithItem", at = @At("HEAD"), cancellable = true)
@SuppressWarnings("UnusedMethod")
private void onRenderItem(
AbstractClientPlayer player, float partialTicks, float pitch, InteractionHand hand, float swingProgress, ItemStack stack,
float equippedProgress, PoseStack transform, MultiBufferSource buffer, int combinedLight, CallbackInfo ci
) {
if (ClientHooks.onRenderHeldItem(transform, buffer, combinedLight, hand, pitch, equippedProgress, swingProgress, stack)) {
ci.cancel();
}
}
}

View File

@@ -0,0 +1,30 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.mixin.client;
import dan200.computercraft.client.ClientHooks;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.multiplayer.ClientLevel;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(Minecraft.class)
class MinecraftMixin {
@Inject(method = "clearLevel(Lnet/minecraft/client/gui/screens/Screen;)V", at = @At("HEAD"))
@SuppressWarnings("UnusedMethod")
private void clearLevel(Screen screen, CallbackInfo ci) {
ClientHooks.onWorldUnload();
}
@Inject(method = "setLevel", at = @At("HEAD"))
@SuppressWarnings("UnusedMethod")
private void setLevel(ClientLevel screen, CallbackInfo ci) {
ClientHooks.onWorldUnload();
}
}

View File

@@ -0,0 +1,39 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.mixin.client;
import dan200.computercraft.shared.FabricCommonHooks;
import net.minecraft.client.Minecraft;
import net.minecraft.client.multiplayer.MultiPlayerGameMode;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
@Mixin(MultiPlayerGameMode.class)
class MultiPlayerGameModeMixin {
@Shadow
@Final
private Minecraft minecraft;
@Inject(
method = "destroyBlock",
at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;setBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)Z"),
cancellable = true,
locals = LocalCapture.CAPTURE_FAILHARD
)
@SuppressWarnings("UnusedMethod")
private void onBlockBreak(BlockPos pos, CallbackInfoReturnable<Boolean> cir, Level level, BlockState state, Block block) {
if (!FabricCommonHooks.onBlockDestroy(level, minecraft.player, pos, state, null)) cir.setReturnValue(true);
}
}

View File

@@ -0,0 +1,40 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2022. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.mixin.client;
import com.mojang.blaze3d.audio.Channel;
import dan200.computercraft.client.sound.SpeakerManager;
import net.minecraft.client.resources.sounds.SoundInstance;
import net.minecraft.client.sounds.AudioStream;
import net.minecraft.client.sounds.SoundEngine;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import javax.annotation.Nullable;
import static dan200.computercraft.core.util.Nullability.assertNonNull;
@Mixin(SoundEngine.class)
class SoundEngineMixin {
@Nullable
@Unique
private static SoundEngine self;
@Inject(method = "play", at = @At(value = "HEAD"))
@SuppressWarnings("UnusedMethod")
private void playSound(SoundInstance sound, CallbackInfo ci) {
self = (SoundEngine) (Object) this;
}
@Inject(at = @At("TAIL"), method = "method_19755")
@SuppressWarnings("UnusedMethod")
private static void onStream(AudioStream stream, Channel channel, CallbackInfo ci) {
SpeakerManager.onPlayStreaming(assertNonNull(self), channel, stream);
}
}

View File

@@ -0,0 +1,19 @@
{
"required": true,
"package": "dan200.computercraft.mixin.client",
"minVersion": "0.8",
"compatibilityLevel": "JAVA_17",
"injectors": {
"defaultRequire": 1
},
"client": [
"BlockRenderDispatcherMixin",
"DebugScreenOverlayMixin",
"GameRendererMixin",
"ItemFrameRendererMixin",
"ItemInHandRendererMixin",
"MinecraftMixin",
"MultiPlayerGameModeMixin",
"SoundEngineMixin"
]
}

View File

@@ -0,0 +1,125 @@
{
"multipart": [
{
"apply": {"model": "computercraft:block/cable_core_facing", "x": 90},
"when": {
"OR": [
{"cable": "true", "east": "false", "north": "false", "south": "false", "up": "true", "west": "false"},
{"cable": "true", "down": "true", "east": "false", "north": "false", "south": "false", "west": "false"}
]
}
},
{
"apply": {"model": "computercraft:block/cable_core_facing", "y": 0},
"when": {
"OR": [
{
"cable": "true",
"down": "false",
"east": "false",
"north": "false",
"south": "false",
"up": "false",
"west": "false"
},
{"cable": "true", "down": "false", "east": "false", "north": "true", "up": "false", "west": "false"},
{"cable": "true", "down": "false", "east": "false", "south": "true", "up": "false", "west": "false"}
]
}
},
{
"apply": {"model": "computercraft:block/cable_core_facing", "y": 90},
"when": {
"OR": [
{"cable": "true", "down": "false", "east": "true", "north": "false", "south": "false", "up": "false"},
{"cable": "true", "down": "false", "north": "false", "south": "false", "up": "false", "west": "true"}
]
}
},
{
"apply": {"model": "computercraft:block/cable_core_any"},
"when": {
"OR": [
{"cable": "true", "down": "true", "north": "true"},
{"cable": "true", "down": "true", "south": "true"},
{"cable": "true", "down": "true", "west": "true"},
{"cable": "true", "down": "true", "east": "true"},
{"cable": "true", "north": "true", "up": "true"},
{"cable": "true", "south": "true", "up": "true"},
{"cable": "true", "up": "true", "west": "true"},
{"cable": "true", "east": "true", "up": "true"},
{"cable": "true", "north": "true", "west": "true"},
{"cable": "true", "east": "true", "north": "true"},
{"cable": "true", "south": "true", "west": "true"},
{"cable": "true", "east": "true", "south": "true"}
]
}
},
{"apply": {"model": "computercraft:block/cable_arm", "x": 270, "y": 0}, "when": {"down": "true"}},
{"apply": {"model": "computercraft:block/cable_arm", "x": 90, "y": 0}, "when": {"up": "true"}},
{"apply": {"model": "computercraft:block/cable_arm", "x": 0, "y": 180}, "when": {"north": "true"}},
{"apply": {"model": "computercraft:block/cable_arm", "x": 0, "y": 0}, "when": {"south": "true"}},
{"apply": {"model": "computercraft:block/cable_arm", "x": 0, "y": 90}, "when": {"west": "true"}},
{"apply": {"model": "computercraft:block/cable_arm", "x": 0, "y": 270}, "when": {"east": "true"}},
{"apply": {"model": "computercraft:block/wired_modem_off", "x": 90, "y": 0}, "when": {"modem": "down_off"}},
{
"apply": {"model": "computercraft:block/wired_modem_off_peripheral", "x": 90, "y": 0},
"when": {"modem": "down_off_peripheral"}
},
{"apply": {"model": "computercraft:block/wired_modem_on", "x": 90, "y": 0}, "when": {"modem": "down_on"}},
{
"apply": {"model": "computercraft:block/wired_modem_on_peripheral", "x": 90, "y": 0},
"when": {"modem": "down_on_peripheral"}
},
{"apply": {"model": "computercraft:block/wired_modem_off", "x": 270, "y": 0}, "when": {"modem": "up_off"}},
{
"apply": {"model": "computercraft:block/wired_modem_off_peripheral", "x": 270, "y": 0},
"when": {"modem": "up_off_peripheral"}
},
{"apply": {"model": "computercraft:block/wired_modem_on", "x": 270, "y": 0}, "when": {"modem": "up_on"}},
{
"apply": {"model": "computercraft:block/wired_modem_on_peripheral", "x": 270, "y": 0},
"when": {"modem": "up_on_peripheral"}
},
{"apply": {"model": "computercraft:block/wired_modem_off", "x": 0, "y": 0}, "when": {"modem": "north_off"}},
{
"apply": {"model": "computercraft:block/wired_modem_off_peripheral", "x": 0, "y": 0},
"when": {"modem": "north_off_peripheral"}
},
{"apply": {"model": "computercraft:block/wired_modem_on", "x": 0, "y": 0}, "when": {"modem": "north_on"}},
{
"apply": {"model": "computercraft:block/wired_modem_on_peripheral", "x": 0, "y": 0},
"when": {"modem": "north_on_peripheral"}
},
{"apply": {"model": "computercraft:block/wired_modem_off", "x": 0, "y": 180}, "when": {"modem": "south_off"}},
{
"apply": {"model": "computercraft:block/wired_modem_off_peripheral", "x": 0, "y": 180},
"when": {"modem": "south_off_peripheral"}
},
{"apply": {"model": "computercraft:block/wired_modem_on", "x": 0, "y": 180}, "when": {"modem": "south_on"}},
{
"apply": {"model": "computercraft:block/wired_modem_on_peripheral", "x": 0, "y": 180},
"when": {"modem": "south_on_peripheral"}
},
{"apply": {"model": "computercraft:block/wired_modem_off", "x": 0, "y": 270}, "when": {"modem": "west_off"}},
{
"apply": {"model": "computercraft:block/wired_modem_off_peripheral", "x": 0, "y": 270},
"when": {"modem": "west_off_peripheral"}
},
{"apply": {"model": "computercraft:block/wired_modem_on", "x": 0, "y": 270}, "when": {"modem": "west_on"}},
{
"apply": {"model": "computercraft:block/wired_modem_on_peripheral", "x": 0, "y": 270},
"when": {"modem": "west_on_peripheral"}
},
{"apply": {"model": "computercraft:block/wired_modem_off", "x": 0, "y": 90}, "when": {"modem": "east_off"}},
{
"apply": {"model": "computercraft:block/wired_modem_off_peripheral", "x": 0, "y": 90},
"when": {"modem": "east_off_peripheral"}
},
{"apply": {"model": "computercraft:block/wired_modem_on", "x": 0, "y": 90}, "when": {"modem": "east_on"}},
{
"apply": {"model": "computercraft:block/wired_modem_on_peripheral", "x": 0, "y": 90},
"when": {"modem": "east_on_peripheral"}
}
]
}

View File

@@ -0,0 +1,16 @@
{
"variants": {
"facing=east,state=blinking": {"model": "computercraft:block/computer_advanced_blinking", "y": 90},
"facing=east,state=off": {"model": "computercraft:block/computer_advanced_off", "y": 90},
"facing=east,state=on": {"model": "computercraft:block/computer_advanced_on", "y": 90},
"facing=north,state=blinking": {"model": "computercraft:block/computer_advanced_blinking", "y": 0},
"facing=north,state=off": {"model": "computercraft:block/computer_advanced_off", "y": 0},
"facing=north,state=on": {"model": "computercraft:block/computer_advanced_on", "y": 0},
"facing=south,state=blinking": {"model": "computercraft:block/computer_advanced_blinking", "y": 180},
"facing=south,state=off": {"model": "computercraft:block/computer_advanced_off", "y": 180},
"facing=south,state=on": {"model": "computercraft:block/computer_advanced_on", "y": 180},
"facing=west,state=blinking": {"model": "computercraft:block/computer_advanced_blinking", "y": 270},
"facing=west,state=off": {"model": "computercraft:block/computer_advanced_off", "y": 270},
"facing=west,state=on": {"model": "computercraft:block/computer_advanced_on", "y": 270}
}
}

View File

@@ -0,0 +1,16 @@
{
"variants": {
"facing=east,state=blinking": {"model": "computercraft:block/computer_command_blinking", "y": 90},
"facing=east,state=off": {"model": "computercraft:block/computer_command_off", "y": 90},
"facing=east,state=on": {"model": "computercraft:block/computer_command_on", "y": 90},
"facing=north,state=blinking": {"model": "computercraft:block/computer_command_blinking", "y": 0},
"facing=north,state=off": {"model": "computercraft:block/computer_command_off", "y": 0},
"facing=north,state=on": {"model": "computercraft:block/computer_command_on", "y": 0},
"facing=south,state=blinking": {"model": "computercraft:block/computer_command_blinking", "y": 180},
"facing=south,state=off": {"model": "computercraft:block/computer_command_off", "y": 180},
"facing=south,state=on": {"model": "computercraft:block/computer_command_on", "y": 180},
"facing=west,state=blinking": {"model": "computercraft:block/computer_command_blinking", "y": 270},
"facing=west,state=off": {"model": "computercraft:block/computer_command_off", "y": 270},
"facing=west,state=on": {"model": "computercraft:block/computer_command_on", "y": 270}
}
}

View File

@@ -0,0 +1,16 @@
{
"variants": {
"facing=east,state=blinking": {"model": "computercraft:block/computer_normal_blinking", "y": 90},
"facing=east,state=off": {"model": "computercraft:block/computer_normal_off", "y": 90},
"facing=east,state=on": {"model": "computercraft:block/computer_normal_on", "y": 90},
"facing=north,state=blinking": {"model": "computercraft:block/computer_normal_blinking", "y": 0},
"facing=north,state=off": {"model": "computercraft:block/computer_normal_off", "y": 0},
"facing=north,state=on": {"model": "computercraft:block/computer_normal_on", "y": 0},
"facing=south,state=blinking": {"model": "computercraft:block/computer_normal_blinking", "y": 180},
"facing=south,state=off": {"model": "computercraft:block/computer_normal_off", "y": 180},
"facing=south,state=on": {"model": "computercraft:block/computer_normal_on", "y": 180},
"facing=west,state=blinking": {"model": "computercraft:block/computer_normal_blinking", "y": 270},
"facing=west,state=off": {"model": "computercraft:block/computer_normal_off", "y": 270},
"facing=west,state=on": {"model": "computercraft:block/computer_normal_on", "y": 270}
}
}

View File

@@ -0,0 +1,16 @@
{
"variants": {
"facing=east,state=empty": {"model": "computercraft:block/disk_drive_empty", "y": 90},
"facing=east,state=full": {"model": "computercraft:block/disk_drive_full", "y": 90},
"facing=east,state=invalid": {"model": "computercraft:block/disk_drive_invalid", "y": 90},
"facing=north,state=empty": {"model": "computercraft:block/disk_drive_empty", "y": 0},
"facing=north,state=full": {"model": "computercraft:block/disk_drive_full", "y": 0},
"facing=north,state=invalid": {"model": "computercraft:block/disk_drive_invalid", "y": 0},
"facing=south,state=empty": {"model": "computercraft:block/disk_drive_empty", "y": 180},
"facing=south,state=full": {"model": "computercraft:block/disk_drive_full", "y": 180},
"facing=south,state=invalid": {"model": "computercraft:block/disk_drive_invalid", "y": 180},
"facing=west,state=empty": {"model": "computercraft:block/disk_drive_empty", "y": 270},
"facing=west,state=full": {"model": "computercraft:block/disk_drive_full", "y": 270},
"facing=west,state=invalid": {"model": "computercraft:block/disk_drive_invalid", "y": 270}
}
}

View File

@@ -0,0 +1,268 @@
{
"variants": {
"facing=east,orientation=down,state=d": {"model": "computercraft:block/monitor_advanced_d", "x": 90, "y": 90},
"facing=east,orientation=down,state=l": {"model": "computercraft:block/monitor_advanced_l", "x": 90, "y": 90},
"facing=east,orientation=down,state=ld": {"model": "computercraft:block/monitor_advanced_ld", "x": 90, "y": 90},
"facing=east,orientation=down,state=lr": {"model": "computercraft:block/monitor_advanced_lr", "x": 90, "y": 90},
"facing=east,orientation=down,state=lrd": {"model": "computercraft:block/monitor_advanced_lrd", "x": 90, "y": 90},
"facing=east,orientation=down,state=lru": {"model": "computercraft:block/monitor_advanced_lru", "x": 90, "y": 90},
"facing=east,orientation=down,state=lrud": {
"model": "computercraft:block/monitor_advanced_lrud",
"x": 90,
"y": 90
},
"facing=east,orientation=down,state=lu": {"model": "computercraft:block/monitor_advanced_lu", "x": 90, "y": 90},
"facing=east,orientation=down,state=lud": {"model": "computercraft:block/monitor_advanced_lud", "x": 90, "y": 90},
"facing=east,orientation=down,state=none": {"model": "computercraft:block/monitor_advanced", "x": 90, "y": 90},
"facing=east,orientation=down,state=r": {"model": "computercraft:block/monitor_advanced_r", "x": 90, "y": 90},
"facing=east,orientation=down,state=rd": {"model": "computercraft:block/monitor_advanced_rd", "x": 90, "y": 90},
"facing=east,orientation=down,state=ru": {"model": "computercraft:block/monitor_advanced_ru", "x": 90, "y": 90},
"facing=east,orientation=down,state=rud": {"model": "computercraft:block/monitor_advanced_rud", "x": 90, "y": 90},
"facing=east,orientation=down,state=u": {"model": "computercraft:block/monitor_advanced_u", "x": 90, "y": 90},
"facing=east,orientation=down,state=ud": {"model": "computercraft:block/monitor_advanced_ud", "x": 90, "y": 90},
"facing=east,orientation=north,state=d": {"model": "computercraft:block/monitor_advanced_d", "x": 0, "y": 90},
"facing=east,orientation=north,state=l": {"model": "computercraft:block/monitor_advanced_l", "x": 0, "y": 90},
"facing=east,orientation=north,state=ld": {"model": "computercraft:block/monitor_advanced_ld", "x": 0, "y": 90},
"facing=east,orientation=north,state=lr": {"model": "computercraft:block/monitor_advanced_lr", "x": 0, "y": 90},
"facing=east,orientation=north,state=lrd": {"model": "computercraft:block/monitor_advanced_lrd", "x": 0, "y": 90},
"facing=east,orientation=north,state=lru": {"model": "computercraft:block/monitor_advanced_lru", "x": 0, "y": 90},
"facing=east,orientation=north,state=lrud": {
"model": "computercraft:block/monitor_advanced_lrud",
"x": 0,
"y": 90
},
"facing=east,orientation=north,state=lu": {"model": "computercraft:block/monitor_advanced_lu", "x": 0, "y": 90},
"facing=east,orientation=north,state=lud": {"model": "computercraft:block/monitor_advanced_lud", "x": 0, "y": 90},
"facing=east,orientation=north,state=none": {"model": "computercraft:block/monitor_advanced", "x": 0, "y": 90},
"facing=east,orientation=north,state=r": {"model": "computercraft:block/monitor_advanced_r", "x": 0, "y": 90},
"facing=east,orientation=north,state=rd": {"model": "computercraft:block/monitor_advanced_rd", "x": 0, "y": 90},
"facing=east,orientation=north,state=ru": {"model": "computercraft:block/monitor_advanced_ru", "x": 0, "y": 90},
"facing=east,orientation=north,state=rud": {"model": "computercraft:block/monitor_advanced_rud", "x": 0, "y": 90},
"facing=east,orientation=north,state=u": {"model": "computercraft:block/monitor_advanced_u", "x": 0, "y": 90},
"facing=east,orientation=north,state=ud": {"model": "computercraft:block/monitor_advanced_ud", "x": 0, "y": 90},
"facing=east,orientation=up,state=d": {"model": "computercraft:block/monitor_advanced_d", "x": 270, "y": 90},
"facing=east,orientation=up,state=l": {"model": "computercraft:block/monitor_advanced_l", "x": 270, "y": 90},
"facing=east,orientation=up,state=ld": {"model": "computercraft:block/monitor_advanced_ld", "x": 270, "y": 90},
"facing=east,orientation=up,state=lr": {"model": "computercraft:block/monitor_advanced_lr", "x": 270, "y": 90},
"facing=east,orientation=up,state=lrd": {"model": "computercraft:block/monitor_advanced_lrd", "x": 270, "y": 90},
"facing=east,orientation=up,state=lru": {"model": "computercraft:block/monitor_advanced_lru", "x": 270, "y": 90},
"facing=east,orientation=up,state=lrud": {"model": "computercraft:block/monitor_advanced_lrud", "x": 270, "y": 90},
"facing=east,orientation=up,state=lu": {"model": "computercraft:block/monitor_advanced_lu", "x": 270, "y": 90},
"facing=east,orientation=up,state=lud": {"model": "computercraft:block/monitor_advanced_lud", "x": 270, "y": 90},
"facing=east,orientation=up,state=none": {"model": "computercraft:block/monitor_advanced", "x": 270, "y": 90},
"facing=east,orientation=up,state=r": {"model": "computercraft:block/monitor_advanced_r", "x": 270, "y": 90},
"facing=east,orientation=up,state=rd": {"model": "computercraft:block/monitor_advanced_rd", "x": 270, "y": 90},
"facing=east,orientation=up,state=ru": {"model": "computercraft:block/monitor_advanced_ru", "x": 270, "y": 90},
"facing=east,orientation=up,state=rud": {"model": "computercraft:block/monitor_advanced_rud", "x": 270, "y": 90},
"facing=east,orientation=up,state=u": {"model": "computercraft:block/monitor_advanced_u", "x": 270, "y": 90},
"facing=east,orientation=up,state=ud": {"model": "computercraft:block/monitor_advanced_ud", "x": 270, "y": 90},
"facing=north,orientation=down,state=d": {"model": "computercraft:block/monitor_advanced_d", "x": 90, "y": 0},
"facing=north,orientation=down,state=l": {"model": "computercraft:block/monitor_advanced_l", "x": 90, "y": 0},
"facing=north,orientation=down,state=ld": {"model": "computercraft:block/monitor_advanced_ld", "x": 90, "y": 0},
"facing=north,orientation=down,state=lr": {"model": "computercraft:block/monitor_advanced_lr", "x": 90, "y": 0},
"facing=north,orientation=down,state=lrd": {"model": "computercraft:block/monitor_advanced_lrd", "x": 90, "y": 0},
"facing=north,orientation=down,state=lru": {"model": "computercraft:block/monitor_advanced_lru", "x": 90, "y": 0},
"facing=north,orientation=down,state=lrud": {
"model": "computercraft:block/monitor_advanced_lrud",
"x": 90,
"y": 0
},
"facing=north,orientation=down,state=lu": {"model": "computercraft:block/monitor_advanced_lu", "x": 90, "y": 0},
"facing=north,orientation=down,state=lud": {"model": "computercraft:block/monitor_advanced_lud", "x": 90, "y": 0},
"facing=north,orientation=down,state=none": {"model": "computercraft:block/monitor_advanced", "x": 90, "y": 0},
"facing=north,orientation=down,state=r": {"model": "computercraft:block/monitor_advanced_r", "x": 90, "y": 0},
"facing=north,orientation=down,state=rd": {"model": "computercraft:block/monitor_advanced_rd", "x": 90, "y": 0},
"facing=north,orientation=down,state=ru": {"model": "computercraft:block/monitor_advanced_ru", "x": 90, "y": 0},
"facing=north,orientation=down,state=rud": {"model": "computercraft:block/monitor_advanced_rud", "x": 90, "y": 0},
"facing=north,orientation=down,state=u": {"model": "computercraft:block/monitor_advanced_u", "x": 90, "y": 0},
"facing=north,orientation=down,state=ud": {"model": "computercraft:block/monitor_advanced_ud", "x": 90, "y": 0},
"facing=north,orientation=north,state=d": {"model": "computercraft:block/monitor_advanced_d", "x": 0, "y": 0},
"facing=north,orientation=north,state=l": {"model": "computercraft:block/monitor_advanced_l", "x": 0, "y": 0},
"facing=north,orientation=north,state=ld": {"model": "computercraft:block/monitor_advanced_ld", "x": 0, "y": 0},
"facing=north,orientation=north,state=lr": {"model": "computercraft:block/monitor_advanced_lr", "x": 0, "y": 0},
"facing=north,orientation=north,state=lrd": {"model": "computercraft:block/monitor_advanced_lrd", "x": 0, "y": 0},
"facing=north,orientation=north,state=lru": {"model": "computercraft:block/monitor_advanced_lru", "x": 0, "y": 0},
"facing=north,orientation=north,state=lrud": {
"model": "computercraft:block/monitor_advanced_lrud",
"x": 0,
"y": 0
},
"facing=north,orientation=north,state=lu": {"model": "computercraft:block/monitor_advanced_lu", "x": 0, "y": 0},
"facing=north,orientation=north,state=lud": {"model": "computercraft:block/monitor_advanced_lud", "x": 0, "y": 0},
"facing=north,orientation=north,state=none": {"model": "computercraft:block/monitor_advanced", "x": 0, "y": 0},
"facing=north,orientation=north,state=r": {"model": "computercraft:block/monitor_advanced_r", "x": 0, "y": 0},
"facing=north,orientation=north,state=rd": {"model": "computercraft:block/monitor_advanced_rd", "x": 0, "y": 0},
"facing=north,orientation=north,state=ru": {"model": "computercraft:block/monitor_advanced_ru", "x": 0, "y": 0},
"facing=north,orientation=north,state=rud": {"model": "computercraft:block/monitor_advanced_rud", "x": 0, "y": 0},
"facing=north,orientation=north,state=u": {"model": "computercraft:block/monitor_advanced_u", "x": 0, "y": 0},
"facing=north,orientation=north,state=ud": {"model": "computercraft:block/monitor_advanced_ud", "x": 0, "y": 0},
"facing=north,orientation=up,state=d": {"model": "computercraft:block/monitor_advanced_d", "x": 270, "y": 0},
"facing=north,orientation=up,state=l": {"model": "computercraft:block/monitor_advanced_l", "x": 270, "y": 0},
"facing=north,orientation=up,state=ld": {"model": "computercraft:block/monitor_advanced_ld", "x": 270, "y": 0},
"facing=north,orientation=up,state=lr": {"model": "computercraft:block/monitor_advanced_lr", "x": 270, "y": 0},
"facing=north,orientation=up,state=lrd": {"model": "computercraft:block/monitor_advanced_lrd", "x": 270, "y": 0},
"facing=north,orientation=up,state=lru": {"model": "computercraft:block/monitor_advanced_lru", "x": 270, "y": 0},
"facing=north,orientation=up,state=lrud": {"model": "computercraft:block/monitor_advanced_lrud", "x": 270, "y": 0},
"facing=north,orientation=up,state=lu": {"model": "computercraft:block/monitor_advanced_lu", "x": 270, "y": 0},
"facing=north,orientation=up,state=lud": {"model": "computercraft:block/monitor_advanced_lud", "x": 270, "y": 0},
"facing=north,orientation=up,state=none": {"model": "computercraft:block/monitor_advanced", "x": 270, "y": 0},
"facing=north,orientation=up,state=r": {"model": "computercraft:block/monitor_advanced_r", "x": 270, "y": 0},
"facing=north,orientation=up,state=rd": {"model": "computercraft:block/monitor_advanced_rd", "x": 270, "y": 0},
"facing=north,orientation=up,state=ru": {"model": "computercraft:block/monitor_advanced_ru", "x": 270, "y": 0},
"facing=north,orientation=up,state=rud": {"model": "computercraft:block/monitor_advanced_rud", "x": 270, "y": 0},
"facing=north,orientation=up,state=u": {"model": "computercraft:block/monitor_advanced_u", "x": 270, "y": 0},
"facing=north,orientation=up,state=ud": {"model": "computercraft:block/monitor_advanced_ud", "x": 270, "y": 0},
"facing=south,orientation=down,state=d": {"model": "computercraft:block/monitor_advanced_d", "x": 90, "y": 180},
"facing=south,orientation=down,state=l": {"model": "computercraft:block/monitor_advanced_l", "x": 90, "y": 180},
"facing=south,orientation=down,state=ld": {"model": "computercraft:block/monitor_advanced_ld", "x": 90, "y": 180},
"facing=south,orientation=down,state=lr": {"model": "computercraft:block/monitor_advanced_lr", "x": 90, "y": 180},
"facing=south,orientation=down,state=lrd": {
"model": "computercraft:block/monitor_advanced_lrd",
"x": 90,
"y": 180
},
"facing=south,orientation=down,state=lru": {
"model": "computercraft:block/monitor_advanced_lru",
"x": 90,
"y": 180
},
"facing=south,orientation=down,state=lrud": {
"model": "computercraft:block/monitor_advanced_lrud",
"x": 90,
"y": 180
},
"facing=south,orientation=down,state=lu": {"model": "computercraft:block/monitor_advanced_lu", "x": 90, "y": 180},
"facing=south,orientation=down,state=lud": {
"model": "computercraft:block/monitor_advanced_lud",
"x": 90,
"y": 180
},
"facing=south,orientation=down,state=none": {"model": "computercraft:block/monitor_advanced", "x": 90, "y": 180},
"facing=south,orientation=down,state=r": {"model": "computercraft:block/monitor_advanced_r", "x": 90, "y": 180},
"facing=south,orientation=down,state=rd": {"model": "computercraft:block/monitor_advanced_rd", "x": 90, "y": 180},
"facing=south,orientation=down,state=ru": {"model": "computercraft:block/monitor_advanced_ru", "x": 90, "y": 180},
"facing=south,orientation=down,state=rud": {
"model": "computercraft:block/monitor_advanced_rud",
"x": 90,
"y": 180
},
"facing=south,orientation=down,state=u": {"model": "computercraft:block/monitor_advanced_u", "x": 90, "y": 180},
"facing=south,orientation=down,state=ud": {"model": "computercraft:block/monitor_advanced_ud", "x": 90, "y": 180},
"facing=south,orientation=north,state=d": {"model": "computercraft:block/monitor_advanced_d", "x": 0, "y": 180},
"facing=south,orientation=north,state=l": {"model": "computercraft:block/monitor_advanced_l", "x": 0, "y": 180},
"facing=south,orientation=north,state=ld": {"model": "computercraft:block/monitor_advanced_ld", "x": 0, "y": 180},
"facing=south,orientation=north,state=lr": {"model": "computercraft:block/monitor_advanced_lr", "x": 0, "y": 180},
"facing=south,orientation=north,state=lrd": {
"model": "computercraft:block/monitor_advanced_lrd",
"x": 0,
"y": 180
},
"facing=south,orientation=north,state=lru": {
"model": "computercraft:block/monitor_advanced_lru",
"x": 0,
"y": 180
},
"facing=south,orientation=north,state=lrud": {
"model": "computercraft:block/monitor_advanced_lrud",
"x": 0,
"y": 180
},
"facing=south,orientation=north,state=lu": {"model": "computercraft:block/monitor_advanced_lu", "x": 0, "y": 180},
"facing=south,orientation=north,state=lud": {
"model": "computercraft:block/monitor_advanced_lud",
"x": 0,
"y": 180
},
"facing=south,orientation=north,state=none": {"model": "computercraft:block/monitor_advanced", "x": 0, "y": 180},
"facing=south,orientation=north,state=r": {"model": "computercraft:block/monitor_advanced_r", "x": 0, "y": 180},
"facing=south,orientation=north,state=rd": {"model": "computercraft:block/monitor_advanced_rd", "x": 0, "y": 180},
"facing=south,orientation=north,state=ru": {"model": "computercraft:block/monitor_advanced_ru", "x": 0, "y": 180},
"facing=south,orientation=north,state=rud": {
"model": "computercraft:block/monitor_advanced_rud",
"x": 0,
"y": 180
},
"facing=south,orientation=north,state=u": {"model": "computercraft:block/monitor_advanced_u", "x": 0, "y": 180},
"facing=south,orientation=north,state=ud": {"model": "computercraft:block/monitor_advanced_ud", "x": 0, "y": 180},
"facing=south,orientation=up,state=d": {"model": "computercraft:block/monitor_advanced_d", "x": 270, "y": 180},
"facing=south,orientation=up,state=l": {"model": "computercraft:block/monitor_advanced_l", "x": 270, "y": 180},
"facing=south,orientation=up,state=ld": {"model": "computercraft:block/monitor_advanced_ld", "x": 270, "y": 180},
"facing=south,orientation=up,state=lr": {"model": "computercraft:block/monitor_advanced_lr", "x": 270, "y": 180},
"facing=south,orientation=up,state=lrd": {"model": "computercraft:block/monitor_advanced_lrd", "x": 270, "y": 180},
"facing=south,orientation=up,state=lru": {"model": "computercraft:block/monitor_advanced_lru", "x": 270, "y": 180},
"facing=south,orientation=up,state=lrud": {
"model": "computercraft:block/monitor_advanced_lrud",
"x": 270,
"y": 180
},
"facing=south,orientation=up,state=lu": {"model": "computercraft:block/monitor_advanced_lu", "x": 270, "y": 180},
"facing=south,orientation=up,state=lud": {"model": "computercraft:block/monitor_advanced_lud", "x": 270, "y": 180},
"facing=south,orientation=up,state=none": {"model": "computercraft:block/monitor_advanced", "x": 270, "y": 180},
"facing=south,orientation=up,state=r": {"model": "computercraft:block/monitor_advanced_r", "x": 270, "y": 180},
"facing=south,orientation=up,state=rd": {"model": "computercraft:block/monitor_advanced_rd", "x": 270, "y": 180},
"facing=south,orientation=up,state=ru": {"model": "computercraft:block/monitor_advanced_ru", "x": 270, "y": 180},
"facing=south,orientation=up,state=rud": {"model": "computercraft:block/monitor_advanced_rud", "x": 270, "y": 180},
"facing=south,orientation=up,state=u": {"model": "computercraft:block/monitor_advanced_u", "x": 270, "y": 180},
"facing=south,orientation=up,state=ud": {"model": "computercraft:block/monitor_advanced_ud", "x": 270, "y": 180},
"facing=west,orientation=down,state=d": {"model": "computercraft:block/monitor_advanced_d", "x": 90, "y": 270},
"facing=west,orientation=down,state=l": {"model": "computercraft:block/monitor_advanced_l", "x": 90, "y": 270},
"facing=west,orientation=down,state=ld": {"model": "computercraft:block/monitor_advanced_ld", "x": 90, "y": 270},
"facing=west,orientation=down,state=lr": {"model": "computercraft:block/monitor_advanced_lr", "x": 90, "y": 270},
"facing=west,orientation=down,state=lrd": {"model": "computercraft:block/monitor_advanced_lrd", "x": 90, "y": 270},
"facing=west,orientation=down,state=lru": {"model": "computercraft:block/monitor_advanced_lru", "x": 90, "y": 270},
"facing=west,orientation=down,state=lrud": {
"model": "computercraft:block/monitor_advanced_lrud",
"x": 90,
"y": 270
},
"facing=west,orientation=down,state=lu": {"model": "computercraft:block/monitor_advanced_lu", "x": 90, "y": 270},
"facing=west,orientation=down,state=lud": {"model": "computercraft:block/monitor_advanced_lud", "x": 90, "y": 270},
"facing=west,orientation=down,state=none": {"model": "computercraft:block/monitor_advanced", "x": 90, "y": 270},
"facing=west,orientation=down,state=r": {"model": "computercraft:block/monitor_advanced_r", "x": 90, "y": 270},
"facing=west,orientation=down,state=rd": {"model": "computercraft:block/monitor_advanced_rd", "x": 90, "y": 270},
"facing=west,orientation=down,state=ru": {"model": "computercraft:block/monitor_advanced_ru", "x": 90, "y": 270},
"facing=west,orientation=down,state=rud": {"model": "computercraft:block/monitor_advanced_rud", "x": 90, "y": 270},
"facing=west,orientation=down,state=u": {"model": "computercraft:block/monitor_advanced_u", "x": 90, "y": 270},
"facing=west,orientation=down,state=ud": {"model": "computercraft:block/monitor_advanced_ud", "x": 90, "y": 270},
"facing=west,orientation=north,state=d": {"model": "computercraft:block/monitor_advanced_d", "x": 0, "y": 270},
"facing=west,orientation=north,state=l": {"model": "computercraft:block/monitor_advanced_l", "x": 0, "y": 270},
"facing=west,orientation=north,state=ld": {"model": "computercraft:block/monitor_advanced_ld", "x": 0, "y": 270},
"facing=west,orientation=north,state=lr": {"model": "computercraft:block/monitor_advanced_lr", "x": 0, "y": 270},
"facing=west,orientation=north,state=lrd": {"model": "computercraft:block/monitor_advanced_lrd", "x": 0, "y": 270},
"facing=west,orientation=north,state=lru": {"model": "computercraft:block/monitor_advanced_lru", "x": 0, "y": 270},
"facing=west,orientation=north,state=lrud": {
"model": "computercraft:block/monitor_advanced_lrud",
"x": 0,
"y": 270
},
"facing=west,orientation=north,state=lu": {"model": "computercraft:block/monitor_advanced_lu", "x": 0, "y": 270},
"facing=west,orientation=north,state=lud": {"model": "computercraft:block/monitor_advanced_lud", "x": 0, "y": 270},
"facing=west,orientation=north,state=none": {"model": "computercraft:block/monitor_advanced", "x": 0, "y": 270},
"facing=west,orientation=north,state=r": {"model": "computercraft:block/monitor_advanced_r", "x": 0, "y": 270},
"facing=west,orientation=north,state=rd": {"model": "computercraft:block/monitor_advanced_rd", "x": 0, "y": 270},
"facing=west,orientation=north,state=ru": {"model": "computercraft:block/monitor_advanced_ru", "x": 0, "y": 270},
"facing=west,orientation=north,state=rud": {"model": "computercraft:block/monitor_advanced_rud", "x": 0, "y": 270},
"facing=west,orientation=north,state=u": {"model": "computercraft:block/monitor_advanced_u", "x": 0, "y": 270},
"facing=west,orientation=north,state=ud": {"model": "computercraft:block/monitor_advanced_ud", "x": 0, "y": 270},
"facing=west,orientation=up,state=d": {"model": "computercraft:block/monitor_advanced_d", "x": 270, "y": 270},
"facing=west,orientation=up,state=l": {"model": "computercraft:block/monitor_advanced_l", "x": 270, "y": 270},
"facing=west,orientation=up,state=ld": {"model": "computercraft:block/monitor_advanced_ld", "x": 270, "y": 270},
"facing=west,orientation=up,state=lr": {"model": "computercraft:block/monitor_advanced_lr", "x": 270, "y": 270},
"facing=west,orientation=up,state=lrd": {"model": "computercraft:block/monitor_advanced_lrd", "x": 270, "y": 270},
"facing=west,orientation=up,state=lru": {"model": "computercraft:block/monitor_advanced_lru", "x": 270, "y": 270},
"facing=west,orientation=up,state=lrud": {
"model": "computercraft:block/monitor_advanced_lrud",
"x": 270,
"y": 270
},
"facing=west,orientation=up,state=lu": {"model": "computercraft:block/monitor_advanced_lu", "x": 270, "y": 270},
"facing=west,orientation=up,state=lud": {"model": "computercraft:block/monitor_advanced_lud", "x": 270, "y": 270},
"facing=west,orientation=up,state=none": {"model": "computercraft:block/monitor_advanced", "x": 270, "y": 270},
"facing=west,orientation=up,state=r": {"model": "computercraft:block/monitor_advanced_r", "x": 270, "y": 270},
"facing=west,orientation=up,state=rd": {"model": "computercraft:block/monitor_advanced_rd", "x": 270, "y": 270},
"facing=west,orientation=up,state=ru": {"model": "computercraft:block/monitor_advanced_ru", "x": 270, "y": 270},
"facing=west,orientation=up,state=rud": {"model": "computercraft:block/monitor_advanced_rud", "x": 270, "y": 270},
"facing=west,orientation=up,state=u": {"model": "computercraft:block/monitor_advanced_u", "x": 270, "y": 270},
"facing=west,orientation=up,state=ud": {"model": "computercraft:block/monitor_advanced_ud", "x": 270, "y": 270}
}
}

View File

@@ -0,0 +1,204 @@
{
"variants": {
"facing=east,orientation=down,state=d": {"model": "computercraft:block/monitor_normal_d", "x": 90, "y": 90},
"facing=east,orientation=down,state=l": {"model": "computercraft:block/monitor_normal_l", "x": 90, "y": 90},
"facing=east,orientation=down,state=ld": {"model": "computercraft:block/monitor_normal_ld", "x": 90, "y": 90},
"facing=east,orientation=down,state=lr": {"model": "computercraft:block/monitor_normal_lr", "x": 90, "y": 90},
"facing=east,orientation=down,state=lrd": {"model": "computercraft:block/monitor_normal_lrd", "x": 90, "y": 90},
"facing=east,orientation=down,state=lru": {"model": "computercraft:block/monitor_normal_lru", "x": 90, "y": 90},
"facing=east,orientation=down,state=lrud": {"model": "computercraft:block/monitor_normal_lrud", "x": 90, "y": 90},
"facing=east,orientation=down,state=lu": {"model": "computercraft:block/monitor_normal_lu", "x": 90, "y": 90},
"facing=east,orientation=down,state=lud": {"model": "computercraft:block/monitor_normal_lud", "x": 90, "y": 90},
"facing=east,orientation=down,state=none": {"model": "computercraft:block/monitor_normal", "x": 90, "y": 90},
"facing=east,orientation=down,state=r": {"model": "computercraft:block/monitor_normal_r", "x": 90, "y": 90},
"facing=east,orientation=down,state=rd": {"model": "computercraft:block/monitor_normal_rd", "x": 90, "y": 90},
"facing=east,orientation=down,state=ru": {"model": "computercraft:block/monitor_normal_ru", "x": 90, "y": 90},
"facing=east,orientation=down,state=rud": {"model": "computercraft:block/monitor_normal_rud", "x": 90, "y": 90},
"facing=east,orientation=down,state=u": {"model": "computercraft:block/monitor_normal_u", "x": 90, "y": 90},
"facing=east,orientation=down,state=ud": {"model": "computercraft:block/monitor_normal_ud", "x": 90, "y": 90},
"facing=east,orientation=north,state=d": {"model": "computercraft:block/monitor_normal_d", "x": 0, "y": 90},
"facing=east,orientation=north,state=l": {"model": "computercraft:block/monitor_normal_l", "x": 0, "y": 90},
"facing=east,orientation=north,state=ld": {"model": "computercraft:block/monitor_normal_ld", "x": 0, "y": 90},
"facing=east,orientation=north,state=lr": {"model": "computercraft:block/monitor_normal_lr", "x": 0, "y": 90},
"facing=east,orientation=north,state=lrd": {"model": "computercraft:block/monitor_normal_lrd", "x": 0, "y": 90},
"facing=east,orientation=north,state=lru": {"model": "computercraft:block/monitor_normal_lru", "x": 0, "y": 90},
"facing=east,orientation=north,state=lrud": {"model": "computercraft:block/monitor_normal_lrud", "x": 0, "y": 90},
"facing=east,orientation=north,state=lu": {"model": "computercraft:block/monitor_normal_lu", "x": 0, "y": 90},
"facing=east,orientation=north,state=lud": {"model": "computercraft:block/monitor_normal_lud", "x": 0, "y": 90},
"facing=east,orientation=north,state=none": {"model": "computercraft:block/monitor_normal", "x": 0, "y": 90},
"facing=east,orientation=north,state=r": {"model": "computercraft:block/monitor_normal_r", "x": 0, "y": 90},
"facing=east,orientation=north,state=rd": {"model": "computercraft:block/monitor_normal_rd", "x": 0, "y": 90},
"facing=east,orientation=north,state=ru": {"model": "computercraft:block/monitor_normal_ru", "x": 0, "y": 90},
"facing=east,orientation=north,state=rud": {"model": "computercraft:block/monitor_normal_rud", "x": 0, "y": 90},
"facing=east,orientation=north,state=u": {"model": "computercraft:block/monitor_normal_u", "x": 0, "y": 90},
"facing=east,orientation=north,state=ud": {"model": "computercraft:block/monitor_normal_ud", "x": 0, "y": 90},
"facing=east,orientation=up,state=d": {"model": "computercraft:block/monitor_normal_d", "x": 270, "y": 90},
"facing=east,orientation=up,state=l": {"model": "computercraft:block/monitor_normal_l", "x": 270, "y": 90},
"facing=east,orientation=up,state=ld": {"model": "computercraft:block/monitor_normal_ld", "x": 270, "y": 90},
"facing=east,orientation=up,state=lr": {"model": "computercraft:block/monitor_normal_lr", "x": 270, "y": 90},
"facing=east,orientation=up,state=lrd": {"model": "computercraft:block/monitor_normal_lrd", "x": 270, "y": 90},
"facing=east,orientation=up,state=lru": {"model": "computercraft:block/monitor_normal_lru", "x": 270, "y": 90},
"facing=east,orientation=up,state=lrud": {"model": "computercraft:block/monitor_normal_lrud", "x": 270, "y": 90},
"facing=east,orientation=up,state=lu": {"model": "computercraft:block/monitor_normal_lu", "x": 270, "y": 90},
"facing=east,orientation=up,state=lud": {"model": "computercraft:block/monitor_normal_lud", "x": 270, "y": 90},
"facing=east,orientation=up,state=none": {"model": "computercraft:block/monitor_normal", "x": 270, "y": 90},
"facing=east,orientation=up,state=r": {"model": "computercraft:block/monitor_normal_r", "x": 270, "y": 90},
"facing=east,orientation=up,state=rd": {"model": "computercraft:block/monitor_normal_rd", "x": 270, "y": 90},
"facing=east,orientation=up,state=ru": {"model": "computercraft:block/monitor_normal_ru", "x": 270, "y": 90},
"facing=east,orientation=up,state=rud": {"model": "computercraft:block/monitor_normal_rud", "x": 270, "y": 90},
"facing=east,orientation=up,state=u": {"model": "computercraft:block/monitor_normal_u", "x": 270, "y": 90},
"facing=east,orientation=up,state=ud": {"model": "computercraft:block/monitor_normal_ud", "x": 270, "y": 90},
"facing=north,orientation=down,state=d": {"model": "computercraft:block/monitor_normal_d", "x": 90, "y": 0},
"facing=north,orientation=down,state=l": {"model": "computercraft:block/monitor_normal_l", "x": 90, "y": 0},
"facing=north,orientation=down,state=ld": {"model": "computercraft:block/monitor_normal_ld", "x": 90, "y": 0},
"facing=north,orientation=down,state=lr": {"model": "computercraft:block/monitor_normal_lr", "x": 90, "y": 0},
"facing=north,orientation=down,state=lrd": {"model": "computercraft:block/monitor_normal_lrd", "x": 90, "y": 0},
"facing=north,orientation=down,state=lru": {"model": "computercraft:block/monitor_normal_lru", "x": 90, "y": 0},
"facing=north,orientation=down,state=lrud": {"model": "computercraft:block/monitor_normal_lrud", "x": 90, "y": 0},
"facing=north,orientation=down,state=lu": {"model": "computercraft:block/monitor_normal_lu", "x": 90, "y": 0},
"facing=north,orientation=down,state=lud": {"model": "computercraft:block/monitor_normal_lud", "x": 90, "y": 0},
"facing=north,orientation=down,state=none": {"model": "computercraft:block/monitor_normal", "x": 90, "y": 0},
"facing=north,orientation=down,state=r": {"model": "computercraft:block/monitor_normal_r", "x": 90, "y": 0},
"facing=north,orientation=down,state=rd": {"model": "computercraft:block/monitor_normal_rd", "x": 90, "y": 0},
"facing=north,orientation=down,state=ru": {"model": "computercraft:block/monitor_normal_ru", "x": 90, "y": 0},
"facing=north,orientation=down,state=rud": {"model": "computercraft:block/monitor_normal_rud", "x": 90, "y": 0},
"facing=north,orientation=down,state=u": {"model": "computercraft:block/monitor_normal_u", "x": 90, "y": 0},
"facing=north,orientation=down,state=ud": {"model": "computercraft:block/monitor_normal_ud", "x": 90, "y": 0},
"facing=north,orientation=north,state=d": {"model": "computercraft:block/monitor_normal_d", "x": 0, "y": 0},
"facing=north,orientation=north,state=l": {"model": "computercraft:block/monitor_normal_l", "x": 0, "y": 0},
"facing=north,orientation=north,state=ld": {"model": "computercraft:block/monitor_normal_ld", "x": 0, "y": 0},
"facing=north,orientation=north,state=lr": {"model": "computercraft:block/monitor_normal_lr", "x": 0, "y": 0},
"facing=north,orientation=north,state=lrd": {"model": "computercraft:block/monitor_normal_lrd", "x": 0, "y": 0},
"facing=north,orientation=north,state=lru": {"model": "computercraft:block/monitor_normal_lru", "x": 0, "y": 0},
"facing=north,orientation=north,state=lrud": {"model": "computercraft:block/monitor_normal_lrud", "x": 0, "y": 0},
"facing=north,orientation=north,state=lu": {"model": "computercraft:block/monitor_normal_lu", "x": 0, "y": 0},
"facing=north,orientation=north,state=lud": {"model": "computercraft:block/monitor_normal_lud", "x": 0, "y": 0},
"facing=north,orientation=north,state=none": {"model": "computercraft:block/monitor_normal", "x": 0, "y": 0},
"facing=north,orientation=north,state=r": {"model": "computercraft:block/monitor_normal_r", "x": 0, "y": 0},
"facing=north,orientation=north,state=rd": {"model": "computercraft:block/monitor_normal_rd", "x": 0, "y": 0},
"facing=north,orientation=north,state=ru": {"model": "computercraft:block/monitor_normal_ru", "x": 0, "y": 0},
"facing=north,orientation=north,state=rud": {"model": "computercraft:block/monitor_normal_rud", "x": 0, "y": 0},
"facing=north,orientation=north,state=u": {"model": "computercraft:block/monitor_normal_u", "x": 0, "y": 0},
"facing=north,orientation=north,state=ud": {"model": "computercraft:block/monitor_normal_ud", "x": 0, "y": 0},
"facing=north,orientation=up,state=d": {"model": "computercraft:block/monitor_normal_d", "x": 270, "y": 0},
"facing=north,orientation=up,state=l": {"model": "computercraft:block/monitor_normal_l", "x": 270, "y": 0},
"facing=north,orientation=up,state=ld": {"model": "computercraft:block/monitor_normal_ld", "x": 270, "y": 0},
"facing=north,orientation=up,state=lr": {"model": "computercraft:block/monitor_normal_lr", "x": 270, "y": 0},
"facing=north,orientation=up,state=lrd": {"model": "computercraft:block/monitor_normal_lrd", "x": 270, "y": 0},
"facing=north,orientation=up,state=lru": {"model": "computercraft:block/monitor_normal_lru", "x": 270, "y": 0},
"facing=north,orientation=up,state=lrud": {"model": "computercraft:block/monitor_normal_lrud", "x": 270, "y": 0},
"facing=north,orientation=up,state=lu": {"model": "computercraft:block/monitor_normal_lu", "x": 270, "y": 0},
"facing=north,orientation=up,state=lud": {"model": "computercraft:block/monitor_normal_lud", "x": 270, "y": 0},
"facing=north,orientation=up,state=none": {"model": "computercraft:block/monitor_normal", "x": 270, "y": 0},
"facing=north,orientation=up,state=r": {"model": "computercraft:block/monitor_normal_r", "x": 270, "y": 0},
"facing=north,orientation=up,state=rd": {"model": "computercraft:block/monitor_normal_rd", "x": 270, "y": 0},
"facing=north,orientation=up,state=ru": {"model": "computercraft:block/monitor_normal_ru", "x": 270, "y": 0},
"facing=north,orientation=up,state=rud": {"model": "computercraft:block/monitor_normal_rud", "x": 270, "y": 0},
"facing=north,orientation=up,state=u": {"model": "computercraft:block/monitor_normal_u", "x": 270, "y": 0},
"facing=north,orientation=up,state=ud": {"model": "computercraft:block/monitor_normal_ud", "x": 270, "y": 0},
"facing=south,orientation=down,state=d": {"model": "computercraft:block/monitor_normal_d", "x": 90, "y": 180},
"facing=south,orientation=down,state=l": {"model": "computercraft:block/monitor_normal_l", "x": 90, "y": 180},
"facing=south,orientation=down,state=ld": {"model": "computercraft:block/monitor_normal_ld", "x": 90, "y": 180},
"facing=south,orientation=down,state=lr": {"model": "computercraft:block/monitor_normal_lr", "x": 90, "y": 180},
"facing=south,orientation=down,state=lrd": {"model": "computercraft:block/monitor_normal_lrd", "x": 90, "y": 180},
"facing=south,orientation=down,state=lru": {"model": "computercraft:block/monitor_normal_lru", "x": 90, "y": 180},
"facing=south,orientation=down,state=lrud": {
"model": "computercraft:block/monitor_normal_lrud",
"x": 90,
"y": 180
},
"facing=south,orientation=down,state=lu": {"model": "computercraft:block/monitor_normal_lu", "x": 90, "y": 180},
"facing=south,orientation=down,state=lud": {"model": "computercraft:block/monitor_normal_lud", "x": 90, "y": 180},
"facing=south,orientation=down,state=none": {"model": "computercraft:block/monitor_normal", "x": 90, "y": 180},
"facing=south,orientation=down,state=r": {"model": "computercraft:block/monitor_normal_r", "x": 90, "y": 180},
"facing=south,orientation=down,state=rd": {"model": "computercraft:block/monitor_normal_rd", "x": 90, "y": 180},
"facing=south,orientation=down,state=ru": {"model": "computercraft:block/monitor_normal_ru", "x": 90, "y": 180},
"facing=south,orientation=down,state=rud": {"model": "computercraft:block/monitor_normal_rud", "x": 90, "y": 180},
"facing=south,orientation=down,state=u": {"model": "computercraft:block/monitor_normal_u", "x": 90, "y": 180},
"facing=south,orientation=down,state=ud": {"model": "computercraft:block/monitor_normal_ud", "x": 90, "y": 180},
"facing=south,orientation=north,state=d": {"model": "computercraft:block/monitor_normal_d", "x": 0, "y": 180},
"facing=south,orientation=north,state=l": {"model": "computercraft:block/monitor_normal_l", "x": 0, "y": 180},
"facing=south,orientation=north,state=ld": {"model": "computercraft:block/monitor_normal_ld", "x": 0, "y": 180},
"facing=south,orientation=north,state=lr": {"model": "computercraft:block/monitor_normal_lr", "x": 0, "y": 180},
"facing=south,orientation=north,state=lrd": {"model": "computercraft:block/monitor_normal_lrd", "x": 0, "y": 180},
"facing=south,orientation=north,state=lru": {"model": "computercraft:block/monitor_normal_lru", "x": 0, "y": 180},
"facing=south,orientation=north,state=lrud": {
"model": "computercraft:block/monitor_normal_lrud",
"x": 0,
"y": 180
},
"facing=south,orientation=north,state=lu": {"model": "computercraft:block/monitor_normal_lu", "x": 0, "y": 180},
"facing=south,orientation=north,state=lud": {"model": "computercraft:block/monitor_normal_lud", "x": 0, "y": 180},
"facing=south,orientation=north,state=none": {"model": "computercraft:block/monitor_normal", "x": 0, "y": 180},
"facing=south,orientation=north,state=r": {"model": "computercraft:block/monitor_normal_r", "x": 0, "y": 180},
"facing=south,orientation=north,state=rd": {"model": "computercraft:block/monitor_normal_rd", "x": 0, "y": 180},
"facing=south,orientation=north,state=ru": {"model": "computercraft:block/monitor_normal_ru", "x": 0, "y": 180},
"facing=south,orientation=north,state=rud": {"model": "computercraft:block/monitor_normal_rud", "x": 0, "y": 180},
"facing=south,orientation=north,state=u": {"model": "computercraft:block/monitor_normal_u", "x": 0, "y": 180},
"facing=south,orientation=north,state=ud": {"model": "computercraft:block/monitor_normal_ud", "x": 0, "y": 180},
"facing=south,orientation=up,state=d": {"model": "computercraft:block/monitor_normal_d", "x": 270, "y": 180},
"facing=south,orientation=up,state=l": {"model": "computercraft:block/monitor_normal_l", "x": 270, "y": 180},
"facing=south,orientation=up,state=ld": {"model": "computercraft:block/monitor_normal_ld", "x": 270, "y": 180},
"facing=south,orientation=up,state=lr": {"model": "computercraft:block/monitor_normal_lr", "x": 270, "y": 180},
"facing=south,orientation=up,state=lrd": {"model": "computercraft:block/monitor_normal_lrd", "x": 270, "y": 180},
"facing=south,orientation=up,state=lru": {"model": "computercraft:block/monitor_normal_lru", "x": 270, "y": 180},
"facing=south,orientation=up,state=lrud": {"model": "computercraft:block/monitor_normal_lrud", "x": 270, "y": 180},
"facing=south,orientation=up,state=lu": {"model": "computercraft:block/monitor_normal_lu", "x": 270, "y": 180},
"facing=south,orientation=up,state=lud": {"model": "computercraft:block/monitor_normal_lud", "x": 270, "y": 180},
"facing=south,orientation=up,state=none": {"model": "computercraft:block/monitor_normal", "x": 270, "y": 180},
"facing=south,orientation=up,state=r": {"model": "computercraft:block/monitor_normal_r", "x": 270, "y": 180},
"facing=south,orientation=up,state=rd": {"model": "computercraft:block/monitor_normal_rd", "x": 270, "y": 180},
"facing=south,orientation=up,state=ru": {"model": "computercraft:block/monitor_normal_ru", "x": 270, "y": 180},
"facing=south,orientation=up,state=rud": {"model": "computercraft:block/monitor_normal_rud", "x": 270, "y": 180},
"facing=south,orientation=up,state=u": {"model": "computercraft:block/monitor_normal_u", "x": 270, "y": 180},
"facing=south,orientation=up,state=ud": {"model": "computercraft:block/monitor_normal_ud", "x": 270, "y": 180},
"facing=west,orientation=down,state=d": {"model": "computercraft:block/monitor_normal_d", "x": 90, "y": 270},
"facing=west,orientation=down,state=l": {"model": "computercraft:block/monitor_normal_l", "x": 90, "y": 270},
"facing=west,orientation=down,state=ld": {"model": "computercraft:block/monitor_normal_ld", "x": 90, "y": 270},
"facing=west,orientation=down,state=lr": {"model": "computercraft:block/monitor_normal_lr", "x": 90, "y": 270},
"facing=west,orientation=down,state=lrd": {"model": "computercraft:block/monitor_normal_lrd", "x": 90, "y": 270},
"facing=west,orientation=down,state=lru": {"model": "computercraft:block/monitor_normal_lru", "x": 90, "y": 270},
"facing=west,orientation=down,state=lrud": {"model": "computercraft:block/monitor_normal_lrud", "x": 90, "y": 270},
"facing=west,orientation=down,state=lu": {"model": "computercraft:block/monitor_normal_lu", "x": 90, "y": 270},
"facing=west,orientation=down,state=lud": {"model": "computercraft:block/monitor_normal_lud", "x": 90, "y": 270},
"facing=west,orientation=down,state=none": {"model": "computercraft:block/monitor_normal", "x": 90, "y": 270},
"facing=west,orientation=down,state=r": {"model": "computercraft:block/monitor_normal_r", "x": 90, "y": 270},
"facing=west,orientation=down,state=rd": {"model": "computercraft:block/monitor_normal_rd", "x": 90, "y": 270},
"facing=west,orientation=down,state=ru": {"model": "computercraft:block/monitor_normal_ru", "x": 90, "y": 270},
"facing=west,orientation=down,state=rud": {"model": "computercraft:block/monitor_normal_rud", "x": 90, "y": 270},
"facing=west,orientation=down,state=u": {"model": "computercraft:block/monitor_normal_u", "x": 90, "y": 270},
"facing=west,orientation=down,state=ud": {"model": "computercraft:block/monitor_normal_ud", "x": 90, "y": 270},
"facing=west,orientation=north,state=d": {"model": "computercraft:block/monitor_normal_d", "x": 0, "y": 270},
"facing=west,orientation=north,state=l": {"model": "computercraft:block/monitor_normal_l", "x": 0, "y": 270},
"facing=west,orientation=north,state=ld": {"model": "computercraft:block/monitor_normal_ld", "x": 0, "y": 270},
"facing=west,orientation=north,state=lr": {"model": "computercraft:block/monitor_normal_lr", "x": 0, "y": 270},
"facing=west,orientation=north,state=lrd": {"model": "computercraft:block/monitor_normal_lrd", "x": 0, "y": 270},
"facing=west,orientation=north,state=lru": {"model": "computercraft:block/monitor_normal_lru", "x": 0, "y": 270},
"facing=west,orientation=north,state=lrud": {"model": "computercraft:block/monitor_normal_lrud", "x": 0, "y": 270},
"facing=west,orientation=north,state=lu": {"model": "computercraft:block/monitor_normal_lu", "x": 0, "y": 270},
"facing=west,orientation=north,state=lud": {"model": "computercraft:block/monitor_normal_lud", "x": 0, "y": 270},
"facing=west,orientation=north,state=none": {"model": "computercraft:block/monitor_normal", "x": 0, "y": 270},
"facing=west,orientation=north,state=r": {"model": "computercraft:block/monitor_normal_r", "x": 0, "y": 270},
"facing=west,orientation=north,state=rd": {"model": "computercraft:block/monitor_normal_rd", "x": 0, "y": 270},
"facing=west,orientation=north,state=ru": {"model": "computercraft:block/monitor_normal_ru", "x": 0, "y": 270},
"facing=west,orientation=north,state=rud": {"model": "computercraft:block/monitor_normal_rud", "x": 0, "y": 270},
"facing=west,orientation=north,state=u": {"model": "computercraft:block/monitor_normal_u", "x": 0, "y": 270},
"facing=west,orientation=north,state=ud": {"model": "computercraft:block/monitor_normal_ud", "x": 0, "y": 270},
"facing=west,orientation=up,state=d": {"model": "computercraft:block/monitor_normal_d", "x": 270, "y": 270},
"facing=west,orientation=up,state=l": {"model": "computercraft:block/monitor_normal_l", "x": 270, "y": 270},
"facing=west,orientation=up,state=ld": {"model": "computercraft:block/monitor_normal_ld", "x": 270, "y": 270},
"facing=west,orientation=up,state=lr": {"model": "computercraft:block/monitor_normal_lr", "x": 270, "y": 270},
"facing=west,orientation=up,state=lrd": {"model": "computercraft:block/monitor_normal_lrd", "x": 270, "y": 270},
"facing=west,orientation=up,state=lru": {"model": "computercraft:block/monitor_normal_lru", "x": 270, "y": 270},
"facing=west,orientation=up,state=lrud": {"model": "computercraft:block/monitor_normal_lrud", "x": 270, "y": 270},
"facing=west,orientation=up,state=lu": {"model": "computercraft:block/monitor_normal_lu", "x": 270, "y": 270},
"facing=west,orientation=up,state=lud": {"model": "computercraft:block/monitor_normal_lud", "x": 270, "y": 270},
"facing=west,orientation=up,state=none": {"model": "computercraft:block/monitor_normal", "x": 270, "y": 270},
"facing=west,orientation=up,state=r": {"model": "computercraft:block/monitor_normal_r", "x": 270, "y": 270},
"facing=west,orientation=up,state=rd": {"model": "computercraft:block/monitor_normal_rd", "x": 270, "y": 270},
"facing=west,orientation=up,state=ru": {"model": "computercraft:block/monitor_normal_ru", "x": 270, "y": 270},
"facing=west,orientation=up,state=rud": {"model": "computercraft:block/monitor_normal_rud", "x": 270, "y": 270},
"facing=west,orientation=up,state=u": {"model": "computercraft:block/monitor_normal_u", "x": 270, "y": 270},
"facing=west,orientation=up,state=ud": {"model": "computercraft:block/monitor_normal_ud", "x": 270, "y": 270}
}
}

View File

@@ -0,0 +1,20 @@
{
"variants": {
"bottom=false,facing=east,top=false": {"model": "computercraft:block/printer_empty", "y": 90},
"bottom=false,facing=east,top=true": {"model": "computercraft:block/printer_top_full", "y": 90},
"bottom=false,facing=north,top=false": {"model": "computercraft:block/printer_empty", "y": 0},
"bottom=false,facing=north,top=true": {"model": "computercraft:block/printer_top_full", "y": 0},
"bottom=false,facing=south,top=false": {"model": "computercraft:block/printer_empty", "y": 180},
"bottom=false,facing=south,top=true": {"model": "computercraft:block/printer_top_full", "y": 180},
"bottom=false,facing=west,top=false": {"model": "computercraft:block/printer_empty", "y": 270},
"bottom=false,facing=west,top=true": {"model": "computercraft:block/printer_top_full", "y": 270},
"bottom=true,facing=east,top=false": {"model": "computercraft:block/printer_bottom_full", "y": 90},
"bottom=true,facing=east,top=true": {"model": "computercraft:block/printer_both_full", "y": 90},
"bottom=true,facing=north,top=false": {"model": "computercraft:block/printer_bottom_full", "y": 0},
"bottom=true,facing=north,top=true": {"model": "computercraft:block/printer_both_full", "y": 0},
"bottom=true,facing=south,top=false": {"model": "computercraft:block/printer_bottom_full", "y": 180},
"bottom=true,facing=south,top=true": {"model": "computercraft:block/printer_both_full", "y": 180},
"bottom=true,facing=west,top=false": {"model": "computercraft:block/printer_bottom_full", "y": 270},
"bottom=true,facing=west,top=true": {"model": "computercraft:block/printer_both_full", "y": 270}
}
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,8 @@
{
"variants": {
"modem=false,peripheral=false": {"model": "computercraft:block/wired_modem_full_off"},
"modem=false,peripheral=true": {"model": "computercraft:block/wired_modem_full_off_peripheral"},
"modem=true,peripheral=false": {"model": "computercraft:block/wired_modem_full_on"},
"modem=true,peripheral=true": {"model": "computercraft:block/wired_modem_full_on_peripheral"}
}
}

View File

@@ -0,0 +1,16 @@
{
"variants": {
"facing=down,on=false": {"model": "computercraft:block/wireless_modem_advanced_off", "x": 90, "y": 0},
"facing=down,on=true": {"model": "computercraft:block/wireless_modem_advanced_on", "x": 90, "y": 0},
"facing=east,on=false": {"model": "computercraft:block/wireless_modem_advanced_off", "x": 0, "y": 90},
"facing=east,on=true": {"model": "computercraft:block/wireless_modem_advanced_on", "x": 0, "y": 90},
"facing=north,on=false": {"model": "computercraft:block/wireless_modem_advanced_off", "x": 0, "y": 0},
"facing=north,on=true": {"model": "computercraft:block/wireless_modem_advanced_on", "x": 0, "y": 0},
"facing=south,on=false": {"model": "computercraft:block/wireless_modem_advanced_off", "x": 0, "y": 180},
"facing=south,on=true": {"model": "computercraft:block/wireless_modem_advanced_on", "x": 0, "y": 180},
"facing=up,on=false": {"model": "computercraft:block/wireless_modem_advanced_off", "x": 270, "y": 0},
"facing=up,on=true": {"model": "computercraft:block/wireless_modem_advanced_on", "x": 270, "y": 0},
"facing=west,on=false": {"model": "computercraft:block/wireless_modem_advanced_off", "x": 0, "y": 270},
"facing=west,on=true": {"model": "computercraft:block/wireless_modem_advanced_on", "x": 0, "y": 270}
}
}

View File

@@ -0,0 +1,16 @@
{
"variants": {
"facing=down,on=false": {"model": "computercraft:block/wireless_modem_normal_off", "x": 90, "y": 0},
"facing=down,on=true": {"model": "computercraft:block/wireless_modem_normal_on", "x": 90, "y": 0},
"facing=east,on=false": {"model": "computercraft:block/wireless_modem_normal_off", "x": 0, "y": 90},
"facing=east,on=true": {"model": "computercraft:block/wireless_modem_normal_on", "x": 0, "y": 90},
"facing=north,on=false": {"model": "computercraft:block/wireless_modem_normal_off", "x": 0, "y": 0},
"facing=north,on=true": {"model": "computercraft:block/wireless_modem_normal_on", "x": 0, "y": 0},
"facing=south,on=false": {"model": "computercraft:block/wireless_modem_normal_off", "x": 0, "y": 180},
"facing=south,on=true": {"model": "computercraft:block/wireless_modem_normal_on", "x": 0, "y": 180},
"facing=up,on=false": {"model": "computercraft:block/wireless_modem_normal_off", "x": 270, "y": 0},
"facing=up,on=true": {"model": "computercraft:block/wireless_modem_normal_on", "x": 270, "y": 0},
"facing=west,on=false": {"model": "computercraft:block/wireless_modem_normal_off", "x": 0, "y": 270},
"facing=west,on=true": {"model": "computercraft:block/wireless_modem_normal_on", "x": 0, "y": 270}
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/computer_advanced_front_blink",
"side": "computercraft:block/computer_advanced_side",
"top": "computercraft:block/computer_advanced_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/computer_advanced_front",
"side": "computercraft:block/computer_advanced_side",
"top": "computercraft:block/computer_advanced_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/computer_advanced_front_on",
"side": "computercraft:block/computer_advanced_side",
"top": "computercraft:block/computer_advanced_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/computer_command_front_blink",
"side": "computercraft:block/computer_command_side",
"top": "computercraft:block/computer_command_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/computer_command_front",
"side": "computercraft:block/computer_command_side",
"top": "computercraft:block/computer_command_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/computer_command_front_on",
"side": "computercraft:block/computer_command_side",
"top": "computercraft:block/computer_command_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/computer_normal_front_blink",
"side": "computercraft:block/computer_normal_side",
"top": "computercraft:block/computer_normal_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/computer_normal_front",
"side": "computercraft:block/computer_normal_side",
"top": "computercraft:block/computer_normal_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/computer_normal_front_on",
"side": "computercraft:block/computer_normal_side",
"top": "computercraft:block/computer_normal_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/disk_drive_front",
"side": "computercraft:block/disk_drive_side",
"top": "computercraft:block/disk_drive_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/disk_drive_front_accepted",
"side": "computercraft:block/disk_drive_side",
"top": "computercraft:block/disk_drive_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/disk_drive_front_rejected",
"side": "computercraft:block/disk_drive_side",
"top": "computercraft:block/disk_drive_top"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_32",
"front": "computercraft:block/monitor_advanced_16",
"side": "computercraft:block/monitor_advanced_4",
"top": "computercraft:block/monitor_advanced_0"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_36",
"front": "computercraft:block/monitor_advanced_20",
"side": "computercraft:block/monitor_advanced_7",
"top": "computercraft:block/monitor_advanced_0"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_32",
"front": "computercraft:block/monitor_advanced_15",
"side": "computercraft:block/monitor_advanced_4",
"top": "computercraft:block/monitor_advanced_0"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_33",
"front": "computercraft:block/monitor_advanced_19",
"side": "computercraft:block/monitor_advanced_4",
"top": "computercraft:block/monitor_advanced_1"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_45",
"front": "computercraft:block/monitor_advanced_31",
"side": "computercraft:block/monitor_advanced_7",
"top": "computercraft:block/monitor_advanced_1"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_34",
"front": "computercraft:block/monitor_advanced_18",
"side": "computercraft:block/monitor_advanced_4",
"top": "computercraft:block/monitor_advanced_2"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_46",
"front": "computercraft:block/monitor_advanced_30",
"side": "computercraft:block/monitor_advanced_7",
"top": "computercraft:block/monitor_advanced_2"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_40",
"front": "computercraft:block/monitor_advanced_24",
"side": "computercraft:block/monitor_advanced_5",
"top": "computercraft:block/monitor_advanced_2"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_43",
"front": "computercraft:block/monitor_advanced_27",
"side": "computercraft:block/monitor_advanced_6",
"top": "computercraft:block/monitor_advanced_2"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_39",
"front": "computercraft:block/monitor_advanced_25",
"side": "computercraft:block/monitor_advanced_5",
"top": "computercraft:block/monitor_advanced_1"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_42",
"front": "computercraft:block/monitor_advanced_28",
"side": "computercraft:block/monitor_advanced_6",
"top": "computercraft:block/monitor_advanced_1"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_35",
"front": "computercraft:block/monitor_advanced_17",
"side": "computercraft:block/monitor_advanced_4",
"top": "computercraft:block/monitor_advanced_3"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_47",
"front": "computercraft:block/monitor_advanced_29",
"side": "computercraft:block/monitor_advanced_7",
"top": "computercraft:block/monitor_advanced_3"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_41",
"front": "computercraft:block/monitor_advanced_23",
"side": "computercraft:block/monitor_advanced_5",
"top": "computercraft:block/monitor_advanced_3"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_44",
"front": "computercraft:block/monitor_advanced_26",
"side": "computercraft:block/monitor_advanced_6",
"top": "computercraft:block/monitor_advanced_3"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_38",
"front": "computercraft:block/monitor_advanced_22",
"side": "computercraft:block/monitor_advanced_5",
"top": "computercraft:block/monitor_advanced_0"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_advanced_37",
"front": "computercraft:block/monitor_advanced_21",
"side": "computercraft:block/monitor_advanced_6",
"top": "computercraft:block/monitor_advanced_0"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_32",
"front": "computercraft:block/monitor_normal_16",
"side": "computercraft:block/monitor_normal_4",
"top": "computercraft:block/monitor_normal_0"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_36",
"front": "computercraft:block/monitor_normal_20",
"side": "computercraft:block/monitor_normal_7",
"top": "computercraft:block/monitor_normal_0"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_32",
"front": "computercraft:block/monitor_normal_15",
"side": "computercraft:block/monitor_normal_4",
"top": "computercraft:block/monitor_normal_0"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_33",
"front": "computercraft:block/monitor_normal_19",
"side": "computercraft:block/monitor_normal_4",
"top": "computercraft:block/monitor_normal_1"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_45",
"front": "computercraft:block/monitor_normal_31",
"side": "computercraft:block/monitor_normal_7",
"top": "computercraft:block/monitor_normal_1"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_34",
"front": "computercraft:block/monitor_normal_18",
"side": "computercraft:block/monitor_normal_4",
"top": "computercraft:block/monitor_normal_2"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_46",
"front": "computercraft:block/monitor_normal_30",
"side": "computercraft:block/monitor_normal_7",
"top": "computercraft:block/monitor_normal_2"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_40",
"front": "computercraft:block/monitor_normal_24",
"side": "computercraft:block/monitor_normal_5",
"top": "computercraft:block/monitor_normal_2"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_43",
"front": "computercraft:block/monitor_normal_27",
"side": "computercraft:block/monitor_normal_6",
"top": "computercraft:block/monitor_normal_2"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_39",
"front": "computercraft:block/monitor_normal_25",
"side": "computercraft:block/monitor_normal_5",
"top": "computercraft:block/monitor_normal_1"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_42",
"front": "computercraft:block/monitor_normal_28",
"side": "computercraft:block/monitor_normal_6",
"top": "computercraft:block/monitor_normal_1"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_35",
"front": "computercraft:block/monitor_normal_17",
"side": "computercraft:block/monitor_normal_4",
"top": "computercraft:block/monitor_normal_3"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_47",
"front": "computercraft:block/monitor_normal_29",
"side": "computercraft:block/monitor_normal_7",
"top": "computercraft:block/monitor_normal_3"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_41",
"front": "computercraft:block/monitor_normal_23",
"side": "computercraft:block/monitor_normal_5",
"top": "computercraft:block/monitor_normal_3"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_44",
"front": "computercraft:block/monitor_normal_26",
"side": "computercraft:block/monitor_normal_6",
"top": "computercraft:block/monitor_normal_3"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_38",
"front": "computercraft:block/monitor_normal_22",
"side": "computercraft:block/monitor_normal_5",
"top": "computercraft:block/monitor_normal_0"
}
}

View File

@@ -0,0 +1,9 @@
{
"parent": "computercraft:block/monitor_base",
"textures": {
"back": "computercraft:block/monitor_normal_37",
"front": "computercraft:block/monitor_normal_21",
"side": "computercraft:block/monitor_normal_6",
"top": "computercraft:block/monitor_normal_0"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/printer_front_both_trays",
"side": "computercraft:block/printer_side",
"top": "computercraft:block/printer_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/printer_front_bottom_tray",
"side": "computercraft:block/printer_side",
"top": "computercraft:block/printer_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/printer_front_empty",
"side": "computercraft:block/printer_side",
"top": "computercraft:block/printer_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/printer_front_top_tray",
"side": "computercraft:block/printer_side",
"top": "computercraft:block/printer_top"
}
}

View File

@@ -0,0 +1,8 @@
{
"parent": "minecraft:block/orientable",
"textures": {
"front": "computercraft:block/speaker_front",
"side": "computercraft:block/speaker_side",
"top": "computercraft:block/speaker_top"
}
}

View File

@@ -0,0 +1 @@
{"parent": "computercraft:block/turtle_base", "textures": {"texture": "computercraft:block/turtle_advanced"}}

View File

@@ -0,0 +1,4 @@
{
"parent": "computercraft:block/turtle_upgrade_base_left",
"textures": {"texture": "computercraft:block/turtle_crafty_face"}
}

View File

@@ -0,0 +1,4 @@
{
"parent": "computercraft:block/turtle_upgrade_base_right",
"textures": {"texture": "computercraft:block/turtle_crafty_face"}
}

View File

@@ -0,0 +1,4 @@
{
"parent": "computercraft:block/turtle_upgrade_base_left",
"textures": {"texture": "computercraft:block/wireless_modem_advanced_face"}
}

View File

@@ -0,0 +1,4 @@
{
"parent": "computercraft:block/turtle_upgrade_base_right",
"textures": {"texture": "computercraft:block/wireless_modem_advanced_face"}
}

View File

@@ -0,0 +1,4 @@
{
"parent": "computercraft:block/turtle_upgrade_base_left",
"textures": {"texture": "computercraft:block/wireless_modem_advanced_face_on"}
}

View File

@@ -0,0 +1,4 @@
{
"parent": "computercraft:block/turtle_upgrade_base_right",
"textures": {"texture": "computercraft:block/wireless_modem_advanced_face_on"}
}

View File

@@ -0,0 +1,4 @@
{
"parent": "computercraft:block/turtle_upgrade_base_left",
"textures": {"texture": "computercraft:block/wireless_modem_normal_face"}
}

View File

@@ -0,0 +1,4 @@
{
"parent": "computercraft:block/turtle_upgrade_base_right",
"textures": {"texture": "computercraft:block/wireless_modem_normal_face"}
}

View File

@@ -0,0 +1,4 @@
{
"parent": "computercraft:block/turtle_upgrade_base_left",
"textures": {"texture": "computercraft:block/wireless_modem_normal_face_on"}
}

View File

@@ -0,0 +1,4 @@
{
"parent": "computercraft:block/turtle_upgrade_base_right",
"textures": {"texture": "computercraft:block/wireless_modem_normal_face_on"}
}

View File

@@ -0,0 +1 @@
{"parent": "computercraft:block/turtle_base", "textures": {"texture": "computercraft:block/turtle_normal"}}

View File

@@ -0,0 +1,4 @@
{
"parent": "computercraft:block/turtle_upgrade_base_left",
"textures": {"texture": "computercraft:block/turtle_speaker_face"}
}

View File

@@ -0,0 +1,4 @@
{
"parent": "computercraft:block/turtle_upgrade_base_right",
"textures": {"texture": "computercraft:block/turtle_speaker_face"}
}

View File

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

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