aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/gtPlusPlus/core/block/base/BlockBaseOre.java84
-rw-r--r--src/main/java/gtPlusPlus/core/item/base/ore/BaseItemRawOre.java10
-rw-r--r--src/main/java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java24
-rw-r--r--src/main/java/gtPlusPlus/core/material/Material.java4
-rw-r--r--src/main/java/gtPlusPlus/core/material/MaterialGenerator.java3
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluorite.java10
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java9
7 files changed, 130 insertions, 14 deletions
diff --git a/src/main/java/gtPlusPlus/core/block/base/BlockBaseOre.java b/src/main/java/gtPlusPlus/core/block/base/BlockBaseOre.java
index 91b49cb7a3..7d2b89d0b4 100644
--- a/src/main/java/gtPlusPlus/core/block/base/BlockBaseOre.java
+++ b/src/main/java/gtPlusPlus/core/block/base/BlockBaseOre.java
@@ -1,16 +1,24 @@
package gtPlusPlus.core.block.base;
import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.EnumCreatureType;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.common.registry.GameRegistry;
+import gregtech.GT_Mod;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IIconContainer;
@@ -29,6 +37,8 @@ import gtPlusPlus.xmod.gregtech.api.objects.GTPP_RenderedTexture;
public class BlockBaseOre extends BasicBlock implements ITexturedBlock {
private final Material blockMaterial;
+ protected static boolean shouldFortune = false;
+ protected static boolean shouldSilkTouch = false;
public BlockBaseOre(final Material material, final BlockTypes blockType) {
super(
@@ -130,4 +140,78 @@ public class BlockBaseOre extends BasicBlock implements ITexturedBlock {
@Override
public void registerBlockIcons(IIconRegister p_149651_1_) {}
+ @Override
+ public void harvestBlock(World worldIn, EntityPlayer player, int x, int y, int z, int meta) {
+ if (EnchantmentHelper.getSilkTouchModifier(player)) {
+ shouldSilkTouch = true;
+ super.harvestBlock(worldIn, player, x, y, z, meta);
+
+ if (shouldSilkTouch) {
+ shouldSilkTouch = false;
+ }
+ return;
+ }
+
+ if (!(player instanceof FakePlayer)) {
+ shouldFortune = true;
+ }
+ super.harvestBlock(worldIn, player, x, y, z, meta);
+ if (shouldFortune) {
+ shouldFortune = false;
+ }
+ }
+
+ @Override
+ public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
+ ArrayList<ItemStack> drops = new ArrayList<>();
+ if (shouldSilkTouch) {
+ drops.add(ItemUtils.simpleMetaStack(this, metadata, 1));
+ } else {
+ switch (GT_Mod.gregtechproxy.oreDropSystem) {
+ case Item -> {
+ drops.add(
+ ItemUtils.getItemStackOfAmountFromOreDictNoBroken(
+ "oreRaw" + this.blockMaterial.getLocalizedName(),
+ 1));
+ }
+ case FortuneItem -> {
+ // if shouldFortune and isNatural then get fortune drops
+ // if not shouldFortune or not isNatural then get normal drops
+ // if not shouldFortune and isNatural then get normal drops
+ // if shouldFortune and not isNatural then get normal drops
+ if (shouldFortune && fortune > 0) {
+ int aMinAmount = 1;
+ // Max applicable fortune
+ if (fortune > 3) fortune = 3;
+ long amount = (long) new Random().nextInt(fortune) + aMinAmount;
+ for (int i = 0; i < amount; i++) {
+ drops.add(
+ ItemUtils.getItemStackOfAmountFromOreDictNoBroken(
+ "oreRaw" + this.blockMaterial.getLocalizedName(),
+ 1));
+ }
+ } else {
+ drops.add(
+ ItemUtils.getItemStackOfAmountFromOreDictNoBroken(
+ "oreRaw" + this.blockMaterial.getLocalizedName(),
+ 1));
+ }
+ }
+ case UnifiedBlock -> {
+ // Unified ore
+ drops.add(ItemUtils.simpleMetaStack(this, metadata, 1));
+ }
+ case PerDimBlock -> {
+ // Per Dimension ore
+ drops.add(ItemUtils.simpleMetaStack(this, metadata, 1));
+ }
+ case Block -> {
+ // Regular ore
+ drops.add(ItemUtils.simpleMetaStack(this, metadata, 1));
+ }
+ }
+ }
+ return drops;
+ }
+
}
diff --git a/src/main/java/gtPlusPlus/core/item/base/ore/BaseItemRawOre.java b/src/main/java/gtPlusPlus/core/item/base/ore/BaseItemRawOre.java
new file mode 100644
index 0000000000..bca44d0045
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/item/base/ore/BaseItemRawOre.java
@@ -0,0 +1,10 @@
+package gtPlusPlus.core.item.base.ore;
+
+import gtPlusPlus.core.material.Material;
+
+public class BaseItemRawOre extends BaseOreComponent {
+
+ public BaseItemRawOre(final Material material) {
+ super(material, BaseOreComponent.ComponentTypes.RAWORE);
+ }
+}
diff --git a/src/main/java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java b/src/main/java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java
index 13c8986a78..eff545871b 100644
--- a/src/main/java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java
+++ b/src/main/java/gtPlusPlus/core/item/base/ore/BaseOreComponent.java
@@ -71,20 +71,15 @@ public class BaseOreComponent extends Item {
aMap = new HashMap<>();
}
String aKey = "Invalid";
- if (componentType == ComponentTypes.CRUSHED) {
- aKey = OrePrefixes.crushed.name();
- } else if (componentType == ComponentTypes.CRUSHEDCENTRIFUGED) {
- aKey = OrePrefixes.crushedCentrifuged.name();
- } else if (componentType == ComponentTypes.CRUSHEDPURIFIED) {
- aKey = OrePrefixes.crushedPurified.name();
- } else if (componentType == ComponentTypes.DUST) {
- aKey = OrePrefixes.dust.name();
- } else if (componentType == ComponentTypes.DUSTIMPURE) {
- aKey = OrePrefixes.dustImpure.name();
- } else if (componentType == ComponentTypes.DUSTPURE) {
- aKey = OrePrefixes.dustPure.name();
- } else if (componentType == ComponentTypes.MILLED) {
- aKey = OrePrefixes.milled.name();
+ switch (componentType) {
+ case CRUSHED -> aKey = OrePrefixes.crushed.name();
+ case CRUSHEDCENTRIFUGED -> aKey = OrePrefixes.crushedCentrifuged.name();
+ case CRUSHEDPURIFIED -> aKey = OrePrefixes.crushedPurified.name();
+ case DUST -> aKey = OrePrefixes.dust.name();
+ case DUSTIMPURE -> aKey = OrePrefixes.dustImpure.name();
+ case DUSTPURE -> aKey = OrePrefixes.dustPure.name();
+ case MILLED -> aKey = OrePrefixes.milled.name();
+ case RAWORE -> aKey = OrePrefixes.rawOre.name();
}
ItemStack x = aMap.get(aKey);
@@ -241,6 +236,7 @@ public class BaseOreComponent extends Item {
CRUSHED("crushed", "Crushed ", " Ore", true),
CRUSHEDCENTRIFUGED("crushedCentrifuged", "Centrifuged Crushed ", " Ore", true),
CRUSHEDPURIFIED("crushedPurified", "Purified Crushed ", " Ore", true),
+ RAWORE("oreRaw", "Raw ", " Ore", true),
MILLED("milled", "Milled ", " Ore", true);
private final String COMPONENT_NAME;
diff --git a/src/main/java/gtPlusPlus/core/material/Material.java b/src/main/java/gtPlusPlus/core/material/Material.java
index 11ef72f06c..d6598d4d29 100644
--- a/src/main/java/gtPlusPlus/core/material/Material.java
+++ b/src/main/java/gtPlusPlus/core/material/Material.java
@@ -1191,6 +1191,10 @@ public class Material {
return getComponentByPrefix(OrePrefixes.milled, stacksize);
}
+ public final ItemStack getRawOre(final int stacksize) {
+ return getComponentByPrefix(OrePrefixes.rawOre, stacksize);
+ }
+
public final boolean hasSolidForm() {
if (ItemUtils
.checkForInvalidItems(new ItemStack[] { getDust(1), getBlock(1), getTinyDust(1), getSmallDust(1) })) {
diff --git a/src/main/java/gtPlusPlus/core/material/MaterialGenerator.java b/src/main/java/gtPlusPlus/core/material/MaterialGenerator.java
index 2e120107c9..3b7881616b 100644
--- a/src/main/java/gtPlusPlus/core/material/MaterialGenerator.java
+++ b/src/main/java/gtPlusPlus/core/material/MaterialGenerator.java
@@ -27,6 +27,7 @@ import gtPlusPlus.core.item.base.ore.BaseItemCrushedOre;
import gtPlusPlus.core.item.base.ore.BaseItemImpureDust;
import gtPlusPlus.core.item.base.ore.BaseItemPurifiedCrushedOre;
import gtPlusPlus.core.item.base.ore.BaseItemPurifiedDust;
+import gtPlusPlus.core.item.base.ore.BaseItemRawOre;
import gtPlusPlus.core.item.base.plates.BaseItemPlate;
import gtPlusPlus.core.item.base.plates.BaseItemPlateDense;
import gtPlusPlus.core.item.base.plates.BaseItemPlateDouble;
@@ -357,6 +358,7 @@ public class MaterialGenerator {
temp = new BaseItemPurifiedCrushedOre(matInfo);
temp = new BaseItemImpureDust(matInfo);
temp = new BaseItemPurifiedDust(matInfo);
+ temp = new BaseItemRawOre(matInfo);
Logger.MATERIALS(
"Generated all ore components for " + matInfo.getLocalizedName()
@@ -398,6 +400,7 @@ public class MaterialGenerator {
temp = new BaseItemPurifiedCrushedOre(matInfo);
temp = new BaseItemImpureDust(matInfo);
temp = new BaseItemPurifiedDust(matInfo);
+ temp = new BaseItemRawOre(matInfo);
Logger.MATERIALS(
"Generated all ore & base components for " + matInfo.getLocalizedName()
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluorite.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluorite.java
index c8f87d7cb3..7a1404caae 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluorite.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Fluorite.java
@@ -168,6 +168,16 @@ public class RecipeGen_Fluorite extends RecipeGen_Base {
tVoltageMultiplier / 2)) {
Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate ore to Crushed ore'");
}
+ // Macerate raw ore to Crushed
+ if (GT_Values.RA.addPulveriserRecipe(
+ material.getRawOre(1),
+ new ItemStack[] { material.getCrushed(2) },
+ new int[] { 10000 },
+ 20 * 20,
+ tVoltageMultiplier / 2)) {
+ Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate raw ore to Crushed ore'");
+ }
+
// Macerate Centrifuged to Pure Dust
if (GT_Values.RA.addPulveriserRecipe(
material.getCrushedCentrifuged(1),
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java
index 10c2066997..035f3a4220 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java
@@ -181,6 +181,15 @@ public class RecipeGen_Ore extends RecipeGen_Base {
tVoltageMultiplier / 2)) {
Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate ore to Crushed ore'");
}
+ // Macerate raw ore to Crushed
+ if (GT_Values.RA.addPulveriserRecipe(
+ material.getRawOre(1),
+ new ItemStack[] { material.getCrushed(2) },
+ new int[] { 10000 },
+ 20 * 20,
+ tVoltageMultiplier / 2)) {
+ Logger.MATERIALS("[Macerator] Added Recipe: 'Macerate raw ore to Crushed ore'");
+ }
// Macerate Crushed to Impure Dust
if (GT_Values.RA.addPulveriserRecipe(
material.getCrushed(1),