Started working on the alloy furnace's GUI
For now it's mostly testing stuff, with some completely incorrect code in the middle of it.
This commit is contained in:
parent
f6b6a10b66
commit
8199df6d35
8 changed files with 454 additions and 0 deletions
|
@ -46,6 +46,9 @@ public class Materials
|
||||||
URegistry.addBlock( ORE_COPPER = new MOCopper( ) );
|
URegistry.addBlock( ORE_COPPER = new MOCopper( ) );
|
||||||
URegistry.addBlock( ORE_MALACHITE = new MOMalachite( ) );
|
URegistry.addBlock( ORE_MALACHITE = new MOMalachite( ) );
|
||||||
URegistry.addBlock( ORE_CUPRITE = new MOCuprite( ) );
|
URegistry.addBlock( ORE_CUPRITE = new MOCuprite( ) );
|
||||||
|
|
||||||
|
// Alloy recipes
|
||||||
|
MAlloyRecipesRegistry.INSTANCE.addRecipe( 1600 , 0.1f , ITEM_COKE , Items.COAL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import java.util.Random;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
import mmm.Mmm;
|
||||||
import mmm.utils.UMaths;
|
import mmm.utils.UMaths;
|
||||||
import mmm.utils.URegistry;
|
import mmm.utils.URegistry;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -19,12 +20,15 @@ import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.init.SoundEvents;
|
import net.minecraft.init.SoundEvents;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.BlockRenderLayer;
|
import net.minecraft.util.BlockRenderLayer;
|
||||||
import net.minecraft.util.EnumBlockRenderType;
|
import net.minecraft.util.EnumBlockRenderType;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.EnumParticleTypes;
|
import net.minecraft.util.EnumParticleTypes;
|
||||||
import net.minecraft.util.Mirror;
|
import net.minecraft.util.Mirror;
|
||||||
import net.minecraft.util.Rotation;
|
import net.minecraft.util.Rotation;
|
||||||
|
@ -255,4 +259,21 @@ public class TBAlloyFurnaceBlock
|
||||||
return side == EnumFacing.DOWN;
|
return side == EnumFacing.DOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// *************************************************************************************************
|
||||||
|
// INTERACTION
|
||||||
|
// *************************************************************************************************
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onBlockActivated( World worldIn , BlockPos pos , IBlockState state , EntityPlayer playerIn ,
|
||||||
|
EnumHand hand , ItemStack heldItem , EnumFacing side , float hitX , float hitY , float hitZ )
|
||||||
|
{
|
||||||
|
TileEntity te = worldIn.getTileEntity( pos );
|
||||||
|
if ( !(te instanceof TBAlloyFurnaceTileEntity ) || playerIn.isSneaking( ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
playerIn.openGui( Mmm.get( ) , 0 , worldIn , pos.getX( ) , pos.getY( ) , pos.getZ( ) );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
64
src/java/mmm/tech/base/TBAlloyFurnaceContainer.java
Normal file
64
src/java/mmm/tech/base/TBAlloyFurnaceContainer.java
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
package mmm.tech.base;
|
||||||
|
|
||||||
|
|
||||||
|
import mmm.utils.UContainers;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.inventory.Container;
|
||||||
|
import net.minecraft.inventory.Slot;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class TBAlloyFurnaceContainer
|
||||||
|
extends Container
|
||||||
|
{
|
||||||
|
private final World world;
|
||||||
|
private final BlockPos position;
|
||||||
|
|
||||||
|
// public final IInventory input;
|
||||||
|
// public final IInventory fuel;
|
||||||
|
// public final IInventory output;
|
||||||
|
|
||||||
|
|
||||||
|
@SideOnly( Side.CLIENT )
|
||||||
|
public TBAlloyFurnaceContainer( final InventoryPlayer playerInv , final World world )
|
||||||
|
{
|
||||||
|
this( playerInv , world , BlockPos.ORIGIN );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public TBAlloyFurnaceContainer( final InventoryPlayer playerInv , final World world , final BlockPos blockPos )
|
||||||
|
{
|
||||||
|
this.world = world;
|
||||||
|
this.position = blockPos;
|
||||||
|
|
||||||
|
// this.input = input;
|
||||||
|
// this.fuel = fuel;
|
||||||
|
|
||||||
|
// UContainers.addGrid( //
|
||||||
|
// ( i , x , y ) -> this.addSlotToContainer( new Slot( input , i , x , y ) ) , //
|
||||||
|
// 3 , 5 , 0 , 11 , 7 );
|
||||||
|
|
||||||
|
// UContainers.addGrid( //
|
||||||
|
// ( i , x , y ) -> this.addSlotToContainer( new SlotFurnaceFuel( fuel , i , x , y ) ) , //
|
||||||
|
// 2 , 2 , 0 , 79 , 61 );
|
||||||
|
|
||||||
|
UContainers.addPlayerInventory( //
|
||||||
|
( i , x , y ) -> this.addSlotToContainer( new Slot( playerInv , i , x , y ) ) , //
|
||||||
|
7 , 111 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canInteractWith( final EntityPlayer player )
|
||||||
|
{
|
||||||
|
return this.world.getBlockState( this.position ).getBlock( ) instanceof TBAlloyFurnaceBlock
|
||||||
|
&& player.getDistanceSq( this.position.getX( ) + .5 , this.position.getY( ) + .5 ,
|
||||||
|
this.position.getZ( ) + .5 ) <= 64.;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
108
src/java/mmm/tech/base/TBAlloyFurnaceGui.java
Normal file
108
src/java/mmm/tech/base/TBAlloyFurnaceGui.java
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
package mmm.tech.base;
|
||||||
|
|
||||||
|
|
||||||
|
import mmm.Mmm;
|
||||||
|
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||||
|
import net.minecraft.client.renderer.GlStateManager;
|
||||||
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@SideOnly( Side.CLIENT )
|
||||||
|
public class TBAlloyFurnaceGui
|
||||||
|
extends GuiContainer
|
||||||
|
{
|
||||||
|
private static enum Tab {
|
||||||
|
MAIN( 207 , 0 ) ,
|
||||||
|
CONFIG( 191 , 0 );
|
||||||
|
|
||||||
|
public final int iconX;
|
||||||
|
public final int iconY;
|
||||||
|
|
||||||
|
|
||||||
|
private Tab( final int iconX , final int iconY )
|
||||||
|
{
|
||||||
|
this.iconX = iconX;
|
||||||
|
this.iconY = iconY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final ResourceLocation TEXTURES[] = {
|
||||||
|
new ResourceLocation( Mmm.ID , "textures/gui/alloy_furnace_1.png" ) ,
|
||||||
|
new ResourceLocation( Mmm.ID , "textures/gui/alloy_furnace_2.png" )
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final TBAlloyFurnaceGui.Tab TABS[] = TBAlloyFurnaceGui.Tab.values( );
|
||||||
|
|
||||||
|
private static final int TAB_WIDTH = 26;
|
||||||
|
private static final int TAB_HEIGHT = 26;
|
||||||
|
private static final int TAB_BORDER = 4;
|
||||||
|
private static final int TABS_X = 176;
|
||||||
|
private static final int TABS_Y = 45;
|
||||||
|
private static final int TAB_ICON_X = 5;
|
||||||
|
private static final int TAB_ICON_Y = 5;
|
||||||
|
private static final int TAB_ICON_WIDTH = 16;
|
||||||
|
private static final int TAB_ICON_HEIGHT = 16;
|
||||||
|
|
||||||
|
private final TBAlloyFurnaceGui.Tab selectedTab = Tab.MAIN;
|
||||||
|
|
||||||
|
|
||||||
|
public TBAlloyFurnaceGui( final InventoryPlayer inventoryPlayer , final World world )
|
||||||
|
{
|
||||||
|
super( new TBAlloyFurnaceContainer( inventoryPlayer , world ) );
|
||||||
|
this.xSize = 176;
|
||||||
|
this.ySize = 194;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void drawGuiContainerBackgroundLayer( final float partialTicks , final int mouseX , final int mouseY )
|
||||||
|
{
|
||||||
|
GlStateManager.color( 1f , 1f , 1f , 1f );
|
||||||
|
GlStateManager.enableBlend( );
|
||||||
|
GlStateManager.disableLighting( );
|
||||||
|
// RenderHelper.enableGUIStandardItemLighting( );
|
||||||
|
|
||||||
|
// Inactive tab
|
||||||
|
this.mc.getTextureManager( ).bindTexture( TBAlloyFurnaceGui.TEXTURES[ 0 ] );
|
||||||
|
for ( final TBAlloyFurnaceGui.Tab tab : TBAlloyFurnaceGui.TABS ) {
|
||||||
|
if ( tab != this.selectedTab ) {
|
||||||
|
this.drawTab( tab );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Main panel
|
||||||
|
this.mc.getTextureManager( ).bindTexture( TBAlloyFurnaceGui.TEXTURES[ this.selectedTab.ordinal( ) ] );
|
||||||
|
this.drawTexturedModalRect( this.guiLeft , this.guiTop , 0 , 0 , this.xSize , this.ySize );
|
||||||
|
|
||||||
|
// Active tab
|
||||||
|
this.mc.getTextureManager( ).bindTexture( TBAlloyFurnaceGui.TEXTURES[ 0 ] );
|
||||||
|
this.drawTab( this.selectedTab );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void drawTab( final TBAlloyFurnaceGui.Tab tab )
|
||||||
|
{
|
||||||
|
final boolean selected = this.selectedTab == tab;
|
||||||
|
final int tabOffsetX = tab.ordinal( ) * TBAlloyFurnaceGui.TAB_WIDTH;
|
||||||
|
final int tabX = this.guiLeft + tabOffsetX + TBAlloyFurnaceGui.TAB_BORDER;
|
||||||
|
final int tabY = this.guiTop - TBAlloyFurnaceGui.TAB_HEIGHT + TBAlloyFurnaceGui.TAB_BORDER;
|
||||||
|
|
||||||
|
this.drawTexturedModalRect( tabX , tabY , //
|
||||||
|
TBAlloyFurnaceGui.TABS_X + tabOffsetX ,
|
||||||
|
TBAlloyFurnaceGui.TABS_Y + ( selected ? TBAlloyFurnaceGui.TAB_HEIGHT : 0 ) , //
|
||||||
|
TBAlloyFurnaceGui.TAB_WIDTH , TBAlloyFurnaceGui.TAB_HEIGHT );
|
||||||
|
|
||||||
|
this.zLevel = 100f;
|
||||||
|
this.drawTexturedModalRect( tabX + TBAlloyFurnaceGui.TAB_ICON_X , tabY + TBAlloyFurnaceGui.TAB_ICON_Y , //
|
||||||
|
tab.iconX , tab.iconY , //
|
||||||
|
TBAlloyFurnaceGui.TAB_ICON_WIDTH , TBAlloyFurnaceGui.TAB_ICON_HEIGHT );
|
||||||
|
|
||||||
|
this.zLevel = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
41
src/java/mmm/tech/base/TBAlloyFurnaceGuiHandler.java
Normal file
41
src/java/mmm/tech/base/TBAlloyFurnaceGuiHandler.java
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
package mmm.tech.base;
|
||||||
|
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.fml.common.network.IGuiHandler;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class TBAlloyFurnaceGuiHandler
|
||||||
|
implements IGuiHandler
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getServerGuiElement( int ID , EntityPlayer player , World world , int x , int y , int z )
|
||||||
|
{
|
||||||
|
BlockPos pos = new BlockPos( x , y , z );
|
||||||
|
TileEntity tileEntity = world.getTileEntity( pos );
|
||||||
|
if ( tileEntity instanceof TBAlloyFurnaceTileEntity ) {
|
||||||
|
return new TBAlloyFurnaceContainer( player.inventory , world , pos );
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly( Side.CLIENT )
|
||||||
|
public Object getClientGuiElement( int ID , EntityPlayer player , World world , int x , int y , int z )
|
||||||
|
{
|
||||||
|
TileEntity tileEntity = world.getTileEntity( new BlockPos( x , y , z ) );
|
||||||
|
if ( tileEntity instanceof TBAlloyFurnaceTileEntity ) {
|
||||||
|
return new TBAlloyFurnaceGui( player.inventory , world );
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,9 +1,11 @@
|
||||||
package mmm.tech.base;
|
package mmm.tech.base;
|
||||||
|
|
||||||
|
|
||||||
|
import mmm.Mmm;
|
||||||
import mmm.utils.URegistry;
|
import mmm.utils.URegistry;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemBlockSpecial;
|
import net.minecraft.item.ItemBlockSpecial;
|
||||||
|
import net.minecraftforge.fml.common.network.NetworkRegistry;
|
||||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,6 +26,7 @@ public class TechBase
|
||||||
URegistry.addBlock( TechBase.ALLOY_FURNACE_BLOCK_INACTIVE , TechBase.ALLOY_FURNACE_ITEM );
|
URegistry.addBlock( TechBase.ALLOY_FURNACE_BLOCK_INACTIVE , TechBase.ALLOY_FURNACE_ITEM );
|
||||||
URegistry.addBlock( TechBase.ALLOY_FURNACE_BLOCK_ACTIVE , null );
|
URegistry.addBlock( TechBase.ALLOY_FURNACE_BLOCK_ACTIVE , null );
|
||||||
GameRegistry.registerTileEntity( TBAlloyFurnaceTileEntity.class , "mmm:tech/base/alloy_furnace" );
|
GameRegistry.registerTileEntity( TBAlloyFurnaceTileEntity.class , "mmm:tech/base/alloy_furnace" );
|
||||||
|
NetworkRegistry.INSTANCE.registerGuiHandler( Mmm.get( ) , new TBAlloyFurnaceGuiHandler( ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
178
src/java/mmm/utils/A_UInventoryGrid.java
Normal file
178
src/java/mmm/utils/A_UInventoryGrid.java
Normal file
|
@ -0,0 +1,178 @@
|
||||||
|
package mmm.utils;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.inventory.IInventory;
|
||||||
|
import net.minecraft.inventory.ItemStackHelper;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.text.ITextComponent;
|
||||||
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public abstract class A_UInventoryGrid
|
||||||
|
implements IInventory
|
||||||
|
{
|
||||||
|
public final String name;
|
||||||
|
public final int width;
|
||||||
|
public final int height;
|
||||||
|
public final int slotsCount;
|
||||||
|
private final ItemStack[] inventoryContents;
|
||||||
|
|
||||||
|
|
||||||
|
public A_UInventoryGrid( final String name , final int width , final int height )
|
||||||
|
{
|
||||||
|
this.name = name;
|
||||||
|
this.width = width;
|
||||||
|
this.height = height;
|
||||||
|
this.slotsCount = width * height;
|
||||||
|
this.inventoryContents = new ItemStack[ width * height ];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName( )
|
||||||
|
{
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasCustomName( )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ITextComponent getDisplayName( )
|
||||||
|
{
|
||||||
|
return new TextComponentTranslation( this.name );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSizeInventory( )
|
||||||
|
{
|
||||||
|
return this.slotsCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Nullable
|
||||||
|
public ItemStack getStackInSlot( final int index )
|
||||||
|
{
|
||||||
|
return index >= 0 && index < this.inventoryContents.length ? this.inventoryContents[ index ] : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public ItemStack getStackInCell( final int x , final int y )
|
||||||
|
{
|
||||||
|
return this.getStackInSlot( x + y * this.width );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Nullable
|
||||||
|
public ItemStack decrStackSize( final int index , final int count )
|
||||||
|
{
|
||||||
|
final ItemStack itemstack = ItemStackHelper.getAndSplit( this.inventoryContents , index , count );
|
||||||
|
if ( itemstack != null ) {
|
||||||
|
this.markDirty( );
|
||||||
|
}
|
||||||
|
return itemstack;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Nullable
|
||||||
|
public ItemStack removeStackFromSlot( final int index )
|
||||||
|
{
|
||||||
|
if ( this.inventoryContents[ index ] != null ) {
|
||||||
|
final ItemStack itemstack = this.inventoryContents[ index ];
|
||||||
|
this.inventoryContents[ index ] = null;
|
||||||
|
return itemstack;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setInventorySlotContents( final int index , final ItemStack stack )
|
||||||
|
{
|
||||||
|
this.inventoryContents[ index ] = stack;
|
||||||
|
if ( stack != null && stack.stackSize > this.getInventoryStackLimit( ) ) {
|
||||||
|
stack.stackSize = this.getInventoryStackLimit( );
|
||||||
|
}
|
||||||
|
this.markDirty( );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getInventoryStackLimit( )
|
||||||
|
{
|
||||||
|
return 64;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isUseableByPlayer( final EntityPlayer player )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void openInventory( final EntityPlayer player )
|
||||||
|
{
|
||||||
|
// EMPTY
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void closeInventory( final EntityPlayer player )
|
||||||
|
{
|
||||||
|
// EMPTY
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isItemValidForSlot( final int index , final ItemStack stack )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getField( final int id )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setField( final int id , final int value )
|
||||||
|
{
|
||||||
|
// EMPTY
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getFieldCount( )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clear( )
|
||||||
|
{
|
||||||
|
Arrays.fill( this.inventoryContents , null );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
36
src/java/mmm/utils/UContainers.java
Normal file
36
src/java/mmm/utils/UContainers.java
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
package mmm.utils;
|
||||||
|
|
||||||
|
public class UContainers
|
||||||
|
{
|
||||||
|
|
||||||
|
public static interface SlotAdder
|
||||||
|
{
|
||||||
|
public void addSlot( int index , int x , int y );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void addPlayerInventory( final UContainers.SlotAdder slotAdder , final int x , final int y )
|
||||||
|
{
|
||||||
|
UContainers.addPlayerInventory( slotAdder , x , y , 4 );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void addPlayerInventory( final UContainers.SlotAdder slotAdder , final int x , final int y ,
|
||||||
|
final int spacing )
|
||||||
|
{
|
||||||
|
UContainers.addGrid( slotAdder , 9 , 3 , 9 , x , y ); // Main inventory
|
||||||
|
UContainers.addGrid( slotAdder , 9 , 1 , 0 , x , y + spacing + 54 ); // Quick bar
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void addGrid( final UContainers.SlotAdder slotAdder , final int columns , final int rows ,
|
||||||
|
final int index , final int x , final int y )
|
||||||
|
{
|
||||||
|
for ( int row = 0 ; row < rows ; ++row ) {
|
||||||
|
for ( int column = 0 ; column < columns ; ++column ) {
|
||||||
|
slotAdder.addSlot( index + column + row * 9 , x + column * 18 , y + row * 18 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Reference in a new issue