From db3dece804bf33f8d66c52fd18e47b8e49cab9de Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Thu, 18 Apr 2019 16:41:50 +1000 Subject: % Improved Mode handling on some tools, Electric lighter now has a projectile mode. $ Fixed Bombs not having a renderer. $ Fixed Mode changing on custom GT Tools. Fixes #80 --- .../core/entity/InternalEntityRegistry.java | 3 + .../entity/projectile/EntityLightningAttack.java | 76 ++++++++++++ src/Java/gtPlusPlus/core/proxy/ClientProxy.java | 5 + .../items/behaviours/Behaviour_Choocher.java | 48 +++++--- .../behaviours/Behaviour_Electric_Lighter.java | 132 +++++++++++++++++---- .../tools/TOOL_Gregtech_ElectricButcherKnife.java | 65 +++++----- .../tools/TOOL_Gregtech_ElectricLighter.java | 40 +------ 7 files changed, 258 insertions(+), 111 deletions(-) create mode 100644 src/Java/gtPlusPlus/core/entity/projectile/EntityLightningAttack.java (limited to 'src/Java') diff --git a/src/Java/gtPlusPlus/core/entity/InternalEntityRegistry.java b/src/Java/gtPlusPlus/core/entity/InternalEntityRegistry.java index e5c779adcf..aec82119cc 100644 --- a/src/Java/gtPlusPlus/core/entity/InternalEntityRegistry.java +++ b/src/Java/gtPlusPlus/core/entity/InternalEntityRegistry.java @@ -13,6 +13,7 @@ import gtPlusPlus.core.entity.monster.EntityGiantChickenBase; import gtPlusPlus.core.entity.monster.EntitySickBlaze; import gtPlusPlus.core.entity.monster.EntityStaballoyConstruct; import gtPlusPlus.core.entity.projectile.EntityHydrofluoricAcidPotion; +import gtPlusPlus.core.entity.projectile.EntityLightningAttack; import gtPlusPlus.core.entity.projectile.EntitySulfuricAcidPotion; import gtPlusPlus.core.entity.projectile.EntityThrowableBomb; import gtPlusPlus.core.entity.projectile.EntityToxinballSmall; @@ -54,6 +55,8 @@ public class InternalEntityRegistry { EntityRegistry.registerModEntity(EntityThrowableBomb.class, "EntityThrowableBomb", mEntityID++, GTplusplus.instance, 64, 10, true); + EntityRegistry.registerModEntity(EntityLightningAttack.class, "EntityLightningAttack", mEntityID++, GTplusplus.instance, 64, 20, true); + /** * Globals, which generate spawn eggs. (Currently required for Giant chicken spawning) */ diff --git a/src/Java/gtPlusPlus/core/entity/projectile/EntityLightningAttack.java b/src/Java/gtPlusPlus/core/entity/projectile/EntityLightningAttack.java new file mode 100644 index 0000000000..868517d1db --- /dev/null +++ b/src/Java/gtPlusPlus/core/entity/projectile/EntityLightningAttack.java @@ -0,0 +1,76 @@ +package gtPlusPlus.core.entity.projectile; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.projectile.EntityWitherSkull; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.EnumDifficulty; +import net.minecraft.world.World; + +public class EntityLightningAttack extends EntityWitherSkull { + + public EntityLightningAttack(World p_i1793_1_) + { + super(p_i1793_1_); + this.setSize(0.3125F, 0.3125F); + } + + public EntityLightningAttack(World p_i1794_1_, EntityLivingBase p_i1794_2_, double p_i1794_3_, double p_i1794_5_, double p_i1794_7_) + { + super(p_i1794_1_, p_i1794_2_, p_i1794_3_, p_i1794_5_, p_i1794_7_); + this.setSize(0.3125F, 0.3125F); + } + + @SideOnly(Side.CLIENT) + public EntityLightningAttack(World p_i1795_1_, double p_i1795_2_, double p_i1795_4_, double p_i1795_6_, double p_i1795_8_, double p_i1795_10_, double p_i1795_12_) + { + super(p_i1795_1_, p_i1795_2_, p_i1795_4_, p_i1795_6_, p_i1795_8_, p_i1795_10_, p_i1795_12_); + this.setSize(0.3125F, 0.3125F); + } + + + /** + * Called when this EntityFireball hits a block or entity. + */ + protected void onImpact(MovingObjectPosition p_70227_1_) { + + if (!this.worldObj.isRemote) { + if (p_70227_1_.entityHit != null) { + if (this.shootingEntity != null) { + if (p_70227_1_.entityHit.attackEntityFrom(DamageSource.causeMobDamage(this.shootingEntity), 8.0F) + && !p_70227_1_.entityHit.isEntityAlive()) { + this.shootingEntity.heal(0.5F); + } + } else { + p_70227_1_.entityHit.attackEntityFrom(DamageSource.lava, 10.0F); + } + + if (p_70227_1_.entityHit instanceof EntityLivingBase) { + byte b0 = 0; + + if (this.worldObj.difficultySetting == EnumDifficulty.NORMAL) { + b0 = 10; + } else if (this.worldObj.difficultySetting == EnumDifficulty.HARD) { + b0 = 40; + } + + if (b0 > 0) { + ((EntityLivingBase) p_70227_1_.entityHit).addPotionEffect(new PotionEffect(Potion.poison.id, 20 * b0, 1)); + ((EntityLivingBase) p_70227_1_.entityHit).addPotionEffect(new PotionEffect(Potion.confusion.id, 20 * b0, 1)); + ((EntityLivingBase) p_70227_1_.entityHit).addPotionEffect(new PotionEffect(Potion.weakness.id, 20 * b0, 1)); + } + } + } + + this.worldObj.newExplosion(this, this.posX, this.posY, this.posZ, 1.0F, false, + this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing")); + this.setDead(); + } + } + + +} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/proxy/ClientProxy.java b/src/Java/gtPlusPlus/core/proxy/ClientProxy.java index c7374ca7d5..71befe0a37 100644 --- a/src/Java/gtPlusPlus/core/proxy/ClientProxy.java +++ b/src/Java/gtPlusPlus/core/proxy/ClientProxy.java @@ -47,7 +47,9 @@ import gtPlusPlus.core.entity.monster.EntityGiantChickenBase; import gtPlusPlus.core.entity.monster.EntitySickBlaze; import gtPlusPlus.core.entity.monster.EntityStaballoyConstruct; import gtPlusPlus.core.entity.projectile.EntityHydrofluoricAcidPotion; +import gtPlusPlus.core.entity.projectile.EntityLightningAttack; import gtPlusPlus.core.entity.projectile.EntitySulfuricAcidPotion; +import gtPlusPlus.core.entity.projectile.EntityThrowableBomb; import gtPlusPlus.core.entity.projectile.EntityToxinballSmall; import gtPlusPlus.core.handler.render.FirepitRender; import gtPlusPlus.core.item.ModItems; @@ -61,6 +63,7 @@ import gtPlusPlus.xmod.gregtech.common.render.GTPP_Render_MachineBlock; import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelBat; import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.entity.RenderFireball; import net.minecraft.client.renderer.entity.RenderSnowball; import net.minecraft.entity.Entity; @@ -138,6 +141,8 @@ public class ClientProxy extends CommonProxy implements Runnable{ RenderingRegistry.registerEntityRenderingHandler(EntityTeslaTowerLightning.class, new RenderPlasmaBolt()); RenderingRegistry.registerEntityRenderingHandler(EntityGiantChickenBase.class, new RenderGiantChicken(new ModelGiantChicken(), 1f)); RenderingRegistry.registerEntityRenderingHandler(EntityBatKing.class, new RenderBatKing()); + RenderingRegistry.registerEntityRenderingHandler(EntityThrowableBomb.class, new RenderSnowball(ModItems.itemBomb, 1)); + RenderingRegistry.registerEntityRenderingHandler(EntityLightningAttack.class, new RenderFireball(1F)); /** * Tiles diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Choocher.java b/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Choocher.java index c74a31055d..f82e0e5cb0 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Choocher.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Choocher.java @@ -10,6 +10,9 @@ import gregtech.api.items.GT_MetaBase_Item; import gregtech.api.util.GT_LanguageManager; import gregtech.common.items.behaviors.Behaviour_None; import gregtech.common.items.behaviors.Behaviour_Wrench; +import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.minecraft.NBTUtils; +import gtPlusPlus.core.util.minecraft.PlayerUtils; public class Behaviour_Choocher extends Behaviour_None { @@ -30,30 +33,47 @@ extends Behaviour_None { if (aWorld.isRemote) { return false; } + + boolean inWrenchMode; + if (NBTUtils.hasKey(aStack, "aMode")) { + inWrenchMode = NBTUtils.getBoolean(aStack, "aMode"); + } + else { + aStack.getTagCompound().setBoolean("aMode", true); + inWrenchMode = true; + } + if (aPlayer.isSneaking()){ - if (this.isWrench){ - this.isWrench = false; - return false; - } - this.isWrench = true; - return false; + boolean aModeNew = Utils.invertBoolean(inWrenchMode); + aStack.getTagCompound().setBoolean("aMode", aModeNew); + PlayerUtils.messagePlayer(aPlayer, "Mode: "+(aModeNew ? "Wrench" : "Hammer")); + return true; } - else if (!aPlayer.isSneaking()){ - if (this.isWrench){ - this.wrench.onItemUseFirst(aItem, aStack, aPlayer, aWorld, aSide, aSide, aSide, aSide, hitZ, hitZ, hitZ); - return false; + else { + if (inWrenchMode){ + return this.wrench.onItemUseFirst(aItem, aStack, aPlayer, aWorld, aSide, aSide, aSide, aSide, hitZ, hitZ, hitZ); + } + else { + return this.prospecting.onItemUseFirst(aItem, aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ); } - this.prospecting.onItemUseFirst(aItem, aStack, aPlayer, aWorld, aX, aY, aZ, aSide, hitX, hitY, hitZ); - return false; } - return false; } @Override public List getAdditionalToolTips(final GT_MetaBase_Item aItem, final List aList, final ItemStack aStack) { + boolean inWrenchMode; + if (NBTUtils.hasKey(aStack, "aMode")) { + inWrenchMode = NBTUtils.getBoolean(aStack, "aMode"); + } + else { + NBTUtils.setBoolean(aStack, "aMode", true); + aStack.getTagCompound().setBoolean("aMode", true); + inWrenchMode = true; + } + - if (this.isWrench){ + if (inWrenchMode){ aList.add(this.mTooltip1+"Wrench"); aList.add(this.mTooltipW); } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Electric_Lighter.java b/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Electric_Lighter.java index 278b556733..64676fa907 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Electric_Lighter.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/items/behaviours/Behaviour_Electric_Lighter.java @@ -7,9 +7,15 @@ import gregtech.api.GregTech_API; import gregtech.api.items.GT_MetaBase_Item; import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_Utility; -import gregtech.api.util.GT_Utility.ItemNBT; import gregtech.common.items.behaviors.Behaviour_None; import gtPlusPlus.api.objects.Logger; +import gtPlusPlus.core.entity.projectile.EntityLightningAttack; +import gtPlusPlus.core.entity.projectile.EntityThrowableBomb; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.minecraft.NBTUtils; +import gtPlusPlus.core.util.minecraft.PlayerUtils; +import gtPlusPlus.core.util.sys.KeyboardUtils; import gtPlusPlus.xmod.gregtech.common.helpers.ChargingHelper; import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools; import ic2.api.item.IElectricItemManager; @@ -19,15 +25,12 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class Behaviour_Electric_Lighter extends Behaviour_None { - private final ItemStack mLighter; - - private final long mFuelAmount; - private final String mTooltip = GT_LanguageManager.addStringLocalization("gt.behaviour.lighter.tooltip", "Can light things on Fire"); private final String mTooltipUses = GT_LanguageManager.addStringLocalization("gt.behaviour.lighter.uses", @@ -35,9 +38,8 @@ public class Behaviour_Electric_Lighter extends Behaviour_None { private final String mTooltipUnstackable = GT_LanguageManager.addStringLocalization("gt.behaviour.unstackable", "Not usable when stacked!"); - public Behaviour_Electric_Lighter(ItemStack aFullLighter, long aFuelAmount) { - this.mLighter = aFullLighter; - this.mFuelAmount = aFuelAmount; + public Behaviour_Electric_Lighter() { + } public boolean onLeftClickEntity(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, Entity aEntity) { @@ -60,30 +62,97 @@ public class Behaviour_Electric_Lighter extends Behaviour_None { public boolean onItemUse(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) { + if (!aWorld.isRemote && aStack.stackSize == 1) { + if (aPlayer.isSneaking()) { + Logger.INFO("Changing Mode"); + boolean aCurrentMode = NBTUtils.getBoolean(aStack, "aFireballMod"); + Logger.INFO("Is currently in Fireball mode? "+aCurrentMode); + boolean aNewMode = Utils.invertBoolean(aCurrentMode); + Logger.INFO("Is now set to Fireball mode? "+aNewMode); + aStack.getTagCompound().setBoolean("aFireballMod", aNewMode); + //NBTUtils.setBoolean(aStack, "aFireballMode", aNewMode); + PlayerUtils.messagePlayer(aPlayer, "Current Mode: "+EnumChatFormatting.RED+(aNewMode ? "Projectile" : "Fire Starter")); + } + else { + boolean aCurrentMode = NBTUtils.getBoolean(aStack, "aFireballMod"); + if (aCurrentMode) { + //Shoot Lightning Attack + aWorld.playSoundAtEntity(aPlayer, "random.bow", 0.5F, 0.4F / (CORE.RANDOM.nextFloat() * 0.4F + 0.8F)); + if (!aWorld.isRemote) { + aWorld.spawnEntityInWorld(new EntityLightningAttack(aWorld, aPlayer, hitX, hitY, hitZ)); + } + } + else { + //Lights Fires Mode + Logger.WARNING("Preparing Lighter a"); + boolean rOutput = false; + ForgeDirection tDirection = ForgeDirection.getOrientation(aSide); + aX += tDirection.offsetX; + aY += tDirection.offsetY; + aZ += tDirection.offsetZ; + if (GT_Utility.isBlockAir(aWorld, aX, aY, aZ) && aPlayer.canPlayerEdit(aX, aY, aZ, aSide, aStack)) { + Logger.WARNING("Preparing Lighter b"); + if (this.prepare(aStack) || aPlayer.capabilities.isCreativeMode) { + Logger.WARNING("Preparing Lighter c"); + GT_Utility.sendSoundToPlayers(aWorld, (String) GregTech_API.sSoundList.get(6), 1.0F, 1.0F, aX, aY, + aZ); + aWorld.setBlock(aX, aY, aZ, Blocks.fire); + rOutput = true; + // ItemNBT.setLighterFuel(aStack, tFuelAmount); + return rOutput; + } + } + } + } + } + Logger.WARNING("Preparing Lighter z"); return false; } public boolean onItemUseFirst(GT_MetaBase_Item aItem, ItemStack aStack, EntityPlayer aPlayer, World aWorld, int aX, int aY, int aZ, int aSide, float hitX, float hitY, float hitZ) { - if (!aWorld.isRemote && aStack.stackSize == 1) { - Logger.WARNING("Preparing Lighter a"); - boolean rOutput = false; - ForgeDirection tDirection = ForgeDirection.getOrientation(aSide); - aX += tDirection.offsetX; - aY += tDirection.offsetY; - aZ += tDirection.offsetZ; - if (GT_Utility.isBlockAir(aWorld, aX, aY, aZ) && aPlayer.canPlayerEdit(aX, aY, aZ, aSide, aStack)) { - Logger.WARNING("Preparing Lighter b"); - if (this.prepare(aStack) || aPlayer.capabilities.isCreativeMode) { - Logger.WARNING("Preparing Lighter c"); - GT_Utility.sendSoundToPlayers(aWorld, (String) GregTech_API.sSoundList.get(6), 1.0F, 1.0F, aX, aY, - aZ); - aWorld.setBlock(aX, aY, aZ, Blocks.fire); - rOutput = true; - // ItemNBT.setLighterFuel(aStack, tFuelAmount); - return rOutput; - } + if (!aWorld.isRemote && aStack.stackSize == 1) { + if (aPlayer.isSneaking()) { + Logger.INFO("Changing Mode"); + boolean aCurrentMode = NBTUtils.getBoolean(aStack, "aFireballMod"); + Logger.INFO("Is currently in Fireball mode? "+aCurrentMode); + boolean aNewMode = Utils.invertBoolean(aCurrentMode); + Logger.INFO("Is now set to Fireball mode? "+aNewMode); + aStack.getTagCompound().setBoolean("aFireballMod", aNewMode); + //NBTUtils.setBoolean(aStack, "aFireballMode", aNewMode); + PlayerUtils.messagePlayer(aPlayer, "Current Mode: "+EnumChatFormatting.RED+(aNewMode ? "Projectile" : "Fire Starter")); } + else { + boolean aCurrentMode = NBTUtils.getBoolean(aStack, "aFireballMod"); + if (aCurrentMode) { + //Shoot Lightning Attack + aWorld.playSoundAtEntity(aPlayer, "random.bow", 0.5F, 0.4F / (CORE.RANDOM.nextFloat() * 0.4F + 0.8F)); + if (!aWorld.isRemote) { + aWorld.spawnEntityInWorld(new EntityLightningAttack(aWorld, aPlayer, hitX, hitY, hitZ)); + } + } + else { + //Lights Fires Mode + Logger.WARNING("Preparing Lighter a"); + boolean rOutput = false; + ForgeDirection tDirection = ForgeDirection.getOrientation(aSide); + aX += tDirection.offsetX; + aY += tDirection.offsetY; + aZ += tDirection.offsetZ; + if (GT_Utility.isBlockAir(aWorld, aX, aY, aZ) && aPlayer.canPlayerEdit(aX, aY, aZ, aSide, aStack)) { + Logger.WARNING("Preparing Lighter b"); + if (this.prepare(aStack) || aPlayer.capabilities.isCreativeMode) { + Logger.WARNING("Preparing Lighter c"); + GT_Utility.sendSoundToPlayers(aWorld, (String) GregTech_API.sSoundList.get(6), 1.0F, 1.0F, aX, aY, + aZ); + aWorld.setBlock(aX, aY, aZ, Blocks.fire); + rOutput = true; + // ItemNBT.setLighterFuel(aStack, tFuelAmount); + return rOutput; + } + } + } + } } Logger.WARNING("Preparing Lighter z"); return false; @@ -138,6 +207,17 @@ public class Behaviour_Electric_Lighter extends Behaviour_None { NBTTagCompound tNBT = aStack.getTagCompound(); aList.add(this.mTooltipUses + " " + aUses); aList.add(this.mTooltipUnstackable); + + + boolean aCurrentMode; + if (NBTUtils.hasKey(aStack, "aFireballMode")) { + aCurrentMode = NBTUtils.getBoolean(aStack, "aFireballMod"); + } + else { + aStack.getTagCompound().setBoolean("aFireballMod", false); + aCurrentMode = false; + } + aList.add("Current Mode: "+EnumChatFormatting.RED+(aCurrentMode ? "Projectile" : "Fire Starter")); return aList; } } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_ElectricButcherKnife.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_ElectricButcherKnife.java index ff4be9dd93..7aa7529817 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_ElectricButcherKnife.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_ElectricButcherKnife.java @@ -13,6 +13,7 @@ import gregtech.common.items.behaviors.Behaviour_None; import gregtech.common.tools.GT_Tool; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtTools; import net.minecraft.block.Block; +import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityIronGolem; @@ -39,7 +40,7 @@ extends GT_Tool { @Override public int getToolDamagePerBlockBreak() { - return 50; + return 100; } @Override @@ -49,12 +50,12 @@ extends GT_Tool { @Override public int getToolDamagePerContainerCraft() { - return 400; + return 100; } @Override public int getToolDamagePerEntityAttack() { - return 100; + return 200; } @Override @@ -111,41 +112,10 @@ extends GT_Tool { return false; } - @Override - public boolean isWeapon() { - return true; - } - @Override public boolean isMinableBlock(final Block aBlock, final byte aMetaData) { final String tTool = aBlock.getHarvestTool(aMetaData); - return (tTool != null) && (tTool.equals("sword") || tTool.equals("file")); - } - - - @Override - public int convertBlockDrops(final List aDrops, final ItemStack aStack, final EntityPlayer aPlayer, final Block aBlock, final int aX, final int aY, final int aZ, final byte aMetaData, final int aFortune, final boolean aSilkTouch, final BlockEvent.HarvestDropsEvent aEvent) { - int rConversions = 0; - /*GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sHammerRecipes.findRecipe(null, true, 2147483647L, null, new ItemStack[]{new ItemStack(aBlock, 1, aMetaData)}); - if ((tRecipe == null) || (aBlock.hasTileEntity(aMetaData))) { - for (final ItemStack tDrop : aDrops) { - tRecipe = GT_Recipe.GT_Recipe_Map.sHammerRecipes.findRecipe(null, true, 2147483647L, null, new ItemStack[]{GT_Utility.copyAmount(1L, new Object[]{tDrop})}); - if (tRecipe != null) { - final ItemStack tHammeringOutput = tRecipe.getOutput(0); - if (tHammeringOutput != null) { - rConversions += tDrop.stackSize; - tDrop.stackSize *= tHammeringOutput.stackSize; - tHammeringOutput.stackSize = tDrop.stackSize; - GT_Utility.setStack(tDrop, tHammeringOutput); - } - } - } - } else { - aDrops.clear(); - aDrops.add(tRecipe.getOutput(0)); - rConversions++; - }*/ - return rConversions; + return (tTool != null) && (tTool.equals("sword") || tTool.equals("knife")); } @Override @@ -193,5 +163,30 @@ extends GT_Tool { public boolean isGrafter() { return false; } + + @Override + public int getHurtResistanceTime(int aOriginalHurtResistance, Entity aEntity) { + return aOriginalHurtResistance * 2; + } + + @Override + public boolean isWeapon() { + return true; + } + + @Override + public boolean isMiningTool() { + return false; + } + + @Override + public Enchantment[] getEnchantments(ItemStack aStack) { + return LOOTING_ENCHANTMENT; + } + + @Override + public int[] getEnchantmentLevels(ItemStack aStack) { + return new int[]{(4 + GT_MetaGenerated_Tool.getPrimaryMaterial(aStack).mToolQuality) / 2}; + } } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_ElectricLighter.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_ElectricLighter.java index cf6f33cc36..36e1161e83 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_ElectricLighter.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tools/TOOL_Gregtech_ElectricLighter.java @@ -9,7 +9,6 @@ import gregtech.api.enums.Materials; import gregtech.api.enums.Textures.ItemIcons; import gregtech.api.interfaces.IIconContainer; import gregtech.api.items.GT_MetaGenerated_Tool; -import gregtech.common.items.behaviors.Behaviour_None; import gregtech.common.tools.GT_Tool; import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtTools; import gtPlusPlus.xmod.gregtech.common.items.behaviours.Behaviour_Electric_Lighter; @@ -23,7 +22,6 @@ import net.minecraft.stats.AchievementList; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IChatComponent; -import net.minecraftforge.event.world.BlockEvent; public class TOOL_Gregtech_ElectricLighter extends GT_Tool { @@ -119,36 +117,9 @@ extends GT_Tool { @Override public boolean isMinableBlock(final Block aBlock, final byte aMetaData) { - final String tTool = aBlock.getHarvestTool(aMetaData); - return (tTool != null) && (tTool.equals("sword") || tTool.equals("file")); + return false; } - - @Override - public int convertBlockDrops(final List aDrops, final ItemStack aStack, final EntityPlayer aPlayer, final Block aBlock, final int aX, final int aY, final int aZ, final byte aMetaData, final int aFortune, final boolean aSilkTouch, final BlockEvent.HarvestDropsEvent aEvent) { - int rConversions = 0; - /*GT_Recipe tRecipe = GT_Recipe.GT_Recipe_Map.sHammerRecipes.findRecipe(null, true, 2147483647L, null, new ItemStack[]{new ItemStack(aBlock, 1, aMetaData)}); - if ((tRecipe == null) || (aBlock.hasTileEntity(aMetaData))) { - for (final ItemStack tDrop : aDrops) { - tRecipe = GT_Recipe.GT_Recipe_Map.sHammerRecipes.findRecipe(null, true, 2147483647L, null, new ItemStack[]{GT_Utility.copyAmount(1L, new Object[]{tDrop})}); - if (tRecipe != null) { - final ItemStack tHammeringOutput = tRecipe.getOutput(0); - if (tHammeringOutput != null) { - rConversions += tDrop.stackSize; - tDrop.stackSize *= tHammeringOutput.stackSize; - tHammeringOutput.stackSize = tDrop.stackSize; - GT_Utility.setStack(tDrop, tHammeringOutput); - } - } - } - } else { - aDrops.clear(); - aDrops.add(tRecipe.getOutput(0)); - rConversions++; - }*/ - return rConversions; - } - @Override public ItemStack getBrokenItem(final ItemStack aStack) { return null; @@ -164,10 +135,7 @@ extends GT_Tool { return !aIsToolHead ? GT_MetaGenerated_Tool.getPrimaryMaterial(aStack).mRGBa : Materials.Silver.mRGBa; - } - - - + } @Override public void onToolCrafted(final ItemStack aStack, final EntityPlayer aPlayer) { @@ -182,12 +150,12 @@ extends GT_Tool { @Override public IChatComponent getDeathMessage(final EntityLivingBase aPlayer, final EntityLivingBase aEntity) { - return new ChatComponentText(EnumChatFormatting.RED + aEntity.getCommandSenderName() + EnumChatFormatting.WHITE + " has been Ground out of existence by " + EnumChatFormatting.GREEN + aPlayer.getCommandSenderName() + EnumChatFormatting.WHITE); + return new ChatComponentText(EnumChatFormatting.RED + aEntity.getCommandSenderName() + EnumChatFormatting.WHITE + " has been prodded out of existence by " + EnumChatFormatting.GREEN + aPlayer.getCommandSenderName() + EnumChatFormatting.WHITE); } @Override public void onStatsAddedToTool(final GT_MetaGenerated_Tool aItem, final int aID) { - aItem.addItemBehavior(aID, new Behaviour_Electric_Lighter(null, 32000)); + aItem.addItemBehavior(aID, new Behaviour_Electric_Lighter()); } @Override -- cgit From 90f2e5a230cfad500a06e09a5a1297dd3efb02fe Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Thu, 18 Apr 2019 16:57:20 +1000 Subject: % Made Bombs better. --- .../entity/projectile/EntityThrowableBomb.java | 46 ++++++++++++++++++---- .../item/general/throwables/ItemThrowableBomb.java | 3 +- 2 files changed, 40 insertions(+), 9 deletions(-) (limited to 'src/Java') diff --git a/src/Java/gtPlusPlus/core/entity/projectile/EntityThrowableBomb.java b/src/Java/gtPlusPlus/core/entity/projectile/EntityThrowableBomb.java index 9e72daf687..49daa459e0 100644 --- a/src/Java/gtPlusPlus/core/entity/projectile/EntityThrowableBomb.java +++ b/src/Java/gtPlusPlus/core/entity/projectile/EntityThrowableBomb.java @@ -13,6 +13,7 @@ import gregtech.api.util.GT_Utility; import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.EntityUtils; +import gtPlusPlus.core.util.minecraft.gregtech.PollutionUtils; public class EntityThrowableBomb extends EntityThrowable { @@ -39,19 +40,26 @@ public class EntityThrowableBomb extends EntityThrowable { if (object.entityHit != null) { byte b0 = 6; if (!GT_Utility.isWearingFullRadioHazmat((EntityLivingBase) object.entityHit)){ - object.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), b0); - EntityUtils.setEntityOnFire(object.entityHit, 10); + object.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), 20); + EntityUtils.setEntityOnFire(object.entityHit, 20); object.entityHit.fireResistance = 0; ravage(EntityUtils.findBlockPosUnderEntity(object.entityHit)); } } - if (object.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK){ - ravage(new BlockPos(xBlock, yBlock, zBlock)); + if (object.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK){ + + ravage(new BlockPos(xBlock, yBlock, zBlock)); + for (BlockPos aSur : new BlockPos(xBlock, yBlock, zBlock).getSurroundingBlocks()) { + ravage(new BlockPos(aSur.xPos, aSur.yPos, aSur.zPos)); + for (BlockPos aSur2 : new BlockPos(aSur.xPos, aSur.yPos, aSur.zPos).getSurroundingBlocks()) { + //ravage(new BlockPos(aSur2.xPos, aSur2.yPos, aSur2.zPos)); + } + } } String mParticleType = "reddust"; int e=0; - for (int i = 0; i < 24; ++i) { + for (int i = 0; i < 127; ++i) { if ((e = MathUtils.randInt(0, 5)) <= 1){ if (e==0) mParticleType = "largesmoke"; @@ -68,19 +76,41 @@ public class EntityThrowableBomb extends EntityThrowable { private boolean ravage(BlockPos blockpos){ - int radius = 1; + int radius = 5; for (int i=(blockpos.xPos-radius);i<(blockpos.xPos+radius);i++){ for (int j=(blockpos.yPos-radius);j<(blockpos.yPos+radius);j++){ for (int h=(blockpos.zPos-radius);h<(blockpos.zPos+radius);h++){ - int mChance = MathUtils.randInt(1, 10); + int mChance = MathUtils.randInt(0, 100); if (mChance <= 3){ Block mBlockhit = worldObj.getBlock(i, j, h); this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("flame", this.posX+MathUtils.randDouble(-2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); + this.worldObj.spawnParticle("largesmoke", this.posX+MathUtils.randDouble(2, 2), this.posY+MathUtils.randDouble(-2, 2), this.posZ+MathUtils.randDouble(-2, 2), 0.0D, 0.0D, 0.0D); - //GT_Pollution.addPollution(worldObj.getChunkFromBlockCoords(blockpos.xPos, blockpos.zPos), mPol); + PollutionUtils.addPollution(worldObj.getChunkFromBlockCoords(blockpos.xPos, blockpos.zPos), 500); this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 0.01f, true); if (mBlockhit == Blocks.grass || mBlockhit == Blocks.mycelium){ worldObj.setBlock(i, j+1, h, Blocks.fire); diff --git a/src/Java/gtPlusPlus/core/item/general/throwables/ItemThrowableBomb.java b/src/Java/gtPlusPlus/core/item/general/throwables/ItemThrowableBomb.java index 9467c3a58c..e8f76ce64c 100644 --- a/src/Java/gtPlusPlus/core/item/general/throwables/ItemThrowableBomb.java +++ b/src/Java/gtPlusPlus/core/item/general/throwables/ItemThrowableBomb.java @@ -12,6 +12,7 @@ import gtPlusPlus.core.item.base.CoreItem; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.core.util.minecraft.NBTUtils; +import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; @@ -51,7 +52,7 @@ public class ItemThrowableBomb extends CoreItem { for (ItemStack aPlaySlot : player.inventory.mainInventory) { if (aPlaySlot != null) { for (ItemStack aLighter : mLighters) { - if (GT_Utility.areStacksEqual(aPlaySlot, aLighter)) { + if (GT_Utility.areStacksEqual(aPlaySlot, aLighter) || (aPlaySlot.getItem() instanceof MetaGeneratedGregtechTools && aPlaySlot.getItemDamage() == MetaGeneratedGregtechTools.ELECTRIC_LIGHTER)) { hasLighter = true; break; } -- cgit From 9667ce84aa56b1a1e41d8ac8188d0d41c682914e Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Thu, 18 Apr 2019 17:21:03 +1000 Subject: + Basic loot pool for Deep Earth Drilling Platform. + Added Runite and Granite Ores. --- .../everglades/GTplusplus_Everglades.java | 19 +++ ...chMetaTileEntity_BedrockMiningPlatformBase.java | 146 +++++++++++++++++++++ .../xmod/gregtech/loaders/RecipeGen_Ore.java | 6 +- 3 files changed, 168 insertions(+), 3 deletions(-) (limited to 'src/Java') diff --git a/src/Java/gtPlusPlus/everglades/GTplusplus_Everglades.java b/src/Java/gtPlusPlus/everglades/GTplusplus_Everglades.java index db94bae390..698a5ec80a 100644 --- a/src/Java/gtPlusPlus/everglades/GTplusplus_Everglades.java +++ b/src/Java/gtPlusPlus/everglades/GTplusplus_Everglades.java @@ -132,6 +132,25 @@ public class GTplusplus_Everglades implements ActionListener { ELEMENT.getInstance().TRINIUM_REFINED.getRGBA()); } + + + /* + * OSRS Materials + */ + + MaterialGenerator.generateOreMaterial( + ELEMENT.STANDALONE.GRANITE, + true, + false, + false, + ELEMENT.STANDALONE.GRANITE.getRGBA()); + MaterialGenerator.generateOreMaterial( + ELEMENT.STANDALONE.RUNITE, + true, + false, + false, + ELEMENT.STANDALONE.RUNITE.getRGBA()); + } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java index 9ac67cf874..3d2094c8fa 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java @@ -27,7 +27,10 @@ import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.block.ModBlocks; import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.material.ELEMENT; import gtPlusPlus.core.material.Material; +import gtPlusPlus.core.material.ORES; +import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.minecraft.FluidUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList; @@ -156,8 +159,23 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G this.putMiningPipesFromInputsInController(); if (!this.tryConsumeDrillingFluid()) { + Logger.INFO("No drilling Fluid."); return false; } + + if (this.mRuntime % 2 == 0) { + if (!this.tryConsumePyrotheum()) { + Logger.INFO("No tryConsumePyrotheum Fluid."); + return false; + } + } + else { + if (!this.tryConsumeCryotheum()) { + Logger.INFO("No tryConsumeCryotheum Fluid."); + return false; + } + } + if (this.oreBlockPositions.isEmpty()) { // Hit bedrock Either retract pipe or Dig! @@ -171,6 +189,134 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } // Full Power! else { + + //We assume this drill head is in a supported location at Y 5 or less. It should also be touching bedrock. + ItemStack[] aOutputs = new ItemStack[] { + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreThorium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreThorium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreTungstate", 1), + ELEMENT.STANDALONE.RUNITE.getOre(1), + ELEMENT.STANDALONE.GRANITE.getOre(1), + ORES.AGARDITE_CD.getOre(1), + ORES.ALBURNITE.getOre(1), + ORES.CERITE.getOre(1), + ORES.FLUORCAPHITE.getOre(1), + ORES.HIBONITE.getOre(1), + ORES.MIESSIITE.getOre(1), + ORES.ZIMBABWEITE.getOre(1), + ORES.SAMARSKITE_YB.getOre(1), + }; + + int aChance = MathUtils.randInt(0, 10000); + if (aChance <= 100) { + ItemStack aChance1 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); + if (ItemUtils.checkForInvalidItems(aChance1)) { + this.addOutput(aChance1); + } + ItemStack aChance2 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); + if (ItemUtils.checkForInvalidItems(aChance2)) { + this.addOutput(aChance2); + } + ItemStack aChance3 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); + if (ItemUtils.checkForInvalidItems(aChance3)) { + this.addOutput(aChance3); + } + } didWork[g] = true; } } diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java index 15627a827f..1cb999241a 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Ore.java @@ -107,7 +107,7 @@ public class RecipeGen_Ore extends RecipeGen_Base { //If Fourth Output has no solid output, try the Fifth (If it exists) if (!bonusB.hasSolidForm() && material.getComposites().size() >= 5 && material.getComposites().get(4) != null) { bonusB = material.getComposites().get(4).getStackMaterial(); - //If Fifth Output has no solid output, default out to Chrome. + //If Fifth Output has no solid output, default out to Stone dust. if (!bonusB.hasSolidForm()) { allFailed = true; bonusB = mStone; @@ -127,11 +127,11 @@ public class RecipeGen_Ore extends RecipeGen_Base { //Default out if it's made of fluids or some shit. if (bonusA == null) { - bonusA = tVoltageMultiplier <= 100 ? material : mStone; + bonusA = tVoltageMultiplier > 100 ? material : mStone; } //Default out if it's made of fluids or some shit. if (allFailed || bonusB == null) { - bonusB = tVoltageMultiplier <= 100 ? material : mStone; + bonusB = tVoltageMultiplier > 100 ? material : mStone; } AutoMap> componentMap = new AutoMap>(); -- cgit From 9ee4e1bff55c1af2bd313a97b71f6c722c5be703 Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Thu, 18 Apr 2019 18:25:45 +1000 Subject: $ Small bit of work on the Deep Earth Drilling Platform. --- .../core/handler/AchievementHandler.java | 3 +- ...chMetaTileEntity_BedrockMiningPlatformBase.java | 282 +++++++++++++++++++-- 2 files changed, 262 insertions(+), 23 deletions(-) (limited to 'src/Java') diff --git a/src/Java/gtPlusPlus/core/handler/AchievementHandler.java b/src/Java/gtPlusPlus/core/handler/AchievementHandler.java index 4cd5431ebd..9053875058 100644 --- a/src/Java/gtPlusPlus/core/handler/AchievementHandler.java +++ b/src/Java/gtPlusPlus/core/handler/AchievementHandler.java @@ -19,6 +19,7 @@ import gtPlusPlus.core.material.ELEMENT; import gtPlusPlus.core.util.minecraft.ItemUtils; import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList; import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_MultiBlockBase; +import gtPlusPlus.xmod.gregtech.common.items.MetaGeneratedGregtechTools; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; @@ -43,7 +44,7 @@ public class AchievementHandler { GT_Log.out.println("Initializing GT++ achievements"); //register first - this.registerAchievement(aBaseAchievementName, 0, 0, GT_MetaGenerated_Tool_01.INSTANCE.getToolWithStats(GT_MetaGenerated_Tool_01.HARDHAMMER, 1, Materials.Neutronium, Materials.Osmium, null), "", true); + this.registerAchievement(aBaseAchievementName, 0, 0, MetaGeneratedGregtechTools.INSTANCE.getToolWithStats(MetaGeneratedGregtechTools.ANGLE_GRINDER, 1, Materials.Osmium, Materials.Osmium, null), "", true); //Useful Info boolean cores = CORE.ConfigSwitches.requireControlCores; diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java index 3d2094c8fa..44095aed62 100644 --- a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java +++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/bedrock/GregtechMetaTileEntity_BedrockMiningPlatformBase.java @@ -1,5 +1,7 @@ package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.production.bedrock; +import static gregtech.api.GregTech_API.sBlockCasings4; + import java.util.ArrayList; import java.util.HashMap; @@ -116,25 +118,180 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G public void saveNBTData(final NBTTagCompound aNBT) { super.saveNBTData(aNBT); aNBT.setDouble("mProductionModifier", mProductionModifier); - for (int g = 0; g < 5; g++) { - aNBT.setBoolean("isPickingPipes" + g, this.isPickingPipes[g]); - } } public void loadNBTData(final NBTTagCompound aNBT) { super.loadNBTData(aNBT); this.mProductionModifier = aNBT.getDouble("mProductionModifier"); - for (int g = 0; g < 5; g++) { - this.isPickingPipes[g] = aNBT.getBoolean("isPickingPipes" + g); - } } public boolean checkRecipe(final ItemStack aStack) { - this.setElectricityStats(); + //this.setElectricityStats(); boolean[] didWork = new boolean[5]; - - final int oldYHead = this.yHead[0]; + + if (!this.tryConsumeDrillingFluid()) { + Logger.INFO("No drilling Fluid."); + return false; + } + + if (MathUtils.isNumberEven((int) this.mProductionModifier)) { + if (!this.tryConsumePyrotheum()) { + Logger.INFO("No tryConsumePyrotheum Fluid."); + return false; + } + else { + mProductionModifier++; + Logger.INFO("tryConsumePyrotheum Fluid. "+(int) this.mProductionModifier); + } + } + else { + if (!this.tryConsumeCryotheum()) { + Logger.INFO("No tryConsumeCryotheum Fluid."); + return false; + } + else { + mProductionModifier++; + Logger.INFO("tryConsumeCryotheum Fluid. "+(int) this.mProductionModifier); + } + } + + for (int i = 0; i < 5; i++) { + //We assume this drill head is in a supported location at Y 5 or less. It should also be touching bedrock. + ItemStack[] aOutputs = new ItemStack[] { + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().IRON.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().COPPER.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().GOLD.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().SILVER.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().ALUMINIUM.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().TIN.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().ZINC.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ELEMENT.getInstance().NICKEL.getOre(1), + ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreBauxite", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRedstone", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreDiamond", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreEmerald", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreRuby", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreSapphire", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreThorium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreThorium", 1), + ItemUtils.getItemStackOfAmountFromOreDict("oreTungstate", 1), + ELEMENT.STANDALONE.RUNITE.getOre(1), + ELEMENT.STANDALONE.GRANITE.getOre(1), + ORES.AGARDITE_CD.getOre(1), + ORES.ALBURNITE.getOre(1), + ORES.CERITE.getOre(1), + ORES.FLUORCAPHITE.getOre(1), + ORES.HIBONITE.getOre(1), + ORES.MIESSIITE.getOre(1), + ORES.ZIMBABWEITE.getOre(1), + ORES.SAMARSKITE_YB.getOre(1), + }; + + int aChance = MathUtils.randInt(0, 10000); + if (aChance <= 100) { + ItemStack aChance1 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); + if (ItemUtils.checkForInvalidItems(aChance1)) { + this.addOutput(aChance1); + } + ItemStack aChance2 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); + if (ItemUtils.checkForInvalidItems(aChance2)) { + this.addOutput(aChance2); + } + ItemStack aChance3 = ItemUtils.getSimpleStack(aOutputs[MathUtils.randInt(0, aOutputs.length-1)], MathUtils.randInt(0, 3)); + if (ItemUtils.checkForInvalidItems(aChance3)) { + this.addOutput(aChance3); + } + Logger.INFO("Tried to add some loot to DEDP."); + } + didWork[i] = true; + + } + + + + /*final int oldYHead = this.yHead[0]; if (!this.checkPipesAndSetYHead() || !this.isEnergyEnough()) { this.stopMachine(); return false; @@ -168,12 +325,18 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G Logger.INFO("No tryConsumePyrotheum Fluid."); return false; } + else { + Logger.INFO("tryConsumePyrotheum Fluid."); + } } else { if (!this.tryConsumeCryotheum()) { Logger.INFO("No tryConsumeCryotheum Fluid."); return false; } + else { + Logger.INFO("tryConsumeCryotheum Fluid."); + } } @@ -321,8 +484,11 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } } } + else { + didWork[g] = true; + } } - } + }*/ // Fail recipe handling if one pipe didn't handle properly, to try again // next run. @@ -332,7 +498,14 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G return false; } } - // Logger.INFO("[Bedrock Miner] Success? [x]"); + + this.mEUt = 8000; + this.mMaxProgresstime = 10; + this.mEfficiencyIncrease = 10000; + //this.mProgresstime = (this.mMaxProgresstime > this.mProgresstime ? this.mProgresstime + 1 : 0); + + updateSlots(); + Logger.INFO("[Bedrock Miner] Success? [x]"); return true; } @@ -428,16 +601,16 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G boolean g = (this.getBaseMetaTileEntity().getWorld().getTotalWorldTime() % 2 == 0); consumed = (g ? tryConsumePyrotheum() : tryConsumeCryotheum()); if (consumed) { - increaseProduction(g ? 2 : 1); + //increaseProduction(g ? 2 : 1); } else { - lowerProduction(g ? 5 : 3); + //lowerProduction(g ? 5 : 3); } return consumed; } private boolean tryConsumePyrotheum() { - return this.depleteInput(FluidUtils.getFluidStack("pyrotheum", 2)); + return this.depleteInput(FluidUtils.getFluidStack("pyrotheum", 4)); } private boolean tryConsumeCryotheum() { @@ -528,11 +701,11 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } boolean didWork[] = new boolean[3]; - if (this.checkBlockAndMeta(this.xCenter[pipe], this.yHead[pipe] - 1, this.zCenter[pipe], Blocks.bedrock, + /*if (this.checkBlockAndMeta(this.xCenter[pipe], this.yHead[pipe] - 1, this.zCenter[pipe], Blocks.bedrock, 32767)) { // Logger.INFO("[Bedrock Miner] Pipe "+pipe+" is at Bedrock."); return false; - } + }*/ didWork[0] = this.getBaseMetaTileEntity().getWorld().setBlock(this.xCenter[pipe], this.yHead[pipe] - 1, this.zCenter[pipe], GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipeTipBlock); if (didWork[0]) { @@ -571,7 +744,72 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G public boolean checkMachine(final IGregTechTileEntity aBaseMetaTileEntity, final ItemStack aStack) { this.updateCoordinates(); - for (int xOff = -1 + this.back.offsetX; xOff <= 1 + this.back.offsetX; ++xOff) { + + + + int xDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX; + int zDir = ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ; + int tAmount = 0; + if (!aBaseMetaTileEntity.getAirOffset(xDir, 0, zDir)) { + return false; + } else { + + Block aCasing = Block.getBlockFromItem(getCasingBlockItem().getItem()); + + for (int i = -1; i < 2; ++i) { + for (int j = -1; j < 2; ++j) { + for (int h = -1; h < 2; ++h) { + if (h != 0 || (xDir + i != 0 || zDir + j != 0) && (i != 0 || j != 0)) { + IGregTechTileEntity tTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityOffset(xDir + i, + h, zDir + j); + Block aBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j); + int aMeta = aBaseMetaTileEntity.getMetaIDOffset(xDir + i, h, zDir + j); + + if (!this.addToMachineList(tTileEntity, 48)) { + if (aBlock != aCasing) { + Logger.INFO("Found Bad Casing"); + return false; + } + if (aMeta != 3) { + Logger.INFO("Found Bad Meta"); + return false; + } + } + ++tAmount; + + + + /*if (!isValidBlockForStructure(tTileEntity, 48, true, aBlock, aMeta, sBlockCasings4, 0)) { + Logger.INFO("Bad centrifuge casing"); + return false; + }*/ + + } + } + } + } + return tAmount >= 10; + } + + + + + + + + + + + + + + + + + + + + /*for (int xOff = -1 + this.back.offsetX; xOff <= 1 + this.back.offsetX; ++xOff) { for (int zOff = -1 + this.back.offsetZ; zOff <= 1 + this.back.offsetZ; ++zOff) { if (xOff != 0 || zOff != 0) { final Block tBlock = aBaseMetaTileEntity.getBlockOffset(xOff, 0, zOff); @@ -582,7 +820,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G && !this.addInputToMachineList(tTileEntity, this.casingTextureIndex) && !this.addOutputToMachineList(tTileEntity, this.casingTextureIndex) && !this.addEnergyInputToMachineList(tTileEntity, this.casingTextureIndex)) { - Logger.INFO("[Bedrock Miner] Found bad blosck in Structure."); + Logger.INFO("[Bedrock Miner] Found bad block in Structure."); if (tBlock != null) { //Logger.INFO("[Bedrock Miner] Found "+(new ItemStack(tBlock, tBlock.getDamageValue(aBaseMetaTileEntity.getWorld(), xOff, 0, zOff))).getDisplayName()+", expected "+this.getCasingBlockItem().get(0L, new Object[0]).getDisplayName()); } @@ -612,12 +850,12 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } } Logger.INFO("[Bedrock Miner] Built."); - return true; + return true;*/ } private void updateCoordinates() { this.xDrill = this.getBaseMetaTileEntity().getXCoord(); - this.yDrill = this.getBaseMetaTileEntity().getYCoord(); + this.yDrill = this.getBaseMetaTileEntity().getYCoord()-1; this.zDrill = this.getBaseMetaTileEntity().getZCoord(); this.back = ForgeDirection.getOrientation((int) this.getBaseMetaTileEntity().getBackFacing()); @@ -641,7 +879,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G private boolean checkPipesAndSetYHead() { for (int g = 0; g < 5; g++) { - this.yHead[g] = this.yDrill - 1; + this.yHead[g] = this.yDrill -5; // Logger.INFO("[Bedrock Miner] Set yHead["+g+"] to // "+this.yHead[g]+"."); while (this.checkBlockAndMeta(this.xCenter[g], this.yHead[g], this.zCenter[g], @@ -650,7 +888,7 @@ public abstract class GregtechMetaTileEntity_BedrockMiningPlatformBase extends G } if (this.checkBlockAndMeta(this.xCenter[g], this.yHead[g], this.zCenter[g], GregtechMetaTileEntity_BedrockMiningPlatformBase.miningPipeTipBlock, 32767) - || ++this.yHead[g] == this.yDrill) { + || ++this.yHead[g] == this.yDrill || GT_Utility.isBlockAir(this.getBaseMetaTileEntity().getWorld(), this.xCenter[g], this.yHead[g], this.zCenter[g])) { continue; } this.getBaseMetaTileEntity().getWorld().setBlock(this.xCenter[g], this.yHead[g], this.zCenter[g], -- cgit From 04198555e3af515fd8e7910dd0575f7e428e5a6b Mon Sep 17 00:00:00 2001 From: Alkalus <3060479+draknyte1@users.noreply.github.com> Date: Sat, 20 Apr 2019 13:01:30 +1000 Subject: % Tweaked DEDP outputs. $ Fixed IC2 Hazmat ASM throwing IncompatibleClassCh