bug fixing and jsons

This commit is contained in:
Mysticpasta1 2022-06-26 04:59:33 -05:00
parent 89b2500bad
commit a4f0b2642c
45 changed files with 1307 additions and 165 deletions

View File

@ -20,6 +20,8 @@ import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraftforge.client.event.ClientChatEvent;
@ -39,6 +41,7 @@ import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.network.PacketDistributor;
import net.montoyo.wd.block.WDBlockContainer;
import net.montoyo.wd.client.ClientProxy;
import net.montoyo.wd.config.ModConfig;
import net.montoyo.wd.core.*;
@ -149,9 +152,12 @@ public class WebDisplays {
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
bus.addListener(Messages::registryNetworkPackets);
ItemInit.init(bus);
BlockInit.init(bus);
ItemInit.init(bus);
ItemInit.registerUpgrade();
ItemInit.registerComponents();
TileInit.init(bus);
PROXY.preInit();
MinecraftForge.EVENT_BUS.register(this);

View File

@ -4,12 +4,16 @@
package net.montoyo.wd.block;
import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Vec3i;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level;
@ -18,33 +22,41 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraft.world.level.block.state.properties.DirectionProperty;
import net.minecraft.world.level.block.state.properties.IntegerProperty;
import net.minecraft.world.level.material.FluidState;
import net.minecraft.world.level.material.Material;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.montoyo.wd.core.DefaultPeripheral;
import net.montoyo.wd.core.IPeripheral;
import net.montoyo.wd.entity.TileEntityKeyboard;
import net.montoyo.wd.init.BlockInit;
import net.montoyo.wd.item.ItemLinker;
import net.montoyo.wd.utilities.BlockSide;
import net.montoyo.wd.utilities.Vector3i;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.lwjgl.system.CallbackI;
import java.util.List;
import java.util.Objects;
public class BlockKeyboardRight extends Block implements IPeripheral {
public static final DirectionProperty facing = DirectionProperty.create("facing", Direction.Plane.HORIZONTAL);
public static final DirectionProperty facing = BlockStateProperties.HORIZONTAL_FACING;
public static final VoxelShape KEYBOARD_AABB = Shapes.box(0.0, 0.0, 0.0, 1.0, 1.0 / 16.0, 1.0);
public BlockKeyboardRight() {
super(Properties.of(Material.STONE)
.strength(1.5f, 10.f));
//("keyboard")
//("keyboard")
//fullBlock = false;
}
@ -64,13 +76,13 @@ public class BlockKeyboardRight extends Block implements IPeripheral {
}
private TileEntityKeyboard getTileEntity(Level world, BlockPos pos) {
for(Direction nf: Direction.Plane.HORIZONTAL) {
for (Direction nf : Direction.Plane.HORIZONTAL) {
BlockPos np = pos.above(nf.getNormal().getX()); //TODO is X correct?
BlockState ns = world.getBlockState(np);
if(ns.getBlock() instanceof BlockPeripheral && ns.getValue(BlockPeripheral.type) == DefaultPeripheral.KEYBOARD) {
if (ns.getBlock() instanceof BlockPeripheral && ns.getValue(BlockPeripheral.type) == DefaultPeripheral.KEYBOARD) {
BlockEntity te = world.getBlockEntity(np);
if(te != null && te instanceof TileEntityKeyboard)
if (te != null && te instanceof TileEntityKeyboard)
return (TileEntityKeyboard) te;
break;
@ -87,16 +99,16 @@ public class BlockKeyboardRight extends Block implements IPeripheral {
}
public static boolean checkNeighborhood(Level world, BlockPos bp, BlockPos ignore) {
for(Direction neighbor: Direction.Plane.HORIZONTAL) {
for (Direction neighbor : Direction.Plane.HORIZONTAL) {
BlockPos np = bp.above(neighbor.getNormal().getX()); //TODO is X correct?
if(ignore == null || !np.equals(ignore)) {
if (ignore == null || !np.equals(ignore)) {
BlockState state = world.getBlockState(np);
if(state.getBlock() instanceof BlockPeripheral) {
if(state.getValue(BlockPeripheral.type) == DefaultPeripheral.KEYBOARD)
if (state.getBlock() instanceof BlockPeripheral) {
if (state.getValue(BlockPeripheral.type) == DefaultPeripheral.KEYBOARD)
return false;
} else if(state.getBlock() instanceof BlockKeyboardRight)
} else if (state.getBlock() instanceof BlockKeyboardRight)
return false;
}
}
@ -105,11 +117,11 @@ public class BlockKeyboardRight extends Block implements IPeripheral {
}
public void removeLeftPiece(Level world, BlockPos pos, boolean dropItem) {
for(Direction nf: Direction.Plane.HORIZONTAL) {
for (Direction nf : Direction.Plane.HORIZONTAL) {
BlockPos np = pos.above(nf.getNormal().getX()); //TODO is X correct?
BlockState ns = world.getBlockState(np);
if(ns.getBlock() instanceof BlockPeripheral && ns.getValue(BlockPeripheral.type) == DefaultPeripheral.KEYBOARD) {
if (ns.getBlock() instanceof BlockPeripheral && ns.getValue(BlockPeripheral.type) == DefaultPeripheral.KEYBOARD) {
/* if(dropItem)
if(world instanceof ServerLevel serverWorld) {
// ns.getBlock().getDrops(ns, serverWorld, np,0);
@ -125,7 +137,7 @@ public class BlockKeyboardRight extends Block implements IPeripheral {
if (world.isClientSide())
return;
if(neighbor.getX() == pos.getX() && neighbor.getY() == pos.getY() - 1 && neighbor.getZ() == pos.getZ()) {
if (neighbor.getX() == pos.getX() && neighbor.getY() == pos.getY() - 1 && neighbor.getZ() == pos.getZ()) {
removeLeftPiece(world, pos, true);
world.setBlock(pos, Blocks.AIR.defaultBlockState(), Block.UPDATE_ALL_IMMEDIATE);
}
@ -133,7 +145,7 @@ public class BlockKeyboardRight extends Block implements IPeripheral {
@Override
public boolean onDestroyedByPlayer(BlockState state, Level world, BlockPos pos, Player ply, boolean willHarvest, FluidState fluid) {
if(!world.isClientSide)
if (!world.isClientSide)
removeLeftPiece(world, pos, !ply.isCreative());
return super.onDestroyedByPlayer(state, world, pos, ply, willHarvest, fluid);
@ -143,18 +155,46 @@ public class BlockKeyboardRight extends Block implements IPeripheral {
@Override
public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) {
double rpos = (entity.getY() - ((double) pos.getY())) * 16.0;
if(!world.isClientSide && rpos >= 1.0 && rpos <= 2.0 && Math.random() < 0.25) {
if (!world.isClientSide && rpos >= 1.0 && rpos <= 2.0 && Math.random() < 0.25) {
TileEntityKeyboard tek = getTileEntity(world, pos);
if(tek != null)
if (tek != null)
tek.simulateCat(entity);
}
}
@Override
public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) {
if(player.isShiftKeyDown())
return InteractionResult.PASS;
public boolean canBeReplaced(BlockState state, BlockPlaceContext context) {
if (!context.getItemInHand().isEmpty()) //Keyboard
return false;
//Special checks for the keyboard
BlockPos pos = context.getClickedPos().offset(context.getHorizontalDirection().getNormal());
if (context.getLevel().getBlockState(pos.below()) == Blocks.AIR.defaultBlockState() || !BlockKeyboardRight.checkNeighborhood(context.getLevel(), pos, null))
return true;
int f = (int) Math.floor(((double) (context.getPlayer().getYRot() * 4.0f / 360.0f)) + 2.5) & 3;
Vec3i dir = Direction.from2DDataValue(f).getNormal();
BlockPos left = pos.offset(dir);
BlockPos right = pos.subtract(dir);
if (context.getLevel().getBlockState(right) == Blocks.AIR.defaultBlockState() && !(context.getLevel().getBlockState(right.below()) == Blocks.AIR.defaultBlockState()) && BlockKeyboardRight.checkNeighborhood(context.getLevel(), right, null))
return false;
else
return !(context.getLevel().getBlockState(left) == Blocks.AIR.defaultBlockState() && !(context.getLevel().getBlockState(left.below()) == Blocks.AIR.defaultBlockState()) && BlockKeyboardRight.checkNeighborhood(context.getLevel(), left, null));
}
@Override
public @NotNull InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) {
if (player.isShiftKeyDown()) {
ItemStack itemStack = player.getItemInHand(hand);
if (canBeReplaced(state, new BlockPlaceContext(player, hand, itemStack, hit))) {
int f = (int) Math.floor(((double) (player.getYRot() * 4.0f / 360.0f)) + 2.5) & 3;
Vec3i dir = Direction.from2DDataValue(f).getNormal();
level.setBlock(pos.offset(dir), BlockInit.blockKeyBoard.get().defaultBlockState(), UPDATE_ALL_IMMEDIATE);
return InteractionResult.SUCCESS;
}
}
if(player.getItemInHand(hand).getItem() instanceof ItemLinker)
return InteractionResult.PASS;

View File

@ -4,15 +4,19 @@
package net.montoyo.wd.block;
import net.minecraft.client.Minecraft;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Vec3i;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.players.PlayerList;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Explosion;
import net.minecraft.world.level.Level;
@ -29,6 +33,7 @@ import net.minecraft.world.level.block.state.properties.Property;
import net.minecraft.world.level.material.Material;
import net.minecraft.world.level.material.PushReaction;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.Vec3;
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
@ -44,7 +49,10 @@ import net.montoyo.wd.net.Messages;
import net.montoyo.wd.net.client.CMessageCloseGui;
import org.jetbrains.annotations.Nullable;
public class BlockPeripheral extends Block {
import java.util.List;
import java.util.Objects;
public class BlockPeripheral extends WDBlockContainer {
public static final EnumProperty<DefaultPeripheral> type = EnumProperty.create("type", DefaultPeripheral.class);
public static final DirectionProperty facing = DirectionProperty.create("facing", Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST);
@ -53,19 +61,15 @@ public class BlockPeripheral extends Block {
public BlockPeripheral() {
super(BlockBehaviour.Properties.of(Material.STONE).strength(1.5f, 10.f));
// setName("peripheral");
}
// @Override
// protected BlockItem createItemBlock() {
// return new ItemPeripheral(this);
// }
}
@Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
builder.add(properties);
}
// @Nullable TODO: Fix
// @Nullable TODO: Fix
// @Override
// public BlockState getStateForPlacement(BlockPlaceContext context) {
// Direction rot = Direction.fromYRot(placer.getYHeadRot());

View File

@ -4,33 +4,33 @@
package net.montoyo.wd.block;
import net.minecraft.core.BlockPos;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.level.block.entity.BaseContainerBlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.montoyo.wd.item.ItemPeripheral;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.montoyo.wd.WebDisplays;
public abstract class WDBlockContainer extends BaseContainerBlockEntity {
public abstract class WDBlockContainer extends Block {
protected BlockItem itemBlock;
protected static BlockItem itemBlock;
public WDBlockContainer(BlockEntityType<?> type, BlockPos blockPos, BlockState state) {
super(type, blockPos, state);
public WDBlockContainer(Properties arg) {
super(arg);
}
protected void setName(String name) {
// setRegistryName(name);
}
protected abstract BlockItem createItemBlock();
protected static BlockItem createItemBlock(Block block) {
return new BlockItem(block, new Item.Properties().tab(WebDisplays.CREATIVE_TAB));
}
public void makeItemBlock() {
public static void makeItemBlock(Block block) {
if(itemBlock != null)
throw new RuntimeException("WDBlockContainer.makeItemBlock() called twice!");
itemBlock = createItemBlock();
itemBlock.setRegistryName(getName().getString());
itemBlock = createItemBlock(block);
// itemBlock.setRegistryName(getName().getString());
}
public BlockItem getItem() {

View File

@ -70,7 +70,7 @@ public class GuiKeyboard extends WDScreen {
else
showWarning = !hasUserReadWarning();
loadFrom(new ResourceLocation("webdisplays", "gui/keyboard.json"));
loadFrom(new ResourceLocation("webdisplays", "gui/kb_right.json"));
if (showWarning) {
int maxLabelW = 0;

View File

@ -8,28 +8,37 @@ import net.minecraft.util.StringRepresentable;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.montoyo.wd.entity.*;
import net.montoyo.wd.entity.TileEntityKeyboard;
import net.montoyo.wd.entity.TileEntityRCtrl;
import net.montoyo.wd.entity.TileEntityRedCtrl;
import net.montoyo.wd.entity.TileEntityServer;
import org.jetbrains.annotations.NotNull;
import java.util.function.Consumer;
import java.util.function.Supplier;
public enum DefaultPeripheral implements StringRepresentable {
KEYBOARD("keyboard", "Keyboard", TileEntityKeyboard::new), //WITH FACING (< 3)
KEYBOARD("keyboard", "Keyboard", TileEntityKeyboard::new, TileEntityKeyboard::getBlockFromTE), //WITH FACING (< 3)
// CC_INTERFACE("ccinterface", "ComputerCraft_Interface", TileEntityCCInterface.class),
// OC_INTERFACE("cointerface", "OpenComputers_Interface", TileEntityOCInterface.class),
REMOTE_CONTROLLER("remotectrl", "Remote_Controller", TileEntityRCtrl::new), //WITHOUT FACING (>= 3)
REDSTONE_CONTROLLER("redstonectrl", "Redstone_Controller", TileEntityRedCtrl::new),
SERVER("server", "Server", TileEntityServer::new);
REMOTE_CONTROLLER("remotectrl", "Remote_Controller", TileEntityRCtrl::new ,TileEntityRCtrl::getBlockFromTE), //WITHOUT FACING (>= 3)
REDSTONE_CONTROLLER("redstonectrl", "Redstone_Controller", TileEntityRedCtrl::new ,TileEntityRedCtrl::getBlockFromTE),
SERVER("server", "Server", TileEntityServer::new, TileEntityServer::getBlockFromTE);
private final String name;
private final String wikiName;
private final BlockEntityType.BlockEntitySupplier<? extends BlockEntity> teClass;
private final Supplier<? extends Block> bClass;
DefaultPeripheral(String name, String wname, BlockEntityType.BlockEntitySupplier<? extends BlockEntity> factory) {
DefaultPeripheral(String name, String wname, BlockEntityType.BlockEntitySupplier<? extends BlockEntity> factory, Supplier<? extends Block> supplier) {
this.name = name;
wikiName = wname;
teClass = factory;
bClass = supplier;
}
public Supplier<? extends Block> getBlockClass() {
return bClass;
}
public static DefaultPeripheral fromMetadata(int meta) {
@ -58,7 +67,7 @@ public enum DefaultPeripheral implements StringRepresentable {
}
@Override
public String getSerializedName() {
public @NotNull String getSerializedName() {
return "default_peripheral_" + name;
}
}

View File

@ -5,15 +5,21 @@
package net.montoyo.wd.entity;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Vec3i;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.animal.Ocelot;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.montoyo.wd.WebDisplays;
import net.montoyo.wd.block.BlockKeyboardRight;
import net.montoyo.wd.core.ScreenRights;
import net.montoyo.wd.data.KeyboardData;
import net.montoyo.wd.init.TileInit;
@ -23,9 +29,21 @@ import net.montoyo.wd.utilities.Util;
public class TileEntityKeyboard extends TileEntityPeripheralBase {
private static final String RANDOM_CHARS = "AZERTYUIOPQSDFGHJKLMWXCVBNazertyuiopqsdfghjklmwxcvbn0123456789"; //Yes I have an AZERTY keyboard, u care?
private static BlockPos blockPos;
private static BlockState blockState;
public TileEntityKeyboard(BlockPos arg2, BlockState arg3) {
super(TileInit.KEYBOARD.get(), arg2, arg3);
blockPos = arg2;
blockState = arg3;
}
public static Block getBlockFromTE() {
if(blockPos != null && blockState != null) {
return new TileEntityKeyboard(blockPos, blockState).getBlockState().getBlock();
} else {
throw new RuntimeException();
}
}
@Override

View File

@ -5,16 +5,20 @@
package net.montoyo.wd.entity;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Vec3i;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.chunk.LevelChunk;
import net.montoyo.wd.block.BlockKeyboardRight;
import net.montoyo.wd.core.IPeripheral;
import net.montoyo.wd.utilities.BlockSide;
import net.montoyo.wd.utilities.Log;

View File

@ -9,6 +9,7 @@ import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.montoyo.wd.core.ScreenRights;
@ -18,9 +19,21 @@ import net.montoyo.wd.utilities.BlockSide;
import net.montoyo.wd.utilities.Util;
public class TileEntityRCtrl extends TileEntityPeripheralBase {
private static BlockPos blockPos;
private static BlockState blockState;
public TileEntityRCtrl(BlockPos arg2, BlockState arg3) {
super(TileInit.REMOTE_CONTROLLER.get(), arg2, arg3);
blockPos = arg2;
blockState = arg3;
}
public static Block getBlockFromTE() {
if(blockPos != null && blockState != null) {
return new TileEntityKeyboard(blockPos, blockState).getBlockState().getBlock();
} else {
throw new RuntimeException();
}
}
@Override

View File

@ -27,9 +27,21 @@ public class TileEntityRedCtrl extends TileEntityPeripheralBase {
private String risingEdgeURL = "";
private String fallingEdgeURL = "";
private boolean state = false;
private static BlockState blockState;
private static BlockPos blockPos;
public TileEntityRedCtrl(BlockPos arg2, BlockState arg3) {
super(TileInit.REDSTONE_CONTROLLER.get(), arg2, arg3);
blockPos = arg2;
blockState = arg3;
}
public static Block getBlockFromTE() {
if(blockPos != null && blockState != null) {
return new TileEntityKeyboard(blockPos, blockState).getBlockState().getBlock();
} else {
throw new RuntimeException();
}
}
@Override
@ -110,5 +122,4 @@ public class TileEntityRedCtrl extends TileEntityPeripheralBase {
tes.setScreenURL(screenSide, url);
}
}
}

View File

@ -8,6 +8,7 @@ import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
@ -22,9 +23,21 @@ import javax.annotation.Nonnull;
public class TileEntityServer extends BlockEntity {
private NameUUIDPair owner;
private static BlockPos blockPos;
private static BlockState blockState;
public TileEntityServer(BlockPos arg2, BlockState arg3) {
super(TileInit.SERVER.get(), arg2, arg3);
blockPos = arg2;
blockState = arg3;
}
public static Block getBlockFromTE() {
if(blockPos != null && blockState != null) {
return new TileEntityKeyboard(blockPos, blockState).getBlockState().getBlock();
} else {
throw new RuntimeException();
}
}
@Override

View File

@ -1,7 +1,5 @@
package net.montoyo.wd.init;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.material.Material;
@ -12,10 +10,6 @@ import net.minecraftforge.registries.RegistryObject;
import net.montoyo.wd.block.BlockKeyboardRight;
import net.montoyo.wd.block.BlockPeripheral;
import net.montoyo.wd.block.BlockScreen;
import net.montoyo.wd.core.WDCreativeTab;
import java.util.function.Function;
import java.util.function.Supplier;
public class BlockInit {
@ -25,9 +19,15 @@ public class BlockInit {
public static DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, "webdisplays");
public static final RegistryObject<Block> blockScreen = BLOCKS.register("screen_block", () -> new BlockScreen(BlockBehaviour.Properties.of(Material.STONE)));
public static final RegistryObject<Block> blockScreen = BLOCKS.register("screen", () -> new BlockScreen(BlockBehaviour.Properties.of(Material.STONE)));
public static final RegistryObject<Block> blockPeripheral = BLOCKS.register("peripheral_block", BlockPeripheral::new);
public static final RegistryObject<Block> blockKeyBoard = BlockInit.BLOCKS.register("kb_left", BlockPeripheral::new);
public static final RegistryObject<Block> blockKbRight = BLOCKS.register("kb_right_block", BlockKeyboardRight::new);
public static final RegistryObject<Block> blockRedControl = BlockInit.BLOCKS.register("redctrl", BlockPeripheral::new);
public static final RegistryObject<Block> blockRControl = BlockInit.BLOCKS.register("rctrl", BlockPeripheral::new);
public static final RegistryObject<Block> blockServer = BlockInit.BLOCKS.register("server", BlockPeripheral::new);
public static final RegistryObject<Block> blockKbRight = BLOCKS.register("kb_right", BlockKeyboardRight::new);
}

View File

@ -1,15 +1,20 @@
package net.montoyo.wd.init;
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import net.montoyo.wd.WebDisplays;
import net.montoyo.wd.block.WDBlockContainer;
import net.montoyo.wd.core.CraftComponent;
import net.montoyo.wd.core.DefaultUpgrade;
import net.montoyo.wd.item.*;
import java.util.function.Supplier;
import java.util.Locale;
public class ItemInit {
public class ItemInit{
public static void init(IEventBus bus) {
ITEMS.register(bus);
@ -17,12 +22,32 @@ public class ItemInit {
public static DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, "webdisplays");
public static final RegistryObject<Item> itemScreenCfg = ITEMS.register("screen_config", () -> new ItemScreenConfigurator(new Item.Properties()));
public static final RegistryObject<Item> itemOwnerThief = ITEMS.register("owner_thief", () -> new ItemOwnershipThief(new Item.Properties()));
public static RegistryObject<Item> itemUpgrade = null;
public static RegistryObject<Item> itemCraftComp = null;
public static final RegistryObject<Item> itemScreenCfg = ITEMS.register("screencfg", () -> new ItemScreenConfigurator(new Item.Properties()));
public static final RegistryObject<Item> itemOwnerThief = ITEMS.register("ownerthief", () -> new ItemOwnershipThief(new Item.Properties()));
public static final RegistryObject<Item> itemLinker = ITEMS.register("linker", () -> new ItemLinker(new Item.Properties()));
public static final RegistryObject<Item> itemMinePad = ITEMS.register("mine_pad", () -> new ItemMinePad2(new Item.Properties()));
public static final RegistryObject<Item> itemUpgrade = ITEMS.register("upgrade", ItemUpgrade::new);
public static final RegistryObject<Item> itemCraftComp = ITEMS.register("craftcomp", () -> new ItemCraftComponent(new Item.Properties()));
public static final RegistryObject<Item> itemMinePad = ITEMS.register("minepad", () -> new ItemMinePad2(new Item.Properties()));
public static final RegistryObject<Item> itemLaserPointer = ITEMS.register("laserpointer", () -> new ItemLaserPointer(new Item.Properties()));
public static void registerUpgrade() {
for (DefaultUpgrade du : DefaultUpgrade.values()) {
itemUpgrade = ITEMS.register("upgrade_" + du.name().toLowerCase(Locale.ROOT), ItemUpgrade::new);
}
}
public static void registerComponents() {
for (CraftComponent cc : CraftComponent.values()) {
itemCraftComp = ITEMS.register("craftcomp_" + cc.name().toLowerCase(Locale.ROOT), () -> new ItemCraftComponent(new Item.Properties()));
}
}
public static final RegistryObject<Item> screen = ITEMS.register("screen", () -> new BlockItem(BlockInit.blockScreen.get(), new Item.Properties().tab(WebDisplays.CREATIVE_TAB)));
public static final RegistryObject<Item> keyboard = ITEMS.register("keyboard", () -> new BlockItem(BlockInit.blockKbRight.get(), new Item.Properties().tab(WebDisplays.CREATIVE_TAB)));
public static final RegistryObject<Item> redctrl = ITEMS.register("redctrl", () -> new BlockItem(BlockInit.blockRedControl.get(), new Item.Properties().tab(WebDisplays.CREATIVE_TAB)));
public static final RegistryObject<Item> rctrl = ITEMS.register("rctrl", () -> new BlockItem(BlockInit.blockRControl.get(), new Item.Properties().tab(WebDisplays.CREATIVE_TAB)));
public static final RegistryObject<Item> server = ITEMS.register("server", () -> new BlockItem(BlockInit.blockServer.get(), new Item.Properties().tab(WebDisplays.CREATIVE_TAB)));
}

View File

@ -1,5 +1,6 @@
package net.montoyo.wd.init;
import net.minecraft.world.level.ClipContext;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
@ -20,17 +21,17 @@ public class TileInit {
.register("screen", () -> BlockEntityType.Builder
.of(TileEntityScreen::new, BlockInit.blockScreen.get()).build(null));
public static final RegistryObject<BlockEntityType<?>> KEYBOARD = TILE_TYPES.register("keyboard", () -> BlockEntityType.Builder
.of(TileEntityKeyboard::new, BlockInit.blockPeripheral.get()).build(null));
public static final RegistryObject<BlockEntityType<?>> KEYBOARD = TILE_TYPES.register("kb_left", () -> BlockEntityType.Builder
.of(TileEntityKeyboard::new, BlockInit.blockKeyBoard.get()).build(null));
public static final RegistryObject<BlockEntityType<?>> REMOTE_CONTROLLER = TILE_TYPES.register("remotectrl",
() -> BlockEntityType.Builder.of(TileEntityRCtrl::new, BlockInit.blockPeripheral.get()).build(null)); //WITHOUT FACING (>= 3)
public static final RegistryObject<BlockEntityType<?>> REMOTE_CONTROLLER = TILE_TYPES.register("rctrl",
() -> BlockEntityType.Builder.of(TileEntityRCtrl::new, BlockInit.blockRControl.get()).build(null)); //WITHOUT FACING (>= 3)
public static final RegistryObject<BlockEntityType<?>> REDSTONE_CONTROLLER = TILE_TYPES.register("redstonectrl",
() -> BlockEntityType.Builder.of(TileEntityRedCtrl::new, BlockInit.blockPeripheral.get()).build(null));
public static final RegistryObject<BlockEntityType<?>> REDSTONE_CONTROLLER = TILE_TYPES.register("redctrl",
() -> BlockEntityType.Builder.of(TileEntityRedCtrl::new, BlockInit.blockRedControl.get()).build(null));
public static final RegistryObject<BlockEntityType<?>> SERVER = TILE_TYPES.register("server" ,
() -> BlockEntityType.Builder.of(TileEntityServer::new, BlockInit.blockPeripheral.get()).build(null));
() -> BlockEntityType.Builder.of(TileEntityServer::new, BlockInit.blockServer.get()).build(null));
public static void init(IEventBus bus) {
TILE_TYPES.register(bus);

View File

@ -1,48 +0,0 @@
/*
* Copyright (C) 2019 BARBOTIN Nicolas
*/
package net.montoyo.wd.item;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.montoyo.wd.core.WDCreativeTab;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class ItemPeripheral extends Item implements WDItem {
public ItemPeripheral() {
super(new Properties().tab(WDCreativeTab.TAB_REDSTONE));
}
//TODO what was this!
/*@Override
public boolean canPlaceBlock(Level world, @Nonnull BlockPos pos_, @Nonnull EnumFacing side, EntityPlayer player, ItemStack stack) {
if(stack.getMetadata() != 0) //Keyboard
return true;
//Special checks for the keyboard
BlockPos pos = pos_.add(side.getDirectionVec());
if(world.isAirBlock(pos.down()) || !BlockKeyboardRight.checkNeighborhood(world, pos, null))
return false;
int f = MathHelper.floor(((double) (player.rotationYaw * 4.0f / 360.0f)) + 2.5) & 3;
Vec3i dir = EnumFacing.getHorizontal(f).rotateY().getDirectionVec();
BlockPos left = pos.add(dir);
BlockPos right = pos.subtract(dir);
if(world.isAirBlock(right) && !world.isAirBlock(right.down()) && BlockKeyboardRight.checkNeighborhood(world, right, null))
return true;
else
return world.isAirBlock(left) && !world.isAirBlock(left.down()) && BlockKeyboardRight.checkNeighborhood(world, left, null);
} */
@Nullable
@Override
public String getWikiName(@Nonnull ItemStack is) {
return is.getItem().getName(is).getString();
}
}

View File

@ -21,6 +21,7 @@ import net.montoyo.wd.core.MissingPermissionException;
import net.montoyo.wd.core.ScreenRights;
import net.montoyo.wd.entity.TileEntityScreen;
import net.montoyo.wd.init.BlockInit;
import net.montoyo.wd.init.ItemInit;
import net.montoyo.wd.utilities.*;
import java.util.function.Supplier;
@ -291,7 +292,9 @@ public class SMessageScreenCtrl implements Runnable {
return; //Out of range (player reach distance)
BlockState bs = world.getBlockState(blockPos);
if(bs.getBlock() != BlockInit.blockPeripheral.get() || bs.getValue(BlockPeripheral.type) != DefaultPeripheral.REMOTE_CONTROLLER)
if(bs.getBlock() != BlockInit.blockServer.get() || bs.getBlock() != BlockInit.blockRControl.get() ||
bs.getBlock() != BlockInit.blockKeyBoard.get() || bs.getBlock() != BlockInit.blockRedControl.get()
|| bs.getValue(BlockPeripheral.type) != DefaultPeripheral.REMOTE_CONTROLLER)
return; //I call it hax...
} else if(player.shouldRenderAtSqrDistance(player.distanceToSqr(bp.getX(), bp.getY(), bp.getZ())))
return; //Out of range (range problem)

View File

@ -0,0 +1,10 @@
{
"forge_marker": 1,
"uvlock": false,
"variants": {
"facing=north,type=default_peripheral_keyboard": { "model": "webdisplays:block/kb_left" },
"facing=east,type=default_peripheral_keyboard": { "model": "webdisplays:block/kb_left", "y": 90.0 },
"facing=south,type=default_peripheral_keyboard": { "model": "webdisplays:block/kb_left", "y": 180.0 },
"facing=west,type=default_peripheral_keyboard": { "model": "webdisplays:block/kb_left", "y": 270.0 }
}
}

View File

@ -0,0 +1,10 @@
{
"forge_marker": 1,
"uvlock": false,
"variants": {
"facing=north": { "model": "webdisplays:block/kb_right" },
"facing=east": { "model": "webdisplays:block/kb_right", "y": 90.0 },
"facing=south": { "model": "webdisplays:block/kb_right", "y": 180.0 },
"facing=west": { "model": "webdisplays:block/kb_right", "y": 270.0 }
}
}

View File

@ -1,8 +0,0 @@
{
"variants": {
"facing=0": { "model": "webdisplays:kb_right" },
"facing=1": { "model": "webdisplays:kb_right", "y": 90.0 },
"facing=2": { "model": "webdisplays:kb_right", "y": 180.0 },
"facing=3": { "model": "webdisplays:kb_right", "y": 270.0 }
}
}

View File

@ -1,33 +0,0 @@
{
"variants": {
"facing=0,type=keyboard": { "model": "webdisplays:kb_left" },
"facing=1,type=keyboard": { "model": "webdisplays:kb_left", "y": 90.0 },
"facing=2,type=keyboard": { "model": "webdisplays:kb_left", "y": 180.0 },
"facing=3,type=keyboard": { "model": "webdisplays:kb_left", "y": 270.0 },
"facing=0,type=ccinterface": { "model": "webdisplays:ccinterface", "y": 180.0 },
"facing=1,type=ccinterface": { "model": "webdisplays:ccinterface", "y": 270.0 },
"facing=2,type=ccinterface": { "model": "webdisplays:ccinterface" },
"facing=3,type=ccinterface": { "model": "webdisplays:ccinterface", "y": 90.0 },
"facing=0,type=cointerface": { "model": "webdisplays:ocinterface", "y": 180.0 },
"facing=1,type=cointerface": { "model": "webdisplays:ocinterface", "y": 270.0 },
"facing=2,type=cointerface": { "model": "webdisplays:ocinterface" },
"facing=3,type=cointerface": { "model": "webdisplays:ocinterface", "y": 90.0 },
"facing=0,type=remotectrl": { "model": "webdisplays:rctrl" },
"facing=1,type=remotectrl": { "model": "webdisplays:rctrl" },
"facing=2,type=remotectrl": { "model": "webdisplays:rctrl" },
"facing=3,type=remotectrl": { "model": "webdisplays:rctrl" },
"facing=0,type=redstonectrl": { "model": "webdisplays:redctrl" },
"facing=1,type=redstonectrl": { "model": "webdisplays:redctrl" },
"facing=2,type=redstonectrl": { "model": "webdisplays:redctrl" },
"facing=3,type=redstonectrl": { "model": "webdisplays:redctrl" },
"facing=0,type=server": { "model": "webdisplays:server" },
"facing=1,type=server": { "model": "webdisplays:server" },
"facing=2,type=server": { "model": "webdisplays:server" },
"facing=3,type=server": { "model": "webdisplays:server" }
}
}

View File

@ -0,0 +1,10 @@
{
"forge_marker": 1,
"uvlock": false,
"variants": {
"facing=north,type=default_peripheral_remotectrl": { "model": "webdisplays:block/rctrl" },
"facing=east,type=default_peripheral_remotectrl": { "model": "webdisplays:block/rctrl" },
"facing=south,type=default_peripheral_remotectrl": { "model": "webdisplays:block/rctrl" },
"facing=west,type=default_peripheral_remotectrl": { "model": "webdisplays:block/rctrl" }
}
}

View File

@ -0,0 +1,10 @@
{
"forge_marker": 1,
"uvlock": false,
"variants": {
"facing=north,type=default_peripheral_redstonectrl": { "model": "webdisplays:block/redctrl" },
"facing=east,type=default_peripheral_redstonectrl": { "model": "webdisplays:block/redctrl" },
"facing=south,type=default_peripheral_redstonectrl": { "model": "webdisplays:block/redctrl" },
"facing=west,type=default_peripheral_redstonectrl": { "model": "webdisplays:block/redctrl" }
}
}

View File

@ -1,6 +1,8 @@
{
"forge_marker": 1,
"uvlock": false,
"variants": {
"normal": { "model": "webdisplays:screen" },
"inventory": { "model": "webdisplays:screen_item" }
"normal": { "model": "webdisplays:block/screen" },
"inventory": { "model": "webdisplays:block/screen_item" }
}
}

View File

@ -0,0 +1,10 @@
{
"forge_marker": 1,
"uvlock": false,
"variants": {
"facing=north,type=default_peripheral_server": { "model": "webdisplays:block/server" },
"facing=east,type=default_peripheral_server": { "model": "webdisplays:block/server" },
"facing=south,type=default_peripheral_server": { "model": "webdisplays:block/server" },
"facing=west,type=default_peripheral_server": { "model": "webdisplays:block/server" }
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "webdisplays:blocks/screen15"
}
}

View File

@ -0,0 +1,8 @@
{
"parent": "block/orientable",
"textures": {
"top": "webdisplays:blocks/cci_topbot",
"front": "webdisplays:blocks/cci_front",
"side": "webdisplays:blocks/cci_side"
}
}

View File

@ -0,0 +1,503 @@
{
"__comment": "Model absolutely not generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
"particle": "webdisplays:blocks/kb_key",
"0": "webdisplays:blocks/kb_base",
"1": "webdisplays:blocks/kb_key"
},
"elements": [
{
"name": "Base",
"from": [ 0.0, 0.0, 3.0 ],
"to": [ 16.0, 1.0, 16.0 ],
"faces": {
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 1.0 ] },
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 13.0, 1.0 ] },
"south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 1.0 ] },
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 13.0, 1.0 ] },
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 13.0 ] },
"down": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 13.0 ], "cullface": "down" }
}
},
{
"name": "Key1",
"from": [ 1.0, 1.0, 4.0 ],
"to": [ 2.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key2",
"from": [ 4.0, 1.0, 4.0 ],
"to": [ 5.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key3",
"from": [ 6.0, 1.0, 4.0 ],
"to": [ 7.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key4",
"from": [ 8.0, 1.0, 4.0 ],
"to": [ 9.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key5",
"from": [ 10.0, 1.0, 4.0 ],
"to": [ 11.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key6",
"from": [ 13.0, 1.0, 4.0 ],
"to": [ 14.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key7",
"from": [ 15.0, 1.0, 4.0 ],
"to": [ 16.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key8",
"from": [ 1.0, 1.0, 6.0 ],
"to": [ 2.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key9",
"from": [ 3.0, 1.0, 6.0 ],
"to": [ 4.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key10",
"from": [ 5.0, 1.0, 6.0 ],
"to": [ 6.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key11",
"from": [ 7.0, 1.0, 6.0 ],
"to": [ 8.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key12",
"from": [ 9.0, 1.0, 6.0 ],
"to": [ 10.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key13",
"from": [ 11.0, 1.0, 6.0 ],
"to": [ 12.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key14",
"from": [ 13.0, 1.0, 6.0 ],
"to": [ 14.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key15",
"from": [ 15.0, 1.0, 6.0 ],
"to": [ 16.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key16",
"from": [ 1.0, 1.0, 8.0 ],
"to": [ 3.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }
}
},
{
"name": "Key17",
"from": [ 4.0, 1.0, 8.0 ],
"to": [ 5.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key18",
"from": [ 6.0, 1.0, 8.0 ],
"to": [ 7.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key19",
"from": [ 8.0, 1.0, 8.0 ],
"to": [ 9.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key20",
"from": [ 10.0, 1.0, 8.0 ],
"to": [ 11.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key21",
"from": [ 12.0, 1.0, 8.0 ],
"to": [ 13.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key22",
"from": [ 14.0, 1.0, 8.0 ],
"to": [ 15.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key23",
"from": [ 1.0, 1.0, 10.0 ],
"to": [ 4.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 3.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 3.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 3.0, 1.0 ] }
}
},
{
"name": "Key24",
"from": [ 5.0, 1.0, 10.0 ],
"to": [ 6.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key25",
"from": [ 7.0, 1.0, 10.0 ],
"to": [ 8.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key26",
"from": [ 9.0, 1.0, 10.0 ],
"to": [ 10.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key27",
"from": [ 11.0, 1.0, 10.0 ],
"to": [ 12.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key28",
"from": [ 13.0, 1.0, 10.0 ],
"to": [ 14.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key29",
"from": [ 15.0, 1.0, 10.0 ],
"to": [ 16.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key30",
"from": [ 1.0, 1.0, 12.0 ],
"to": [ 3.0, 2.0, 13.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }
}
},
{
"name": "Key31",
"from": [ 4.0, 1.0, 12.0 ],
"to": [ 5.0, 2.0, 13.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key32",
"from": [ 6.0, 1.0, 12.0 ],
"to": [ 7.0, 2.0, 13.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key33",
"from": [ 8.0, 1.0, 12.0 ],
"to": [ 9.0, 2.0, 13.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key34",
"from": [ 10.0, 1.0, 12.0 ],
"to": [ 11.0, 2.0, 13.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key35",
"from": [ 12.0, 1.0, 12.0 ],
"to": [ 13.0, 2.0, 13.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key36",
"from": [ 14.0, 1.0, 12.0 ],
"to": [ 15.0, 2.0, 13.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key37",
"from": [ 1.0, 1.0, 14.0 ],
"to": [ 3.0, 2.0, 15.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }
}
},
{
"name": "Key38",
"from": [ 4.0, 1.0, 14.0 ],
"to": [ 6.0, 2.0, 15.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }
}
},
{
"name": "Key39",
"from": [ 7.0, 1.0, 14.0 ],
"to": [ 9.0, 2.0, 15.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }
}
},
{
"name": "Key40",
"from": [ 10.0, 1.0, 14.0 ],
"to": [ 16.0, 2.0, 15.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 6.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 6.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 6.0, 1.0 ] }
}
}
]
}

View File

@ -0,0 +1,477 @@
{
"__comment": "Model absolutely not generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)",
"textures": {
"particle": "webdisplays:blocks/kb_key",
"0": "webdisplays:blocks/kb_base",
"1": "webdisplays:blocks/kb_key"
},
"elements": [
{
"name": "Base",
"from": [ 0.0, 0.0, 3.0 ],
"to": [ 16.0, 1.0, 16.0 ],
"faces": {
"north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 1.0 ] },
"east": { "texture": "#0", "uv": [ 0.0, 0.0, 13.0, 1.0 ] },
"south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 1.0 ] },
"west": { "texture": "#0", "uv": [ 0.0, 0.0, 13.0, 1.0 ] },
"up": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 13.0 ] },
"down": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 13.0 ], "cullface": "down" }
}
},
{
"name": "Key1",
"from": [ 1.0, 1.0, 4.0 ],
"to": [ 2.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key2",
"from": [ 3.0, 1.0, 4.0 ],
"to": [ 4.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key3",
"from": [ 6.0, 1.0, 4.0 ],
"to": [ 7.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key4",
"from": [ 8.0, 1.0, 4.0 ],
"to": [ 9.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key5",
"from": [ 10.0, 1.0, 4.0 ],
"to": [ 11.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key6",
"from": [ 12.0, 1.0, 4.0 ],
"to": [ 13.0, 2.0, 5.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key7",
"from": [ 1.0, 1.0, 6.0 ],
"to": [ 2.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key8",
"from": [ 3.0, 1.0, 6.0 ],
"to": [ 4.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key9",
"from": [ 5.0, 1.0, 6.0 ],
"to": [ 6.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key10",
"from": [ 7.0, 1.0, 6.0 ],
"to": [ 8.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key11",
"from": [ 9.0, 1.0, 6.0 ],
"to": [ 11.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }
}
},
{
"name": "Key12",
"from": [ 12.0, 1.0, 6.0 ],
"to": [ 13.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key13",
"from": [ 14.0, 1.0, 6.0 ],
"to": [ 15.0, 2.0, 7.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key14",
"from": [ 0.0, 1.0, 8.0 ],
"to": [ 1.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key15",
"from": [ 2.0, 1.0, 8.0 ],
"to": [ 3.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key16",
"from": [ 4.0, 1.0, 8.0 ],
"to": [ 5.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key17",
"from": [ 6.0, 1.0, 8.0 ],
"to": [ 7.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key18",
"from": [ 8.0, 1.0, 8.0 ],
"to": [ 11.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 3.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 3.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 3.0, 1.0 ] }
}
},
{
"name": "Key19",
"from": [ 12.0, 1.0, 8.0 ],
"to": [ 13.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key20",
"from": [ 14.0, 1.0, 8.0 ],
"to": [ 15.0, 2.0, 9.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key21",
"from": [ 1.0, 1.0, 10.0 ],
"to": [ 2.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key22",
"from": [ 3.0, 1.0, 10.0 ],
"to": [ 4.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key23",
"from": [ 5.0, 1.0, 10.0 ],
"to": [ 6.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key24",
"from": [ 7.0, 1.0, 10.0 ],
"to": [ 8.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key25",
"from": [ 9.0, 1.0, 9.0 ],
"to": [ 11.0, 2.0, 11.0 ],
"faces": {
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 0.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 2.0 ] }
}
},
{
"name": "Key26",
"from": [ 12.0, 1.0, 10.0 ],
"to": [ 13.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key27",
"from": [ 14.0, 1.0, 10.0 ],
"to": [ 15.0, 2.0, 11.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key29",
"from": [ 0.0, 1.0, 12.0 ],
"to": [ 1.0, 2.0, 13.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key30",
"from": [ 2.0, 1.0, 12.0 ],
"to": [ 3.0, 2.0, 13.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key31",
"from": [ 4.0, 1.0, 12.0 ],
"to": [ 5.0, 2.0, 13.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key32",
"from": [ 6.0, 1.0, 12.0 ],
"to": [ 7.0, 2.0, 13.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key33",
"from": [ 8.0, 1.0, 12.0 ],
"to": [ 11.0, 2.0, 13.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 3.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 3.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 3.0, 1.0 ] }
}
},
{
"name": "Key34",
"from": [ 13.0, 1.0, 13.0 ],
"to": [ 14.0, 2.0, 14.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] }
}
},
{
"name": "Key35",
"from": [ 0.0, 1.0, 14.0 ],
"to": [ 2.0, 2.0, 15.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }
}
},
{
"name": "Key36",
"from": [ 3.0, 1.0, 14.0 ],
"to": [ 5.0, 2.0, 15.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }
}
},
{
"name": "Key37",
"from": [ 6.0, 1.0, 14.0 ],
"to": [ 8.0, 2.0, 15.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }
}
},
{
"name": "Key38",
"from": [ 9.0, 1.0, 14.0 ],
"to": [ 11.0, 2.0, 15.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 2.0, 1.0 ] }
}
},
{
"name": "Key39",
"from": [ 12.0, 1.0, 14.0 ],
"to": [ 15.0, 2.0, 15.0 ],
"faces": {
"north": { "texture": "#1", "uv": [ 0.0, 0.0, 3.0, 1.0 ] },
"east": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"south": { "texture": "#1", "uv": [ 0.0, 0.0, 3.0, 1.0 ] },
"west": { "texture": "#1", "uv": [ 0.0, 0.0, 1.0, 1.0 ] },
"up": { "texture": "#1", "uv": [ 0.0, 0.0, 3.0, 1.0 ] }
}
}
]
}

View File

@ -0,0 +1,8 @@
{
"parent": "block/orientable",
"textures": {
"top": "webdisplays:blocks/oci_topbot",
"front": "webdisplays:blocks/oci_front",
"side": "webdisplays:blocks/oci_side"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "webdisplays:blocks/rctrl"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "webdisplays:blocks/redctrl"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "webdisplays:blocks/screen15"
}
}

View File

@ -0,0 +1,12 @@
{
"parent": "block/cube",
"textures": {
"particle": "webdisplays:blocks/server",
"down": "webdisplays:blocks/server2",
"up": "webdisplays:blocks/server2",
"north": "webdisplays:blocks/server",
"east": "webdisplays:blocks/server",
"south": "webdisplays:blocks/server",
"west": "webdisplays:blocks/server"
}
}