aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMinepolz320 <42765118+Minepolz320@users.noreply.github.com>2024-01-28 01:45:22 +0500
committerGitHub <noreply@github.com>2024-01-27 21:45:22 +0100
commitef3f46cf4db9bda97529de32a805c8015ad40452 (patch)
treefea4b0b19faed6f2c41f5832a3a4969e19a7c540 /src/main/java
parent3516447b38cbb435a5844c6b35cfe1b21b943815 (diff)
downloadGT5-Unofficial-ef3f46cf4db9bda97529de32a805c8015ad40452.tar.gz
GT5-Unofficial-ef3f46cf4db9bda97529de32a805c8015ad40452.tar.bz2
GT5-Unofficial-ef3f46cf4db9bda97529de32a805c8015ad40452.zip
GT Tool Fixes and ore balance config (#2453)
* Fixes/balance config Fixes that the ax and saw do not break ladders - ability to toggle ore multipliers for ore Nether and End - sneaking with a scythe/plow allows you to break only 1 block * Fix copy paste typo * Revert "Allow tools to break stuff with a lower harvest level (#2435)" This reverts commit ba1a9b290a09e39b100ff8d9f1f5e70cdc3f0fab.
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java5
-rw-r--r--src/main/java/gregtech/common/GT_Proxy.java3
-rw-r--r--src/main/java/gregtech/common/blocks/GT_Block_Machines.java15
-rw-r--r--src/main/java/gregtech/common/tools/GT_Tool_Axe.java6
-rw-r--r--src/main/java/gregtech/common/tools/GT_Tool_Plow.java39
-rw-r--r--src/main/java/gregtech/common/tools/GT_Tool_Saw.java3
-rw-r--r--src/main/java/gregtech/common/tools/GT_Tool_Sense.java40
-rw-r--r--src/main/java/gregtech/loaders/oreprocessing/ProcessingOre.java22
-rw-r--r--src/main/java/gregtech/loaders/preload/GT_PreLoad.java6
9 files changed, 90 insertions, 49 deletions
diff --git a/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java b/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java
index 2526faa0aa..de6ca996d5 100644
--- a/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java
+++ b/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java
@@ -686,13 +686,12 @@ public abstract class GT_MetaGenerated_Tool extends GT_MetaBase_Item
if (tStats == null || Math.max(0, getHarvestLevel(aStack, "")) < aBlock.getHarvestLevel(aMetaData)) return 0.0F;
return tStats.isMinableBlock(aBlock, (byte) aMetaData)
? Math.max(Float.MIN_NORMAL, tStats.getSpeedMultiplier() * getPrimaryMaterial(aStack).mToolSpeed)
- : 1.0F;
+ : 0.0F;
}
@Override
public final boolean canHarvestBlock(Block aBlock, ItemStack aStack) {
- IToolStats tStats = getToolStats(aStack);
- return tStats.isMinableBlock(aBlock, (byte) 0) && getDigSpeed(aStack, aBlock, (byte) 0) > 0.0F;
+ return getDigSpeed(aStack, aBlock, (byte) 0) > 0.0F;
}
@Override
diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java
index bc11eca160..978b0caf9a 100644
--- a/src/main/java/gregtech/common/GT_Proxy.java
+++ b/src/main/java/gregtech/common/GT_Proxy.java
@@ -632,6 +632,9 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
@Deprecated
public boolean mEasierIVPlusCables = false;
public boolean mMixedOreOnlyYieldsTwoThirdsOfPureOre = false;
+ public boolean mRichOreYieldMultiplier = true;
+ public boolean mNetherOreYieldMultiplier = true;
+ public boolean mEndOreYieldMultiplier = true;
public boolean enableBlackGraniteOres = true;
public boolean enableRedGraniteOres = true;
public boolean enableMarbleOres = true;
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Machines.java b/src/main/java/gregtech/common/blocks/GT_Block_Machines.java
index b2d62e3f3a..af41710054 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Machines.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Machines.java
@@ -37,14 +37,12 @@ import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IDebugableBlock;
-import gregtech.api.interfaces.IToolStats;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IColoredTileEntity;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.interfaces.tileentity.IDebugableTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.items.GT_Generic_Block;
-import gregtech.api.items.GT_MetaGenerated_Tool;
import gregtech.api.metatileentity.BaseMetaPipeEntity;
import gregtech.api.metatileentity.BaseMetaTileEntity;
import gregtech.api.metatileentity.BaseTileEntity;
@@ -75,19 +73,6 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo
}
@Override
- public boolean canHarvestBlock(EntityPlayer player, int meta) {
-
- ItemStack stack = player.inventory.getCurrentItem();
- if (stack != null && stack.getItem() instanceof GT_MetaGenerated_Tool gTool) {
- IToolStats tStats = gTool.getToolStats(stack);
- if (tStats == null) return false;
- return tStats.isMinableBlock(this, (byte) meta);
- }
-
- return super.canHarvestBlock(player, meta);
- }
-
- @Override
public String getHarvestTool(int aMeta) {
if (aMeta >= 8 && aMeta <= 11) {
return "cutter";
diff --git a/src/main/java/gregtech/common/tools/GT_Tool_Axe.java b/src/main/java/gregtech/common/tools/GT_Tool_Axe.java
index 787803911b..c54ebac3c9 100644
--- a/src/main/java/gregtech/common/tools/GT_Tool_Axe.java
+++ b/src/main/java/gregtech/common/tools/GT_Tool_Axe.java
@@ -6,6 +6,7 @@ import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
@@ -94,7 +95,8 @@ public class GT_Tool_Axe extends GT_Tool {
@Override
public boolean isMinableBlock(Block aBlock, byte aMetaData) {
return GT_ToolHarvestHelper.isAppropriateTool(aBlock, aMetaData, "axe")
- || GT_ToolHarvestHelper.isAppropriateMaterial(aBlock, Material.wood);
+ || GT_ToolHarvestHelper.isAppropriateMaterial(aBlock, Material.wood)
+ || GT_ToolHarvestHelper.isSpecialBlock(aBlock, Blocks.ladder);
}
@Override
@@ -118,6 +120,7 @@ public class GT_Tool_Axe extends GT_Tool {
@Override
public float getMiningSpeed(Block aBlock, byte aMetaData, float aDefault, EntityPlayer aPlayer, World aWorld,
int aX, int aY, int aZ) {
+
if (aBlock.isWood(aPlayer.worldObj, aX, aY, aZ)
&& OrePrefixes.log.contains(new ItemStack(aBlock, 1, aMetaData))) {
float rAmount = 1.0F;
@@ -132,6 +135,7 @@ public class GT_Tool_Axe extends GT_Tool {
}
return 2.0F * aDefault / rAmount;
}
+
return (aBlock.getMaterial() == Material.leaves) || (aBlock.getMaterial() == Material.vine)
|| (aBlock.getMaterial() == Material.plants)
|| (aBlock.getMaterial() == Material.gourd) ? aDefault / 4.0F : aDefault;
diff --git a/src/main/java/gregtech/common/tools/GT_Tool_Plow.java b/src/main/java/gregtech/common/tools/GT_Tool_Plow.java
index 341239c128..b6f4be25b5 100644
--- a/src/main/java/gregtech/common/tools/GT_Tool_Plow.java
+++ b/src/main/java/gregtech/common/tools/GT_Tool_Plow.java
@@ -13,6 +13,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
+import net.minecraft.world.World;
import net.minecraftforge.event.world.BlockEvent;
import gregtech.api.interfaces.IIconContainer;
@@ -41,27 +42,41 @@ public class GT_Tool_Plow extends GT_Tool {
}
@Override
+ public float getMiningSpeed(Block aBlock, byte aMetaData, float aDefault, EntityPlayer aPlayer, World worldObj,
+ int aX, int aY, int aZ) {
+ // Speed nerf for using AOE tools to break single block
+ if (aPlayer != null && aPlayer.isSneaking()) {
+ return aDefault / 2;
+ }
+ return super.getMiningSpeed(aBlock, aMetaData, aDefault, aPlayer, worldObj, aX, aY, aZ);
+ }
+
+ @Override
public int convertBlockDrops(List<ItemStack> aDrops, ItemStack aStack, EntityPlayer aPlayer, Block aBlock, int aX,
int aY, int aZ, byte aMetaData, int aFortune, boolean aSilkTouch, BlockEvent.HarvestDropsEvent aEvent) {
int rConversions = 0;
if ((this.sIsHarvestingRightNow.get() == null) && ((aPlayer instanceof EntityPlayerMP))) {
this.sIsHarvestingRightNow.set(this);
- for (int i = -1; i < 2; i++) {
- for (int j = -1; j < 2; j++) {
- for (int k = -1; k < 2; k++) {
- if (((i != 0) || (j != 0) || (k != 0)) && (aStack.getItem()
- .getDigSpeed(
- aStack,
- aPlayer.worldObj.getBlock(aX + i, aY + j, aZ + k),
- aPlayer.worldObj.getBlockMetadata(aX + i, aY + j, aZ + k))
- > 0.0F)
- && (((EntityPlayerMP) aPlayer).theItemInWorldManager
- .tryHarvestBlock(aX + i, aY + j, aZ + k))) {
- rConversions++;
+
+ if (!aPlayer.isSneaking()) {
+ for (int i = -1; i < 2; i++) {
+ for (int j = -1; j < 2; j++) {
+ for (int k = -1; k < 2; k++) {
+ if (((i != 0) || (j != 0) || (k != 0)) && (aStack.getItem()
+ .getDigSpeed(
+ aStack,
+ aPlayer.worldObj.getBlock(aX + i, aY + j, aZ + k),
+ aPlayer.worldObj.getBlockMetadata(aX + i, aY + j, aZ + k))
+ > 0.0F)
+ && (((EntityPlayerMP) aPlayer).theItemInWorldManager
+ .tryHarvestBlock(aX + i, aY + j, aZ + k))) {
+ rConversions++;
+ }
}
}
}
}
+
this.sIsHarvestingRightNow.set(null);
}
return rConversions;
diff --git a/src/main/java/gregtech/common/tools/GT_Tool_Saw.java b/src/main/java/gregtech/common/tools/GT_Tool_Saw.java
index 204fbc4aae..b2c85e2a5e 100644
--- a/src/main/java/gregtech/common/tools/GT_Tool_Saw.java
+++ b/src/main/java/gregtech/common/tools/GT_Tool_Saw.java
@@ -110,7 +110,8 @@ public class GT_Tool_Saw extends GT_Tool {
Material.wood,
Material.cactus,
Material.ice,
- Material.packedIce);
+ Material.packedIce)
+ || GT_ToolHarvestHelper.isSpecialBlock(aBlock, Blocks.ladder);
}
@Override
diff --git a/src/main/java/gregtech/common/tools/GT_Tool_Sense.java b/src/main/java/gregtech/common/tools/GT_Tool_Sense.java
index f5d3f7147a..013c0f800c 100644
--- a/src/main/java/gregtech/common/tools/GT_Tool_Sense.java
+++ b/src/main/java/gregtech/common/tools/GT_Tool_Sense.java
@@ -11,6 +11,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
+import net.minecraft.world.World;
import net.minecraftforge.event.world.BlockEvent;
import gregtech.api.interfaces.IIconContainer;
@@ -39,27 +40,41 @@ public class GT_Tool_Sense extends GT_Tool {
}
@Override
+ public float getMiningSpeed(Block aBlock, byte aMetaData, float aDefault, EntityPlayer aPlayer, World worldObj,
+ int aX, int aY, int aZ) {
+ // Speed nerf for using AOE tools to break single block
+ if (aPlayer != null && aPlayer.isSneaking()) {
+ return aDefault / 2;
+ }
+ return super.getMiningSpeed(aBlock, aMetaData, aDefault, aPlayer, worldObj, aX, aY, aZ);
+ }
+
+ @Override
public int convertBlockDrops(List<ItemStack> aDrops, ItemStack aStack, EntityPlayer aPlayer, Block aBlock, int aX,
int aY, int aZ, byte aMetaData, int aFortune, boolean aSilkTouch, BlockEvent.HarvestDropsEvent aEvent) {
int rConversions = 0;
if ((this.sIsHarvestingRightNow.get() == null) && ((aPlayer instanceof EntityPlayerMP))) {
this.sIsHarvestingRightNow.set(this);
- for (int i = -2; i < 3; i++) {
- for (int j = -2; j < 3; j++) {
- for (int k = -2; k < 3; k++) {
- if (((i != 0) || (j != 0) || (k != 0)) && (aStack.getItem()
- .getDigSpeed(
- aStack,
- aPlayer.worldObj.getBlock(aX + i, aY + j, aZ + k),
- aPlayer.worldObj.getBlockMetadata(aX + i, aY + j, aZ + k))
- > 0.0F)
- && (((EntityPlayerMP) aPlayer).theItemInWorldManager
- .tryHarvestBlock(aX + i, aY + j, aZ + k))) {
- rConversions++;
+
+ if (!aPlayer.isSneaking()) {
+ for (int i = -2; i < 3; i++) {
+ for (int j = -2; j < 3; j++) {
+ for (int k = -2; k < 3; k++) {
+ if (((i != 0) || (j != 0) || (k != 0)) && (aStack.getItem()
+ .getDigSpeed(
+ aStack,
+ aPlayer.worldObj.getBlock(aX + i, aY + j, aZ + k),
+ aPlayer.worldObj.getBlockMetadata(aX + i, aY + j, aZ + k))
+ > 0.0F)
+ && (((EntityPlayerMP) aPlayer).theItemInWorldManager
+ .tryHarvestBlock(aX + i, aY + j, aZ + k))) {
+ rConversions++;
+ }
}
}
}
}
+
this.sIsHarvestingRightNow.set(null);
}
return rConversions;
@@ -95,4 +110,5 @@ public class GT_Tool_Sense extends GT_Tool {
+ aEntity.getCommandSenderName()
+ EnumChatFormatting.WHITE);
}
+
}
diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingOre.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingOre.java
index 40bfc41223..945ffae386 100644
--- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingOre.java
+++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingOre.java
@@ -11,6 +11,7 @@ import java.util.ArrayList;
import net.minecraft.item.ItemStack;
+import gregtech.GT_Mod;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
@@ -35,11 +36,22 @@ public class ProcessingOre implements gregtech.api.interfaces.IOreRecipeRegistra
@Override
public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDictName, String aModName,
ItemStack aStack) {
- boolean tIsRich = (aPrefix == OrePrefixes.oreNetherrack) || (aPrefix == OrePrefixes.oreNether)
- || (aPrefix == OrePrefixes.oreEndstone)
- || (aPrefix == OrePrefixes.oreEnd)
- || (aPrefix == OrePrefixes.oreRich)
- || (aPrefix == OrePrefixes.oreDense);
+ boolean tIsRich = false;
+
+ // For Sake of god of balance!
+
+ // Dense ore
+ if (GT_Mod.gregtechproxy.mRichOreYieldMultiplier) {
+ tIsRich = (aPrefix == OrePrefixes.oreRich) || (aPrefix == OrePrefixes.oreDense);
+ }
+ // NetherOre
+ if (GT_Mod.gregtechproxy.mNetherOreYieldMultiplier && !tIsRich) {
+ tIsRich = (aPrefix == OrePrefixes.oreNetherrack) || (aPrefix == OrePrefixes.oreNether);
+ }
+ // EndOre
+ if (GT_Mod.gregtechproxy.mEndOreYieldMultiplier && !tIsRich) {
+ tIsRich = (aPrefix == OrePrefixes.oreEndstone) || (aPrefix == OrePrefixes.oreEnd);
+ }
if (aMaterial == Materials.Oilsands) {
GT_Values.RA.stdBuilder()
diff --git a/src/main/java/gregtech/loaders/preload/GT_PreLoad.java b/src/main/java/gregtech/loaders/preload/GT_PreLoad.java
index 823f1b9ef9..42bf79a102 100644
--- a/src/main/java/gregtech/loaders/preload/GT_PreLoad.java
+++ b/src/main/java/gregtech/loaders/preload/GT_PreLoad.java
@@ -707,6 +707,12 @@ public class GT_PreLoad {
GT_Mod.gregtechproxy.mMixedOreOnlyYieldsTwoThirdsOfPureOre = tMainConfig
.get("general", "MixedOreOnlyYieldsTwoThirdsOfPureOre", false)
.getBoolean(false);
+ GT_Mod.gregtechproxy.mRichOreYieldMultiplier = tMainConfig.get("general", "RichOreYieldMultiplier", true)
+ .getBoolean(false);
+ GT_Mod.gregtechproxy.mNetherOreYieldMultiplier = tMainConfig.get("general", "NetherOreYieldMultiplier", true)
+ .getBoolean(false);
+ GT_Mod.gregtechproxy.mEndOreYieldMultiplier = tMainConfig.get("general", "EndOreYieldMultiplier", true)
+ .getBoolean(false);
GT_Mod.gregtechproxy.enableBlackGraniteOres = GregTech_API.sWorldgenFile
.get("general", "enableBlackGraniteOres", GT_Mod.gregtechproxy.enableBlackGraniteOres);
GT_Mod.gregtechproxy.enableRedGraniteOres = GregTech_API.sWorldgenFile