diff --git a/src/main/java/electroblob/wizardry/WizardryGuiHandler.java b/src/main/java/electroblob/wizardry/WizardryGuiHandler.java index 69ffe1ab..69aa420f 100644 --- a/src/main/java/electroblob/wizardry/WizardryGuiHandler.java +++ b/src/main/java/electroblob/wizardry/WizardryGuiHandler.java @@ -1,10 +1,12 @@ package electroblob.wizardry; +import electroblob.wizardry.inventory.ContainerArcaneWorkbench; +import electroblob.wizardry.inventory.ContainerBookshelf; +import electroblob.wizardry.inventory.ContainerPortableWorkbench; import electroblob.wizardry.item.ItemSpellBook; import electroblob.wizardry.item.ItemWizardHandbook; -import electroblob.wizardry.tileentity.ContainerArcaneWorkbench; -import electroblob.wizardry.tileentity.ContainerPortableWorkbench; import electroblob.wizardry.tileentity.TileEntityArcaneWorkbench; +import electroblob.wizardry.tileentity.TileEntityBookshelf; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; @@ -20,40 +22,73 @@ public class WizardryGuiHandler implements IGuiHandler { public static final int ARCANE_WORKBENCH = nextGuiId++; public static final int WIZARD_HANDBOOK = nextGuiId++; public static final int PORTABLE_CRAFTING = nextGuiId++; + public static final int BOOKSHELF = nextGuiId++; @Override public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z){ + if(id == ARCANE_WORKBENCH){ + TileEntity tileEntity = world.getTileEntity(new BlockPos(x, y, z)); + if(tileEntity instanceof TileEntityArcaneWorkbench){ return new ContainerArcaneWorkbench(player.inventory, (TileEntityArcaneWorkbench)tileEntity); } + }else if(id == PORTABLE_CRAFTING){ return new ContainerPortableWorkbench(player.inventory, world, new BlockPos(x, y, z)); + + }else if(id == BOOKSHELF){ + + TileEntity tileEntity = world.getTileEntity(new BlockPos(x, y, z)); + + if(tileEntity instanceof TileEntityBookshelf){ + return new ContainerBookshelf(player.inventory, (TileEntityBookshelf)tileEntity); + } } + return null; } @Override public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z){ + if(id == ARCANE_WORKBENCH){ + TileEntity tileEntity = world.getTileEntity(new BlockPos(x, y, z)); + if(tileEntity instanceof TileEntityArcaneWorkbench){ return new electroblob.wizardry.client.gui.GuiArcaneWorkbench(player.inventory, (TileEntityArcaneWorkbench)tileEntity); } + }else if(id == WIZARD_HANDBOOK && (player.getHeldItemMainhand().getItem() instanceof ItemWizardHandbook || player.getHeldItemOffhand().getItem() instanceof ItemWizardHandbook)){ + return new electroblob.wizardry.client.gui.handbook.GuiWizardHandbook(); + }else if(id == SPELL_BOOK){ + if(player.getHeldItemMainhand().getItem() instanceof ItemSpellBook){ return new electroblob.wizardry.client.gui.GuiSpellBook(player.getHeldItemMainhand()); }else if(player.getHeldItemOffhand().getItem() instanceof ItemSpellBook){ return new electroblob.wizardry.client.gui.GuiSpellBook(player.getHeldItemOffhand()); } + }else if(id == PORTABLE_CRAFTING){ return new electroblob.wizardry.client.gui.GuiPortableCrafting(player.inventory, world, new BlockPos(x, y, z)); + + }else if(id == BOOKSHELF){ + + TileEntity tileEntity = world.getTileEntity(new BlockPos(x, y, z)); + + if(tileEntity instanceof TileEntityBookshelf){ + return new electroblob.wizardry.client.gui.GuiBookshelf(player.inventory, + (TileEntityBookshelf)tileEntity); + } + } + return null; } } \ No newline at end of file diff --git a/src/main/java/electroblob/wizardry/block/BlockBookshelf.java b/src/main/java/electroblob/wizardry/block/BlockBookshelf.java new file mode 100644 index 00000000..b4e23861 --- /dev/null +++ b/src/main/java/electroblob/wizardry/block/BlockBookshelf.java @@ -0,0 +1,147 @@ +package electroblob.wizardry.block; + +import electroblob.wizardry.Wizardry; +import electroblob.wizardry.WizardryGuiHandler; +import electroblob.wizardry.registry.WizardryTabs; +import electroblob.wizardry.tileentity.TileEntityBookshelf; +import net.minecraft.block.BlockHorizontal; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyBool; +import net.minecraft.block.state.BlockFaceShape; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.InventoryHelper; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.property.IExtendedBlockState; +import net.minecraftforge.common.property.Properties; + +import javax.annotation.Nullable; + +public class BlockBookshelf extends BlockHorizontal implements ITileEntityProvider { + + public static final int SLOT_COUNT = 12; + + public static final UnlistedPropertyBool[] BOOKS = new UnlistedPropertyBool[SLOT_COUNT]; + + static { + for(int i=0; i[] properties = { FACING }; +// return new BlockStateContainer(this, ArrayUtils.addAll(properties, BOOKS)); + return new BlockStateContainer.Builder(this).add(FACING).add(BOOKS).build(); + } + + @Override + public boolean isOpaqueCube(IBlockState state){ + return false; + } + + @Override + public boolean isFullCube(IBlockState state){ + return false; + } + + @Override + public BlockFaceShape getBlockFaceShape(IBlockAccess world, IBlockState state, BlockPos pos, EnumFacing face){ + return state.getValue(FACING).getAxis() == face.getAxis() ? BlockFaceShape.UNDEFINED : BlockFaceShape.SOLID; + } + + @Override + public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer){ + return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()); + } + + @Override + public void breakBlock(World world, BlockPos pos, IBlockState block){ + + TileEntity tileentity = world.getTileEntity(pos); + + if(tileentity instanceof TileEntityBookshelf){ + InventoryHelper.dropInventoryItems(world, pos, (TileEntityBookshelf)tileentity); + } + + super.breakBlock(world, pos, block); // For blocks that don't extend BlockContainer, this removes the TE + } + + @Override + public IBlockState getStateFromMeta(int meta){ + EnumFacing enumfacing = EnumFacing.byIndex(meta); + if(enumfacing.getAxis() == EnumFacing.Axis.Y) enumfacing = EnumFacing.NORTH; + return this.getDefaultState().withProperty(FACING, enumfacing); + } + + @Override + public int getMetaFromState(IBlockState state){ + return state.getValue(FACING).getIndex(); + } + + @Override + public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos){ + + IExtendedBlockState s = (IExtendedBlockState)super.getExtendedState(state, world, pos); + + if(world.getTileEntity(pos) instanceof TileEntityBookshelf){ + TileEntityBookshelf tileentity = ((TileEntityBookshelf)world.getTileEntity(pos)); + for(int i = 0; i < tileentity.getSizeInventory(); i++){ + s = s.withProperty(BOOKS[i], !tileentity.getStackInSlot(i).isEmpty()); + } + } + + return s; + } + + @Nullable + @Override + public TileEntity createNewTileEntity(World world, int meta){ + return new TileEntityBookshelf(); + } + + @Override + public boolean onBlockActivated(World world, BlockPos pos, IBlockState block, EntityPlayer player, EnumHand hand, + EnumFacing side, float hitX, float hitY, float hitZ){ + + TileEntity tileEntity = world.getTileEntity(pos); + + if(tileEntity == null || player.isSneaking()){ + return false; + } + + player.openGui(Wizardry.instance, WizardryGuiHandler.BOOKSHELF, world, pos.getX(), pos.getY(), pos.getZ()); + return true; + } + + @Override + public boolean eventReceived(IBlockState state, World world, BlockPos pos, int id, int param){ + super.eventReceived(state, world, pos, id, param); + TileEntity tileentity = world.getTileEntity(pos); + return tileentity != null && tileentity.receiveClientEvent(id, param); + } + + // Copied from BlockFluidBase, only reason it exists is because of java's weird restrictions on generics + private static final class UnlistedPropertyBool extends Properties.PropertyAdapter { + + public UnlistedPropertyBool(String name){ + super(PropertyBool.create(name)); + } + } + +} diff --git a/src/main/java/electroblob/wizardry/client/gui/GuiArcaneWorkbench.java b/src/main/java/electroblob/wizardry/client/gui/GuiArcaneWorkbench.java index b4cf57a4..7d8be0a3 100644 --- a/src/main/java/electroblob/wizardry/client/gui/GuiArcaneWorkbench.java +++ b/src/main/java/electroblob/wizardry/client/gui/GuiArcaneWorkbench.java @@ -14,7 +14,7 @@ import electroblob.wizardry.packet.PacketControlInput; import electroblob.wizardry.packet.WizardryPacketHandler; import electroblob.wizardry.registry.WizardrySounds; import electroblob.wizardry.spell.Spell; -import electroblob.wizardry.tileentity.ContainerArcaneWorkbench; +import electroblob.wizardry.inventory.ContainerArcaneWorkbench; import electroblob.wizardry.tileentity.TileEntityArcaneWorkbench; import electroblob.wizardry.util.WandHelper; import net.minecraft.client.Minecraft; diff --git a/src/main/java/electroblob/wizardry/client/gui/GuiBookshelf.java b/src/main/java/electroblob/wizardry/client/gui/GuiBookshelf.java new file mode 100644 index 00000000..67091424 --- /dev/null +++ b/src/main/java/electroblob/wizardry/client/gui/GuiBookshelf.java @@ -0,0 +1,54 @@ +package electroblob.wizardry.client.gui; + +import electroblob.wizardry.Wizardry; +import electroblob.wizardry.inventory.ContainerBookshelf; +import electroblob.wizardry.tileentity.TileEntityBookshelf; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class GuiBookshelf extends GuiContainer { + + private static final ResourceLocation TEXTURE = new ResourceLocation(Wizardry.MODID, "textures/gui/bookshelf.png"); + /** The player inventory bound to this GUI. */ + private final InventoryPlayer playerInventory; + /** The inventory contained within the corresponding bookshelf. */ + public IInventory bookshelfInventory; + + public GuiBookshelf(InventoryPlayer playerInv, TileEntityBookshelf bookshelfInv){ + super(new ContainerBookshelf(playerInv, bookshelfInv)); + this.playerInventory = playerInv; + this.bookshelfInventory = bookshelfInv; + this.allowUserInput = false; + this.ySize = 148; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks){ + this.drawDefaultBackground(); + super.drawScreen(mouseX, mouseY, partialTicks); + this.renderHoveredToolTip(mouseX, mouseY); + } + + @Override + protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY){ + String s = this.bookshelfInventory.getDisplayName().getUnformattedText(); + this.fontRenderer.drawString(s, 8, 6, 4210752); + this.fontRenderer.drawString(this.playerInventory.getDisplayName().getUnformattedText(), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float partialTicks, int mouseX, int mouseY){ + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + this.mc.getTextureManager().bindTexture(TEXTURE); + int i = (this.width - this.xSize) / 2; + int j = (this.height - this.ySize) / 2; + this.drawTexturedModalRect(i, j, 0, 0, this.xSize, this.ySize); + } + +} \ No newline at end of file diff --git a/src/main/java/electroblob/wizardry/client/model/BakedModelBookshelf.java b/src/main/java/electroblob/wizardry/client/model/BakedModelBookshelf.java new file mode 100644 index 00000000..4e682688 --- /dev/null +++ b/src/main/java/electroblob/wizardry/client/model/BakedModelBookshelf.java @@ -0,0 +1,72 @@ +package electroblob.wizardry.client.model; + +import electroblob.wizardry.block.BlockBookshelf; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.block.model.BakedQuad; +import net.minecraft.client.renderer.block.model.IBakedModel; +import net.minecraft.client.renderer.block.model.ItemOverrideList; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.util.EnumFacing; +import net.minecraftforge.common.property.IExtendedBlockState; + +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.List; + +public class BakedModelBookshelf implements IBakedModel { + + private final IBakedModel bookshelf; + private final IBakedModel[] books; + + public BakedModelBookshelf(IBakedModel bookshelf, IBakedModel... books){ + this.bookshelf = bookshelf; + this.books = books; + } + + @Override + public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand){ + + IBakedModel fallback = Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes().getModelManager().getMissingModel(); + if(state == null) return fallback.getQuads(null, side, rand); + + // It took me waaay too long to realise I needed a new list here + List quads = new ArrayList<>(bookshelf.getQuads(state, side, rand)); // Lists ain't immutable, chief + + IExtendedBlockState extendedState = (IExtendedBlockState)state; + + for(int i = 0; i bakedTextureGetter){ + + try { + + IModel bookshelfModel = ModelLoaderRegistry.getModel(bookshelfModelLocation); + // I don't know why default state works here (surely it ought to be the state param?), but it works so who cares + IBakedModel bookshelf = bookshelfModel.bake(bookshelfModel.getDefaultState(), format, bakedTextureGetter); + + IBakedModel[] books = new IBakedModel[BlockBookshelf.SLOT_COUNT]; + + for(int i = 0; i < BlockBookshelf.SLOT_COUNT; i++){ + IModel bookModel = ModelLoaderRegistry.getModel(new ModelResourceLocation(new ResourceLocation(Wizardry.MODID, "bookshelf_parts/books" + i), variant)); + books[i] = bookModel.bake(bookModel.getDefaultState(), format, bakedTextureGetter); // Same here! + } + + return new BakedModelBookshelf(bookshelf, books); + + }catch(Exception exception){ + Wizardry.logger.error("Error baking bookshelf models: ", exception); + return ModelLoaderRegistry.getMissingModel().bake(state, format, bakedTextureGetter); + } + + } + +} diff --git a/src/main/java/electroblob/wizardry/client/model/ModelLoaderBookshelf.java b/src/main/java/electroblob/wizardry/client/model/ModelLoaderBookshelf.java new file mode 100644 index 00000000..0c7dcb79 --- /dev/null +++ b/src/main/java/electroblob/wizardry/client/model/ModelLoaderBookshelf.java @@ -0,0 +1,28 @@ +package electroblob.wizardry.client.model; + +import electroblob.wizardry.Wizardry; +import net.minecraft.client.resources.IResourceManager; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.ICustomModelLoader; +import net.minecraftforge.client.model.IModel; + +public class ModelLoaderBookshelf implements ICustomModelLoader { + + private static final String SMART_MODEL_PREFIX = "models/block/smart_model/"; + + @Override + public void onResourceManagerReload(IResourceManager resourceManager){ + // Do nothing + } + + @Override + public boolean accepts(ResourceLocation modelLocation){ + return modelLocation.getNamespace().equals(Wizardry.MODID) && modelLocation.getPath().startsWith(SMART_MODEL_PREFIX); + } + + @Override + public IModel loadModel(ResourceLocation modelLocation){ + return new ModelBookshelf(modelLocation.getPath().substring(SMART_MODEL_PREFIX.length())); + } + +} diff --git a/src/main/java/electroblob/wizardry/client/model/WizardryModels.java b/src/main/java/electroblob/wizardry/client/model/WizardryModels.java index 2363eb1b..f2e2e6c3 100644 --- a/src/main/java/electroblob/wizardry/client/model/WizardryModels.java +++ b/src/main/java/electroblob/wizardry/client/model/WizardryModels.java @@ -21,6 +21,7 @@ import net.minecraft.util.NonNullList; import net.minecraftforge.client.event.ModelBakeEvent; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.relauncher.Side; @@ -69,6 +70,16 @@ public final class WizardryModels { ItemBlockMultiTextured gildedWoodItem = (ItemBlockMultiTextured)Item.getItemFromBlock(WizardryBlocks.gilded_wood); registerMultiTexturedModel(gildedWoodItem); + // Explanation for all this here -> https://github.com/TheGreyGhost/MinecraftByExample/tree/master/src/main/java/minecraftbyexample/mbe05_block_dynamic_block_model2 + ModelLoaderRegistry.registerLoader(new ModelLoaderBookshelf()); + + registerItemModel(Item.getItemFromBlock(WizardryBlocks.oak_bookshelf)); + registerItemModel(Item.getItemFromBlock(WizardryBlocks.spruce_bookshelf)); + registerItemModel(Item.getItemFromBlock(WizardryBlocks.birch_bookshelf)); + registerItemModel(Item.getItemFromBlock(WizardryBlocks.jungle_bookshelf)); + registerItemModel(Item.getItemFromBlock(WizardryBlocks.acacia_bookshelf)); + registerItemModel(Item.getItemFromBlock(WizardryBlocks.dark_oak_bookshelf)); + // Items registerMultiTexturedModel((ItemCrystal)WizardryItems.magic_crystal); diff --git a/src/main/java/electroblob/wizardry/client/renderer/RenderArcaneWorkbench.java b/src/main/java/electroblob/wizardry/client/renderer/RenderArcaneWorkbench.java index ae9751ac..2f645301 100644 --- a/src/main/java/electroblob/wizardry/client/renderer/RenderArcaneWorkbench.java +++ b/src/main/java/electroblob/wizardry/client/renderer/RenderArcaneWorkbench.java @@ -1,7 +1,7 @@ package electroblob.wizardry.client.renderer; import electroblob.wizardry.Wizardry; -import electroblob.wizardry.tileentity.ContainerArcaneWorkbench; +import electroblob.wizardry.inventory.ContainerArcaneWorkbench; import electroblob.wizardry.tileentity.TileEntityArcaneWorkbench; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BufferBuilder; diff --git a/src/main/java/electroblob/wizardry/event/SpellBindEvent.java b/src/main/java/electroblob/wizardry/event/SpellBindEvent.java index 2e2de430..08b1d2b5 100644 --- a/src/main/java/electroblob/wizardry/event/SpellBindEvent.java +++ b/src/main/java/electroblob/wizardry/event/SpellBindEvent.java @@ -1,6 +1,6 @@ package electroblob.wizardry.event; -import electroblob.wizardry.tileentity.ContainerArcaneWorkbench; +import electroblob.wizardry.inventory.ContainerArcaneWorkbench; import net.minecraft.entity.player.EntityPlayer; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.PlayerContainerEvent; diff --git a/src/main/java/electroblob/wizardry/tileentity/ContainerArcaneWorkbench.java b/src/main/java/electroblob/wizardry/inventory/ContainerArcaneWorkbench.java similarity index 98% rename from src/main/java/electroblob/wizardry/tileentity/ContainerArcaneWorkbench.java rename to src/main/java/electroblob/wizardry/inventory/ContainerArcaneWorkbench.java index 7582ba0e..be8297c6 100644 --- a/src/main/java/electroblob/wizardry/tileentity/ContainerArcaneWorkbench.java +++ b/src/main/java/electroblob/wizardry/inventory/ContainerArcaneWorkbench.java @@ -1,4 +1,4 @@ -package electroblob.wizardry.tileentity; +package electroblob.wizardry.inventory; import electroblob.wizardry.Wizardry; import electroblob.wizardry.event.SpellBindEvent; @@ -6,6 +6,7 @@ import electroblob.wizardry.item.IWorkbenchItem; import electroblob.wizardry.item.ItemSpellBook; import electroblob.wizardry.registry.WizardryAdvancementTriggers; import electroblob.wizardry.registry.WizardryItems; +import electroblob.wizardry.tileentity.TileEntityArcaneWorkbench; import electroblob.wizardry.util.WandHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; @@ -161,6 +162,7 @@ public class ContainerArcaneWorkbench extends Container { // FIXME: It only seems to be syncing correctly when a stack is put into the slot, not taken out. // This is because markDirty isn't called in the tileentity, I think. + // You can simulate this using hoppers! this.tileentity.sync(); } diff --git a/src/main/java/electroblob/wizardry/inventory/ContainerBookshelf.java b/src/main/java/electroblob/wizardry/inventory/ContainerBookshelf.java new file mode 100644 index 00000000..abe711df --- /dev/null +++ b/src/main/java/electroblob/wizardry/inventory/ContainerBookshelf.java @@ -0,0 +1,122 @@ +package electroblob.wizardry.inventory; + +import electroblob.wizardry.block.BlockBookshelf; +import electroblob.wizardry.item.ItemSpellBook; +import electroblob.wizardry.tileentity.TileEntityBookshelf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +public class ContainerBookshelf extends Container { + + /** The bookshelf tile entity associated with this container. */ + public TileEntityBookshelf tileentity; + + public ContainerBookshelf(IInventory inventory, TileEntityBookshelf tileentity){ + + this.tileentity = tileentity; + + for(int y = 0; y < 2; y++){ + for(int x = 0; x < BlockBookshelf.SLOT_COUNT / 2; x++){ + this.addSlotToContainer(new SlotBookshelf(tileentity, x + BlockBookshelf.SLOT_COUNT / 2 * y, 35 + x * 18, 17 + y * 18, 64, ItemSpellBook.class)); + } + } + + for(int x = 0; x < 9; x++){ + this.addSlotToContainer(new Slot(inventory, x, 8 + x * 18, 124)); + } + + for(int y = 0; y < 3; y++){ + for(int x = 0; x < 9; x++){ + this.addSlotToContainer(new Slot(inventory, 9 + x + y * 9, 8 + x * 18, 66 + y * 18)); + } + } + + this.onSlotChanged(); + + } + + /** Called from individual slots when their item is changed or removed. */ + public void onSlotChanged(){ + this.tileentity.sync(); + } + + @Override + public boolean canInteractWith(EntityPlayer player){ + return this.tileentity.isUsableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int clickedSlotId){ + + ItemStack remainder = ItemStack.EMPTY; + Slot slot = this.inventorySlots.get(clickedSlotId); + + if(slot != null && slot.getHasStack()){ + + ItemStack stack = slot.getStack(); // The stack that was there originally + remainder = stack.copy(); // A copy of that stack + + // Bookshelf -> inventory + if(clickedSlotId < BlockBookshelf.SLOT_COUNT){ + // Tries to move the stack into the player's inventory. If this fails... + if(!this.mergeItemStack(stack, BlockBookshelf.SLOT_COUNT, this.inventorySlots.size(), true)){ + return ItemStack.EMPTY; // ...nothing else happens. + } + } + // Inventory -> bookshelf + else{ + + int minSlotId = 0; + int maxSlotId = BlockBookshelf.SLOT_COUNT - 1; + + if(!(stack.getItem() instanceof ItemSpellBook)) return ItemStack.EMPTY; + + if(!this.mergeItemStack(stack, minSlotId, maxSlotId + 1, false)){ + return ItemStack.EMPTY; + } + } + + if(stack.getCount() == 0){ + slot.putStack(ItemStack.EMPTY); + }else{ + slot.onSlotChanged(); + } + + if(stack.getCount() == remainder.getCount()){ + return ItemStack.EMPTY; + } + + slot.onTake(player, stack); + } + + return remainder; + } + + public class SlotBookshelf extends SlotItemClassList { + + @SafeVarargs + public SlotBookshelf(IInventory inventory, int index, int x, int y, int stackLimit, Class... allowedItemClasses){ + super(inventory, index, x, y, stackLimit, allowedItemClasses); + } + + @Override + public void putStack(ItemStack stack){ + boolean statusChanged = this.getStack().isEmpty() != stack.isEmpty(); + super.putStack(stack); + if(statusChanged) ContainerBookshelf.this.onSlotChanged(); + } + + @Override + public ItemStack onTake(EntityPlayer player, ItemStack stack){ + ItemStack result = super.onTake(player, stack); + ContainerBookshelf.this.onSlotChanged(); + return result; + } + + } + +} diff --git a/src/main/java/electroblob/wizardry/tileentity/ContainerPortableWorkbench.java b/src/main/java/electroblob/wizardry/inventory/ContainerPortableWorkbench.java similarity index 93% rename from src/main/java/electroblob/wizardry/tileentity/ContainerPortableWorkbench.java rename to src/main/java/electroblob/wizardry/inventory/ContainerPortableWorkbench.java index 92b6f3c6..2111f1f7 100644 --- a/src/main/java/electroblob/wizardry/tileentity/ContainerPortableWorkbench.java +++ b/src/main/java/electroblob/wizardry/inventory/ContainerPortableWorkbench.java @@ -1,4 +1,4 @@ -package electroblob.wizardry.tileentity; +package electroblob.wizardry.inventory; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; diff --git a/src/main/java/electroblob/wizardry/tileentity/SlotItemClassList.java b/src/main/java/electroblob/wizardry/inventory/SlotItemClassList.java similarity index 95% rename from src/main/java/electroblob/wizardry/tileentity/SlotItemClassList.java rename to src/main/java/electroblob/wizardry/inventory/SlotItemClassList.java index 783249d9..bbdbd1b7 100644 --- a/src/main/java/electroblob/wizardry/tileentity/SlotItemClassList.java +++ b/src/main/java/electroblob/wizardry/inventory/SlotItemClassList.java @@ -1,4 +1,4 @@ -package electroblob.wizardry.tileentity; +package electroblob.wizardry.inventory; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; diff --git a/src/main/java/electroblob/wizardry/tileentity/SlotItemList.java b/src/main/java/electroblob/wizardry/inventory/SlotItemList.java similarity index 95% rename from src/main/java/electroblob/wizardry/tileentity/SlotItemList.java rename to src/main/java/electroblob/wizardry/inventory/SlotItemList.java index db95b5e0..bf1a82a9 100644 --- a/src/main/java/electroblob/wizardry/tileentity/SlotItemList.java +++ b/src/main/java/electroblob/wizardry/inventory/SlotItemList.java @@ -1,4 +1,4 @@ -package electroblob.wizardry.tileentity; +package electroblob.wizardry.inventory; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; diff --git a/src/main/java/electroblob/wizardry/tileentity/SlotWorkbenchItem.java b/src/main/java/electroblob/wizardry/inventory/SlotWorkbenchItem.java similarity index 91% rename from src/main/java/electroblob/wizardry/tileentity/SlotWorkbenchItem.java rename to src/main/java/electroblob/wizardry/inventory/SlotWorkbenchItem.java index 0e0a2f7d..83eb3659 100644 --- a/src/main/java/electroblob/wizardry/tileentity/SlotWorkbenchItem.java +++ b/src/main/java/electroblob/wizardry/inventory/SlotWorkbenchItem.java @@ -1,4 +1,4 @@ -package electroblob.wizardry.tileentity; +package electroblob.wizardry.inventory; import electroblob.wizardry.item.IWorkbenchItem; import net.minecraft.entity.player.EntityPlayer; @@ -29,8 +29,9 @@ public class SlotWorkbenchItem extends Slot { @Override public ItemStack onTake(EntityPlayer player, ItemStack stack){ + ItemStack result = super.onTake(player, stack); this.container.onSlotChanged(slotNumber, ItemStack.EMPTY, player); - return super.onTake(player, stack); + return result; } @Override diff --git a/src/main/java/electroblob/wizardry/packet/PacketControlInput.java b/src/main/java/electroblob/wizardry/packet/PacketControlInput.java index f2a43d39..837a0baf 100644 --- a/src/main/java/electroblob/wizardry/packet/PacketControlInput.java +++ b/src/main/java/electroblob/wizardry/packet/PacketControlInput.java @@ -6,7 +6,7 @@ import electroblob.wizardry.packet.PacketControlInput.Message; import electroblob.wizardry.registry.Spells; import electroblob.wizardry.spell.Possession; import electroblob.wizardry.spell.Resurrection; -import electroblob.wizardry.tileentity.ContainerArcaneWorkbench; +import electroblob.wizardry.inventory.ContainerArcaneWorkbench; import electroblob.wizardry.util.SpellModifiers; import electroblob.wizardry.util.WizardryUtilities; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/electroblob/wizardry/registry/WizardryBlocks.java b/src/main/java/electroblob/wizardry/registry/WizardryBlocks.java index 2e4baa68..ed25dfd4 100644 --- a/src/main/java/electroblob/wizardry/registry/WizardryBlocks.java +++ b/src/main/java/electroblob/wizardry/registry/WizardryBlocks.java @@ -58,6 +58,12 @@ public final class WizardryBlocks { public static final Block obsidian_crust = placeholder(); public static final Block dry_frosted_ice = placeholder(); public static final Block gilded_wood = placeholder(); + public static final Block oak_bookshelf = placeholder(); + public static final Block spruce_bookshelf = placeholder(); + public static final Block birch_bookshelf = placeholder(); + public static final Block jungle_bookshelf = placeholder(); + public static final Block acacia_bookshelf = placeholder(); + public static final Block dark_oak_bookshelf = placeholder(); /** * Sets both the registry and unlocalised names of the given block, then registers it with the given registry. Use @@ -98,6 +104,12 @@ public final class WizardryBlocks { registerBlock(registry, "obsidian_crust", new BlockObsidianCrust()); registerBlock(registry, "dry_frosted_ice", new BlockDryFrostedIce()); registerBlock(registry, "gilded_wood", new BlockPlanks().setCreativeTab(WizardryTabs.WIZARDRY)); + registerBlock(registry, "oak_bookshelf", new BlockBookshelf()); + registerBlock(registry, "spruce_bookshelf", new BlockBookshelf()); + registerBlock(registry, "birch_bookshelf", new BlockBookshelf()); + registerBlock(registry, "jungle_bookshelf", new BlockBookshelf()); + registerBlock(registry, "acacia_bookshelf", new BlockBookshelf()); + registerBlock(registry, "dark_oak_bookshelf", new BlockBookshelf()); } @@ -111,5 +123,6 @@ public final class WizardryBlocks { GameRegistry.registerTileEntity(TileEntityPlayerSave.class, new ResourceLocation(Wizardry.MODID, "player_save")); GameRegistry.registerTileEntity(TileEntityPlayerSaveTimed.class, new ResourceLocation(Wizardry.MODID, "player_save_timed")); GameRegistry.registerTileEntity(TileEntityShrineCore.class, new ResourceLocation(Wizardry.MODID, "shrine_core")); + GameRegistry.registerTileEntity(TileEntityBookshelf.class, new ResourceLocation(Wizardry.MODID, "bookshelf")); } } \ No newline at end of file diff --git a/src/main/java/electroblob/wizardry/registry/WizardryItems.java b/src/main/java/electroblob/wizardry/registry/WizardryItems.java index 10ae105c..b5c52052 100644 --- a/src/main/java/electroblob/wizardry/registry/WizardryItems.java +++ b/src/main/java/electroblob/wizardry/registry/WizardryItems.java @@ -400,6 +400,13 @@ public final class WizardryItems { registerMultiTexturedItemBlock(registry, WizardryBlocks.runestone_pedestal, false, elements); registerMultiTexturedItemBlock(registry, WizardryBlocks.gilded_wood, true, woodTypes); + registerItemBlock(registry, WizardryBlocks.oak_bookshelf); + registerItemBlock(registry, WizardryBlocks.spruce_bookshelf); + registerItemBlock(registry, WizardryBlocks.birch_bookshelf); + registerItemBlock(registry, WizardryBlocks.jungle_bookshelf); + registerItemBlock(registry, WizardryBlocks.acacia_bookshelf); + registerItemBlock(registry, WizardryBlocks.dark_oak_bookshelf); + // Items registerItem(registry, "magic_crystal", new ItemCrystal()); diff --git a/src/main/java/electroblob/wizardry/tileentity/TileEntityArcaneWorkbench.java b/src/main/java/electroblob/wizardry/tileentity/TileEntityArcaneWorkbench.java index cfc6dc09..37c4bf4c 100644 --- a/src/main/java/electroblob/wizardry/tileentity/TileEntityArcaneWorkbench.java +++ b/src/main/java/electroblob/wizardry/tileentity/TileEntityArcaneWorkbench.java @@ -1,6 +1,7 @@ package electroblob.wizardry.tileentity; import electroblob.wizardry.Wizardry; +import electroblob.wizardry.inventory.ContainerArcaneWorkbench; import electroblob.wizardry.item.IManaStoringItem; import electroblob.wizardry.item.IWorkbenchItem; import electroblob.wizardry.item.ItemCrystal; diff --git a/src/main/java/electroblob/wizardry/tileentity/TileEntityBookshelf.java b/src/main/java/electroblob/wizardry/tileentity/TileEntityBookshelf.java new file mode 100644 index 00000000..ce513635 --- /dev/null +++ b/src/main/java/electroblob/wizardry/tileentity/TileEntityBookshelf.java @@ -0,0 +1,221 @@ +package electroblob.wizardry.tileentity; + +import electroblob.wizardry.Wizardry; +import electroblob.wizardry.block.BlockBookshelf; +import electroblob.wizardry.item.ItemSpellBook; +import electroblob.wizardry.util.NBTExtras; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.play.server.SPacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ITickable; +import net.minecraft.util.NonNullList; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TextComponentString; +import net.minecraft.util.text.TextComponentTranslation; +import net.minecraftforge.common.util.Constants.NBT; + +public class TileEntityBookshelf extends TileEntity implements IInventory, ITickable { + + /** The inventory of the bookshelf. */ + private NonNullList inventory; + + public TileEntityBookshelf(){ + inventory = NonNullList.withSize(BlockBookshelf.SLOT_COUNT, ItemStack.EMPTY); + } + + /** Called to manually sync the tile entity with clients. */ + public void sync(){ + this.world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 3); + } + + @Override + public void update(){ + // Nothing here for now + } + + @Override + public int getSizeInventory(){ + return inventory.size(); + } + + @Override + public ItemStack getStackInSlot(int slot){ + return inventory.get(slot); + } + + @Override + public ItemStack decrStackSize(int slot, int amount){ + + ItemStack stack = getStackInSlot(slot); + + if(!stack.isEmpty()){ + if(stack.getCount() <= amount){ + setInventorySlotContents(slot, ItemStack.EMPTY); + }else{ + stack = stack.splitStack(amount); + if(stack.getCount() == 0){ + setInventorySlotContents(slot, ItemStack.EMPTY); + } + } + this.markDirty(); + } + + return stack; + } + + @Override + public ItemStack removeStackFromSlot(int slot){ + + ItemStack stack = getStackInSlot(slot); + + if(!stack.isEmpty()){ + setInventorySlotContents(slot, ItemStack.EMPTY); + } + + return stack; + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack){ + + inventory.set(slot, stack); + + //ItemStack previous = inventory.set(slot, stack); + + //if(previous.isEmpty() != stack.isEmpty()) this.sync(); + + if(!stack.isEmpty() && stack.getCount() > getInventoryStackLimit()){ + stack.setCount(getInventoryStackLimit()); + } + } + + @Override + public String getName(){ + return "container." + Wizardry.MODID + ":bookshelf"; + } + + @Override + public boolean hasCustomName(){ + return false; + } + + @Override + public ITextComponent getDisplayName(){ + return this.hasCustomName() ? new TextComponentString(this.getName()) : new TextComponentTranslation(this.getName()); + } + + @Override + public int getInventoryStackLimit(){ + return 64; + } + + @Override + public boolean isUsableByPlayer(EntityPlayer player){ + return world.getTileEntity(pos) == this && player.getDistanceSqToCenter(pos) < 64; + } + + @Override + public void openInventory(EntityPlayer player){ + + } + + @Override + public void closeInventory(EntityPlayer player){ + + } + + @Override + public boolean isItemValidForSlot(int slotNumber, ItemStack itemstack){ + return itemstack.isEmpty() || itemstack.getItem() instanceof ItemSpellBook; // TODO: Add a whitelist + } + + @Override + public void readFromNBT(NBTTagCompound tagCompound){ + + super.readFromNBT(tagCompound); + + NBTTagList tagList = tagCompound.getTagList("Inventory", NBT.TAG_COMPOUND); + for(int i = 0; i < tagList.tagCount(); i++){ + NBTTagCompound tag = tagList.getCompoundTagAt(i); + byte slot = tag.getByte("Slot"); + if(slot >= 0 && slot < getSizeInventory()){ + setInventorySlotContents(slot, new ItemStack(tag)); + } + } + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound tagCompound){ + + super.writeToNBT(tagCompound); + + NBTTagList itemList = new NBTTagList(); + for(int i = 0; i < getSizeInventory(); i++){ + ItemStack stack = getStackInSlot(i); + if(!stack.isEmpty()){ + NBTTagCompound tag = new NBTTagCompound(); + tag.setByte("Slot", (byte)i); + stack.writeToNBT(tag); + itemList.appendTag(tag); + } + } + + NBTExtras.storeTagSafely(tagCompound, "Inventory", itemList); + return tagCompound; + } + + @Override + public final NBTTagCompound getUpdateTag(){ + return this.writeToNBT(new NBTTagCompound()); + } + + @Override + public SPacketUpdateTileEntity getUpdatePacket(){ + return new SPacketUpdateTileEntity(pos, getBlockMetadata(), this.getUpdateTag()); + } + + @Override + public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt){ + readFromNBT(pkt.getNbtCompound()); + } + + // What are all these for? + + @Override + public int getField(int id){ + return 0; + } + + @Override + public void setField(int id, int value){ + + } + + @Override + public int getFieldCount(){ + return 0; + } + + @Override + public void clear(){ + for(int i = 0; i < getSizeInventory(); i++){ + setInventorySlotContents(i, ItemStack.EMPTY); + } + } + + @Override + public boolean isEmpty(){ + for(int i = 0; i < getSizeInventory(); i++){ + if(!getStackInSlot(i).isEmpty()){ + return false; + } + } + return true; + } + +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/acacia_bookshelf.json b/src/main/resources/assets/ebwizardry/blockstates/acacia_bookshelf.json new file mode 100644 index 00000000..4aa96488 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/acacia_bookshelf.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "ebwizardry:smart_model/acacia_bookshelf#facing=north" }, + "facing=east": { "model": "ebwizardry:smart_model/acacia_bookshelf#facing=east" }, + "facing=south": { "model": "ebwizardry:smart_model/acacia_bookshelf#facing=south" }, + "facing=west": { "model": "ebwizardry:smart_model/acacia_bookshelf#facing=west" } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/birch_bookshelf.json b/src/main/resources/assets/ebwizardry/blockstates/birch_bookshelf.json new file mode 100644 index 00000000..656889cc --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/birch_bookshelf.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "ebwizardry:smart_model/birch_bookshelf#facing=north" }, + "facing=east": { "model": "ebwizardry:smart_model/birch_bookshelf#facing=east" }, + "facing=south": { "model": "ebwizardry:smart_model/birch_bookshelf#facing=south" }, + "facing=west": { "model": "ebwizardry:smart_model/birch_bookshelf#facing=west" } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/acacia_bookshelf.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/acacia_bookshelf.json new file mode 100644 index 00000000..c517daf9 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/acacia_bookshelf.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:acacia_bookshelf" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/birch_bookshelf.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/birch_bookshelf.json new file mode 100644 index 00000000..f86ffd00 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/birch_bookshelf.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:birch_bookshelf" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books0.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books0.json new file mode 100644 index 00000000..690e777d --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books0.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:books0" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books1.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books1.json new file mode 100644 index 00000000..f0bf298d --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books1.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:books1" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books10.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books10.json new file mode 100644 index 00000000..d0c3b676 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books10.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:books10" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books11.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books11.json new file mode 100644 index 00000000..f0564d0e --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books11.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:books11" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books2.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books2.json new file mode 100644 index 00000000..c6fbbb2d --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books2.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:books2" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books3.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books3.json new file mode 100644 index 00000000..fe640e1a --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books3.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:books3" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books4.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books4.json new file mode 100644 index 00000000..8f5f64c3 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books4.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:books4" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books5.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books5.json new file mode 100644 index 00000000..8cbd4b8b --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books5.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:books5" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books6.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books6.json new file mode 100644 index 00000000..23b29036 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books6.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:books6" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books7.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books7.json new file mode 100644 index 00000000..e9cba50e --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books7.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:books7" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books8.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books8.json new file mode 100644 index 00000000..981fdc32 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books8.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:books8" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books9.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books9.json new file mode 100644 index 00000000..46bbd413 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/books9.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:books9" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/dark_oak_bookshelf.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/dark_oak_bookshelf.json new file mode 100644 index 00000000..bfb7e91e --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/dark_oak_bookshelf.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:dark_oak_bookshelf" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/jungle_bookshelf.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/jungle_bookshelf.json new file mode 100644 index 00000000..9a9bd237 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/jungle_bookshelf.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:jungle_bookshelf" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/oak_bookshelf.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/oak_bookshelf.json new file mode 100644 index 00000000..d13b08c1 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/oak_bookshelf.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:oak_bookshelf" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/spruce_bookshelf.json b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/spruce_bookshelf.json new file mode 100644 index 00000000..66cf20b1 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/bookshelf_parts/spruce_bookshelf.json @@ -0,0 +1,14 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "ebwizardry:spruce_bookshelf" + }, + "variants": { + "facing": { + "north": {}, + "east": { "y": 90 }, + "south": { "y": 180 }, + "west": { "y": 270 } + } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/dark_oak_bookshelf.json b/src/main/resources/assets/ebwizardry/blockstates/dark_oak_bookshelf.json new file mode 100644 index 00000000..8a838825 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/dark_oak_bookshelf.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "ebwizardry:smart_model/dark_oak_bookshelf#facing=north" }, + "facing=east": { "model": "ebwizardry:smart_model/dark_oak_bookshelf#facing=east" }, + "facing=south": { "model": "ebwizardry:smart_model/dark_oak_bookshelf#facing=south" }, + "facing=west": { "model": "ebwizardry:smart_model/dark_oak_bookshelf#facing=west" } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/jungle_bookshelf.json b/src/main/resources/assets/ebwizardry/blockstates/jungle_bookshelf.json new file mode 100644 index 00000000..105b170f --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/jungle_bookshelf.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "ebwizardry:smart_model/jungle_bookshelf#facing=north" }, + "facing=east": { "model": "ebwizardry:smart_model/jungle_bookshelf#facing=east" }, + "facing=south": { "model": "ebwizardry:smart_model/jungle_bookshelf#facing=south" }, + "facing=west": { "model": "ebwizardry:smart_model/jungle_bookshelf#facing=west" } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/oak_bookshelf.json b/src/main/resources/assets/ebwizardry/blockstates/oak_bookshelf.json new file mode 100644 index 00000000..dca53b64 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/oak_bookshelf.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "ebwizardry:smart_model/oak_bookshelf#facing=north" }, + "facing=east": { "model": "ebwizardry:smart_model/oak_bookshelf#facing=east" }, + "facing=south": { "model": "ebwizardry:smart_model/oak_bookshelf#facing=south" }, + "facing=west": { "model": "ebwizardry:smart_model/oak_bookshelf#facing=west" } + } +} diff --git a/src/main/resources/assets/ebwizardry/blockstates/spruce_bookshelf.json b/src/main/resources/assets/ebwizardry/blockstates/spruce_bookshelf.json new file mode 100644 index 00000000..3e52fe5b --- /dev/null +++ b/src/main/resources/assets/ebwizardry/blockstates/spruce_bookshelf.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=north": { "model": "ebwizardry:smart_model/spruce_bookshelf#facing=north" }, + "facing=east": { "model": "ebwizardry:smart_model/spruce_bookshelf#facing=east" }, + "facing=south": { "model": "ebwizardry:smart_model/spruce_bookshelf#facing=south" }, + "facing=west": { "model": "ebwizardry:smart_model/spruce_bookshelf#facing=west" } + } +} diff --git a/src/main/resources/assets/ebwizardry/lang/en_gb.lang b/src/main/resources/assets/ebwizardry/lang/en_gb.lang index 05ac7ba8..8927fb28 100644 --- a/src/main/resources/assets/ebwizardry/lang/en_gb.lang +++ b/src/main/resources/assets/ebwizardry/lang/en_gb.lang @@ -1,4 +1,4 @@ -#PARSE_ESCAPES +# PARSE_ESCAPES tile.ebwizardry\:arcane_workbench.name=Arcane Workbench tile.ebwizardry\:crystal_ore.name=Crystal Ore tile.ebwizardry\:petrified_stone.name=Petrified Stone @@ -30,8 +30,15 @@ tile.ebwizardry\:oak_gilded_wood.name=Gilded Oak Wood tile.ebwizardry\:spruce_gilded_wood.name=Gilded Spruce Wood tile.ebwizardry\:birch_gilded_wood.name=Gilded Birch Wood tile.ebwizardry\:jungle_gilded_wood.name=Gilded Jungle Wood -tile.ebwizardry\:dark_oak_gilded_wood.name=Gilded Dark Oak Wood tile.ebwizardry\:acacia_gilded_wood.name=Gilded Acacia Wood +tile.ebwizardry\:dark_oak_gilded_wood.name=Gilded Dark Oak Wood + +tile.ebwizardry\:oak_bookshelf.name=Oak Bookshelf +tile.ebwizardry\:spruce_bookshelf.name=Spruce Bookshelf +tile.ebwizardry\:birch_bookshelf.name=Birch Bookshelf +tile.ebwizardry\:jungle_bookshelf.name=Jungle Bookshelf +tile.ebwizardry\:acacia_bookshelf.name=Acacia Bookshelf +tile.ebwizardry\:dark_oak_bookshelf.name=Dark Oak Bookshelf item.ebwizardry\:crystal_magic.name=Magic Crystal item.ebwizardry\:crystal_fire.name=Fiery Crystal @@ -510,6 +517,8 @@ container.ebwizardry\:arcane_workbench.apply=Apply container.ebwizardry\:arcane_workbench.mana=Mana\: container.ebwizardry\:arcane_workbench.upgrades=Applied Upgrades\: +container.ebwizardry\:bookshelf=Bookshelf + tier.novice=Novice tier.apprentice=Apprentice tier.advanced=Advanced diff --git a/src/main/resources/assets/ebwizardry/lang/en_us.lang b/src/main/resources/assets/ebwizardry/lang/en_us.lang index 22826952..9a06a999 100644 --- a/src/main/resources/assets/ebwizardry/lang/en_us.lang +++ b/src/main/resources/assets/ebwizardry/lang/en_us.lang @@ -1,4 +1,4 @@ -#PARSE_ESCAPES +# PARSE_ESCAPES tile.ebwizardry\:arcane_workbench.name=Arcane Workbench tile.ebwizardry\:crystal_ore.name=Crystal Ore tile.ebwizardry\:petrified_stone.name=Petrified Stone @@ -30,8 +30,15 @@ tile.ebwizardry\:oak_gilded_wood.name=Gilded Oak Wood tile.ebwizardry\:spruce_gilded_wood.name=Gilded Spruce Wood tile.ebwizardry\:birch_gilded_wood.name=Gilded Birch Wood tile.ebwizardry\:jungle_gilded_wood.name=Gilded Jungle Wood -tile.ebwizardry\:dark_oak_gilded_wood.name=Gilded Dark Oak Wood tile.ebwizardry\:acacia_gilded_wood.name=Gilded Acacia Wood +tile.ebwizardry\:dark_oak_gilded_wood.name=Gilded Dark Oak Wood + +tile.ebwizardry\:oak_bookshelf.name=Oak Bookshelf +tile.ebwizardry\:spruce_bookshelf.name=Spruce Bookshelf +tile.ebwizardry\:birch_bookshelf.name=Birch Bookshelf +tile.ebwizardry\:jungle_bookshelf.name=Jungle Bookshelf +tile.ebwizardry\:acacia_bookshelf.name=Acacia Bookshelf +tile.ebwizardry\:dark_oak_bookshelf.name=Dark Oak Bookshelf item.ebwizardry\:crystal_magic.name=Magic Crystal item.ebwizardry\:crystal_fire.name=Fiery Crystal @@ -510,6 +517,8 @@ container.ebwizardry\:arcane_workbench.apply=Apply container.ebwizardry\:arcane_workbench.mana=Mana\: container.ebwizardry\:arcane_workbench.upgrades=Applied Upgrades\: +container.ebwizardry\:bookshelf=Bookshelf + tier.novice=Novice tier.apprentice=Apprentice tier.advanced=Advanced diff --git a/src/main/resources/assets/ebwizardry/models/block/acacia_bookshelf.json b/src/main/resources/assets/ebwizardry/models/block/acacia_bookshelf.json new file mode 100644 index 00000000..1908bdc0 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/acacia_bookshelf.json @@ -0,0 +1,9 @@ +{ + "parent": "ebwizardry:block/bookshelf", + "textures": { + "particle": "ebwizardry:blocks/acacia_bookshelf_side", + "side": "ebwizardry:blocks/acacia_bookshelf_side", + "inside": "ebwizardry:blocks/acacia_bookshelf_inside", + "top": "ebwizardry:blocks/acacia_bookshelf_top" + } +} diff --git a/src/main/resources/assets/ebwizardry/models/block/birch_bookshelf.json b/src/main/resources/assets/ebwizardry/models/block/birch_bookshelf.json new file mode 100644 index 00000000..988c9506 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/birch_bookshelf.json @@ -0,0 +1,9 @@ +{ + "parent": "ebwizardry:block/bookshelf", + "textures": { + "particle": "ebwizardry:blocks/birch_bookshelf_side", + "side": "ebwizardry:blocks/birch_bookshelf_side", + "inside": "ebwizardry:blocks/birch_bookshelf_inside", + "top": "ebwizardry:blocks/birch_bookshelf_top" + } +} diff --git a/src/main/resources/assets/ebwizardry/models/block/books0.json b/src/main/resources/assets/ebwizardry/models/block/books0.json new file mode 100644 index 00000000..e8a196f5 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/books0.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "books": "ebwizardry:blocks/books" + }, + "elements": [ + { + "name": "book0", + "from": [13, 9, 2], + "to": [15, 14, 6], + "faces": { + "north": {"uv": [0, 0, 2, 5], "texture": "#books"}, + "east": {"uv": [6, 0, 2, 5], "texture": "#books"}, + "south": {"uv": [6, 0, 8, 5], "texture": "#books"}, + "west": {"uv": [2, 0, 6, 5], "texture": "#books"}, + "up": {"uv": [8, 0, 10, 4], "texture": "#books"} + } + }, + { + "name": "book0", + "from": [1, 9, 10], + "to": [3, 14, 14], + "faces": { + "north": {"uv": [6, 0, 8, 5], "texture": "#books"}, + "east": {"uv": [2, 0, 6, 5], "texture": "#books"}, + "south": {"uv": [0, 0, 2, 5], "texture": "#books"}, + "west": {"uv": [6, 0, 2, 5], "texture": "#books"}, + "up": {"uv": [8, 0, 10, 4], "rotation": 180, "texture": "#books"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/block/books1.json b/src/main/resources/assets/ebwizardry/models/block/books1.json new file mode 100644 index 00000000..bd5dedf6 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/books1.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "books": "ebwizardry:blocks/books" + }, + "elements": [ + { + "name": "book1", + "from": [11, 9, 2], + "to": [13, 14, 6], + "faces": { + "north": {"uv": [0, 5, 2, 10], "texture": "#books"}, + "east": {"uv": [6, 5, 2, 10], "texture": "#books"}, + "south": {"uv": [6, 5, 8, 10], "texture": "#books"}, + "west": {"uv": [2, 5, 6, 10], "texture": "#books"}, + "up": {"uv": [8, 5, 10, 9], "texture": "#books"} + } + }, + { + "name": "book1", + "from": [3, 9, 10], + "to": [5, 14, 14], + "faces": { + "north": {"uv": [6, 5, 8, 10], "texture": "#books"}, + "east": {"uv": [2, 5, 6, 10], "texture": "#books"}, + "south": {"uv": [0, 5, 2, 10], "texture": "#books"}, + "west": {"uv": [6, 5, 2, 10], "texture": "#books"}, + "up": {"uv": [8, 5, 10, 9], "rotation": 180, "texture": "#books"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/block/books10.json b/src/main/resources/assets/ebwizardry/models/block/books10.json new file mode 100644 index 00000000..dc7871f7 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/books10.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "books": "ebwizardry:blocks/books" + }, + "elements": [ + { + "name": "book10", + "from": [4, 1, 2], + "to": [6, 6, 6], + "faces": { + "north": {"uv": [0, 10, 2, 15], "texture": "#books"}, + "east": {"uv": [6, 10, 2, 15], "texture": "#books"}, + "south": {"uv": [6, 10, 8, 15], "texture": "#books"}, + "west": {"uv": [2, 10, 6, 15], "texture": "#books"}, + "up": {"uv": [8, 10, 10, 14], "texture": "#books"} + } + }, + { + "name": "book10", + "from": [10, 1, 10], + "to": [12, 6, 14], + "faces": { + "north": {"uv": [6, 10, 8, 15], "texture": "#books"}, + "east": {"uv": [2, 10, 6, 15], "texture": "#books"}, + "south": {"uv": [0, 10, 2, 15], "texture": "#books"}, + "west": {"uv": [6, 10, 2, 15], "texture": "#books"}, + "up": {"uv": [8, 10, 10, 14], "rotation": 180, "texture": "#books"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/block/books11.json b/src/main/resources/assets/ebwizardry/models/block/books11.json new file mode 100644 index 00000000..1597ac01 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/books11.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "books": "ebwizardry:blocks/books" + }, + "elements": [ + { + "name": "book11", + "from": [1, 1, 2], + "to": [3, 6, 6], + "faces": { + "north": {"uv": [0, 0, 2, 5], "texture": "#books"}, + "east": {"uv": [6, 0, 2, 5], "texture": "#books"}, + "south": {"uv": [6, 0, 8, 5], "texture": "#books"}, + "west": {"uv": [2, 0, 6, 5], "texture": "#books"}, + "up": {"uv": [8, 0, 10, 4], "texture": "#books"} + } + }, + { + "name": "book11", + "from": [13, 1, 10], + "to": [15, 6, 14], + "faces": { + "north": {"uv": [6, 0, 8, 5], "texture": "#books"}, + "east": {"uv": [2, 0, 6, 5], "texture": "#books"}, + "south": {"uv": [0, 0, 2, 5], "texture": "#books"}, + "west": {"uv": [6, 0, 2, 5], "texture": "#books"}, + "up": {"uv": [8, 0, 10, 4], "rotation": 180, "texture": "#books"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/block/books2.json b/src/main/resources/assets/ebwizardry/models/block/books2.json new file mode 100644 index 00000000..39171d25 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/books2.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "books": "ebwizardry:blocks/books" + }, + "elements": [ + { + "name": "book2", + "from": [8, 9, 2], + "to": [10, 14, 6], + "faces": { + "north": {"uv": [0, 10, 2, 15], "texture": "#books"}, + "east": {"uv": [6, 10, 2, 15], "texture": "#books"}, + "south": {"uv": [6, 10, 8, 15], "texture": "#books"}, + "west": {"uv": [2, 10, 6, 15], "texture": "#books"}, + "up": {"uv": [8, 10, 10, 14], "texture": "#books"} + } + }, + { + "name": "book2", + "from": [6, 9, 10], + "to": [8, 14, 14], + "faces": { + "north": {"uv": [6, 10, 8, 15], "texture": "#books"}, + "east": {"uv": [2, 10, 6, 15], "texture": "#books"}, + "south": {"uv": [0, 10, 2, 15], "texture": "#books"}, + "west": {"uv": [6, 10, 2, 15], "texture": "#books"}, + "up": {"uv": [8, 10, 10, 14], "rotation": 180, "texture": "#books"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/block/books3.json b/src/main/resources/assets/ebwizardry/models/block/books3.json new file mode 100644 index 00000000..e9b1be97 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/books3.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "books": "ebwizardry:blocks/books" + }, + "elements": [ + { + "name": "book3", + "from": [5, 9, 2], + "to": [7, 14, 6], + "faces": { + "north": {"uv": [0, 0, 2, 5], "texture": "#books"}, + "east": {"uv": [6, 0, 2, 5], "texture": "#books"}, + "south": {"uv": [6, 0, 8, 5], "texture": "#books"}, + "west": {"uv": [2, 0, 6, 5], "texture": "#books"}, + "up": {"uv": [8, 0, 10, 4], "texture": "#books"} + } + }, + { + "name": "book3", + "from": [9, 9, 10], + "to": [11, 14, 14], + "faces": { + "north": {"uv": [6, 0, 8, 5], "texture": "#books"}, + "east": {"uv": [2, 0, 6, 5], "texture": "#books"}, + "south": {"uv": [0, 0, 2, 5], "texture": "#books"}, + "west": {"uv": [6, 0, 2, 5], "texture": "#books"}, + "up": {"uv": [8, 0, 10, 4], "rotation": 180, "texture": "#books"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/block/books4.json b/src/main/resources/assets/ebwizardry/models/block/books4.json new file mode 100644 index 00000000..41187df9 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/books4.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "books": "ebwizardry:blocks/books" + }, + "elements": [ + { + "name": "book4", + "from": [3, 9, 2], + "to": [5, 14, 6], + "faces": { + "north": {"uv": [0, 5, 2, 10], "texture": "#books"}, + "east": {"uv": [6, 5, 2, 10], "texture": "#books"}, + "south": {"uv": [6, 5, 8, 10], "texture": "#books"}, + "west": {"uv": [2, 5, 6, 10], "texture": "#books"}, + "up": {"uv": [8, 5, 10, 9], "texture": "#books"} + } + }, + { + "name": "book4", + "from": [11, 9, 10], + "to": [13, 14, 14], + "faces": { + "north": {"uv": [6, 5, 8, 10], "texture": "#books"}, + "east": {"uv": [2, 5, 6, 10], "texture": "#books"}, + "south": {"uv": [0, 5, 2, 10], "texture": "#books"}, + "west": {"uv": [6, 5, 2, 10], "texture": "#books"}, + "up": {"uv": [8, 5, 10, 9], "rotation": 180, "texture": "#books"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/block/books5.json b/src/main/resources/assets/ebwizardry/models/block/books5.json new file mode 100644 index 00000000..62ea95d2 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/books5.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "books": "ebwizardry:blocks/books" + }, + "elements": [ + { + "name": "book5", + "from": [1, 9, 2], + "to": [3, 14, 6], + "faces": { + "north": {"uv": [0, 5, 2, 10], "texture": "#books"}, + "east": {"uv": [6, 5, 2, 10], "texture": "#books"}, + "south": {"uv": [6, 5, 8, 10], "texture": "#books"}, + "west": {"uv": [2, 5, 6, 10], "texture": "#books"}, + "up": {"uv": [8, 5, 10, 9], "texture": "#books"} + } + }, + { + "name": "book5", + "from": [13, 9, 10], + "to": [15, 14, 14], + "faces": { + "north": {"uv": [6, 5, 8, 10], "texture": "#books"}, + "east": {"uv": [2, 5, 6, 10], "texture": "#books"}, + "south": {"uv": [0, 5, 2, 10], "texture": "#books"}, + "west": {"uv": [6, 5, 2, 10], "texture": "#books"}, + "up": {"uv": [8, 5, 10, 9], "rotation": 180, "texture": "#books"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/block/books6.json b/src/main/resources/assets/ebwizardry/models/block/books6.json new file mode 100644 index 00000000..255f5174 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/books6.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "books": "ebwizardry:blocks/books" + }, + "elements": [ + { + "name": "book6", + "from": [13, 1, 2], + "to": [15, 6, 6], + "faces": { + "north": {"uv": [0, 10, 2, 15], "texture": "#books"}, + "east": {"uv": [6, 10, 2, 15], "texture": "#books"}, + "south": {"uv": [6, 10, 8, 15], "texture": "#books"}, + "west": {"uv": [2, 10, 6, 15], "texture": "#books"}, + "up": {"uv": [8, 10, 10, 14], "texture": "#books"} + } + }, + { + "name": "book6", + "from": [1, 1, 10], + "to": [3, 6, 14], + "faces": { + "north": {"uv": [6, 10, 8, 15], "texture": "#books"}, + "east": {"uv": [2, 10, 6, 15], "texture": "#books"}, + "south": {"uv": [0, 10, 2, 15], "texture": "#books"}, + "west": {"uv": [6, 10, 2, 15], "texture": "#books"}, + "up": {"uv": [8, 10, 10, 14], "rotation": 180, "texture": "#books"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/block/books7.json b/src/main/resources/assets/ebwizardry/models/block/books7.json new file mode 100644 index 00000000..6a3fb74f --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/books7.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "books": "ebwizardry:blocks/books" + }, + "elements": [ + { + "name": "book7", + "from": [11, 1, 2], + "to": [13, 6, 6], + "faces": { + "north": {"uv": [0, 5, 2, 10], "texture": "#books"}, + "east": {"uv": [6, 5, 2, 10], "texture": "#books"}, + "south": {"uv": [6, 5, 8, 10], "texture": "#books"}, + "west": {"uv": [2, 5, 6, 10], "texture": "#books"}, + "up": {"uv": [8, 5, 10, 9], "texture": "#books"} + } + }, + { + "name": "book7", + "from": [3, 1, 10], + "to": [5, 6, 14], + "faces": { + "north": {"uv": [6, 5, 8, 10], "texture": "#books"}, + "east": {"uv": [2, 5, 6, 10], "texture": "#books"}, + "south": {"uv": [0, 5, 2, 10], "texture": "#books"}, + "west": {"uv": [6, 5, 2, 10], "texture": "#books"}, + "up": {"uv": [8, 5, 10, 9], "rotation": 180, "texture": "#books"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/block/books8.json b/src/main/resources/assets/ebwizardry/models/block/books8.json new file mode 100644 index 00000000..0e3c5797 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/books8.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "books": "ebwizardry:blocks/books" + }, + "elements": [ + { + "name": "book8", + "from": [9, 1, 2], + "to": [11, 6, 6], + "faces": { + "north": {"uv": [0, 5, 2, 10], "texture": "#books"}, + "east": {"uv": [6, 5, 2, 10], "texture": "#books"}, + "south": {"uv": [6, 5, 8, 10], "texture": "#books"}, + "west": {"uv": [2, 5, 6, 10], "texture": "#books"}, + "up": {"uv": [8, 5, 10, 9], "texture": "#books"} + } + }, + { + "name": "book8", + "from": [5, 1, 10], + "to": [7, 6, 14], + "faces": { + "north": {"uv": [6, 5, 8, 10], "texture": "#books"}, + "east": {"uv": [2, 5, 6, 10], "texture": "#books"}, + "south": {"uv": [0, 5, 2, 10], "texture": "#books"}, + "west": {"uv": [6, 5, 2, 10], "texture": "#books"}, + "up": {"uv": [8, 5, 10, 9], "rotation": 180, "texture": "#books"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/block/books9.json b/src/main/resources/assets/ebwizardry/models/block/books9.json new file mode 100644 index 00000000..2b098b7a --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/books9.json @@ -0,0 +1,33 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "books": "ebwizardry:blocks/books" + }, + "elements": [ + { + "name": "book9", + "from": [6, 1, 2], + "to": [8, 6, 6], + "faces": { + "north": {"uv": [0, 0, 2, 5], "texture": "#books"}, + "east": {"uv": [6, 0, 2, 5], "texture": "#books"}, + "south": {"uv": [6, 0, 8, 5], "texture": "#books"}, + "west": {"uv": [2, 0, 6, 5], "texture": "#books"}, + "up": {"uv": [8, 0, 10, 4], "texture": "#books"} + } + }, + { + "name": "book9", + "from": [8, 1, 10], + "to": [10, 6, 14], + "faces": { + "north": {"uv": [6, 0, 8, 5], "texture": "#books"}, + "east": {"uv": [2, 0, 6, 5], "texture": "#books"}, + "south": {"uv": [0, 0, 2, 5], "texture": "#books"}, + "west": {"uv": [6, 0, 2, 5], "texture": "#books"}, + "up": {"uv": [8, 0, 10, 4], "rotation": 180, "texture": "#books"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/ebwizardry/models/block/bookshelf.json b/src/main/resources/assets/ebwizardry/models/block/bookshelf.json index 9e1fb88f..cccd9182 100644 --- a/src/main/resources/assets/ebwizardry/models/block/bookshelf.json +++ b/src/main/resources/assets/ebwizardry/models/block/bookshelf.json @@ -1,13 +1,6 @@ { "credit": "Made with Blockbench", "parent": "block/block", - "textures": { - "books": "ebwizardry:blocks/books", - "particle": "ebwizardry:blocks/spruce_bookshelf_side", - "side": "ebwizardry:blocks/spruce_bookshelf_side", - "inside": "ebwizardry:blocks/spruce_bookshelf_inside", - "top": "ebwizardry:blocks/spruce_bookshelf_top" - }, "elements": [ { "name": "backboard", @@ -27,7 +20,7 @@ "east": {"uv": [0, 15, 16, 16], "texture": "#side", "cullface": "east"}, "south": {"uv": [0, 15, 16, 16], "texture": "#side", "cullface": "south"}, "west": {"uv": [0, 15, 16, 16], "texture": "#side", "cullface": "west"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#inside", "cullface": "up"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#inside"}, "down": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "down"} } }, @@ -50,7 +43,7 @@ "north": {"uv": [0, 1, 1, 15], "texture": "#side", "cullface": "north"}, "east": {"uv": [0, 1, 16, 15], "texture": "#side", "cullface": "east"}, "south": {"uv": [15, 1, 16, 15], "texture": "#side", "cullface": "south"}, - "west": {"uv": [0, 1, 16, 15], "texture": "#inside", "cullface": "west"} + "west": {"uv": [0, 1, 16, 15], "texture": "#inside"} } }, { @@ -256,294 +249,6 @@ "west": {"uv": [14, 14, 15, 15], "texture": "#side"}, "up": {"uv": [14, 14, 15, 15], "rotation": 180, "texture": "#side"} } - }, - { - "name": "book1", - "from": [13, 9, 2], - "to": [15, 14, 6], - "faces": { - "north": {"uv": [0, 0, 2, 5], "texture": "#books"}, - "east": {"uv": [6, 0, 2, 5], "texture": "#books"}, - "south": {"uv": [6, 0, 8, 5], "texture": "#books"}, - "west": {"uv": [2, 0, 6, 5], "texture": "#books"}, - "up": {"uv": [8, 0, 10, 4], "texture": "#books"} - } - }, - { - "name": "book1", - "from": [1, 9, 10], - "to": [3, 14, 14], - "faces": { - "north": {"uv": [6, 0, 8, 5], "texture": "#books"}, - "east": {"uv": [2, 0, 6, 5], "texture": "#books"}, - "south": {"uv": [0, 0, 2, 5], "texture": "#books"}, - "west": {"uv": [6, 0, 2, 5], "texture": "#books"}, - "up": {"uv": [8, 0, 10, 4], "rotation": 180, "texture": "#books"} - } - }, - { - "name": "book2", - "from": [11, 9, 2], - "to": [13, 14, 6], - "faces": { - "north": {"uv": [0, 5, 2, 10], "texture": "#books"}, - "east": {"uv": [6, 5, 2, 10], "texture": "#books"}, - "south": {"uv": [6, 5, 8, 10], "texture": "#books"}, - "west": {"uv": [2, 5, 6, 10], "texture": "#books"}, - "up": {"uv": [8, 5, 10, 9], "texture": "#books"} - } - }, - { - "name": "book2", - "from": [3, 9, 10], - "to": [5, 14, 14], - "faces": { - "north": {"uv": [6, 5, 8, 10], "texture": "#books"}, - "east": {"uv": [2, 5, 6, 10], "texture": "#books"}, - "south": {"uv": [0, 5, 2, 10], "texture": "#books"}, - "west": {"uv": [6, 5, 2, 10], "texture": "#books"}, - "up": {"uv": [8, 5, 10, 9], "rotation": 180, "texture": "#books"} - } - }, - { - "name": "book3", - "from": [8, 9, 2], - "to": [10, 14, 6], - "faces": { - "north": {"uv": [0, 10, 2, 15], "texture": "#books"}, - "east": {"uv": [6, 10, 2, 15], "texture": "#books"}, - "south": {"uv": [6, 10, 8, 15], "texture": "#books"}, - "west": {"uv": [2, 10, 6, 15], "texture": "#books"}, - "up": {"uv": [8, 10, 10, 14], "texture": "#books"} - } - }, - { - "name": "book3", - "from": [6, 9, 10], - "to": [8, 14, 14], - "faces": { - "north": {"uv": [6, 10, 8, 15], "texture": "#books"}, - "east": {"uv": [2, 10, 6, 15], "texture": "#books"}, - "south": {"uv": [0, 10, 2, 15], "texture": "#books"}, - "west": {"uv": [6, 10, 2, 15], "texture": "#books"}, - "up": {"uv": [8, 10, 10, 14], "rotation": 180, "texture": "#books"} - } - }, - { - "name": "book4", - "from": [5, 9, 2], - "to": [7, 14, 6], - "faces": { - "north": {"uv": [0, 0, 2, 5], "texture": "#books"}, - "east": {"uv": [6, 0, 2, 5], "texture": "#books"}, - "south": {"uv": [6, 0, 8, 5], "texture": "#books"}, - "west": {"uv": [2, 0, 6, 5], "texture": "#books"}, - "up": {"uv": [8, 0, 10, 4], "texture": "#books"} - } - }, - { - "name": "book4", - "from": [9, 9, 10], - "to": [11, 14, 14], - "faces": { - "north": {"uv": [6, 0, 8, 5], "texture": "#books"}, - "east": {"uv": [2, 0, 6, 5], "texture": "#books"}, - "south": {"uv": [0, 0, 2, 5], "texture": "#books"}, - "west": {"uv": [6, 0, 2, 5], "texture": "#books"}, - "up": {"uv": [8, 0, 10, 4], "rotation": 180, "texture": "#books"} - } - }, - { - "name": "book5", - "from": [3, 9, 2], - "to": [5, 14, 6], - "faces": { - "north": {"uv": [0, 5, 2, 10], "texture": "#books"}, - "east": {"uv": [6, 5, 2, 10], "texture": "#books"}, - "south": {"uv": [6, 5, 8, 10], "texture": "#books"}, - "west": {"uv": [2, 5, 6, 10], "texture": "#books"}, - "up": {"uv": [8, 5, 10, 9], "texture": "#books"} - } - }, - { - "name": "book5", - "from": [11, 9, 10], - "to": [13, 14, 14], - "faces": { - "north": {"uv": [6, 5, 8, 10], "texture": "#books"}, - "east": {"uv": [2, 5, 6, 10], "texture": "#books"}, - "south": {"uv": [0, 5, 2, 10], "texture": "#books"}, - "west": {"uv": [6, 5, 2, 10], "texture": "#books"}, - "up": {"uv": [8, 5, 10, 9], "rotation": 180, "texture": "#books"} - } - }, - { - "name": "book6", - "from": [1, 9, 2], - "to": [3, 14, 6], - "faces": { - "north": {"uv": [0, 5, 2, 10], "texture": "#books"}, - "east": {"uv": [6, 5, 2, 10], "texture": "#books"}, - "south": {"uv": [6, 5, 8, 10], "texture": "#books"}, - "west": {"uv": [2, 5, 6, 10], "texture": "#books"}, - "up": {"uv": [8, 5, 10, 9], "texture": "#books"} - } - }, - { - "name": "book6", - "from": [13, 9, 10], - "to": [15, 14, 14], - "faces": { - "north": {"uv": [6, 5, 8, 10], "texture": "#books"}, - "east": {"uv": [2, 5, 6, 10], "texture": "#books"}, - "south": {"uv": [0, 5, 2, 10], "texture": "#books"}, - "west": {"uv": [6, 5, 2, 10], "texture": "#books"}, - "up": {"uv": [8, 5, 10, 9], "rotation": 180, "texture": "#books"} - } - }, - { - "name": "book7", - "from": [13, 1, 2], - "to": [15, 6, 6], - "faces": { - "north": {"uv": [0, 10, 2, 15], "texture": "#books"}, - "east": {"uv": [6, 10, 2, 15], "texture": "#books"}, - "south": {"uv": [6, 10, 8, 15], "texture": "#books"}, - "west": {"uv": [2, 10, 6, 15], "texture": "#books"}, - "up": {"uv": [8, 10, 10, 14], "texture": "#books"} - } - }, - { - "name": "book7", - "from": [1, 1, 10], - "to": [3, 6, 14], - "faces": { - "north": {"uv": [6, 10, 8, 15], "texture": "#books"}, - "east": {"uv": [2, 10, 6, 15], "texture": "#books"}, - "south": {"uv": [0, 10, 2, 15], "texture": "#books"}, - "west": {"uv": [6, 10, 2, 15], "texture": "#books"}, - "up": {"uv": [8, 10, 10, 14], "rotation": 180, "texture": "#books"} - } - }, - { - "name": "book8", - "from": [11, 1, 2], - "to": [13, 6, 6], - "faces": { - "north": {"uv": [0, 5, 2, 10], "texture": "#books"}, - "east": {"uv": [6, 5, 2, 10], "texture": "#books"}, - "south": {"uv": [6, 5, 8, 10], "texture": "#books"}, - "west": {"uv": [2, 5, 6, 10], "texture": "#books"}, - "up": {"uv": [8, 5, 10, 9], "texture": "#books"} - } - }, - { - "name": "book8", - "from": [3, 1, 10], - "to": [5, 6, 14], - "faces": { - "north": {"uv": [6, 5, 8, 10], "texture": "#books"}, - "east": {"uv": [2, 5, 6, 10], "texture": "#books"}, - "south": {"uv": [0, 5, 2, 10], "texture": "#books"}, - "west": {"uv": [6, 5, 2, 10], "texture": "#books"}, - "up": {"uv": [8, 5, 10, 9], "rotation": 180, "texture": "#books"} - } - }, - { - "name": "book9", - "from": [9, 1, 2], - "to": [11, 6, 6], - "faces": { - "north": {"uv": [0, 5, 2, 10], "texture": "#books"}, - "east": {"uv": [6, 5, 2, 10], "texture": "#books"}, - "south": {"uv": [6, 5, 8, 10], "texture": "#books"}, - "west": {"uv": [2, 5, 6, 10], "texture": "#books"}, - "up": {"uv": [8, 5, 10, 9], "texture": "#books"} - } - }, - { - "name": "book9", - "from": [5, 1, 10], - "to": [7, 6, 14], - "faces": { - "north": {"uv": [6, 5, 8, 10], "texture": "#books"}, - "east": {"uv": [2, 5, 6, 10], "texture": "#books"}, - "south": {"uv": [0, 5, 2, 10], "texture": "#books"}, - "west": {"uv": [6, 5, 2, 10], "texture": "#books"}, - "up": {"uv": [8, 5, 10, 9], "rotation": 180, "texture": "#books"} - } - }, - { - "name": "book10", - "from": [6, 1, 2], - "to": [8, 6, 6], - "faces": { - "north": {"uv": [0, 0, 2, 5], "texture": "#books"}, - "east": {"uv": [6, 0, 2, 5], "texture": "#books"}, - "south": {"uv": [6, 0, 8, 5], "texture": "#books"}, - "west": {"uv": [2, 0, 6, 5], "texture": "#books"}, - "up": {"uv": [8, 0, 10, 4], "texture": "#books"} - } - }, - { - "name": "book10", - "from": [8, 1, 10], - "to": [10, 6, 14], - "faces": { - "north": {"uv": [6, 0, 8, 5], "texture": "#books"}, - "east": {"uv": [2, 0, 6, 5], "texture": "#books"}, - "south": {"uv": [0, 0, 2, 5], "texture": "#books"}, - "west": {"uv": [6, 0, 2, 5], "texture": "#books"}, - "up": {"uv": [8, 0, 10, 4], "rotation": 180, "texture": "#books"} - } - }, - { - "name": "book11", - "from": [4, 1, 2], - "to": [6, 6, 6], - "faces": { - "north": {"uv": [0, 10, 2, 15], "texture": "#books"}, - "east": {"uv": [6, 10, 2, 15], "texture": "#books"}, - "south": {"uv": [6, 10, 8, 15], "texture": "#books"}, - "west": {"uv": [2, 10, 6, 15], "texture": "#books"}, - "up": {"uv": [8, 10, 10, 14], "texture": "#books"} - } - }, - { - "name": "book11", - "from": [10, 1, 10], - "to": [12, 6, 14], - "faces": { - "north": {"uv": [6, 10, 8, 15], "texture": "#books"}, - "east": {"uv": [2, 10, 6, 15], "texture": "#books"}, - "south": {"uv": [0, 10, 2, 15], "texture": "#books"}, - "west": {"uv": [6, 10, 2, 15], "texture": "#books"}, - "up": {"uv": [8, 10, 10, 14], "rotation": 180, "texture": "#books"} - } - }, - { - "name": "book12", - "from": [1, 1, 2], - "to": [3, 6, 6], - "faces": { - "north": {"uv": [0, 0, 2, 5], "texture": "#books"}, - "east": {"uv": [6, 0, 2, 5], "texture": "#books"}, - "south": {"uv": [6, 0, 8, 5], "texture": "#books"}, - "west": {"uv": [2, 0, 6, 5], "texture": "#books"}, - "up": {"uv": [8, 0, 10, 4], "texture": "#books"} - } - }, - { - "name": "book12", - "from": [13, 1, 10], - "to": [15, 6, 14], - "faces": { - "north": {"uv": [6, 0, 8, 5], "texture": "#books"}, - "east": {"uv": [2, 0, 6, 5], "texture": "#books"}, - "south": {"uv": [0, 0, 2, 5], "texture": "#books"}, - "west": {"uv": [6, 0, 2, 5], "texture": "#books"}, - "up": {"uv": [8, 0, 10, 4], "rotation": 180, "texture": "#books"} - } } ], "display": { @@ -570,7 +275,7 @@ "scale": [0.25, 0.25, 0.25] }, "gui": { - "rotation": [30, 135, 0], + "rotation": [30, 225, 0], "scale": [0.625, 0.625, 0.625] }, "fixed": { diff --git a/src/main/resources/assets/ebwizardry/models/block/dark_oak_bookshelf.json b/src/main/resources/assets/ebwizardry/models/block/dark_oak_bookshelf.json new file mode 100644 index 00000000..eccb39de --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/dark_oak_bookshelf.json @@ -0,0 +1,9 @@ +{ + "parent": "ebwizardry:block/bookshelf", + "textures": { + "particle": "ebwizardry:blocks/dark_oak_bookshelf_side", + "side": "ebwizardry:blocks/dark_oak_bookshelf_side", + "inside": "ebwizardry:blocks/dark_oak_bookshelf_inside", + "top": "ebwizardry:blocks/dark_oak_bookshelf_top" + } +} diff --git a/src/main/resources/assets/ebwizardry/models/block/jungle_bookshelf.json b/src/main/resources/assets/ebwizardry/models/block/jungle_bookshelf.json new file mode 100644 index 00000000..53f5efa7 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/jungle_bookshelf.json @@ -0,0 +1,9 @@ +{ + "parent": "ebwizardry:block/bookshelf", + "textures": { + "particle": "ebwizardry:blocks/jungle_bookshelf_side", + "side": "ebwizardry:blocks/jungle_bookshelf_side", + "inside": "ebwizardry:blocks/jungle_bookshelf_inside", + "top": "ebwizardry:blocks/jungle_bookshelf_top" + } +} diff --git a/src/main/resources/assets/ebwizardry/models/block/oak_bookshelf.json b/src/main/resources/assets/ebwizardry/models/block/oak_bookshelf.json new file mode 100644 index 00000000..36cc798d --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/oak_bookshelf.json @@ -0,0 +1,9 @@ +{ + "parent": "ebwizardry:block/bookshelf", + "textures": { + "particle": "ebwizardry:blocks/oak_bookshelf_side", + "side": "ebwizardry:blocks/oak_bookshelf_side", + "inside": "ebwizardry:blocks/oak_bookshelf_inside", + "top": "ebwizardry:blocks/oak_bookshelf_top" + } +} diff --git a/src/main/resources/assets/ebwizardry/models/block/spruce_bookshelf.json b/src/main/resources/assets/ebwizardry/models/block/spruce_bookshelf.json new file mode 100644 index 00000000..d75b4d4e --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/block/spruce_bookshelf.json @@ -0,0 +1,9 @@ +{ + "parent": "ebwizardry:block/bookshelf", + "textures": { + "particle": "ebwizardry:blocks/spruce_bookshelf_side", + "side": "ebwizardry:blocks/spruce_bookshelf_side", + "inside": "ebwizardry:blocks/spruce_bookshelf_inside", + "top": "ebwizardry:blocks/spruce_bookshelf_top" + } +} diff --git a/src/main/resources/assets/ebwizardry/models/item/acacia_bookshelf.json b/src/main/resources/assets/ebwizardry/models/item/acacia_bookshelf.json new file mode 100644 index 00000000..0adc3e0c --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/acacia_bookshelf.json @@ -0,0 +1,3 @@ +{ + "parent": "ebwizardry:block/acacia_bookshelf" +} diff --git a/src/main/resources/assets/ebwizardry/models/item/birch_bookshelf.json b/src/main/resources/assets/ebwizardry/models/item/birch_bookshelf.json new file mode 100644 index 00000000..a41498fd --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/birch_bookshelf.json @@ -0,0 +1,3 @@ +{ + "parent": "ebwizardry:block/birch_bookshelf" +} diff --git a/src/main/resources/assets/ebwizardry/models/item/dark_oak_bookshelf.json b/src/main/resources/assets/ebwizardry/models/item/dark_oak_bookshelf.json new file mode 100644 index 00000000..9818d2d5 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/dark_oak_bookshelf.json @@ -0,0 +1,3 @@ +{ + "parent": "ebwizardry:block/dark_oak_bookshelf" +} diff --git a/src/main/resources/assets/ebwizardry/models/item/jungle_bookshelf.json b/src/main/resources/assets/ebwizardry/models/item/jungle_bookshelf.json new file mode 100644 index 00000000..e65f05c7 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/jungle_bookshelf.json @@ -0,0 +1,3 @@ +{ + "parent": "ebwizardry:block/jungle_bookshelf" +} diff --git a/src/main/resources/assets/ebwizardry/models/item/oak_bookshelf.json b/src/main/resources/assets/ebwizardry/models/item/oak_bookshelf.json new file mode 100644 index 00000000..cbeffa68 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/oak_bookshelf.json @@ -0,0 +1,3 @@ +{ + "parent": "ebwizardry:block/oak_bookshelf" +} diff --git a/src/main/resources/assets/ebwizardry/models/item/spruce_bookshelf.json b/src/main/resources/assets/ebwizardry/models/item/spruce_bookshelf.json new file mode 100644 index 00000000..d29cc438 --- /dev/null +++ b/src/main/resources/assets/ebwizardry/models/item/spruce_bookshelf.json @@ -0,0 +1,3 @@ +{ + "parent": "ebwizardry:block/spruce_bookshelf" +} diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/acacia_bookshelf_inside.png b/src/main/resources/assets/ebwizardry/textures/blocks/acacia_bookshelf_inside.png new file mode 100644 index 00000000..fa0d343d Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/acacia_bookshelf_inside.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/acacia_bookshelf_side.png b/src/main/resources/assets/ebwizardry/textures/blocks/acacia_bookshelf_side.png new file mode 100644 index 00000000..e1033364 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/acacia_bookshelf_side.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/acacia_bookshelf_top.png b/src/main/resources/assets/ebwizardry/textures/blocks/acacia_bookshelf_top.png new file mode 100644 index 00000000..1021d20e Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/acacia_bookshelf_top.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/birch_bookshelf_inside.png b/src/main/resources/assets/ebwizardry/textures/blocks/birch_bookshelf_inside.png new file mode 100644 index 00000000..bd98104a Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/birch_bookshelf_inside.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/birch_bookshelf_side.png b/src/main/resources/assets/ebwizardry/textures/blocks/birch_bookshelf_side.png new file mode 100644 index 00000000..393ec084 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/birch_bookshelf_side.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/birch_bookshelf_top.png b/src/main/resources/assets/ebwizardry/textures/blocks/birch_bookshelf_top.png new file mode 100644 index 00000000..1045a755 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/birch_bookshelf_top.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/dark_oak_bookshelf_inside.png b/src/main/resources/assets/ebwizardry/textures/blocks/dark_oak_bookshelf_inside.png new file mode 100644 index 00000000..1002e81d Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/dark_oak_bookshelf_inside.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/dark_oak_bookshelf_side.png b/src/main/resources/assets/ebwizardry/textures/blocks/dark_oak_bookshelf_side.png new file mode 100644 index 00000000..e7bc8f32 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/dark_oak_bookshelf_side.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/dark_oak_bookshelf_top.png b/src/main/resources/assets/ebwizardry/textures/blocks/dark_oak_bookshelf_top.png new file mode 100644 index 00000000..6fc6358c Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/dark_oak_bookshelf_top.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/jungle_bookshelf_inside.png b/src/main/resources/assets/ebwizardry/textures/blocks/jungle_bookshelf_inside.png new file mode 100644 index 00000000..871a563a Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/jungle_bookshelf_inside.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/jungle_bookshelf_side.png b/src/main/resources/assets/ebwizardry/textures/blocks/jungle_bookshelf_side.png new file mode 100644 index 00000000..0acc2705 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/jungle_bookshelf_side.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/jungle_bookshelf_top.png b/src/main/resources/assets/ebwizardry/textures/blocks/jungle_bookshelf_top.png new file mode 100644 index 00000000..9d2cb687 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/jungle_bookshelf_top.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/oak_bookshelf_inside.png b/src/main/resources/assets/ebwizardry/textures/blocks/oak_bookshelf_inside.png new file mode 100644 index 00000000..d8626b0a Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/oak_bookshelf_inside.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/oak_bookshelf_side.png b/src/main/resources/assets/ebwizardry/textures/blocks/oak_bookshelf_side.png new file mode 100644 index 00000000..45866763 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/oak_bookshelf_side.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/oak_bookshelf_top.png b/src/main/resources/assets/ebwizardry/textures/blocks/oak_bookshelf_top.png new file mode 100644 index 00000000..fad076fe Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/blocks/oak_bookshelf_top.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/blocks/spruce_bookshelf_inside.png b/src/main/resources/assets/ebwizardry/textures/blocks/spruce_bookshelf_inside.png index fcd23262..2a066929 100644 Binary files a/src/main/resources/assets/ebwizardry/textures/blocks/spruce_bookshelf_inside.png and b/src/main/resources/assets/ebwizardry/textures/blocks/spruce_bookshelf_inside.png differ diff --git a/src/main/resources/assets/ebwizardry/textures/gui/bookshelf.png b/src/main/resources/assets/ebwizardry/textures/gui/bookshelf.png new file mode 100644 index 00000000..55c33044 Binary files /dev/null and b/src/main/resources/assets/ebwizardry/textures/gui/bookshelf.png differ