aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/items
diff options
context:
space:
mode:
authorboubou_19 <miisterunknown@gmail.com>2021-08-16 20:32:53 +0200
committerboubou_19 <miisterunknown@gmail.com>2021-08-16 20:32:53 +0200
commit8f5dd5625e4632bbecda0771caad47bbbbd35d4c (patch)
tree15d544c783cd17606e6d71259eefc062ba4ea8e5 /src/main/java/gregtech/common/items
parent99030ff940686562c7e4f133919fb1496b0575f4 (diff)
parentc543724aa11d696fa049855e7b330364c1000a17 (diff)
downloadGT5-Unofficial-8f5dd5625e4632bbecda0771caad47bbbbd35d4c.tar.gz
GT5-Unofficial-8f5dd5625e4632bbecda0771caad47bbbbd35d4c.tar.bz2
GT5-Unofficial-8f5dd5625e4632bbecda0771caad47bbbbd35d4c.zip
Merge remote-tracking branch 'upstream/experimental' into experimental
Diffstat (limited to 'src/main/java/gregtech/common/items')
-rw-r--r--src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java18
-rw-r--r--src/main/java/gregtech/common/items/GT_MetaGenerated_Item_99.java200
-rw-r--r--src/main/java/gregtech/common/items/behaviors/Behaviour_DataOrb.java2
-rw-r--r--src/main/java/gregtech/common/items/behaviors/Behaviour_Plunger_Item.java4
-rw-r--r--src/main/java/gregtech/common/items/behaviors/Behaviour_Sonictron.java2
5 files changed, 126 insertions, 100 deletions
diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java
index f0904485d4..839e7db715 100644
--- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java
+++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java
@@ -849,17 +849,13 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 {
GregTech_API.registerCover(ItemList.Cover_NeedsMaintainance.get(1L), TextureFactory.of(MACHINE_CASINGS[2][0], TextureFactory.of(TextureFactory.of(OVERLAY_ACTIVITYDETECTOR), TextureFactory.builder().addIcon(OVERLAY_ACTIVITYDETECTOR_GLOW).glow().build())), new GT_Cover_NeedMaintainance());
GT_Values.RA.addAssemblerRecipe(ItemList.Emitter_MV.get(1L), GT_OreDictUnificator.get(OrePrefixes.plate, Materials.Aluminium, 1L), ItemList.Cover_NeedsMaintainance.get(1L), 600, 24);
- GT_ModHandler.addCraftingRecipe(ItemList.ItemFilter_Export.get(1L),new Object[]{"SPS","dIC","SPS",'P',OrePrefixes.plateDouble.get(Materials.StainlessSteel),'S',OrePrefixes.screw.get(Materials.StainlessSteel),'I',ItemList.Component_Filter,'C',ItemList.Conveyor_Module_HV});
- GT_ModHandler.addCraftingRecipe(ItemList.ItemFilter_Import.get(1L),new Object[]{"SPS","CId","SPS",'P',OrePrefixes.plateDouble.get(Materials.StainlessSteel),'S',OrePrefixes.screw.get(Materials.StainlessSteel),'I',ItemList.Component_Filter,'C',ItemList.Conveyor_Module_HV});
- GT_ModHandler.addShapelessCraftingRecipe(ItemList.ItemFilter_Export.get(1L),new Object[]{ItemList.ItemFilter_Import.get(1L)});
- GT_ModHandler.addShapelessCraftingRecipe(ItemList.ItemFilter_Import.get(1L),new Object[]{ItemList.ItemFilter_Export.get(1L)});
-
- GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plateDouble,Materials.StainlessSteel,2L),ItemList.Component_Filter.get(1L),ItemList.Conveyor_Module_HV.get(1L),GT_Utility.getIntegratedCircuit(1)},Materials.SolderingAlloy.getMolten(72L),ItemList.ItemFilter_Export.get(1L),100,30);
- GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plateDouble,Materials.StainlessSteel,2L),ItemList.Component_Filter.get(1L),ItemList.Conveyor_Module_HV.get(1L),GT_Utility.getIntegratedCircuit(1)},Materials.Tin.getMolten(144L),ItemList.ItemFilter_Export.get(1L),100,30);
- GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plateDouble,Materials.StainlessSteel,2L),ItemList.Component_Filter.get(1L),ItemList.Conveyor_Module_HV.get(1L),GT_Utility.getIntegratedCircuit(1)},Materials.Lead.getMolten(288L),ItemList.ItemFilter_Export.get(1L),100,30);
- GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plateDouble,Materials.StainlessSteel,2L),ItemList.Component_Filter.get(1L),ItemList.Conveyor_Module_HV.get(1L),GT_Utility.getIntegratedCircuit(2)},Materials.SolderingAlloy.getMolten(72L),ItemList.ItemFilter_Import.get(1L),100,30);
- GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plateDouble,Materials.StainlessSteel,2L),ItemList.Component_Filter.get(1L),ItemList.Conveyor_Module_HV.get(1L),GT_Utility.getIntegratedCircuit(2)},Materials.Tin.getMolten(144L),ItemList.ItemFilter_Import.get(1L),100,30);
- GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plateDouble,Materials.StainlessSteel,2L),ItemList.Component_Filter.get(1L),ItemList.Conveyor_Module_HV.get(1L),GT_Utility.getIntegratedCircuit(2)},Materials.Lead.getMolten(288L),ItemList.ItemFilter_Import.get(1L),100,30);
+ GT_ModHandler.addCraftingRecipe(ItemList.ItemFilter_Export.get(1L), new Object[]{"SPS", "dIC", "SPS", 'P', OrePrefixes.plate.get(Materials.Tin), 'S', OrePrefixes.screw.get(Materials.Iron), 'I', ItemList.Component_Filter, 'C', ItemList.Conveyor_Module_LV});
+ GT_ModHandler.addCraftingRecipe(ItemList.ItemFilter_Import.get(1L), new Object[]{"SPS", "CId", "SPS", 'P', OrePrefixes.plate.get(Materials.Tin), 'S', OrePrefixes.screw.get(Materials.Iron), 'I', ItemList.Component_Filter, 'C', ItemList.Conveyor_Module_LV});
+ GT_ModHandler.addShapelessCraftingRecipe(ItemList.ItemFilter_Export.get(1L), new Object[]{ItemList.ItemFilter_Import.get(1L)});
+ GT_ModHandler.addShapelessCraftingRecipe(ItemList.ItemFilter_Import.get(1L), new Object[]{ItemList.ItemFilter_Export.get(1L)});
+
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plate,Materials.Tin,2L), ItemList.Component_Filter.get(1L), ItemList.Conveyor_Module_LV.get(1L), GT_Utility.getIntegratedCircuit(1)}, null, ItemList.ItemFilter_Export.get(1L), 100, 30);
+ GT_Values.RA.addAssemblerRecipe(new ItemStack[]{GT_OreDictUnificator.get(OrePrefixes.plate,Materials.Tin,2L), ItemList.Component_Filter.get(1L), ItemList.Conveyor_Module_LV.get(1L), GT_Utility.getIntegratedCircuit(2)}, null, ItemList.ItemFilter_Import.get(1L), 100, 30);
}
private static final Map<Materials,Materials> cauldronRemap =new HashMap<>();
diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_99.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_99.java
index 2b94d96cb0..1c27310d99 100644
--- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_99.java
+++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_99.java
@@ -1,5 +1,6 @@
package gregtech.common.items;
+import com.google.common.collect.ImmutableList;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.GregTech_API;
@@ -24,145 +25,174 @@ import static gregtech.api.enums.OrePrefixes.cellMolten;
public class GT_MetaGenerated_Item_99 extends GT_MetaGenerated_Item {
public static GT_MetaGenerated_Item_99 INSTANCE;
- private BitSet enabled=new BitSet();
+ /**
+ * Ore prefixes appear in this list in the order in which they will be assigned ID blocks.
+ *
+ * <p>In order to avoid breaking existing worlds, the entries in this list must not be re-ordered! The only safe
+ * modification that can be made to this list is adding new entries to the end.
+ */
+ private static final ImmutableList<OrePrefixes> CRACKED_CELL_TYPES =
+ ImmutableList.of(
+ OrePrefixes.cellHydroCracked1, OrePrefixes.cellHydroCracked2, OrePrefixes.cellHydroCracked3,
+ OrePrefixes.cellSteamCracked1, OrePrefixes.cellSteamCracked2, OrePrefixes.cellSteamCracked3);
+ private static final int NUM_CRACKED_CELL_TYPES = CRACKED_CELL_TYPES.size();
- private void register(Materials tMaterial,int i){
- ItemStack tStack = new ItemStack(this, 1, i);
- enabled.set(i);
- GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".name", getDefaultLocalizationFormat(cellMolten, tMaterial, i));
- GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".tooltip", tMaterial.getToolTip(cellMolten.mMaterialAmount / M));
- if (cellMolten.mIsUnificatable) {
- GT_OreDictUnificator.set(cellMolten, tMaterial, tStack);
- } else {
- GT_OreDictUnificator.registerOre(cellMolten.get(tMaterial), tStack);
- }
- }
- //x32
+ /**
+ * Assignment of metadata IDs:
+ * 0 - 999: Molten cells
+ * 10_000 - 15_999: Cracked fluid cells (# IDs used is NUM_CRACKED_CELL_TYPES * 1_000; update this if you add any)
+ */
+ private BitSet enabled = new BitSet();
public GT_MetaGenerated_Item_99() {
- super("metaitem.99", (short) 1000, (short) 0);
+ super("metaitem.99", (short) (10_000 + NUM_CRACKED_CELL_TYPES * 1_000), (short) 0);
INSTANCE = this;
- for (Materials tMaterial:GregTech_API.sGeneratedMaterials) {
- if (tMaterial == null || tMaterial.mMetaItemSubID<0 || tMaterial.mMetaItemSubID>=1000) continue;
- //if (tMaterial.getcells(1)==null) {
+ for (Materials tMaterial : GregTech_API.sGeneratedMaterials) {
+ if (tMaterial == null || tMaterial.mMetaItemSubID < 0 || tMaterial.mMetaItemSubID >= 1_000) {
+ continue;
+ }
+
if ((tMaterial.contains(SubTag.SMELTING_TO_FLUID)) && (!tMaterial.contains(SubTag.NO_SMELTING)) && !tMaterial.contains(SubTag.SMELTING_TO_GEM)) {
- register(tMaterial,tMaterial.mMetaItemSubID);
- if (tMaterial.mSmeltInto != tMaterial) {
- register(tMaterial.mSmeltInto,tMaterial.mSmeltInto.mMetaItemSubID);
+ registerMolten(tMaterial, tMaterial.mMetaItemSubID);
+ if (tMaterial.mSmeltInto != tMaterial
+ && tMaterial.mSmeltInto.mMetaItemSubID >= 0 && tMaterial.mSmeltInto.mMetaItemSubID < 1_000) {
+ registerMolten(tMaterial.mSmeltInto, tMaterial.mSmeltInto.mMetaItemSubID);
}
}
- //}
+
+ if (tMaterial.canBeCracked()) {
+ registerCracked(tMaterial, tMaterial.mMetaItemSubID);
+ }
}
+
+ // We're not going to use these BitSets, so clear them to save memory.
mEnabledItems.clear();
mVisibleItems.clear();
}
- /* ---------- OVERRIDEABLE FUNCTIONS ---------- */
+ private void registerMolten(Materials tMaterial,int i){
+ ItemStack tStack = new ItemStack(this, 1, i);
+ enabled.set(i);
- /**
- * @return the Color Modulation the Material is going to be rendered with.
- */
- @Override
- public short[] getRGBa(ItemStack aStack) {
- Materials tMaterial = GregTech_API.sGeneratedMaterials[getDamage(aStack)];
- return tMaterial == null ? Materials._NULL.mMoltenRGBa : tMaterial.mMoltenRGBa;
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".name", cellMolten.getDefaultLocalNameFormatForItem(tMaterial));
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".tooltip", tMaterial.getToolTip(cellMolten.mMaterialAmount / M));
+
+ if (cellMolten.mIsUnificatable) {
+ GT_OreDictUnificator.set(cellMolten, tMaterial, tStack);
+ } else {
+ GT_OreDictUnificator.registerOre(cellMolten.get(tMaterial), tStack);
+ }
}
- /* ---------- OVERRIDEABLE FUNCTIONS ---------- */
+ private void registerCracked(Materials tMaterial, int i) {
+ int offset = 10_000;
+ for (OrePrefixes prefix : CRACKED_CELL_TYPES) {
+ ItemStack tStack = new ItemStack(this, 1, offset + i);
+ enabled.set(offset + i);
- /**
- * @param aPrefix the OreDict Prefix
- * @param aMaterial the Material
- * @param aMetaData a Index from [0 - 31999]
- * @return the Localized Name when default LangFiles are used.
- */
- @Deprecated
- public String getDefaultLocalization(OrePrefixes aPrefix, Materials aMaterial, int aMetaData) {
- return aPrefix.getDefaultLocalNameForItem(aMaterial);
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".name", prefix.getDefaultLocalNameFormatForItem(tMaterial));
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName(tStack) + ".tooltip", tMaterial.getToolTip(prefix.mMaterialAmount / M));
+
+ if (prefix.mIsUnificatable) {
+ GT_OreDictUnificator.set(prefix, tMaterial, tStack);
+ } else {
+ GT_OreDictUnificator.registerOre(prefix.get(tMaterial), tStack);
+ }
+
+ offset += 1_000;
+ }
}
- /**
- * @param aPrefix the OreDict Prefix
- * @param aMaterial the Material
- * @param aMetaData a Index from [0 - 31999]
- * @return the Localized Name Format when default LangFiles are used.
- */
- public String getDefaultLocalizationFormat(OrePrefixes aPrefix, Materials aMaterial, int aMetaData) {
- return aPrefix.getDefaultLocalNameFormatForItem(aMaterial);
+ /** Returns null for item damage out of bounds. */
+ private Materials getMaterial(int damage) {
+ if (damage < 0) {
+ return null;
+ }
+ return GregTech_API.sGeneratedMaterials[damage % 1_000];
}
- /**
- * @param aPrefix always != null
- * @param aMaterial always != null
- * @param aDoShowAllItems this is the Configuration Setting of the User, if he wants to see all the Stuff like Tiny Dusts or Crushed Ores as well.
- * @return if this Item should be visible in NEI or Creative
- */
- public boolean doesShowInCreative(OrePrefixes aPrefix, Materials aMaterial, boolean aDoShowAllItems) {
- return true;
+ /** Returns null for item damage out of bounds. */
+ private OrePrefixes getOrePrefix(int damage) {
+ if (damage < 0) {
+ return null;
+ } else if (damage < 1_000) {
+ return cellMolten;
+ } else if (damage >= 10_000 && damage < 10_000 + (NUM_CRACKED_CELL_TYPES * 1_000)) {
+ return CRACKED_CELL_TYPES.get((damage / 1_000) - 10);
+ }
+ return null;
}
- /* ---------- INTERNAL OVERRIDES ---------- */
+ @Override
+ public short[] getRGBa(ItemStack aStack) {
+ OrePrefixes prefix = getOrePrefix(aStack.getItemDamage());
+ Materials material = getMaterial(aStack.getItemDamage());
+ if (material == null) {
+ material = Materials._NULL;
+ }
+
+ if (prefix == cellMolten) {
+ return material.mMoltenRGBa;
+ } else {
+ return material.mRGBa;
+ }
+ }
@Override
public String getItemStackDisplayName(ItemStack aStack) {
String aName = super.getItemStackDisplayName(aStack);
- int aDamage = aStack.getItemDamage();
- if (aDamage < 1000 && aDamage >= 0)
- return Materials.getLocalizedNameForItem(aName, aDamage);
+ Materials material = getMaterial(aStack.getItemDamage());
+ if (material != null) {
+ return material.getLocalizedNameForItem(aName);
+ }
return aName;
}
@Override
public ItemStack getContainerItem(ItemStack aStack) {
- int aDamage = aStack.getItemDamage();
- if (aDamage < 1000 && aDamage >= 0) {
- return cellMolten.mContainerItem;
+ OrePrefixes prefix = getOrePrefix(aStack.getItemDamage());
+ if (prefix != null) {
+ return prefix.mContainerItem;
}
return null;
}
@Override
@SideOnly(Side.CLIENT)
- public final void getSubItems(Item var1, CreativeTabs aCreativeTab, List aList) {
- for (int i = 0; i < 1000; i++) {
- Materials aMaterial = GregTech_API.sGeneratedMaterials[i];
- if (aMaterial != null && enabled.get(i)) {
- ItemStack tStack = new ItemStack(this, 1, i);
- isItemStackUsable(tStack);
- aList.add(tStack);
- }
- }
- super.getSubItems(var1, aCreativeTab, aList);
+ public void getSubItems(Item var1, CreativeTabs aCreativeTab, List aList) {
+ enabled.stream()
+ .mapToObj(i -> new ItemStack(this, 1, i))
+ .forEach(aList::add);
}
@Override
public final IIcon getIconFromDamage(int aMetaData) {
- if (aMetaData < 0) return null;
- if (aMetaData < 1000) {
- Materials tMaterial = GregTech_API.sGeneratedMaterials[aMetaData];
- if (tMaterial == null) return null;
- IIconContainer tIcon = getIconContainer(aMetaData);
- if (tIcon != null) return tIcon.getIcon();
- return null;
+ IIconContainer iconContainer = getIconContainer(aMetaData);
+ if (iconContainer != null) {
+ return iconContainer.getIcon();
}
return null;
}
@Override
public IIconContainer getIconContainer(int aMetaData) {
- if (aMetaData < 0) return null;
- if (aMetaData < 1000) {
- Materials tMaterial = GregTech_API.sGeneratedMaterials[aMetaData];
- if (tMaterial == null) return null;
- return tMaterial.mIconSet.mTextures[cellMolten.mTextureIndex];
+ Materials material = getMaterial(aMetaData);
+ OrePrefixes prefix = getOrePrefix(aMetaData);
+ if (material != null && prefix != null) {
+ return material.mIconSet.mTextures[prefix.mTextureIndex];
}
return null;
}
@Override
public int getItemStackLimit(ItemStack aStack) {
- return cellMolten.mDefaultStackSize;
+ OrePrefixes prefix = getOrePrefix(aStack.getItemDamage());
+ if (prefix != null) {
+ return prefix.mDefaultStackSize;
+ } else {
+ return 64;
+ }
}
}
diff --git a/src/main/java/gregtech/common/items/behaviors/Behaviour_DataOrb.java b/src/main/java/gregtech/common/items/behaviors/Behaviour_DataOrb.java
index b909593694..a5393cdec5 100644
--- a/src/main/java/gregtech/common/items/behaviors/Behaviour_DataOrb.java
+++ b/src/main/java/gregtech/common/items/behaviors/Behaviour_DataOrb.java
@@ -14,7 +14,7 @@ public class Behaviour_DataOrb extends Behaviour_None {
if (aNewContent[i] == null) {
aInventory[i] = null;
} else {
- aInventory[i] = GT_Utility.copy(new Object[]{aNewContent[i]});
+ aInventory[i] = GT_Utility.copyOrNull(aNewContent[i]);
}
}
}
diff --git a/src/main/java/gregtech/common/items/behaviors/Behaviour_Plunger_Item.java b/src/main/java/gregtech/common/items/behaviors/Behaviour_Plunger_Item.java
index 43a95fd2c7..ddb88b80c8 100644
--- a/src/main/java/gregtech/common/items/behaviors/Behaviour_Plunger_Item.java
+++ b/src/main/java/gregtech/common/items/behaviors/Behaviour_Plunger_Item.java
@@ -14,8 +14,8 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
+import java.util.HashMap;
import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
public class Behaviour_Plunger_Item extends Behaviour_None {
private final int mCosts;
@@ -34,7 +34,7 @@ public class Behaviour_Plunger_Item extends Behaviour_None {
if ((aTileEntity instanceof IGregTechTileEntity)) {
IMetaTileEntity tMetaTileEntity = ((IGregTechTileEntity) aTileEntity).getMetaTileEntity();
if ((tMetaTileEntity instanceof IMetaTileEntityItemPipe)) {
- for (Object tTileEntity : GT_Utility.sortMapByValuesAcending(IMetaTileEntityItemPipe.Util.scanPipes((IMetaTileEntityItemPipe) tMetaTileEntity, new ConcurrentHashMap<IMetaTileEntityItemPipe, Long>(), 0L, false, true)).keySet())
+ for (Object tTileEntity : GT_Utility.sortMapByValuesAcending(IMetaTileEntityItemPipe.Util.scanPipes((IMetaTileEntityItemPipe) tMetaTileEntity, new HashMap<>(), 0L, false, true)).keySet())
{
int i = 0;
diff --git a/src/main/java/gregtech/common/items/behaviors/Behaviour_Sonictron.java b/src/main/java/gregtech/common/items/behaviors/Behaviour_Sonictron.java
index a0dea777f7..bcaa8242f3 100644
--- a/src/main/java/gregtech/common/items/behaviors/Behaviour_Sonictron.java
+++ b/src/main/java/gregtech/common/items/behaviors/Behaviour_Sonictron.java
@@ -90,7 +90,7 @@ public class Behaviour_Sonictron extends Behaviour_None {
if (aNewContent[i] == null) {
aInventory[i] = null;
} else {
- aInventory[i] = GT_Utility.copy(aNewContent[i]);
+ aInventory[i] = GT_Utility.copyOrNull(aNewContent[i]);
}
}
}