aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/xmod
diff options
context:
space:
mode:
authorAlkalus <Draknyte1@hotmail.com>2020-03-31 01:25:58 +0100
committerAlkalus <Draknyte1@hotmail.com>2020-03-31 01:25:58 +0100
commit75ea33600537047847091b55a46f5b88c3c75dbb (patch)
tree3050dc52746859cb9003e09f75dc91a7d7eb5911 /src/Java/gtPlusPlus/xmod
parentb5cbe510e959ae0fe8803b5df1031f2752c50e30 (diff)
downloadGT5-Unofficial-75ea33600537047847091b55a46f5b88c3c75dbb.tar.gz
GT5-Unofficial-75ea33600537047847091b55a46f5b88c3c75dbb.tar.bz2
GT5-Unofficial-75ea33600537047847091b55a46f5b88c3c75dbb.zip
+ Added Custom NEI Handler for IsaMIll.
+ Added Death by IsaMIll. % Moved debug mode switch to AsmConfig. $ Fixed handling of custom OrePrefixes. $ Fixed OreDict registration of MetaFoodItems. $ Improved handling of Core Classes being static initialised too early. $ Fixed client-side bug in Distillus which would cause an infinite loop. $ Fixed bug in ForgeEnumHelper. $ Fixed bug in setField methods from ReflectionUtils.
Diffstat (limited to 'src/Java/gtPlusPlus/xmod')
-rw-r--r--src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseAestheticCrop.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseHarvestableCrop.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/bartcrops/crops/Crop_Hemp.java4
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java11
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/enums/CustomOrePrefix.java123
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_SteamCondenser.java7
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java3
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java1
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IsaMill.java139
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java16
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java4
11 files changed, 241 insertions, 75 deletions
diff --git a/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseAestheticCrop.java b/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseAestheticCrop.java
index cddce7beb4..f62b429acb 100644
--- a/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseAestheticCrop.java
+++ b/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseAestheticCrop.java
@@ -1,6 +1,6 @@
package gtPlusPlus.xmod.bartcrops.abstracts;
-import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.preloader.CORE_Preloader;
import ic2.api.crops.ICropTile;
public abstract class BaseAestheticCrop extends BaseHarvestableCrop {
@@ -27,7 +27,7 @@ public abstract class BaseAestheticCrop extends BaseHarvestableCrop {
}
public int growthDuration(ICropTile crop) {
- return CORE.DEBUG ? 1 : 225;
+ return CORE_Preloader.DEBUG_MODE ? 1 : 225;
}
public byte getSizeAfterHarvest(ICropTile crop) {
diff --git a/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseHarvestableCrop.java b/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseHarvestableCrop.java
index fee6cf654c..e877233c67 100644
--- a/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseHarvestableCrop.java
+++ b/src/Java/gtPlusPlus/xmod/bartcrops/abstracts/BaseHarvestableCrop.java
@@ -1,6 +1,6 @@
package gtPlusPlus.xmod.bartcrops.abstracts;
-import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.preloader.CORE_Preloader;
import ic2.api.crops.ICropTile;
public abstract class BaseHarvestableCrop extends BaseCrop {
@@ -44,7 +44,7 @@ public abstract class BaseHarvestableCrop extends BaseCrop {
public int growthDuration(ICropTile crop) {
short r;
- if (CORE.DEBUG) {
+ if (CORE_Preloader.DEBUG_MODE) {
r = 1;
} else if (crop.getSize() == 2) {
r = 200;
diff --git a/src/Java/gtPlusPlus/xmod/bartcrops/crops/Crop_Hemp.java b/src/Java/gtPlusPlus/xmod/bartcrops/crops/Crop_Hemp.java
index a921182d66..95e2766aae 100644
--- a/src/Java/gtPlusPlus/xmod/bartcrops/crops/Crop_Hemp.java
+++ b/src/Java/gtPlusPlus/xmod/bartcrops/crops/Crop_Hemp.java
@@ -1,9 +1,9 @@
package gtPlusPlus.xmod.bartcrops.crops;
import gtPlusPlus.core.item.ModItems;
-import gtPlusPlus.core.lib.CORE;
import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.preloader.CORE_Preloader;
import gtPlusPlus.xmod.bartcrops.abstracts.BaseAestheticCrop;
import ic2.api.crops.ICropTile;
import net.minecraft.item.ItemStack;
@@ -29,7 +29,7 @@ public class Crop_Hemp extends BaseAestheticCrop {
ret = 225;
}*/
- if (CORE.DEBUG) {
+ if (CORE_Preloader.DEBUG_MODE) {
ret = 1;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java b/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java
index aaaf9700f9..1cb499479f 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/HANDLER_GT.java
@@ -81,9 +81,7 @@ public class HANDLER_GT {
OldCircuitHandler.preInit();
}
- GregtechFluidHandler.run();
- addNewOrePrefixes();
-
+ GregtechFluidHandler.run();
}
public static void init(){
@@ -155,8 +153,11 @@ public class HANDLER_GT {
WoodCentrifuging.processLogsForMethane();
}
- private static void addNewOrePrefixes() {
- CustomOrePrefix.init();
+ public static void addNewOrePrefixes() {
+ for (CustomOrePrefix aPrefixTest : CustomOrePrefix.values()) {
+ Logger.INFO("Adding "+aPrefixTest.name()+" to OrePrefixes Enum.");
+ Logger.INFO("Injecting: "+aPrefixTest.addToEnum());
+ }
}
private static void convertPyroToCokeOven() {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/CustomOrePrefix.java b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/CustomOrePrefix.java
index 050081fc82..9647b00578 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/CustomOrePrefix.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/CustomOrePrefix.java
@@ -3,23 +3,31 @@ package gtPlusPlus.xmod.gregtech.api.enums;
import static gregtech.api.enums.GT_Values.B;
import gregtech.api.enums.OrePrefixes;
-import gtPlusPlus.api.objects.Logger;
-import gtPlusPlus.core.lib.CORE;
import net.minecraftforge.common.util.EnumHelper;
-public class CustomOrePrefix {
+public enum CustomOrePrefix {
- public static CustomOrePrefix Milled;
-
- static {
- Milled = new CustomOrePrefix("Milled Ores", "Milled ", " Ore", true, true, false, false, false, false, false, false, false, true, B[3], -1, 64, -1);
- }
+ milled("Milled Ores", "Milled ", " Ore", true, true, false, false, false, false, false, false, false, true, B[3], -1, 64, -1);
- public static void init() {
- // Does nothing except run the static{} block
- }
-
+ private final String mRegularLocalName;
private final String mLocalizedMaterialPre;
+ private final String mLocalizedMaterialPost;
+ private final boolean mIsUnificatable;
+ private final boolean mIsMaterialBased;
+ private final boolean mIsSelfReferencing;
+ private final boolean mIsContainer;
+ private final boolean mDontUnificateActively;
+ private final boolean mIsUsedForBlocks;
+ private final boolean mAllowNormalRecycling;
+ private final boolean mGenerateDefaultItem;
+ private final boolean mIsEnchantable;
+ private final boolean mIsUsedForOreProcessing;
+ private final int mMaterialGenerationBits;
+ private final long mMaterialAmount;
+ private final int mDefaultStackSize;
+ private final int mTextureindex;
+
+ private OrePrefixes mSelfReference;
private CustomOrePrefix(
String aRegularLocalName,
@@ -38,52 +46,67 @@ public class CustomOrePrefix {
int aMaterialGenerationBits,
long aMaterialAmount,
int aDefaultStackSize,
- int aTextureindex) {
-
+ int aTextureindex) {
+
+ mRegularLocalName = aRegularLocalName;
mLocalizedMaterialPre = aLocalizedMaterialPre;
+ mLocalizedMaterialPost = aLocalizedMaterialPost;
+ mIsUnificatable = aIsUnificatable;
+ mIsMaterialBased = aIsMaterialBased;
+ mIsSelfReferencing = aIsSelfReferencing;
+ mIsContainer = aIsContainer;
+ mDontUnificateActively = aDontUnificateActively;
+ mIsUsedForBlocks = aIsUsedForBlocks;
+ mAllowNormalRecycling = aAllowNormalRecycling;
+ mGenerateDefaultItem = aGenerateDefaultItem;
+ mIsEnchantable = aIsEnchantable;
+ mIsUsedForOreProcessing = aIsUsedForOreProcessing;
+ mMaterialGenerationBits = aMaterialGenerationBits;
+ mMaterialAmount = aMaterialAmount;
+ mDefaultStackSize = aDefaultStackSize;
+ mTextureindex = aTextureindex;
- // Add this to the GT Enum
- EnumHelper.addEnum(OrePrefixes.class, aLocalizedMaterialPre, new Object[] {
- aRegularLocalName,
- aLocalizedMaterialPre,
- aLocalizedMaterialPost,
- aIsUnificatable,
- aIsMaterialBased,
- aIsSelfReferencing,
- aIsContainer,
- aDontUnificateActively,
- aIsUsedForBlocks,
- aAllowNormalRecycling,
- aGenerateDefaultItem,
- aIsEnchantable,
- aIsUsedForOreProcessing,
- aMaterialGenerationBits,
- aMaterialAmount,
- aDefaultStackSize,
- aTextureindex}
- );
+ }
+
+ public final boolean addToEnum() {
- Logger.INFO("Registered custom OrePrefixes '"+aLocalizedMaterialPre+"'. Success? "+checkEntryWasAdded(this));
+ mSelfReference = EnumHelper.addEnum(OrePrefixes.class, this.name(),
+ new Class[] {
+ String.class,
+ String.class, String.class, boolean.class,
+ boolean.class, boolean.class, boolean.class,
+ boolean.class, boolean.class, boolean.class,
+ boolean.class, boolean.class, boolean.class,
+ int.class, long.class, int.class, int.class
+ },
+ new Object[] {
+ mRegularLocalName,
+ mLocalizedMaterialPre,
+ mLocalizedMaterialPost,
+ mIsUnificatable,
+ mIsMaterialBased,
+ mIsSelfReferencing,
+ mIsContainer,
+ mDontUnificateActively,
+ mIsUsedForBlocks,
+ mAllowNormalRecycling,
+ mGenerateDefaultItem,
+ mIsEnchantable,
+ mIsUsedForOreProcessing,
+ mMaterialGenerationBits,
+ mMaterialAmount,
+ mDefaultStackSize,
+ mTextureindex});
+ return mSelfReference != null;
}
- private static final boolean checkEntryWasAdded(CustomOrePrefix aCustomPrefixObject) {
- for (OrePrefixes o :OrePrefixes.values()) {
- if (o.mLocalizedMaterialPre.equals(aCustomPrefixObject.mLocalizedMaterialPre)) {
- return true;
- }
- }
- return false;
+ public static final boolean checkEntryWasAdded(CustomOrePrefix aCustomPrefixObject) {
+ return aCustomPrefixObject.mSelfReference != null;
}
- public static OrePrefixes get(CustomOrePrefix aCustomPrefixObject) {
- for (OrePrefixes o :OrePrefixes.values()) {
- if (o.mLocalizedMaterialPre.equals(aCustomPrefixObject.mLocalizedMaterialPre)) {
- return o;
- }
- }
- CORE.crash("Tried to obtain an invalid custom OrePrefixes object");
- return null;
+ public OrePrefixes get() {
+ return mSelfReference;
}
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_SteamCondenser.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_SteamCondenser.java
index f472fc9edb..e3f2f9d41b 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_SteamCondenser.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_SteamCondenser.java
@@ -1,11 +1,10 @@
package gtPlusPlus.xmod.gregtech.api.gui;
-import net.minecraft.entity.player.InventoryPlayer;
-
import gregtech.api.gui.GT_GUIContainerMetaTile_Machine;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-
import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.preloader.CORE_Preloader;
+import net.minecraft.entity.player.InventoryPlayer;
public class GUI_SteamCondenser extends GT_GUIContainerMetaTile_Machine
{
@@ -20,7 +19,7 @@ public class GUI_SteamCondenser extends GT_GUIContainerMetaTile_Machine
protected void drawGuiContainerForegroundLayer(final int par1, final int par2)
{
this.fontRendererObj.drawString("Condenser", 8, 4, 4210752);
- if (CORE.DEBUG){
+ if (CORE_Preloader.DEBUG_MODE){
this.tickTime = ((CONTAINER_SteamCondenser)this.mContainer).mTickingTime;
this.fontRendererObj.drawString("Tick Time: "+this.tickTime, 8, 12, 4210752);
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
index b6b75808fc..ea14320f93 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java
@@ -55,6 +55,7 @@ import gtPlusPlus.core.recipe.common.CI;
import gtPlusPlus.core.util.math.MathUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.reflect.ReflectionUtils;
+import gtPlusPlus.preloader.CORE_Preloader;
import gtPlusPlus.preloader.asm.AsmConfig;
import gtPlusPlus.xmod.gregtech.api.gui.CONTAINER_MultiMachine;
import gtPlusPlus.xmod.gregtech.api.gui.CONTAINER_MultiMachine_NoPlayerInventory;
@@ -89,7 +90,7 @@ public abstract class GregtechMeta_MultiBlockBase extends GT_MetaTileEntity_Mult
Logger.MACHINE_INFO("Found .08 findRecipe method? "+(a08 != null));
Logger.MACHINE_INFO("Found .09 findRecipe method? "+(a09 != null));
- if (CORE.DEBUG) {
+ if (CORE_Preloader.DEBUG_MODE) {
aLogger = ReflectionUtils.getMethod(Logger.class, "INFO", String.class);
}
else {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java
index 0af29aaf7e..02900c300b 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java
@@ -3,7 +3,6 @@ package gtPlusPlus.xmod.gregtech.common.blocks.textures;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
-import gtPlusPlus.xmod.gregtech.common.blocks.GregtechMetaCasingBlocks;
import gtPlusPlus.xmod.gregtech.common.blocks.GregtechMetaCasingBlocks5;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock.CustomIcon;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.GregtechMetaTileEntity_IsaMill;
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IsaMill.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IsaMill.java
index 53d7c2ea20..77cd6777b5 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IsaMill.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/GregtechMetaTileEntity_IsaMill.java
@@ -1,5 +1,9 @@
package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Random;
+
import gregtech.api.enums.TAE;
import gregtech.api.enums.Textures;
import gregtech.api.gui.GT_GUIContainer_MultiMachine;
@@ -8,15 +12,26 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Recipe;
-import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
+import gregtech.api.util.Recipe_GT;
import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.api.objects.minecraft.BlockPos;
import gtPlusPlus.core.block.ModBlocks;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.math.MathUtils;
+import gtPlusPlus.core.util.minecraft.EntityUtils;
+import gtPlusPlus.core.util.minecraft.PlayerUtils;
import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock.CustomIcon;
import net.minecraft.block.Block;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.World;
+import net.minecraft.world.chunk.Chunk;
public class GregtechMetaTileEntity_IsaMill extends GregtechMeta_MultiBlockBase {
@@ -27,6 +42,8 @@ public class GregtechMetaTileEntity_IsaMill extends GregtechMeta_MultiBlockBase
private static ITexture frontFace;
private static ITexture frontFaceActive;
+
+ private static final DamageSource mIsaMillDamageSource = new DamageSource("gtpp.grinder").setDamageBypassesArmor();
public GregtechMetaTileEntity_IsaMill(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional);
@@ -76,7 +93,123 @@ public class GregtechMetaTileEntity_IsaMill extends GregtechMeta_MultiBlockBase
@Override
public GT_Recipe.GT_Recipe_Map getRecipeMap() {
- return GT_Recipe_Map.sMaceratorRecipes;
+ return Recipe_GT.Gregtech_Recipe_Map.sOreMillRecipes;
+ }
+
+ @Override
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ super.onPostTick(aBaseMetaTileEntity, aTick);
+ if (aTick % 20 == 0) {
+ checkForEntities(aBaseMetaTileEntity, aTick);
+ }
+ }
+
+ private final AutoMap<BlockPos> mFrontBlockPosCache = new AutoMap<BlockPos>();
+
+ public void checkForEntities(IGregTechTileEntity aBaseMetaTileEntity, long aTime) {
+
+ if (aTime % 100 == 0) {
+ mFrontBlockPosCache.clear();
+ }
+ if (mFrontBlockPosCache.isEmpty()) {
+ byte tSide = aBaseMetaTileEntity.getBackFacing();
+ int aTileX = aBaseMetaTileEntity.getXCoord();
+ int aTileY = aBaseMetaTileEntity.getYCoord();
+ int aTileZ = aBaseMetaTileEntity.getZCoord();
+ boolean xFacing = (tSide == 4 || tSide == 5);
+ boolean zFacing = (tSide == 2 || tSide == 3);
+
+ // Check Casings
+ int aDepthOffset = (tSide == 2 || tSide == 4) ? 1 : -1;
+ for (int aHorizontalOffset = -1; aHorizontalOffset < 2; aHorizontalOffset++) {
+ for (int aVerticalOffset = -1; aVerticalOffset < 2; aVerticalOffset++) {
+ int aX = !xFacing ? (aTileX + aHorizontalOffset) : (aTileX + aDepthOffset);
+ int aY = aTileY + aVerticalOffset;
+ int aZ = !zFacing ? (aTileZ + aHorizontalOffset) : (aTileZ + aDepthOffset);
+ mFrontBlockPosCache.add(new BlockPos(aX, aY, aZ, aBaseMetaTileEntity.getWorld()));
+ }
+ }
+ }
+
+ AutoMap<EntityLivingBase> aEntities = getEntities(mFrontBlockPosCache, aBaseMetaTileEntity.getWorld());
+ if (!aEntities.isEmpty()) {
+ for (EntityLivingBase aFoundEntity : aEntities) {
+ if (aFoundEntity instanceof EntityPlayer) {
+ EntityPlayer aPlayer = (EntityPlayer) aFoundEntity;
+ if (PlayerUtils.isCreative(aPlayer) || !PlayerUtils.canTakeDamage(aPlayer)) {
+ continue;
+ }
+ else {
+ if (aFoundEntity.getHealth() > 0) {
+ EntityUtils.doDamage(aFoundEntity, mIsaMillDamageSource, (int) (aFoundEntity.getMaxHealth() / 5));
+ if ((aBaseMetaTileEntity.isClientSide()) && (aBaseMetaTileEntity.isActive())) {
+ generateParticles(aFoundEntity);
+ }
+ }
+ }
+ }
+ if (aFoundEntity.getHealth() > 0) {
+ EntityUtils.doDamage(aFoundEntity, mIsaMillDamageSource, Math.max(1, (int) (aFoundEntity.getMaxHealth() / 3)));
+ if ((aBaseMetaTileEntity.isClientSide()) && (aBaseMetaTileEntity.isActive())) {
+ generateParticles(aFoundEntity);
+ }
+ }
+ }
+ }
+ }
+
+ private static final AutoMap<EntityLivingBase> getEntities(AutoMap<BlockPos> aPositionsToCheck, World aWorld){
+ AutoMap<EntityLivingBase> aEntities = new AutoMap<EntityLivingBase>();
+ HashSet<Chunk> aChunksToCheck = new HashSet<Chunk>();
+ if (!aPositionsToCheck.isEmpty()) {
+ Chunk aLocalChunk;
+ for (BlockPos aPos : aPositionsToCheck) {
+ aLocalChunk = aWorld.getChunkFromBlockCoords(aPos.xPos, aPos.zPos);
+ aChunksToCheck.add(aLocalChunk);
+ }
+ }
+ if (!aChunksToCheck.isEmpty()) {
+ AutoMap<EntityLivingBase> aEntitiesFound = new AutoMap<EntityLivingBase>();
+ for (Chunk aChunk : aChunksToCheck) {
+ if (aChunk.isChunkLoaded) {
+ List[] aEntityLists = aChunk.entityLists;
+ for (List aEntitySubList : aEntityLists) {
+ for (Object aEntity : aEntitySubList) {
+ if (aEntity instanceof EntityLivingBase) {
+ EntityLivingBase aPlayer = (EntityLivingBase) aEntity;
+ aEntitiesFound.add(aPlayer);
+ }
+ }
+ }
+ }
+ }
+ if (!aEntitiesFound.isEmpty()) {
+ for (EntityLivingBase aEntity : aEntitiesFound) {
+ BlockPos aPlayerPos = EntityUtils.findBlockPosOfEntity(aEntity);
+ for (BlockPos aBlockSpaceToCheck : aPositionsToCheck) {
+ if (aBlockSpaceToCheck.equals(aPlayerPos)) {
+ aEntities.add(aEntity);
+ }
+ }
+ }
+ }
+ }
+ return aEntities;
+ }
+
+ private static void generateParticles(EntityLivingBase aEntity) {
+ BlockPos aPlayerPosBottom = EntityUtils.findBlockPosOfEntity(aEntity);
+ BlockPos aPlayerPosTop = aPlayerPosBottom.getUp();
+ AutoMap<BlockPos> aEntityPositions = new AutoMap<BlockPos>();
+ aEntityPositions.add(aPlayerPosBottom);
+ aEntityPositions.add(aPlayerPosTop);
+ for (int i = 0; i < 64; i++) {
+ BlockPos aEffectPos = aEntityPositions.get(aEntity.height > 1f ? MathUtils.randInt(0, 1) : 0);
+ float aOffsetX = MathUtils.randFloat(-0.35f, 0.35f);
+ float aOffsetY = MathUtils.randFloat(-0.25f, 0.35f);
+ float aOffsetZ = MathUtils.randFloat(-0.35f, 0.35f);
+ aEntity.worldObj.spawnParticle("reddust", aEffectPos.xPos + aOffsetX, aEffectPos.yPos + 0.3f + aOffsetY, aEffectPos.zPos + aOffsetZ, 0.0D, 0.0D, 0.0D);
+ }
}
@Override
@@ -128,7 +261,7 @@ public class GregtechMetaTileEntity_IsaMill extends GregtechMeta_MultiBlockBase
int aZ = !zFacing ? (aTileZ + aHorizontalOffset) : (aTileZ + aDepthOffset);
Block aCasingBlock = aBaseMetaTileEntity.getBlock(aX, aY, aZ);
int aCasingMeta = aBaseMetaTileEntity.getMetaID(aX, aY, aZ);
- IGregTechTileEntity aTileEntity = getBaseMetaTileEntity().getIGregTechTileEntity(aX, aY, aZ);
+ IGregTechTileEntity aTileEntity = aBaseMetaTileEntity.getIGregTechTileEntity(aX, aY, aZ);
if (aTileEntity != null) {
final IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
if (aMetaTileEntity != null) {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java
index 753132dd27..46ba445586 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/GregtechMetaTileEntity_Adv_DistillationTower.java
@@ -475,10 +475,16 @@ public class GregtechMetaTileEntity_Adv_DistillationTower extends GregtechMeta_M
try {
Block aInitStructureCheck;
int aInitStructureCheckMeta;
- IGregTechTileEntity aBaseMetaTileEntity = this.getBaseMetaTileEntity();
- for (int i=1;1<10;i++) {
+ IGregTechTileEntity aBaseMetaTileEntity = this.getBaseMetaTileEntity();
+ if (aBaseMetaTileEntity == null || aBaseMetaTileEntity.getWorld() == null || aBaseMetaTileEntity.getWorld().getChunkFromBlockCoords(aBaseMetaTileEntity.getXCoord(), aBaseMetaTileEntity.getZCoord()) == null) {
+ return 0;
+ }
+ for (int i=1;i<10;i++) {
aInitStructureCheck = aBaseMetaTileEntity.getBlockOffset(0, i, 0);
- aInitStructureCheckMeta = aBaseMetaTileEntity.getMetaIDOffset(0, i, 0);
+ aInitStructureCheckMeta = aBaseMetaTileEntity.getMetaIDOffset(0, i, 0);
+ if (aInitStructureCheck == null) {
+ continue;
+ }
if (aInitStructureCheck == GregTech_API.sBlockCasings4 && aInitStructureCheckMeta == 1) {
return 0;
}
@@ -488,9 +494,9 @@ public class GregtechMetaTileEntity_Adv_DistillationTower extends GregtechMeta_M
}
}
catch (Throwable t) {
- t.printStackTrace();
- return 0;
+ //t.printStackTrace();
}
+ return 0;
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java b/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
index c22b9fc2ca..cc3130af98 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/recipes/GregtechRecipeAdder.java
@@ -1332,21 +1332,25 @@ public class GregtechRecipeAdder implements IGregtech_RecipeAdder {
// Inputs
ItemStack[] aInputsOre1 = new ItemStack[] {
+ CI.getNumberedCircuit(10),
aOreStack,
aMillingBall_Alumina
};
ItemStack[] aInputsOre2 = new ItemStack[] {
+ CI.getNumberedCircuit(11),
aOreStack,
aMillingBall_Soapstone
};
ItemStack[] aInputsCrushed1 = new ItemStack[] {
+ CI.getNumberedCircuit(10),
aCrushedStack,
aMillingBall_Alumina
};
ItemStack[] aInputsCrushed2 = new ItemStack[] {
+ CI.getNumberedCircuit(11),
aCrushedStack,
aMillingBall_Soapstone
};