diff options
| author | GlodBlock <1356392126@qq.com> | 2021-12-07 23:02:17 +0800 |
|---|---|---|
| committer | GlodBlock <1356392126@qq.com> | 2021-12-07 23:02:17 +0800 |
| commit | 92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab (patch) | |
| tree | 2d1118c74e43d5f4337266c3d64f1921c0526d42 /src/main/java/goodgenerator/items/nuclear | |
| parent | 06cac63657f40c489477abe923ea3f144fe6749c (diff) | |
| download | GT5-Unofficial-92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab.tar.gz GT5-Unofficial-92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab.tar.bz2 GT5-Unofficial-92238a0f3b06a80683f50dfd2d6e9164d2d0f1ab.zip | |
rename package
Diffstat (limited to 'src/main/java/goodgenerator/items/nuclear')
4 files changed, 205 insertions, 0 deletions
diff --git a/src/main/java/goodgenerator/items/nuclear/IsotopeMaterial.java b/src/main/java/goodgenerator/items/nuclear/IsotopeMaterial.java new file mode 100644 index 0000000000..3d3d36cee0 --- /dev/null +++ b/src/main/java/goodgenerator/items/nuclear/IsotopeMaterial.java @@ -0,0 +1,55 @@ +package goodgenerator.items.nuclear; + +import goodgenerator.loader.Loaders; +import net.minecraft.item.ItemStack; + +import java.util.HashMap; +import java.util.HashSet; + +public class IsotopeMaterial { + + public static final HashSet<IsotopeMaterial> mIsotopeMaterial = new HashSet<>(); + public static final HashMap<Integer, IsotopeMaterial> mIDMap = new HashMap<>(); + public static final HashMap<String, IsotopeMaterial> mNameMap = new HashMap<>(); + + public final int mID; + public final int mNeutron; + public final String mName; + public final String mLocalizedName; + public final String mMaterialName; + public final short[] mRGB; + public final NuclearTextures mTexture; + + public IsotopeMaterial(int aID, String aName, String aMaterialName, String aLocalizedName, NuclearTextures aTexture, int aR, int aG, int aB, int aNeutron) { + this.mID = aID; + this.mNeutron = aNeutron; + this.mName = aName; + this.mMaterialName = aMaterialName; + this.mLocalizedName = aLocalizedName; + this.mRGB = new short[] {(short) aR,(short) aG,(short) aB, 0}; + this.mTexture = aTexture; + mIsotopeMaterial.add(this); + mIDMap.put(this.mID, this); + mNameMap.put(this.mName, this); + } + + public ItemStack getFull(int aAmount) { + if (aAmount > 64) aAmount = 64; + return new ItemStack(Loaders.Isotope, aAmount, mID + 1000); + } + + public ItemStack getTiny(int aAmount) { + if (aAmount > 64) aAmount = 64; + return new ItemStack(Loaders.Isotope, aAmount, mID + 2000); + } + + public ItemStack getFullOxide(int aAmount) { + if (aAmount > 64) aAmount = 64; + return new ItemStack(Loaders.Isotope, aAmount, mID + 3000); + } + + public ItemStack getTinyOxide(int aAmount) { + if (aAmount > 64) aAmount = 64; + return new ItemStack(Loaders.Isotope, aAmount, mID + 4000); + } +} diff --git a/src/main/java/goodgenerator/items/nuclear/IsotopeMaterialLoader.java b/src/main/java/goodgenerator/items/nuclear/IsotopeMaterialLoader.java new file mode 100644 index 0000000000..75c2dba39c --- /dev/null +++ b/src/main/java/goodgenerator/items/nuclear/IsotopeMaterialLoader.java @@ -0,0 +1,16 @@ +package goodgenerator.items.nuclear; + +public class IsotopeMaterialLoader implements Runnable { + + protected static final int OffsetID = 0; + + public static final IsotopeMaterial Thorium232 = new IsotopeMaterial( + OffsetID, + "Thorium232", "Thorium", "Thorium-232", + NuclearTextures.STABLE1, 59, 59, 59, + 232 + ); + + @Override + public void run() { } +} diff --git a/src/main/java/goodgenerator/items/nuclear/NuclearMetaItemGenerator.java b/src/main/java/goodgenerator/items/nuclear/NuclearMetaItemGenerator.java new file mode 100644 index 0000000000..bd530699b3 --- /dev/null +++ b/src/main/java/goodgenerator/items/nuclear/NuclearMetaItemGenerator.java @@ -0,0 +1,103 @@ +package goodgenerator.items.nuclear; + +import com.github.bartimaeusnek.bartworks.util.Pair; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import goodgenerator.main.GoodGenerator; +import gregtech.api.interfaces.IIconContainer; +import gregtech.api.items.GT_MetaGenerated_Item; +import gregtech.api.util.GT_LanguageManager; +import gregtech.api.util.GT_OreDictUnificator; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import java.util.List; + +import static goodgenerator.items.nuclear.IsotopeMaterial.mIDMap; +import static goodgenerator.items.nuclear.IsotopeMaterial.mIsotopeMaterial; + +public class NuclearMetaItemGenerator extends GT_MetaGenerated_Item { + + /** + * <p>Full ingot - 1000 + * <p>Tiny ingot - 2000 + * <p>Full-Oxide - 3000 + * <p>Tiny-Oxide - 4000 + */ + public static final Pair<Integer, String>[] TYPE_OFFSET = new Pair[] { + new Pair<>(1000, "%s"), + new Pair<>(2000, "Tiny of %s"), + new Pair<>(3000, "%s Oxide"), + new Pair<>(4000, "Tiny of %s Oxide"), + }; + public static final Pair<Integer, String>[] OREPREFIX = new Pair[] { + new Pair<>(1000, "item%s"), + new Pair<>(2000, "itemTiny%s"), + new Pair<>(3000, "item%sOxide"), + new Pair<>(4000, "itemTiny%sOxide"), + }; + + public NuclearMetaItemGenerator() { + super("nuclearIsotopeMaterial", (short) 32766, (short) 0); + this.setCreativeTab(GoodGenerator.GG); + for (IsotopeMaterial tIsotope : mIsotopeMaterial) { + for (Pair<Integer, String> tType : TYPE_OFFSET) { + int tOffset = tType.getKey(); + String tOreName = tType.getValue(); + ItemStack tStack = new ItemStack(this, 1, tIsotope.mID + tOffset); + GT_LanguageManager.addStringLocalization(this.getUnlocalizedName(tStack) + ".name", String.format(tOreName, tIsotope.mLocalizedName)); + GT_LanguageManager.addStringLocalization(this.getUnlocalizedName(tStack) + ".tooltip", String.format("§b%s's Isotope.§r", tIsotope.mMaterialName)); + } + for (Pair<Integer, String> tOreDict : OREPREFIX) { + int tOffset = tOreDict.getKey(); + String tOreName = tOreDict.getValue(); + ItemStack tStack = new ItemStack(this, 1, tIsotope.mID + tOffset); + GT_OreDictUnificator.registerOre(String.format(tOreName, tIsotope.mName), tStack); + } + } + } + + @Override + public String getItemStackDisplayName(ItemStack aStack) { + return GT_LanguageManager.getTranslation(this.getUnlocalizedName(aStack) + ".name"); + } + + @Override + public IIconContainer getIconContainer(int aMetaData) { + int tID = aMetaData % 1000; + int tType = aMetaData / 1000 - 1; + IsotopeMaterial tMaterial = mIDMap.get(tID); + if (tMaterial != null) { + return tMaterial.mTexture.mTextures[tType]; + } + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(Item var1, CreativeTabs aCreativeTab, List aList) { + for (IsotopeMaterial tIsotope : mIsotopeMaterial) { + for (int i = 1; i <= 4; i ++) { + ItemStack tStack = new ItemStack(this, 1, tIsotope.mID + i * 1000); + aList.add(tStack); + } + } + } + + @Override + public short[] getRGBa(ItemStack aStack) { + int tID = aStack.getItemDamage() % 1000; + IsotopeMaterial tMaterial = mIDMap.get(tID); + if (tMaterial != null) { + return tMaterial.mRGB; + } + return null; + } + + @Override + public final IIcon getIconFromDamage(int aMetaData) { + return this.getIconContainer(aMetaData).getIcon(); + } +} diff --git a/src/main/java/goodgenerator/items/nuclear/NuclearTextures.java b/src/main/java/goodgenerator/items/nuclear/NuclearTextures.java new file mode 100644 index 0000000000..b68c31a014 --- /dev/null +++ b/src/main/java/goodgenerator/items/nuclear/NuclearTextures.java @@ -0,0 +1,31 @@ +package goodgenerator.items.nuclear; + +import gregtech.api.enums.Textures; +import gregtech.api.interfaces.IIconContainer; + +public class NuclearTextures { + public static final NuclearTextures + STABLE1 = new NuclearTextures("stable1"), + STABLE2 = new NuclearTextures("stable2"), + UNSTABLE1 = new NuclearTextures("unstable1"), + UNSTABLE2 = new NuclearTextures("unstable2"), + UNSTABLE3 = new NuclearTextures("unstable3"), + UNSTABLE4 = new NuclearTextures("unstable4"); + + public final IIconContainer[] mTextures = new IIconContainer[4]; + public final String mSetName; + public static final String mTextureDir = "icons/isotope/"; + public static final int + FULL = 0, + TINY = 1, + FULL_OXIDE = 2, + TINY_OXIDE = 3; + + public NuclearTextures(String aName) { + mSetName = aName; + mTextures[0] = new Textures.ItemIcons.CustomIcon(mTextureDir + aName); + mTextures[1] = new Textures.ItemIcons.CustomIcon(mTextureDir + aName + "tiny"); + mTextures[2] = new Textures.ItemIcons.CustomIcon(mTextureDir + aName); + mTextures[3] = new Textures.ItemIcons.CustomIcon(mTextureDir + aName + "tiny"); + } +} |
