diff options
| author | Raven Szewczyk <git@eigenraven.me> | 2024-05-24 19:50:35 +0100 |
|---|---|---|
| committer | Raven Szewczyk <git@eigenraven.me> | 2024-05-24 19:50:35 +0100 |
| commit | 6d1b2216464d4dad449ac6fcfec476832224a55e (patch) | |
| tree | 526a0c15f7056313c80e6c0386e025e9b3f61781 /src/main/java/gtPlusPlus/xmod/bartcrops | |
| parent | b5d35f40afa606ed1b07061dad82e0521a59c186 (diff) | |
| download | GT5-Unofficial-6d1b2216464d4dad449ac6fcfec476832224a55e.tar.gz GT5-Unofficial-6d1b2216464d4dad449ac6fcfec476832224a55e.tar.bz2 GT5-Unofficial-6d1b2216464d4dad449ac6fcfec476832224a55e.zip | |
Merge addon sources
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/bartcrops')
6 files changed, 340 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/bartcrops/HANDLER_CropsPlusPlus.java b/src/main/java/gtPlusPlus/xmod/bartcrops/HANDLER_CropsPlusPlus.java new file mode 100644 index 0000000000..9ca5488280 --- /dev/null +++ b/src/main/java/gtPlusPlus/xmod/bartcrops/HANDLER_CropsPlusPlus.java @@ -0,0 +1,16 @@ +package gtPlusPlus.xmod.bartcrops; + +import cpw.mods.fml.common.event.FMLPostInitializationEvent; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; + +public class HANDLER_CropsPlusPlus { + + public static void preInit(FMLPreInitializationEvent preinit) { + LoaderOfTheCrops.load(preinit); + } + + public static void postInit(FMLPostInitializationEvent postinit) { + LoaderOfTheCrops.register(); + LoaderOfTheCrops.registerBaseSeed(); + } +} diff --git a/src/main/java/gtPlusPlus/xmod/bartcrops/LoaderOfTheCrops.java b/src/main/java/gtPlusPlus/xmod/bartcrops/LoaderOfTheCrops.java new file mode 100644 index 0000000000..c3c2f0b6cc --- /dev/null +++ b/src/main/java/gtPlusPlus/xmod/bartcrops/LoaderOfTheCrops.java @@ -0,0 +1,109 @@ +package gtPlusPlus.xmod.bartcrops; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import gtPlusPlus.core.util.minecraft.ItemUtils; +import gtPlusPlus.xmod.bartcrops.crops.Crop_Hemp; +import ic2.api.crops.CropCard; +import ic2.api.crops.Crops; + +/** + * Mostly borrowed from the Crops++ Crop Loader. + * + * @author Alkalus + */ +public class LoaderOfTheCrops { + + private static List<Boolean> mHasCropObj = new ArrayList<>(); + private CropCard mCropObj; + private ItemStack mBaseSeed; + private static List<LoaderOfTheCrops> mCropList = cropLoader(); + + public LoaderOfTheCrops(CropCard cropObj) { + this.mCropObj = cropObj; + } + + public LoaderOfTheCrops(CropCard cropObj, ItemStack baseseed) { + this.mCropObj = cropObj; + this.mBaseSeed = baseseed; + } + + public static CropCard cropUnpackerCC(LoaderOfTheCrops inp) { + return inp.mCropObj; + } + + private static ItemStack cropUnpackerCG(LoaderOfTheCrops inp) { + return inp.mBaseSeed; + } + + private static LoaderOfTheCrops cropHelper(CropCard cropObj) { + return new LoaderOfTheCrops(cropObj, ItemUtils.getItemStackOfAmountFromOreDict("crop" + cropObj.name(), 0)); + } + + public static List<LoaderOfTheCrops> cropLoader() { + List<LoaderOfTheCrops> p = new ArrayList<>(); + + p.add(new LoaderOfTheCrops(new Crop_Hemp(), new ItemStack(Item.getItemById(111), 3))); + + return p; + } + + private static List<CropCard> cropObjs() { + List<CropCard> p = new ArrayList<>(); + + for (LoaderOfTheCrops loaderOfTheCrops : mCropList) { + p.add(cropUnpackerCC((LoaderOfTheCrops) loaderOfTheCrops)); + } + + return p; + } + + private static List<ItemStack> setBaseSeed() { + List<ItemStack> p = new ArrayList<>(); + + for (LoaderOfTheCrops loaderOfTheCrops : mCropList) { + p.add(cropUnpackerCG((LoaderOfTheCrops) loaderOfTheCrops)); + } + + return p; + } + + private static List<String> setnames() { + List<String> s = new ArrayList<>(); + + for (int i = 0; i < mCropList.size(); ++i) { + s.add(((CropCard) cropObjs().get(i)).name()); + } + + return s; + } + + public static void load(FMLPreInitializationEvent preinit) { + for (int i = 0; i < mCropList.size(); ++i) { + mHasCropObj.add(true); + } + } + + public static void register() { + for (int i = 0; i < mCropList.size(); ++i) { + if ((Boolean) mHasCropObj.get(i) && cropObjs().get(i) != null) { + Crops.instance.registerCrop((CropCard) cropObjs().get(i)); + } + } + } + + public static void registerBaseSeed() { + List<ItemStack> baseseed = new ArrayList<>(setBaseSeed()); + + for (int i = 0; i < mCropList.size(); ++i) { + if (baseseed.get(i) != null && cropObjs().get(i) != null) { + Crops.instance.registerBaseSeed((ItemStack) baseseed.get(i), (CropCard) cropObjs().get(i), 1, 1, 1, 1); + } + } + } +} diff --git a/src/main/java/gtPlusPlus/xmod/bartcrops/abstracts/BaseAestheticCrop.java b/src/main/java/gtPlusPlus/xmod/bartcrops/abstracts/BaseAestheticCrop.java new file mode 100644 index 0000000000..c794c40878 --- /dev/null +++ b/src/main/java/gtPlusPlus/xmod/bartcrops/abstracts/BaseAestheticCrop.java @@ -0,0 +1,34 @@ +package gtPlusPlus.xmod.bartcrops.abstracts; + +import gtPlusPlus.preloader.CORE_Preloader; +import ic2.api.crops.ICropTile; + +public abstract class BaseAestheticCrop extends BaseHarvestableCrop { + + @Override + public int tier() { + return 1; + } + + @Override + public int stat(int n) { + return switch (n) { + case 0 -> 0; + case 1 -> 0; + case 2 -> 0; + case 3 -> 4; + case 4 -> 0; + default -> 0; + }; + } + + @Override + public int growthDuration(ICropTile crop) { + return CORE_Preloader.DEBUG_MODE ? 1 : 225; + } + + @Override + public byte getSizeAfterHarvest(ICropTile crop) { + return 1; + } +} diff --git a/src/main/java/gtPlusPlus/xmod/bartcrops/abstracts/BaseCrop.java b/src/main/java/gtPlusPlus/xmod/bartcrops/abstracts/BaseCrop.java new file mode 100644 index 0000000000..405c1ef1e1 --- /dev/null +++ b/src/main/java/gtPlusPlus/xmod/bartcrops/abstracts/BaseCrop.java @@ -0,0 +1,67 @@ +package gtPlusPlus.xmod.bartcrops.abstracts; + +import static gregtech.api.enums.Mods.GTPlusPlus; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.core.util.minecraft.ItemUtils; +import ic2.api.crops.CropCard; +import ic2.api.crops.ICropTile; +import speiger.src.crops.api.ICropCardInfo; + +public abstract class BaseCrop extends CropCard implements ICropCardInfo { + + @Override + @SideOnly(Side.CLIENT) + public void registerSprites(IIconRegister iconRegister) { + this.textures = new IIcon[this.maxSize()]; + for (int i = 1; i <= this.textures.length; ++i) { + this.textures[i - 1] = iconRegister + .registerIcon(GTPlusPlus.ID + ":crop/blockCrop." + this.name() + "." + i); + } + } + + @Override + public float dropGainChance() { + return (float) (Math.pow(0.95D, (double) ((float) this.tier())) * (double) 1f); + } + + @Override + public boolean canCross(ICropTile crop) { + return crop.getSize() == this.maxSize(); + } + + @Override + public int getrootslength(ICropTile crop) { + return 3; + } + + @Override + public String discoveredBy() { + return "Alkalus"; + } + + @Override + public String owner() { + return "Gtplusplus"; + } + + @Override + public List<String> getCropInformation() { + List<String> ret = new ArrayList<>(); + ret.add(Arrays.toString(this.attributes())); + return ret; + } + + public ItemStack getDisplayItem(CropCard card) { + return ItemUtils.getItemStackOfAmountFromOreDict("crop" + this.name(), 0); + } +} diff --git a/src/main/java/gtPlusPlus/xmod/bartcrops/abstracts/BaseHarvestableCrop.java b/src/main/java/gtPlusPlus/xmod/bartcrops/abstracts/BaseHarvestableCrop.java new file mode 100644 index 0000000000..80325edff0 --- /dev/null +++ b/src/main/java/gtPlusPlus/xmod/bartcrops/abstracts/BaseHarvestableCrop.java @@ -0,0 +1,73 @@ +package gtPlusPlus.xmod.bartcrops.abstracts; + +import gtPlusPlus.preloader.CORE_Preloader; +import ic2.api.crops.ICropTile; + +public abstract class BaseHarvestableCrop extends BaseCrop { + + @Override + public int tier() { + return 2; + } + + @Override + public int stat(int n) { + return switch (n) { + case 0 -> 0; + case 1 -> 4; + case 2 -> 0; + case 3 -> 4; + case 4 -> 0; + default -> 0; + }; + } + + @Override + public boolean canGrow(ICropTile crop) { + return crop.getSize() < 3; + } + + @Override + public int getOptimalHavestSize(ICropTile crop) { + return 3; + } + + @Override + public boolean canBeHarvested(ICropTile crop) { + return crop.getSize() == 3; + } + + @Override + public int weightInfluences(ICropTile crop, float humidity, float nutrients, float air) { + return (int) ((double) humidity * 1.2D + (double) nutrients * 0.9D + (double) air * 0.9D); + } + + @Override + public int growthDuration(ICropTile crop) { + short r; + if (CORE_Preloader.DEBUG_MODE) { + r = 1; + } else if (crop.getSize() == 2) { + r = 200; + } else { + r = 700; + } + + return r; + } + + @Override + public byte getSizeAfterHarvest(ICropTile crop) { + return 2; + } + + @Override + public int maxSize() { + return 3; + } + + @Override + public String discoveredBy() { + return "Alkalus"; + } +} diff --git a/src/main/java/gtPlusPlus/xmod/bartcrops/crops/Crop_Hemp.java b/src/main/java/gtPlusPlus/xmod/bartcrops/crops/Crop_Hemp.java new file mode 100644 index 0000000000..f5bf252edb --- /dev/null +++ b/src/main/java/gtPlusPlus/xmod/bartcrops/crops/Crop_Hemp.java @@ -0,0 +1,41 @@ +package gtPlusPlus.xmod.bartcrops.crops; + +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +import gtPlusPlus.core.util.math.MathUtils; +import gtPlusPlus.xmod.bartcrops.abstracts.BaseAestheticCrop; +import ic2.api.crops.ICropTile; + +public class Crop_Hemp extends BaseAestheticCrop { + + @Override + public int tier() { + return 2; + } + + @Override + public String name() { + return "Hemp"; + } + + @Override + public int growthDuration(ICropTile crop) { + return 550; + } + + @Override + public String[] attributes() { + return new String[] { "Green", "Soil", "Orange" }; + } + + @Override + public ItemStack getGain(ICropTile crop) { + return new ItemStack(Items.string, MathUtils.randInt(1, 3), 0); + } + + @Override + public ItemStack getDisplayItem() { + return new ItemStack(Items.string, 1, 0); + } +} |
