aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/tileentity/gregtech/multiblock/eigbuckets/EIGRainbowCactusBucket.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kubatech/tileentity/gregtech/multiblock/eigbuckets/EIGRainbowCactusBucket.java')
-rw-r--r--src/main/java/kubatech/tileentity/gregtech/multiblock/eigbuckets/EIGRainbowCactusBucket.java77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/eigbuckets/EIGRainbowCactusBucket.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/eigbuckets/EIGRainbowCactusBucket.java
new file mode 100644
index 0000000000..6342080722
--- /dev/null
+++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/eigbuckets/EIGRainbowCactusBucket.java
@@ -0,0 +1,77 @@
+package kubatech.tileentity.gregtech.multiblock.eigbuckets;
+
+import java.util.ArrayList;
+import java.util.Random;
+
+import net.minecraft.block.Block;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+import kubatech.api.eig.EIGBucket;
+import kubatech.api.eig.EIGDropTable;
+import kubatech.api.eig.IEIGBucketFactory;
+import kubatech.tileentity.gregtech.multiblock.GT_MetaTileEntity_ExtremeIndustrialGreenhouse;
+import tb.common.block.BlockRainbowCactus;
+import tb.init.TBBlocks;
+
+// This is more of a proof of concept to show how to implement a custom handler.
+
+public class EIGRainbowCactusBucket extends EIGBucket {
+
+ public final static IEIGBucketFactory factory = new EIGRainbowCactusBucket.Factory();
+ private static final String NBT_IDENTIFIER = "TB:RAINCACTI";
+ private static final int REVISION_NUMBER = 0;
+
+ public static class Factory implements IEIGBucketFactory {
+
+ @Override
+ public String getNBTIdentifier() {
+ return NBT_IDENTIFIER;
+ }
+
+ @Override
+ public EIGBucket tryCreateBucket(GT_MetaTileEntity_ExtremeIndustrialGreenhouse greenhouse, ItemStack input) {
+ // check if input is rainbow cacti;
+ if (!(Block.getBlockFromItem(input.getItem()) instanceof BlockRainbowCactus)) return null;
+ return new EIGRainbowCactusBucket(input, 1);
+ }
+
+ @Override
+ public EIGBucket restore(NBTTagCompound nbt) {
+ return new EIGRainbowCactusBucket(nbt);
+ }
+
+ }
+
+ private final Random random = new Random();
+
+ public EIGRainbowCactusBucket(ItemStack seed, int seedCount) {
+ super(seed, seedCount, null);
+ }
+
+ public EIGRainbowCactusBucket(NBTTagCompound nbt) {
+ super(nbt);
+ }
+
+ @Override
+ public boolean revalidate(GT_MetaTileEntity_ExtremeIndustrialGreenhouse greenhouse) {
+ return this.isValid();
+ }
+
+ @Override
+ protected String getNBTIdentifier() {
+ return NBT_IDENTIFIER;
+ }
+
+ @Override
+ public void addProgress(double multiplier, EIGDropTable tracker) {
+ if (!this.isValid()) return;
+ // TODO: make the addDyeDropsToOutput static in TB.
+ ArrayList<ItemStack> drops = new ArrayList<>();
+ ((BlockRainbowCactus) TBBlocks.rainbowCactus).addDyeDropsToOutput(this.random, drops);
+ for (ItemStack drop : drops) {
+ tracker.addDrop(drop, drop.stackSize * multiplier * this.seedCount);
+ }
+ }
+
+}