aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Java/gtPlusPlus/xmod/sc2/modules/ModuleExoticSeeds.java118
-rw-r--r--src/Java/vswe/stevescarts/ModuleData/GppModuleData.java1
-rw-r--r--src/resources/assets/stevescarts/lang/en_US.lang1
3 files changed, 93 insertions, 27 deletions
diff --git a/src/Java/gtPlusPlus/xmod/sc2/modules/ModuleExoticSeeds.java b/src/Java/gtPlusPlus/xmod/sc2/modules/ModuleExoticSeeds.java
index 0add3fcb9b..617c4ddd8a 100644
--- a/src/Java/gtPlusPlus/xmod/sc2/modules/ModuleExoticSeeds.java
+++ b/src/Java/gtPlusPlus/xmod/sc2/modules/ModuleExoticSeeds.java
@@ -2,52 +2,116 @@ package gtPlusPlus.xmod.sc2.modules;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import static net.minecraft.init.Blocks.farmland;
+
+import java.lang.reflect.Field;
+
import net.minecraft.block.Block;
import net.minecraft.block.BlockCrops;
import net.minecraft.item.Item;
import net.minecraft.item.ItemSeeds;
import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
import vswe.stevescarts.Carts.MinecartModular;
import vswe.stevescarts.Modules.ICropModule;
import vswe.stevescarts.Modules.Addons.ModuleAddon;
public class ModuleExoticSeeds extends ModuleAddon implements ICropModule {
- public ModuleExoticSeeds(MinecartModular cart) {
- super(cart);
- }
+ public ModuleExoticSeeds(MinecartModular cart) {
+ super(cart);
+ }
+
+ private synchronized Block getBlockFromItemSeeds(ItemStack seed) {
+ try {
- private synchronized Block getBlockFromItemSeeds(ItemStack seed) {
- try {
+ Item seedItem = seed.getItem();
+ if (!(seedItem instanceof ItemSeeds)) return null;
- Item seedItem = seed.getItem();
- if (!(seedItem instanceof ItemSeeds)) return null;
+ Block cropBlock = (Block) ReflectionUtils.getField(ItemSeeds.class, "field_150925_a").get(seedItem);
- Block cropBlock = (Block) ReflectionUtils.getField(ItemSeeds.class, "field_150925_a").get(seedItem);
+ return cropBlock;
+ } catch (Throwable t) {
- return cropBlock;
- } catch (Throwable t) {
+ }
+ return null;
+ }
- }
- return null;
- }
+ @Override
+ public boolean isSeedValid(ItemStack seed) {
+ return getBlockFromItemSeeds(seed) != null;
+ }
- @Override
- public boolean isSeedValid(ItemStack seed) {
- return getBlockFromItemSeeds(seed) != null;
- }
+ @Override
+ public Block getCropFromSeed(ItemStack seed) {
+ return getBlockFromItemSeeds(seed);
+ }
- @Override
- public Block getCropFromSeed(ItemStack seed) {
- return getBlockFromItemSeeds(seed);
- }
+ @Override
+ public boolean isReadyToHarvest(int x, int y, int z) {
+ World world = getCart().worldObj;
+ Block b = world.getBlock(x, y, z);
+ int m = world.getBlockMetadata(x, y, z);
- @Override
- public boolean isReadyToHarvest(int x, int y, int z) {
- Block b = getCart().worldObj.getBlock(x, y, z);
- int m = getCart().worldObj.getBlockMetadata(x, y, z);
+ //If Forestry is loaded, let's make this upgrade convert farmland to Humus.
+ /*if (LoadedMods.Forestry) {
+ Block mFarmLand = world.getBlock(x, y-1, z);
+ if (mFarmLand == farmland) {
+ Block h = tryGetHumus();
+ if (h != farmland) {
+ world.setBlock(x, y-1, z, h);
+ }
+ }
+ }*/
+
+
+ return b instanceof BlockCrops && m == 7;
+ }
- return b instanceof BlockCrops && m == 7;
- }
+
+
+ /**
+ * Static Class & Block References for Forestry content.
+ * Stops Forestry being a hard requirement for this feature without having to make @Optional annotations.
+ */
+
+ private static Class<?> mForestryHumusBlockClass;
+ private static Class<?> mForestryBlockRegistryCoreClass;
+ private static Block mForestryHumusBlock;
+
+ private synchronized Block tryGetHumus() {
+ if (!LoadedMods.Forestry) {
+ return farmland;
+ }
+ else {
+ if (mForestryHumusBlockClass == null || mForestryHumusBlock == null) {
+ try {
+ mForestryHumusBlockClass = Class.forName("forestry.plugins.PluginCore");
+ Field blocks = ReflectionUtils.getField(mForestryHumusBlockClass, "blocks");
+ if (blocks != null) {
+ Object blockRegistryCoreObject = blocks.get(null);
+ mForestryBlockRegistryCoreClass = Class.forName("forestry.core.blocks.BlockRegistryCore");
+ if (mForestryBlockRegistryCoreClass != null && blockRegistryCoreObject != null) {
+ Field soil = ReflectionUtils.getField(mForestryBlockRegistryCoreClass, "soil");
+ if (soil != null) {
+ Block testHumus = (Block) soil.get(blockRegistryCoreObject);
+ if (testHumus != null) {
+ mForestryHumusBlock = testHumus;
+ }
+ }
+ }
+ }
+ }
+ catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+ if (mForestryHumusBlock != null) {
+ return mForestryHumusBlock;
+ }
+ }
+ return farmland;
+ }
} \ No newline at end of file
diff --git a/src/Java/vswe/stevescarts/ModuleData/GppModuleData.java b/src/Java/vswe/stevescarts/ModuleData/GppModuleData.java
index d7fa1d8161..0b605fb8c1 100644
--- a/src/Java/vswe/stevescarts/ModuleData/GppModuleData.java
+++ b/src/Java/vswe/stevescarts/ModuleData/GppModuleData.java
@@ -19,6 +19,7 @@ public class GppModuleData extends ModuleData {
super(id, name, moduleClass, modularCost);
}
+ @SuppressWarnings("unchecked")
public static void loadGpp() {
try {
HashMap<Byte, ModuleData> moduleList =
diff --git a/src/resources/assets/stevescarts/lang/en_US.lang b/src/resources/assets/stevescarts/lang/en_US.lang
new file mode 100644
index 0000000000..56dc8390a6
--- /dev/null
+++ b/src/resources/assets/stevescarts/lang/en_US.lang
@@ -0,0 +1 @@
+item.SC2:crop_exotic_seeds.name=Exotic Seed Module [GT++] \ No newline at end of file