Cover also using now registry names

This commit is contained in:
TheDarkDnKTv 2021-04-02 02:21:02 +03:00
parent 55a5b2ef79
commit 85700e397b
7 changed files with 29 additions and 76 deletions

View file

@ -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));
}
/**

View file

@ -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

View file

@ -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

View file

@ -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);
}
/**

View file

@ -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) {

View file

@ -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;

View file

@ -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);