Skip to content

Commit

Permalink
Remove LBA from bloated chair mod
Browse files Browse the repository at this point in the history
  • Loading branch information
Juuxel committed May 1, 2019
1 parent 29d62f9 commit 400ca7f
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 68 deletions.
8 changes: 1 addition & 7 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ base {
archivesBaseName = "Adorn"
}

version = "0.1.3+1.14"
version = "0.1.4+1.14"

allprojects {
apply(plugin = "java")
Expand All @@ -35,11 +35,6 @@ allprojects {
maven(url = "https://minecraft.curseforge.com/api/maven") {
name = "CurseForge"
}

// For LBA
maven(url = "https://mod-buildcraft.com/maven") {
name = "BuildCraft"
}
}

tasks.withType<KotlinCompile> {
Expand Down Expand Up @@ -79,6 +74,5 @@ dependencies {
// Other mods
modCompileAndInclude("polyester:Polyester:0.2.1+1.14")
modCompileAndInclude("towelette:Towelette:1.5.2")
modCompileAndInclude("alexiil.mc.lib:libblockattributes:0.4.0")
modCompileAndInclude("io.github.cottonmc:cotton:0.6.1+1.14-SNAPSHOT")
}
4 changes: 2 additions & 2 deletions src/main/kotlin/juuxel/adorn/block/DrawerBlock.kt
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import net.minecraft.world.World

class DrawerBlock(
material: String
) : Block(Settings.copy(Blocks.OAK_PLANKS)), PolyesterBlock, BlockEntityProvider, BaseInventoryBlockEntity.BlockAttributeProviderImpl {
) : Block(Settings.copy(Blocks.OAK_PLANKS)), PolyesterBlock, BlockEntityProvider, BaseInventoryBlockEntity.InventoryProviderImpl {
override val name = "${material}_drawer"
override val itemSettings = Item.Settings().itemGroup(ItemGroup.DECORATIONS)

Expand Down Expand Up @@ -55,7 +55,7 @@ class DrawerBlock(
val entity = world.getBlockEntity(pos)

if (entity is BaseInventoryBlockEntity) {
ItemScatterer.spawn(world, pos, getInventory(state1, world, pos))
ItemScatterer.spawn(world, pos, entity)
world.updateHorizontalAdjacent(pos, this)
}

Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/juuxel/adorn/block/KitchenCupboardBlock.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import net.minecraft.world.World

class KitchenCupboardBlock(
material: String
) : BaseKitchenCounterBlock(), BlockEntityProvider, BaseInventoryBlockEntity.BlockAttributeProviderImpl {
) : BaseKitchenCounterBlock(), BlockEntityProvider, BaseInventoryBlockEntity.InventoryProviderImpl {
override val name = "${material}_kitchen_cupboard"

override fun createBlockEntity(view: BlockView?) = BLOCK_ENTITY_TYPE.instantiate()
Expand All @@ -39,7 +39,7 @@ class KitchenCupboardBlock(
val entity = world.getBlockEntity(pos)

if (entity is BaseInventoryBlockEntity) {
ItemScatterer.spawn(world, pos, getInventory(state1, world, pos))
ItemScatterer.spawn(world, pos, entity)
world.updateHorizontalAdjacent(pos, this)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,57 +1,75 @@
package juuxel.adorn.block.entity

import alexiil.mc.lib.attributes.AttributeList
import alexiil.mc.lib.attributes.AttributeProvider
import alexiil.mc.lib.attributes.item.impl.SimpleFixedItemInv
import io.github.juuxel.polyester.registry.PolyesterBlock
import juuxel.adorn.util.SidedFixedInventoryWrapper
import juuxel.adorn.util.SidedInventoryImpl
import net.minecraft.block.BlockState
import net.minecraft.block.InventoryProvider
import net.minecraft.block.entity.BlockEntity
import net.minecraft.block.entity.BlockEntityType
import net.minecraft.entity.player.PlayerEntity
import net.minecraft.inventory.Inventories
import net.minecraft.inventory.Inventory
import net.minecraft.inventory.SidedInventory
import net.minecraft.item.ItemStack
import net.minecraft.nbt.CompoundTag
import net.minecraft.util.DefaultedList
import net.minecraft.util.math.BlockPos
import net.minecraft.world.IWorld
import net.minecraft.world.World

abstract class BaseInventoryBlockEntity(
type: BlockEntityType<*>,
invSize: Int
) : BlockEntity(type), AttributeProvider/*, InventoryProvider*/ {
val inventory = SimpleFixedItemInv(invSize)

init {
inventory.addListener({ _, _, _, _ -> markDirty() }, {})
}
private val invSize: Int
) : BlockEntity(type), Inventory {
val items: DefaultedList<ItemStack> = DefaultedList.create(invSize, ItemStack.EMPTY)
val sidedInventory: SidedInventory = SidedInventoryImpl(this)

override fun toTag(tag: CompoundTag) = super.toTag(tag).apply {
put("Items", inventory.toTag())
Inventories.toTag(tag, items)
}

override fun fromTag(tag: CompoundTag) {
super.fromTag(tag)
inventory.fromTag(tag.getCompound("Items"))
Inventories.fromTag(tag, items)
}

override fun addAllAttributes(world: World, pos: BlockPos, state: BlockState, attributes: AttributeList<*>) {
attributes.offer(inventory)
attributes.offer(inventory.extractable)
attributes.offer(inventory.insertable)
override fun getInvStack(slot: Int) = items[slot]

override fun clear() {
items.clear()
markDirty()
}

// override fun getInventory(state: BlockState, world: IWorld, pos: BlockPos) =
// SidedFixedInventoryWrapper(inventory)
override fun setInvStack(slot: Int, stack: ItemStack) {
items[slot] = stack
}

override fun removeInvStack(slot: Int) =
Inventories.removeStack(items, slot)

override fun canPlayerUseInv(player: PlayerEntity?) = true

override fun getInvSize() = invSize

// Uses PolyesterBlock to force being applied to a block
interface BlockAttributeProviderImpl : PolyesterBlock, AttributeProvider, InventoryProvider {
override fun addAllAttributes(world: World, pos: BlockPos, state: BlockState, attributes: AttributeList<*>) {
(world.getBlockEntity(pos) as? BaseInventoryBlockEntity)
?.addAllAttributes(world, pos, state, attributes)
override fun takeInvStack(p0: Int, p1: Int) =
Inventories.splitStack(items, p0, p1).also {
if (!it.isEmpty) {
markDirty()
}
}

override fun isInvEmpty(): Boolean {
for (stack in items) {
if (!stack.isEmpty) {
return false
}
}

override fun getInventory(state: BlockState, world: IWorld, pos: BlockPos) =
return true
}

interface InventoryProviderImpl : InventoryProvider {
override fun getInventory(state: BlockState?, world: IWorld, pos: BlockPos): SidedInventory? =
(world.getBlockEntity(pos) as? BaseInventoryBlockEntity)?.let {
SidedFixedInventoryWrapper(it.inventory)
it.sidedInventory
}
}
}
27 changes: 0 additions & 27 deletions src/main/kotlin/juuxel/adorn/util/SidedFixedInventoryWrapper.kt

This file was deleted.

19 changes: 19 additions & 0 deletions src/main/kotlin/juuxel/adorn/util/SidedInventoryImpl.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package juuxel.adorn.util

import net.minecraft.entity.player.PlayerEntity
import net.minecraft.inventory.Inventory
import net.minecraft.inventory.SidedInventory
import net.minecraft.item.ItemStack
import net.minecraft.util.math.Direction

class SidedInventoryImpl(private val inv: Inventory) : Inventory by inv, SidedInventory {
private val slots: IntArray = IntArray(inv.invSize) { it }

override fun canPlayerUseInv(player: PlayerEntity?) = true

override fun getInvAvailableSlots(var1: Direction?) = slots

override fun canExtractInvStack(slot: Int, stack: ItemStack, direction: Direction?) = true

override fun canInsertInvStack(slot: Int, stack: ItemStack, direction: Direction?) = true
}
3 changes: 1 addition & 2 deletions src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
"fabric-language-kotlin": ">=1.3.30",
"towelette": ">=1.5.0",
"polyester": ">=0.2.0",
"cotton": ">=0.6.1",
"libblockattributes": ">=0.4.0"
"cotton": ">=0.6.1"
}
}

0 comments on commit 400ca7f

Please sign in to comment.