Cover also using now registry names
This commit is contained in:
parent
55a5b2ef79
commit
85700e397b
7 changed files with 29 additions and 76 deletions
|
@ -129,6 +129,9 @@ public class GregTech_API {
|
|||
/** The Icon List for Covers */
|
||||
public static final Map<Integer, IIcon> sCovers = new HashMap<Integer, IIcon>();
|
||||
|
||||
/** The Item List for Covers */
|
||||
public static final Map<Integer, ItemStack> sCoversItems = new HashMap<Integer, ItemStack>();
|
||||
|
||||
/** The List of Circuit Behaviors for the Redstone Circuit Block */
|
||||
public static final Map<Integer, GT_CircuitryBehavior> sCircuitryBehaviors = new HashMap<Integer, GT_CircuitryBehavior>();
|
||||
|
||||
|
@ -526,8 +529,11 @@ public class GregTech_API {
|
|||
* Best is you make a Runnable with all Cover Registrations, and add it to the Cover Registration ArrayList ontop of this File.
|
||||
*/
|
||||
public static void registerCover(ItemStack aStack, IIcon aCover) {
|
||||
int tStack = GT_Utility.stackToInt(aStack);
|
||||
if (tStack != 0 && sCovers.get(tStack) == null) sCovers.put(tStack, aCover);
|
||||
int tStack = GT_Utility.stackToInt1(aStack);
|
||||
if (tStack != 0 && sCovers.get(tStack) == null) {
|
||||
sCoversItems.put(tStack, aStack.copy());
|
||||
sCovers.put(tStack, aCover);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -568,7 +574,7 @@ public class GregTech_API {
|
|||
* returns a Cover behavior, guaranteed to not return null after preload
|
||||
*/
|
||||
public static GT_CoverBehavior getCoverBehavior(ItemStack aStack) {
|
||||
return getCoverBehavior(GT_Utility.stackToInt(aStack));
|
||||
return getCoverBehavior(GT_Utility.stackToInt1(aStack));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -604,7 +604,7 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE
|
|||
|
||||
if (getCoverIDAtSide(cSide) == 0) {
|
||||
if (GT_Utility.isItemStackInIntList(aPlayer.inventory.getCurrentItem(), GregTech_API.sCovers.keySet())) {
|
||||
if (GregTech_API.getCoverBehavior(aPlayer.inventory.getCurrentItem()).isCoverPlaceable(cSide, GT_Utility.stackToInt(aPlayer.inventory.getCurrentItem()), this) && mMetaTileEntity.allowCoverOnSide(cSide, GT_Utility.stackToInt(aPlayer.inventory.getCurrentItem()))) {
|
||||
if (GregTech_API.getCoverBehavior(aPlayer.inventory.getCurrentItem()).isCoverPlaceable(cSide, GT_Utility.stackToInt1(aPlayer.inventory.getCurrentItem()), this) && mMetaTileEntity.allowCoverOnSide(cSide, GT_Utility.stackToInt1(aPlayer.inventory.getCurrentItem()))) {
|
||||
setCoverItemAtSide(cSide, aPlayer.inventory.getCurrentItem());
|
||||
if (!aPlayer.capabilities.isCreativeMode) aPlayer.inventory.getCurrentItem().stackSize--;
|
||||
GT_Utility.sendSoundToPlayers(worldObj, GregTech_API.sSoundList.get(100), 1.0F, -1, xCoord, yCoord, zCoord);
|
||||
|
@ -850,7 +850,7 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE
|
|||
|
||||
@Override
|
||||
public void setCoverItemAtSide(byte aSide, ItemStack aCover) {
|
||||
setCoverIDAtSide(aSide, GT_Utility.stackToInt(aCover));
|
||||
setCoverIDAtSide(aSide, GT_Utility.stackToInt1(aCover));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -860,7 +860,7 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE
|
|||
|
||||
@Override
|
||||
public ItemStack getCoverItemAtSide(byte aSide) {
|
||||
return GT_Utility.intToStack(getCoverIDAtSide(aSide));
|
||||
return GT_Utility.getCoverByID(getCoverIDAtSide(aSide));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -888,7 +888,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
|
|||
|
||||
if (getCoverIDAtSide(aSide) == 0) {
|
||||
if (GT_Utility.isItemStackInIntList(aPlayer.inventory.getCurrentItem(), GregTech_API.sCovers.keySet())) {
|
||||
if (GregTech_API.getCoverBehavior(aPlayer.inventory.getCurrentItem()).isCoverPlaceable(aSide, GT_Utility.stackToInt(aPlayer.inventory.getCurrentItem()), this) && mMetaTileEntity.allowCoverOnSide(aSide, GT_Utility.stackToInt(aPlayer.inventory.getCurrentItem()))) {
|
||||
if (GregTech_API.getCoverBehavior(aPlayer.inventory.getCurrentItem()).isCoverPlaceable(aSide, GT_Utility.stackToInt1(aPlayer.inventory.getCurrentItem()), this) && mMetaTileEntity.allowCoverOnSide(aSide, GT_Utility.stackToInt1(aPlayer.inventory.getCurrentItem()))) {
|
||||
setCoverItemAtSide(aSide, aPlayer.inventory.getCurrentItem());
|
||||
if (!aPlayer.capabilities.isCreativeMode) aPlayer.inventory.getCurrentItem().stackSize--;
|
||||
GT_Utility.sendSoundToPlayers(worldObj, GregTech_API.sSoundList.get(100), 1.0F, -1, xCoord, yCoord, zCoord);
|
||||
|
@ -1287,7 +1287,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
|
|||
|
||||
@Override
|
||||
public void setCoverItemAtSide(byte aSide, ItemStack aCover) {
|
||||
setCoverIDAtSide(aSide, GT_Utility.stackToInt(aCover));
|
||||
setCoverIDAtSide(aSide, GT_Utility.stackToInt1(aCover));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1297,7 +1297,7 @@ public class BaseMetaTileEntity extends BaseTileEntity implements IGregTechTileE
|
|||
|
||||
@Override
|
||||
public ItemStack getCoverItemAtSide(byte aSide) {
|
||||
return GT_Utility.intToStack(getCoverIDAtSide(aSide));
|
||||
return GT_Utility.getCoverByID(getCoverIDAtSide(aSide));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -15,7 +15,7 @@ public abstract class GT_CoverBehavior {
|
|||
* Gives all Covers which are out of these Stacks a special behavior.
|
||||
*/
|
||||
public GT_CoverBehavior(ItemStack[] aCovers) {
|
||||
for (ItemStack tCover : aCovers) GregTech_API.sCoverBehaviors.put(GT_Utility.stackToInt(tCover), this);
|
||||
for (ItemStack tCover : aCovers) GregTech_API.sCoverBehaviors.put(GT_Utility.stackToInt1(tCover), this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -29,7 +29,7 @@ public abstract class GT_CoverBehavior {
|
|||
* Gives Cover which is out of this Stack a special behavior.
|
||||
*/
|
||||
public GT_CoverBehavior(ItemStack aCover) {
|
||||
GregTech_API.sCoverBehaviors.put(GT_Utility.stackToInt(aCover), this);
|
||||
GregTech_API.sCoverBehaviors.put(GT_Utility.stackToInt1(aCover), this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -862,7 +862,9 @@ public class GT_Utility {
|
|||
public static int stackToInt(ItemStack aStack, boolean aForceWildcard) {
|
||||
if (isStackInvalid(aStack)) return -1;
|
||||
if (aStack.getItem().delegate == null || aStack.getItem().delegate.name() == null) throw new IllegalStateException();
|
||||
return aStack.getItem().delegate.name().hashCode() | ((aForceWildcard ? GregTech_API.ITEM_WILDCARD_DAMAGE : Items.feather.getDamage(aStack)) << 16);
|
||||
int code = aStack.getItem().delegate.name().hashCode();
|
||||
code = 31 * code + (aForceWildcard ? GregTech_API.ITEM_WILDCARD_DAMAGE : Items.feather.getDamage(aStack));
|
||||
return code;
|
||||
}
|
||||
|
||||
public static int stackToInt(ItemStack aStack) {
|
||||
|
@ -870,34 +872,6 @@ public class GT_Utility {
|
|||
return Item.getIdFromItem(aStack.getItem()) | (Items.feather.getDamage(aStack) << 16);
|
||||
}
|
||||
|
||||
public static int stackArrayToInt(ItemStack[] stacks) {
|
||||
int result = 0;
|
||||
for (ItemStack stack : stacks) result += stackToInt(stack);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static boolean doesStackArraysSame(ItemStack[] stacks1, ItemStack[] stacks2) {
|
||||
List<ItemStackKey> l1 = Arrays.stream(stacks1).map(stk -> ItemStackKey.from(stk)).collect(Collectors.toList());
|
||||
List<ItemStackKey> l2 = Arrays.stream(stacks2).map(stk -> ItemStackKey.from(stk)).collect(Collectors.toList());
|
||||
return l1.size() == l2.size() && l1.containsAll(l2);
|
||||
}
|
||||
|
||||
public static boolean doesRecipeInputsSame(ItemStack[][] s1, ItemStack[][] s2) {
|
||||
if (s1.length == s2.length) {
|
||||
List<List<ItemStackKey>> l1 = Arrays.stream(s1)
|
||||
.map(arr -> Arrays.stream(arr).map(stack -> ItemStackKey.from(stack)).sorted().collect(Collectors.toList()))
|
||||
.sorted()
|
||||
.collect(Collectors.toList());
|
||||
List<List<ItemStackKey>> l2 = Arrays.stream(s2)
|
||||
.map(arr -> Arrays.stream(arr).map(stack -> ItemStackKey.from(stack)).sorted().collect(Collectors.toList()))
|
||||
.sorted()
|
||||
.collect(Collectors.toList());
|
||||
return l1.containsAll(l2);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static int stackToWildcard(ItemStack aStack) {
|
||||
if (isStackInvalid(aStack)) return 0;
|
||||
return Item.getIdFromItem(aStack.getItem()) | (GregTech_API.ITEM_WILDCARD_DAMAGE << 16);
|
||||
|
@ -911,35 +885,8 @@ public class GT_Utility {
|
|||
return code < 0 ? code : -code;
|
||||
}
|
||||
|
||||
public static ItemStack intToStack(int aStack) {
|
||||
int tID = aStack&(~0>>>16), tMeta = aStack>>>16;
|
||||
Item tItem = (Item) Item.itemRegistry.getObjectById(tID);
|
||||
if (tID > 0 && tItem != null) return new ItemStack(tItem, 1, tMeta);
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Integer[] stacksToIntegerArray(ItemStack... aStacks) {
|
||||
Integer[] rArray = new Integer[aStacks.length];
|
||||
for (int i = 0; i < rArray.length; i++) {
|
||||
rArray[i] = stackToInt(aStacks[i]);
|
||||
}
|
||||
return rArray;
|
||||
}
|
||||
|
||||
public static int[] stacksToIntArray(ItemStack... aStacks) {
|
||||
int[] rArray = new int[aStacks.length];
|
||||
for (int i = 0; i < rArray.length; i++) {
|
||||
rArray[i] = stackToInt(aStacks[i]);
|
||||
}
|
||||
return rArray;
|
||||
}
|
||||
|
||||
public static long stacksToLong(ItemStack aStack1, ItemStack aStack2) {
|
||||
return stackToInt(aStack1) | (((long)stackToInt(aStack2)) << 32);
|
||||
}
|
||||
|
||||
public static boolean arrayContains(Object aObject, Object... aObjects) {
|
||||
return Arrays.asList(aObjects).contains(aObject);
|
||||
public static ItemStack getCoverByID(int aStack) {
|
||||
return GregTech_API.sCoversItems.get(Integer.valueOf(aStack));
|
||||
}
|
||||
|
||||
public static boolean isBlockValid(Object aBlock) {
|
||||
|
@ -976,7 +923,7 @@ public class GT_Utility {
|
|||
|
||||
public static boolean isItemStackInIntList(ItemStack aStack, Collection<Integer> aList) {
|
||||
if (isStackInvalid(aStack) || aList == null) return false;
|
||||
return aList.contains(stackToInt(aStack)) || aList.contains(stackToWildcard(aStack));
|
||||
return aList.contains(stackToInt(aStack, false)) || aList.contains(stackToInt(aStack, true));
|
||||
}
|
||||
|
||||
public static boolean isItemStackInList(ItemStack aStack, Collection<ItemStackKey> aList) {
|
||||
|
|
|
@ -25,7 +25,7 @@ public abstract class GT_Cover_RedstoneWirelessBase extends GT_CoverBehavior {
|
|||
public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) {
|
||||
if (((aX > 0.375 && aX < 0.625) || aSide > 3) && ((aY > 0.375 && aY < 0.625) || aSide < 2) && ((aZ > 0.375 && aZ < 0.625) || aSide == 2 || aSide == 3)) {
|
||||
GregTech_API.sWirelessRedstone.put(aCoverVariable, (byte)0);
|
||||
aCoverVariable = GT_Utility.stackToInt(aPlayer.inventory.getCurrentItem());
|
||||
aCoverVariable = GT_Utility.stackToInt1(aPlayer.inventory.getCurrentItem());
|
||||
aTileEntity.setCoverDataAtSide(aSide, aCoverVariable);
|
||||
GT_Utility.sendChatToPlayer(aPlayer, new ChatComponentTranslation("metatileentity.GT_Tesseract.message.1", aCoverVariable));
|
||||
return true;
|
||||
|
|
|
@ -129,7 +129,7 @@ public class GT_MetaTileEntity_RedstoneCircuitBlock extends MetaTileEntity imple
|
|||
}
|
||||
|
||||
public void stackGateData(int aIndex, ItemStack aStack) {
|
||||
mGateData[aIndex] = GT_Utility.stackToInt(aStack);
|
||||
mGateData[aIndex] = GT_Utility.stackToInt1(aStack);
|
||||
validateGateData();
|
||||
}
|
||||
|
||||
|
@ -162,10 +162,10 @@ public class GT_MetaTileEntity_RedstoneCircuitBlock extends MetaTileEntity imple
|
|||
GT_CircuitryBehavior tBehaviour = GregTech_API.sCircuitryBehaviors.get(mGate);
|
||||
if (tBehaviour != null) {try{
|
||||
tBehaviour.onTick(mGateData, this);
|
||||
if (tBehaviour.displayItemStack(mGateData, this, 0)) mInventory[1] = GT_Utility.intToStack(mGateData[0]);
|
||||
if (tBehaviour.displayItemStack(mGateData, this, 1)) mInventory[2] = GT_Utility.intToStack(mGateData[1]);
|
||||
if (tBehaviour.displayItemStack(mGateData, this, 2)) mInventory[3] = GT_Utility.intToStack(mGateData[2]);
|
||||
if (tBehaviour.displayItemStack(mGateData, this, 3)) mInventory[4] = GT_Utility.intToStack(mGateData[3]);
|
||||
if (tBehaviour.displayItemStack(mGateData, this, 0)) mInventory[1] = GT_Utility.getCoverByID(mGateData[0]);
|
||||
if (tBehaviour.displayItemStack(mGateData, this, 1)) mInventory[2] = GT_Utility.getCoverByID(mGateData[1]);
|
||||
if (tBehaviour.displayItemStack(mGateData, this, 2)) mInventory[3] = GT_Utility.getCoverByID(mGateData[2]);
|
||||
if (tBehaviour.displayItemStack(mGateData, this, 3)) mInventory[4] = GT_Utility.getCoverByID(mGateData[3]);
|
||||
} catch(Throwable e) {GT_Log.log.catching(e);}}
|
||||
}
|
||||
getBaseMetaTileEntity().setErrorDisplayID(0);
|
||||
|
|
Loading…
Reference in a new issue