Some work on the workbench
This commit is contained in:
parent
2d758f287d
commit
ab142ce7b7
3 changed files with 2552 additions and 7 deletions
2494
src/main/resources/assets/resonantinduction/models/workbench.obj
Normal file
2494
src/main/resources/assets/resonantinduction/models/workbench.obj
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/main/resources/assets/resonantinduction/models/workbench.png
Normal file
BIN
src/main/resources/assets/resonantinduction/models/workbench.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
|
@ -1,22 +1,36 @@
|
|||
package resonantinduction.archaic.process
|
||||
|
||||
import io.netty.buffer.ByteBuf
|
||||
import net.minecraft.block.material.Material
|
||||
import net.minecraft.entity.player.EntityPlayer
|
||||
import net.minecraft.item.{Item, ItemStack}
|
||||
import net.minecraft.util.ResourceLocation
|
||||
import net.minecraftforge.client.model.AdvancedModelLoader
|
||||
import net.minecraftforge.oredict.OreDictionary
|
||||
import resonant.api.recipe.{MachineRecipes, RecipeResource}
|
||||
import org.lwjgl.opengl.GL11
|
||||
import resonant.api.recipe.MachineRecipes
|
||||
import resonant.lib.factory.resources.RecipeType
|
||||
import resonant.lib.network.discriminator.PacketType
|
||||
import resonant.lib.network.handle.{TPacketReceiver, TPacketSender}
|
||||
import resonant.lib.prefab.tile.TileInventory
|
||||
import resonant.lib.render.RenderUtility
|
||||
import resonant.lib.render.{RenderItemOverlayUtility, RenderUtility}
|
||||
import resonant.lib.transform.vector.Vector3
|
||||
import resonant.lib.utility.inventory.InventoryUtility
|
||||
import resonantinduction.archaic.engineering.ItemHammer
|
||||
import resonantinduction.core.resource.content.{ItemDust, ItemRubble}
|
||||
import resonantinduction.core.{Reference, ResonantInduction}
|
||||
|
||||
import resonant.lib.wrapper.ByteBufWrapper._
|
||||
/**
|
||||
* The workbench is meant for manual ore and wood processing.
|
||||
* It is also the core block in Resonant Induction that leads the player to all aspect of the mod.
|
||||
*
|
||||
* Functions:
|
||||
* Crush ores -> rubble
|
||||
* Grind rubble -> dust
|
||||
*
|
||||
* Cut logs -> slabs
|
||||
* Glue slabs -> wood
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
|
@ -29,7 +43,7 @@ class TileWorkbench extends TileInventory(Material.rock) with TPacketSender with
|
|||
{
|
||||
//Constructor
|
||||
maxSlots = 1
|
||||
setTextureName(Reference.prefix + "material_metal_side")
|
||||
setTextureName(Reference.prefix + "material_wood_side")
|
||||
normalRender = false
|
||||
isOpaqueCube = false
|
||||
|
||||
|
@ -48,14 +62,14 @@ class TileWorkbench extends TileInventory(Material.rock) with TPacketSender with
|
|||
|
||||
if (oreName != null && oreName != "Unknown")
|
||||
{
|
||||
val outputs: Array[RecipeResource] = MachineRecipes.INSTANCE.getOutput(RecipeType.CRUSHER.name, oreName)
|
||||
val outputs = MachineRecipes.INSTANCE.getOutput(RecipeType.CRUSHER.name, oreName)
|
||||
if (outputs != null && outputs.length > 0)
|
||||
{
|
||||
if (!world.isRemote && world.rand.nextFloat < 0.2)
|
||||
{
|
||||
for (resource <- outputs)
|
||||
{
|
||||
val outputStack: ItemStack = resource.getItemStack.copy
|
||||
val outputStack = resource.getItemStack.copy
|
||||
if (outputStack != null)
|
||||
{
|
||||
InventoryUtility.dropItemStack(world, new Vector3(player), outputStack, 0)
|
||||
|
@ -75,16 +89,53 @@ class TileWorkbench extends TileInventory(Material.rock) with TPacketSender with
|
|||
}
|
||||
else
|
||||
{
|
||||
return interactCurrentItem(this, 0, player)
|
||||
interactCurrentItem(this, 0, player)
|
||||
onInventoryChanged()
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
override def isItemValidForSlot(i: Int, itemStack: ItemStack): Boolean =
|
||||
{
|
||||
if (i == 0)
|
||||
return itemStack.getItem.isInstanceOf[ItemRubble] || itemStack.getItem.isInstanceOf[ItemDust]
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
/** Called each time the inventory changes */
|
||||
override def onInventoryChanged()
|
||||
{
|
||||
super.onInventoryChanged()
|
||||
sendDescPacket()
|
||||
}
|
||||
|
||||
override def read(buf: ByteBuf, id: Int, packetType: PacketType)
|
||||
{
|
||||
super.read(buf, id, packetType)
|
||||
buf <<< getInventory
|
||||
}
|
||||
|
||||
override def write(buf: ByteBuf, id: Int)
|
||||
{
|
||||
super.write(buf, id)
|
||||
buf >>> getInventory
|
||||
}
|
||||
|
||||
/**
|
||||
* Packets
|
||||
*/
|
||||
|
||||
override def renderDynamic(pos: Vector3, frame: Float, pass: Int)
|
||||
{
|
||||
GL11.glPushMatrix()
|
||||
RenderItemOverlayUtility.renderTopOverlay(this, Array[ItemStack](getStackInSlot(0)), getDirection, 1, 1, pos.x, pos.y - 0.1, pos.z, 0.7f)
|
||||
|
||||
RenderUtility.bind(Reference.domain, Reference.modelPath + "workbench.png")
|
||||
TileWorkbench.model.renderAll()
|
||||
// TileWorkbench.model.renderAll()
|
||||
GL11.glPopMatrix()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue