1.2 fixes and changes

MultiBlocks and MultiItems fixes
This commit is contained in:
Modbder committed 2013-09-27 18:17:43 +04:00
1 parent 321814f613
commit 1e2fb7a529
7 files changed
+147 -42

No files matched your search

+16 -5
View File
@@ -24,6 +24,8 @@ public class ItemMultiBlock extends ItemBlock{
public ItemMultiBlock(int par1) {
super(par1);
this.setMaxDamage(0);
this.setHasSubtypes(true);
}
@Override
@@ -31,7 +33,7 @@ public class ItemMultiBlock extends ItemBlock{
{
for(int i = 0; i < 1024; ++i)
{
if(MultiBlock.handler[i] != null)
if(MultiBlock.handler[i] != null && i == par7ItemStack.getItemDamage())
return MultiBlock.handler[i].canPlaceItemBlockOnSide(par1World, par2, par3, par4, par5, par6EntityPlayer, par7ItemStack);
}
return super.canPlaceItemBlockOnSide(par1World, par2, par3, par4, par5, par6EntityPlayer, par7ItemStack);
@@ -94,7 +96,7 @@ public class ItemMultiBlock extends ItemBlock{
{
for(int i = 0; i < 1024; ++i)
{
if(MultiBlock.handler[i] != null)
if(MultiBlock.handler[i] != null && i == par1ItemStack.getItemDamage())
MultiBlock.handler[i].onItemBlockUpdate(par1ItemStack, par2World, par3Entity, par4, par5);
}
}
@@ -102,10 +104,13 @@ public class ItemMultiBlock extends ItemBlock{
@Override
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
{
for(int i = 0; i < 1024; ++i)
{
if(MultiBlock.handler[i] != null)
MultiBlock.handler[i].addInformation(par1ItemStack, par2EntityPlayer, par3List, par4);
if(MultiBlock.handler[i] != null && par1ItemStack.getItemDamage() == i)
{
par3List = MultiBlock.handler[i].addInformation(par1ItemStack, par2EntityPlayer, par3List, par4);
}
}
}
@@ -114,10 +119,16 @@ public class ItemMultiBlock extends ItemBlock{
{
for(int i = 0; i < 1024; ++i)
{
if(MultiBlock.handler[i] != null)
if(MultiBlock.handler[i] != null && par1ItemStack.getItemDamage() == i)
return MultiBlock.handler[i].getRarity(par1ItemStack);
}
return EnumRarity.common;
}
@Override
public int getMetadata(int par1)
{
return par1;
}
}
+48 -19
View File
@@ -29,14 +29,15 @@ public class MultiBlock extends Block{
protected static List<String> blockNames = new ArrayList();
protected static List<String> blockNamesUnlocalisedList = new ArrayList();
protected static Hashtable<String,Integer> blockNamesUnlocalised = new Hashtable();
protected static Hashtable<IDummyMultiBlock,Integer> mbHandlers = new Hashtable();
protected static List<String> blockTextures = new ArrayList();
protected static int id = -1;
public static int blockuid;
protected static Icon[] icon;
public static Icon[] icon;
protected static IDummyMultiBlock[] handler = new IDummyMultiBlock[1024];
public static int blocks;
public MultiBlock(int par1) {
super(par1, Material.circuits);
super(par1, Material.web);
blockuid = par1;
}
@@ -125,42 +126,50 @@ public class MultiBlock extends Block{
{
registerMultiBlock(unlocalisedName,inGameName,texturePath);
handler[getMetadataByName(unlocalisedName)] = multiblockHandler;
mbHandlers.put(multiblockHandler, getMetadataByName(unlocalisedName));
}
@Override
public float getBlockHardness(World par1World, int par2, int par3, int par4)
{
int meta = par1World.getBlockMetadata(par2, par3, par4);
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
{
return handler[i].getBlockHardness(MiscUtils.getBlock(par1World, par2, par3, par4),par1World, par2, par3, par4);
}
}
return this.blockHardness;
}
@SideOnly(Side.CLIENT)
@Override
public float getBlockBrightness(IBlockAccess par1IBlockAccess, int par2, int par3, int par4)
public int getLightValue(IBlockAccess par1IBlockAccess, int par2, int par3, int par4)
{
int meta = par1IBlockAccess.getBlockMetadata(par2, par3, par4);
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
return handler[i].getBlockBrightness(MiscUtils.getBlock(par1IBlockAccess, par2, par3, par4),par1IBlockAccess, par2, par3, par4);
if(handler[i] != null && i == meta)
{
return (int)( handler[i].getBlockBrightness(MiscUtils.getBlock(par1IBlockAccess, par2, par3, par4),par1IBlockAccess, par2, par3, par4)*15);
}
}
return super.getBlockBrightness(par1IBlockAccess, par2, par3, par4);
return super.getLightValue(par1IBlockAccess, par2, par3, par4);
}
@SideOnly(Side.CLIENT)
/*@SideOnly(Side.CLIENT)
@Override
public Icon getBlockTexture(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
{
int meta = par1IBlockAccess.getBlockMetadata(par2, par3, par4);
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
return handler[i].getBlockTexture(MiscUtils.getBlock(par1IBlockAccess, par2, par3, par4), par1IBlockAccess, par2, par3, par4, par5);
}
return icon[par1IBlockAccess.getBlockMetadata(par2,par3,par4)];
}
}*/
@SideOnly(Side.CLIENT)
@Override
@@ -168,7 +177,7 @@ public class MultiBlock extends Block{
{
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == par2)
return handler[i].getIcon(par1, par2);
}
return this.icon[par2];
@@ -178,9 +187,10 @@ public class MultiBlock extends Block{
@Override
public AxisAlignedBB getSelectedBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
{
int meta = par1World.getBlockMetadata(par2, par3, par4);
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
return handler[i].getSelectedBoundingBoxFromPool(MiscUtils.getBlock(par1World, par2, par3, par4), par1World, par2, par3, par4);
}
return super.getSelectedBoundingBoxFromPool(par1World, par2, par3, par4);
@@ -194,9 +204,10 @@ public class MultiBlock extends Block{
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
{
int meta = par1World.getBlockMetadata(par2, par3, par4);
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
return handler[i].getCollisionBoundingBoxFromPool(MiscUtils.getBlock(par1World, par2, par3, par4), par1World, par2, par3, par4);
}
return super.getCollisionBoundingBoxFromPool(par1World, par2, par3, par4);
@@ -206,9 +217,10 @@ public class MultiBlock extends Block{
@Override
public void randomDisplayTick(World par1World, int par2, int par3, int par4, Random par5Random)
{
int meta = par1World.getBlockMetadata(par2, par3, par4);
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
handler[i].randomDisplayTick(MiscUtils.getBlock(par1World, par2, par3, par4), par1World, par2, par3, par4, par5Random);
}
super.randomDisplayTick(par1World, par2, par3, par4, par5Random);
@@ -217,9 +229,10 @@ public class MultiBlock extends Block{
@Override
public void onBlockDestroyedByPlayer(World par1World, int par2, int par3, int par4, int par5)
{
int meta = par1World.getBlockMetadata(par2, par3, par4);
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
handler[i].onBlockDestroyedByPlayer(MiscUtils.getBlock(par1World, par2, par3, par4), par1World, par2, par3, par4, par5);
}
super.onBlockDestroyedByPlayer(par1World, par2, par3, par4, par5);
@@ -228,9 +241,10 @@ public class MultiBlock extends Block{
@Override
public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5)
{
int meta = par1World.getBlockMetadata(par2, par3, par4);
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
handler[i].onNeighborBlockChange(MiscUtils.getBlock(par1World, par2, par3, par4), par1World, par2, par3, par4, par5);
}
super.onNeighborBlockChange(par1World, par2, par3, par4, par5);
@@ -239,9 +253,10 @@ public class MultiBlock extends Block{
@Override
public void onBlockAdded(World par1World, int par2, int par3, int par4)
{
int meta = par1World.getBlockMetadata(par2, par3, par4);
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
handler[i].onBlockAdded(MiscUtils.getBlock(par1World, par2, par3, par4), par1World, par2, par3, par4);
}
super.onBlockAdded(par1World, par2, par3, par4);
@@ -250,9 +265,10 @@ public class MultiBlock extends Block{
@Override
public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
{
int meta = par1World.getBlockMetadata(par2, par3, par4);
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
return handler[i].onBlockActivated(MiscUtils.getBlock(par1World, par2, par3, par4), par1World, par2, par3, par4, par5EntityPlayer, par6, par7, par8, par9);
}
return super.onBlockActivated(par1World, par2, par3, par4, par5EntityPlayer, par6, par7, par8, par9);
@@ -261,14 +277,27 @@ public class MultiBlock extends Block{
@Override
public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4)
{
int meta = par1IBlockAccess.getBlockMetadata(par2, par3, par4);
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
handler[i].setBlockBoundsBasedOnState(MiscUtils.getBlock(par1IBlockAccess, par2, par3, par4), par1IBlockAccess, par2, par3, par4);
}
super.setBlockBoundsBasedOnState(par1IBlockAccess, par2, par3, par4);
}
@SideOnly(Side.CLIENT)
@Override
public int getRenderColor(int par1)
{
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null && i == par1)
return handler[i].getRenderColor(par1);
}
return 16777215;
}
@Override
public int damageDropped(int par1)
{
+23 -17
View File
@@ -6,6 +6,8 @@ import java.util.List;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import DummyCore.Core.CoreInitialiser;
import DummyCore.Utils.IDummyMultiBlock;
import DummyCore.Utils.IDummyMultiItem;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IconRegister;
@@ -29,6 +31,7 @@ public class MultiItem extends Item{
private static List<String> itemNames = new ArrayList();
private static List<String> itemNamesUnlocalisedList = new ArrayList();
private static Hashtable<String,Integer> itemNamesUnlocalised = new Hashtable();
protected static Hashtable<IDummyMultiItem,Integer> miHandlers = new Hashtable();
private static List<String> itemTextures = new ArrayList();
private static int id = -1;
public static int itemuid;
@@ -99,7 +102,7 @@ public class MultiItem extends Item{
*/
public static ItemStack getStackByName(String unlocalisedName, int size)
{
ItemStack s = new ItemStack(itemuid,getMetadataByName(unlocalisedName),size);
ItemStack s = new ItemStack(CoreInitialiser.mItem,getMetadataByName(unlocalisedName),size);
return s;
}
@@ -140,18 +143,19 @@ public class MultiItem extends Item{
{
registerMultiItem(unlocalisedName,inGameName,texturePath);
handler[getMetadataByName(unlocalisedName)] = multiItemHandler;
miHandlers.put(multiItemHandler, getMetadataByName(unlocalisedName));
}
@Override
public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
{
int meta = par1ItemStack.getItemDamage();
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
{
boolean result = handler[i].onItemUse(par1ItemStack, par2EntityPlayer, par3World, par4, par5, par6, par7, par8, par9, par10);
if(result = true)
return result;
return result;
}
}
return false;
@@ -160,12 +164,12 @@ public class MultiItem extends Item{
@Override
public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
{
int meta = par1ItemStack.getItemDamage();
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
{
ItemStack result = handler[i].onItemRightClick(par1ItemStack, par2World, par3EntityPlayer);
if(result != null)
return result;
}
}
@@ -175,12 +179,12 @@ public class MultiItem extends Item{
@Override
public boolean hitEntity(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase, EntityLivingBase par3EntityLivingBase)
{
int meta = par1ItemStack.getItemDamage();
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
{
boolean result = handler[i].hitEntity(par1ItemStack, par2EntityLivingBase, par3EntityLivingBase);
if(result != false)
return result;
}
}
@@ -190,12 +194,12 @@ public class MultiItem extends Item{
@Override
public boolean onBlockDestroyed(ItemStack par1ItemStack, World par2World, int par3, int par4, int par5, int par6, EntityLivingBase par7EntityLivingBase)
{
int meta = par1ItemStack.getItemDamage();
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
{
boolean result = handler[i].onBlockDestroyed(par1ItemStack, par2World, par3, par4, par5, par6, par7EntityLivingBase);
if(result != false)
return result;
}
}
@@ -206,8 +210,9 @@ public class MultiItem extends Item{
public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5)
{
{
for(int i = 0; i < 1024; ++i)
if(handler[i] != null)
int meta = par1ItemStack.getItemDamage();
for(int i = 0; i < 1024; ++i)
if(handler[i] != null && i == meta)
handler[i].onUpdate(par1ItemStack, par2World, par3Entity, par4, par5);
}
}
@@ -216,12 +221,12 @@ public class MultiItem extends Item{
@SideOnly(Side.CLIENT)
public int getColorFromItemStack(ItemStack par1ItemStack, int par2)
{
int meta = par1ItemStack.getItemDamage();
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
{
int result = handler[i].getColorFromItemStack(par1ItemStack, par2);
if(result != -1)
return result;
}
}
@@ -231,9 +236,10 @@ public class MultiItem extends Item{
@Override
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
{
int meta = par1ItemStack.getItemDamage();
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
handler[i].addInformation(par1ItemStack, par2EntityPlayer, par3List, par4);
}
}
@@ -241,12 +247,12 @@ public class MultiItem extends Item{
@Override
public EnumRarity getRarity(ItemStack par1ItemStack)
{
int meta = par1ItemStack.getItemDamage();
for(int i = 0; i < 1024; ++i)
{
if(handler[i] != null)
if(handler[i] != null && i == meta)
{
EnumRarity result = handler[i].getRarity(par1ItemStack);
if(result != EnumRarity.common)
return result;
}
}
+53
View File
@@ -0,0 +1,53 @@
package DummyCore.Utils;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.client.gui.Gui;
import net.minecraft.inventory.Container;
public class GuiContainerLibrary {
private static List<Gui> gui = new ArrayList();
private static List<Container> container = new ArrayList();
private static List<Integer> regInt = new ArrayList();
public static void registerGuiContainer(int id, Container c, Gui g)
{
regInt.add(id);
container.add(c);
gui.add(g);
}
public static Container getContainerByID(int id)
{
int i = getListArg(id);
if(i > 0)
{
return container.get(i);
}
return null;
}
public static Gui getGuiByID(int id)
{
int i = getListArg(id);
if(i > 0)
{
return gui.get(i);
}
return null;
}
private static int getListArg(int id)
{
if(regInt.contains(id))
{
for(int i = 0; i < regInt.size(); ++i)
{
if(regInt.get(i) == id)
return regInt.get(i);
}
}
return -1;
}
}
+3 -1
View File
@@ -27,7 +27,7 @@ public interface IDummyMultiBlock {
public void onItemBlockUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5);
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4);
public List addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4);
public EnumRarity getRarity(ItemStack par1ItemStack);
@@ -56,4 +56,6 @@ public interface IDummyMultiBlock {
public void setBlockBoundsBasedOnState(Block b, IBlockAccess par1IBlockAccess, int par2, int par3, int par4);
public Icon getIcon(int par1, int par2);
public int getRenderColor(int par1);
}
+2
View File
@@ -20,6 +20,8 @@ public class MathUtils {
*/
public static int pixelatedTextureSize(int current, int max, int textureSize)
{
if(current > max)
current = max;
float m = (float)current/max*100;
float n = m/100*textureSize;
return (int)n;
+2
View File
@@ -10,6 +10,8 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;