diff --git a/libs/src/Thaumcraft-1.7.10-4.2.3.5-src.jar b/libs/src/Thaumcraft-1.7.10-4.2.3.5-src.jar index fd8258a..2035f3a 100644 Binary files a/libs/src/Thaumcraft-1.7.10-4.2.3.5-src.jar and b/libs/src/Thaumcraft-1.7.10-4.2.3.5-src.jar differ diff --git a/src/main/java/gregtechmod/common/covers/GT_Cover_Crafting.java b/src/main/java/gregtechmod/common/covers/GT_Cover_Crafting.java index 1c5db75..a1b74d5 100644 --- a/src/main/java/gregtechmod/common/covers/GT_Cover_Crafting.java +++ b/src/main/java/gregtechmod/common/covers/GT_Cover_Crafting.java @@ -6,7 +6,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.ContainerWorkbench; import net.minecraft.item.ItemStack; -import net.minecraft.network.packet.Packet100OpenWindow; +import net.minecraft.network.play.server.S2DPacketOpenWindow; public class GT_Cover_Crafting extends GT_CoverBehavior { @@ -17,15 +17,16 @@ public class GT_Cover_Crafting extends GT_CoverBehavior { @Override public boolean onCoverRightclick(byte aSide, int aCoverID, int aCoverVariable, ICoverable aTileEntity, EntityPlayer aPlayer, float aX, float aY, float aZ) { if (aPlayer instanceof EntityPlayerMP) { - ((EntityPlayerMP)aPlayer).incrementWindowID(); - ((EntityPlayerMP)aPlayer).playerNetServerHandler.sendPacketToPlayer(new Packet100OpenWindow(((EntityPlayerMP)aPlayer).currentWindowId, 1, "Crafting", 9, true)); - ((EntityPlayerMP)aPlayer).openContainer = new ContainerWorkbench(((EntityPlayerMP)aPlayer).inventory, ((EntityPlayerMP)aPlayer).worldObj, aTileEntity.getXCoord(), aTileEntity.getYCoord(), aTileEntity.getZCoord()) { + EntityPlayerMP tMPPlayer = (EntityPlayerMP) aPlayer; + tMPPlayer.getNextWindowId(); + tMPPlayer.playerNetServerHandler.sendPacket(new S2DPacketOpenWindow(tMPPlayer.currentWindowId, 1, "Crafting", 9, true)); + tMPPlayer.openContainer = new ContainerWorkbench(tMPPlayer.inventory, tMPPlayer.worldObj, aTileEntity.getXCoord(), aTileEntity.getYCoord(), aTileEntity.getZCoord()) { public boolean canInteractWith(EntityPlayer par1EntityPlayer) { return true; } }; - ((EntityPlayerMP)aPlayer).openContainer.windowId = ((EntityPlayerMP)aPlayer).currentWindowId; - ((EntityPlayerMP)aPlayer).openContainer.addCraftingToCrafters(((EntityPlayerMP)aPlayer)); + tMPPlayer.openContainer.windowId = tMPPlayer.currentWindowId; + tMPPlayer.openContainer.addCraftingToCrafters(tMPPlayer); } return true; } diff --git a/src/main/java/gregtechmod/common/tileentities/GT_MetaTileEntity_DragonEggEnergySiphon.java b/src/main/java/gregtechmod/common/tileentities/GT_MetaTileEntity_DragonEggEnergySiphon.java index 986c5ee..e3a9f8d 100644 --- a/src/main/java/gregtechmod/common/tileentities/GT_MetaTileEntity_DragonEggEnergySiphon.java +++ b/src/main/java/gregtechmod/common/tileentities/GT_MetaTileEntity_DragonEggEnergySiphon.java @@ -1,29 +1,40 @@ package gregtechmod.common.tileentities; +import java.lang.ref.SoftReference; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import cpw.mods.fml.common.network.NetworkRegistry; import gregtechmod.api.enums.GT_ConfigCategories; import gregtechmod.api.interfaces.IGregTechTileEntity; import gregtechmod.api.metatileentity.MetaTileEntity; import gregtechmod.api.util.GT_Config; -import net.minecraft.block.Block; +import gregtechmod.api.util.GT_Log; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import thaumcraft.api.EnumTag; -import thaumcraft.api.ObjectTags; -import thaumcraft.common.aura.AuraManager; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.common.lib.network.PacketHandler; +import thaumcraft.common.lib.network.fx.PacketFXEssentiaSource; +import thaumcraft.common.tiles.TileNode; public class GT_MetaTileEntity_DragonEggEnergySiphon extends MetaTileEntity { public static int sDragonEggEnergyPerTick = 128; public static boolean sAllowMultipleEggs = false, sAllowFlux = true; + private SoftReference cachedNode = new SoftReference<>(null); public static GT_MetaTileEntity_DragonEggEnergySiphon mActiveSiphon = null; public GT_MetaTileEntity_DragonEggEnergySiphon(int aID, String mName) { super(aID, mName); } - // TODO thaumcraft kekw + public GT_MetaTileEntity_DragonEggEnergySiphon() { } @@ -91,22 +102,36 @@ public class GT_MetaTileEntity_DragonEggEnergySiphon extends MetaTileEntity { if (getBaseMetaTileEntity().increaseStoredEnergyUnits(sDragonEggEnergyPerTick, false)) { if (sAllowFlux) { try { - ObjectTags tTags = new ObjectTags(); - switch (getBaseMetaTileEntity().getRandomNumber(1000)) { - case 0: tTags.add(EnumTag.MECHANISM, 3); break; - case 1: tTags.add(EnumTag.CONTROL, 1); break; - case 2: tTags.add(EnumTag.VOID, 1); break; - case 3: tTags.add(EnumTag.FLUX, 2); break; - case 4: tTags.add(EnumTag.ELDRITCH, 2); break; - case 5: tTags.add(EnumTag.EXCHANGE, 1); break; - case 6: tTags.add(EnumTag.MAGIC, 1); break; - case 7: tTags.add(EnumTag.POWER, 1); break; - case 8: tTags.add(EnumTag.MOTION, 3); break; - case 9: tTags.add(EnumTag.SPIRIT, 5); break; - default: tTags = null; break; + if (this.findNode()) { + TileNode node = cachedNode.get(); + AspectList aspects = new AspectList(); + switch (getBaseMetaTileEntity().getRandomNumber(1000)) { + case 0: aspects.add(Aspect.MECHANISM, 3); break; + case 1: aspects.add(Aspect.VOID, 1); break; + case 2: aspects.add(Aspect.ELDRITCH, 2); break; + case 3: aspects.add(Aspect.EXCHANGE, 1); break; + case 4: aspects.add(Aspect.MAGIC, 1); break; + case 5: aspects.add(Aspect.MOTION, 3); break; + case 6: aspects.add(Aspect.AIR, 2); break; + case 7: aspects.add(Aspect.EARTH, 2); break; + case 8: aspects.add(Aspect.FIRE, 2); break; + case 9: aspects.add(Aspect.WATER, 2); break; + case 10: aspects.add(Aspect.ORDER, 2); break; + case 11: aspects.add(Aspect.ENTROPY, 2); break; + } + + if (!aspects.aspects.isEmpty()) { + Aspect toAdd = aspects.getAspects()[0]; + TileEntity tThis = (TileEntity) this.getBaseMetaTileEntity(); + node.getAspects().add(aspects); + node.nodeChange(); + PacketHandler.INSTANCE.sendToAllAround(new PacketFXEssentiaSource(node.xCoord, node.yCoord, node.zCoord, (byte)(node.xCoord - tThis.xCoord), (byte)(node.yCoord - tThis.yCoord), (byte)(node.zCoord - tThis.zCoord), toAdd.getColor()), + new NetworkRegistry.TargetPoint(node.getWorldObj().provider.dimensionId, node.xCoord, node.yCoord, node.zCoord, 32.0)); + } } - if (tTags != null) AuraManager.addFluxToClosest(getBaseMetaTileEntity().getWorld(), getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getYCoord(), getBaseMetaTileEntity().getZCoord(), tTags); - } catch(Throwable e) {} + } catch(Throwable e) { + GT_Log.log.catching(e); + } } } if (mActiveSiphon != this && !sAllowMultipleEggs) @@ -122,6 +147,50 @@ public class GT_MetaTileEntity_DragonEggEnergySiphon extends MetaTileEntity { } } + private boolean findNode() { + List> nodesCoords = TileNode.locations.entrySet().stream() + .map(entry -> entry.getValue()) + .collect(Collectors.toList()); + TileEntity tThis = (TileEntity) this.getBaseMetaTileEntity(); + World tWorld = tThis.getWorldObj(); + + List coords = null; + double dist = Double.MAX_VALUE; + for (ArrayList nodeEntry : nodesCoords) { + if (nodeEntry.get(0) == tWorld.provider.dimensionId) { + double deltaX = tThis.xCoord + 0.5 - nodeEntry.get(1); + double deltaY = tThis.yCoord + 0.5 - nodeEntry.get(2); + double deltaZ = tThis.zCoord + 0.5 - nodeEntry.get(3); + double temp = deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ; + if (temp < dist) { + dist = temp; + coords = nodeEntry; + } + } + } + + if (coords != null && !coords.isEmpty()) { + TileEntity tr = tWorld.getTileEntity(coords.get(1), coords.get(2), coords.get(3)); + if (tr != null && tr instanceof TileNode) { + TileNode node = (TileNode) tr; + if (node.isInvalid()) { + String key = node.getId(); + node = null; + TileNode.locations.remove(key); + System.gc(); + return false; + } + + this.cachedNode = new SoftReference<>(node); + return true; + } else { + TileNode.locations.remove(String.format("%d:%d:%d:%d", coords.get(0), coords.get(1), coords.get(2), coords.get(3))); + } + } + + return false; + } + @Override public String getMainInfo() { return getBaseMetaTileEntity().isActive()?"Active":"Inactive"; diff --git a/src/main/java/gregtechmod/common/tileentities/GT_MetaTileEntity_MagicEnergyAbsorber.java b/src/main/java/gregtechmod/common/tileentities/GT_MetaTileEntity_MagicEnergyAbsorber.java index cbcd0a6..cf5c3e7 100644 --- a/src/main/java/gregtechmod/common/tileentities/GT_MetaTileEntity_MagicEnergyAbsorber.java +++ b/src/main/java/gregtechmod/common/tileentities/GT_MetaTileEntity_MagicEnergyAbsorber.java @@ -8,29 +8,36 @@ import gregtechmod.api.util.GT_Config; import gregtechmod.api.util.GT_Log; import java.util.ArrayList; - import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.item.EntityEnderCrystal; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; +import net.minecraft.init.Items; import net.minecraft.item.ItemEnchantedBook; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -import thaumcraft.api.EnumTag; -import thaumcraft.api.ObjectTags; -import thaumcraft.common.aura.AuraManager; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.util.ForgeDirection; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectSourceHelper; +import thaumcraft.common.blocks.BlockTaintFibres; import thaumcraft.common.entities.monster.EntityWisp; -// TODO THAUMCRAFT KEK +import thaumcraft.common.lib.events.EssentiaHandler; +import thaumcraft.common.lib.utils.Utils; +import thaumcraft.common.lib.world.ThaumcraftWorldGenerator; + public class GT_MetaTileEntity_MagicEnergyAbsorber extends MetaTileEntity { public static int sEnergyPerEnderCrystal = 32, sEnergyFromVis = 12800; - public static final ArrayList sUsedDragonCrystalList = new ArrayList(); + public static final Aspect[] supportedAspects = new Aspect[] {Aspect.AIR, Aspect.EARTH, Aspect.FIRE, Aspect.WATER, Aspect.ORDER, Aspect.ENTROPY}; public EntityEnderCrystal mTargetedCrystal; - + private int elementIndex = 0; + private Aspect energySource = null; public boolean isActive1 = false, isActive2 = false; public GT_MetaTileEntity_MagicEnergyAbsorber(int aID, String mName) { @@ -85,8 +92,14 @@ public class GT_MetaTileEntity_MagicEnergyAbsorber extends MetaTileEntity { sUsedDragonCrystalList.clear(); } - @Override + @SuppressWarnings("unchecked") + @Override public void onPostTick() { + if (getBaseMetaTileEntity().isServerSide() && energySource == null && getBaseMetaTileEntity().getWorld().getWorldTime() % 20 == 0) { + elementIndex = (elementIndex + 1) < 6 ? elementIndex + 1 : 0; + energySource = supportedAspects[elementIndex]; + } + if (getBaseMetaTileEntity().isServerSide() && getBaseMetaTileEntity().isAllowedToWork() && getBaseMetaTileEntity().getTimer()%10==0) { if (getBaseMetaTileEntity().getUniversalEnergyStored() < (getBaseMetaTileEntity().getOutputVoltage() * 10 + getMinimumStoredEU())) { try { @@ -95,8 +108,8 @@ public class GT_MetaTileEntity_MagicEnergyAbsorber extends MetaTileEntity { NBTTagList tEnchantments = mInventory[0].getEnchantmentTagList(); if (tEnchantments != null) { for (int i = 0; i < tEnchantments.tagCount(); i++) { - short tID = ((NBTTagCompound)tEnchantments.tagAt(i)).getShort("id"); - short tLevel = ((NBTTagCompound)tEnchantments.tagAt(i)).getShort("lvl"); + short tID = ((NBTTagCompound)tEnchantments.getCompoundTagAt(i)).getShort("id"); + short tLevel = ((NBTTagCompound)tEnchantments.getCompoundTagAt(i)).getShort("lvl"); if (tID > -1 && tID < Enchantment.enchantmentsList.length) { Enchantment tEnchantment = Enchantment.enchantmentsList[tID]; if (tEnchantment != null) { @@ -110,8 +123,8 @@ public class GT_MetaTileEntity_MagicEnergyAbsorber extends MetaTileEntity { NBTTagList tEnchantments = ((ItemEnchantedBook)mInventory[0].getItem()).func_92110_g(mInventory[0]); if (tEnchantments != null) { for (int i = 0; i < tEnchantments.tagCount(); i++) { - short tID = ((NBTTagCompound)tEnchantments.tagAt(i)).getShort("id"); - short tLevel = ((NBTTagCompound)tEnchantments.tagAt(i)).getShort("lvl"); + short tID = ((NBTTagCompound)tEnchantments.getCompoundTagAt(i)).getShort("id"); + short tLevel = ((NBTTagCompound)tEnchantments.getCompoundTagAt(i)).getShort("lvl"); if (tID > -1 && tID < Enchantment.enchantmentsList.length) { Enchantment tEnchantment = Enchantment.enchantmentsList[tID]; if (tEnchantment != null) { @@ -119,7 +132,7 @@ public class GT_MetaTileEntity_MagicEnergyAbsorber extends MetaTileEntity { } } } - mInventory[0] = new ItemStack(Item.book, 1); + mInventory[0] = new ItemStack(Items.book, 1); } } @@ -127,7 +140,7 @@ public class GT_MetaTileEntity_MagicEnergyAbsorber extends MetaTileEntity { mInventory[0] = null; } } catch(Throwable e) { - if (GregTech_API.DEBUG_MODE) e.printStackTrace(GT_Log.err); + if (GregTech_API.DEBUG_MODE) GT_Log.log.catching(e); } } @@ -155,18 +168,15 @@ public class GT_MetaTileEntity_MagicEnergyAbsorber extends MetaTileEntity { if (sEnergyFromVis > 0 && isActive2 && getBaseMetaTileEntity().getUniversalEnergyStored() < sEnergyFromVis) { try { - if (AuraManager.decreaseClosestAura(getBaseMetaTileEntity().getWorld(), getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getYCoord(), getBaseMetaTileEntity().getZCoord(), 1)) { - getBaseMetaTileEntity().increaseStoredEnergyUnits(sEnergyFromVis, true); - ObjectTags tTags = new ObjectTags(); - tTags.add(EnumTag.MECHANISM, 1 + getBaseMetaTileEntity().getRandomNumber(3)); - tTags.add(EnumTag.VOID, 1 + getBaseMetaTileEntity().getRandomNumber(2)); - tTags.add(EnumTag.FLUX, 1 + getBaseMetaTileEntity().getRandomNumber(2)); - AuraManager.addFluxToClosest(getBaseMetaTileEntity().getWorld(), getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getYCoord(), getBaseMetaTileEntity().getZCoord(), tTags); - ArrayList tList = (ArrayList)getBaseMetaTileEntity().getWorld().getEntitiesWithinAABB(EntityWisp.class, AxisAlignedBB.getBoundingBox(getBaseMetaTileEntity().getXCoord()-8, getBaseMetaTileEntity().getYCoord()-8, getBaseMetaTileEntity().getZCoord()-8, getBaseMetaTileEntity().getXCoord()+8, getBaseMetaTileEntity().getYCoord()+8, getBaseMetaTileEntity().getZCoord()+8)); - if (!tList.isEmpty()) getBaseMetaTileEntity().doExplosion(8192); - } + if (energySource != null && EssentiaHandler.findEssentia((TileEntity) this.getBaseMetaTileEntity(), energySource, ForgeDirection.UNKNOWN, 20)) { + if (AspectSourceHelper.drainEssentia((TileEntity) this.getBaseMetaTileEntity(), energySource, ForgeDirection.UNKNOWN, 20)) { + getBaseMetaTileEntity().increaseStoredEnergyUnits(sEnergyFromVis, true); + ArrayList tList = (ArrayList)getBaseMetaTileEntity().getWorld().getEntitiesWithinAABB(EntityWisp.class, AxisAlignedBB.getBoundingBox(getBaseMetaTileEntity().getXCoord()-8, getBaseMetaTileEntity().getYCoord()-8, getBaseMetaTileEntity().getZCoord()-8, getBaseMetaTileEntity().getXCoord()+8, getBaseMetaTileEntity().getYCoord()+8, getBaseMetaTileEntity().getZCoord()+8)); + if (!tList.isEmpty()) getBaseMetaTileEntity().doExplosion(8192); + } + } else energySource = null; } catch(Throwable e) { - if (GregTech_API.DEBUG_MODE) e.printStackTrace(GT_Log.err); + if (GregTech_API.DEBUG_MODE) GT_Log.log.catching(e); } } @@ -178,18 +188,29 @@ public class GT_MetaTileEntity_MagicEnergyAbsorber extends MetaTileEntity { public void onExplosion() { if (sEnergyFromVis > 0 && isActive2) { try { - ObjectTags tTags = new ObjectTags(); - tTags.add(EnumTag.MECHANISM, 50 + getBaseMetaTileEntity().getRandomNumber(50)); - tTags.add(EnumTag.DESTRUCTION, 50 + getBaseMetaTileEntity().getRandomNumber(50)); - tTags.add(EnumTag.FLUX, 50 + getBaseMetaTileEntity().getRandomNumber(50)); - tTags.add(EnumTag.EVIL, 50 + getBaseMetaTileEntity().getRandomNumber(50)); - tTags.add(EnumTag.FIRE, 50 + getBaseMetaTileEntity().getRandomNumber(50)); - tTags.add(EnumTag.DARK, 50 + getBaseMetaTileEntity().getRandomNumber(50)); - tTags.add(EnumTag.POWER, 50 + getBaseMetaTileEntity().getRandomNumber(50)); - tTags.add(EnumTag.VOID, 50 + getBaseMetaTileEntity().getRandomNumber(50)); - AuraManager.addFluxToClosest(getBaseMetaTileEntity().getWorld(), getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getYCoord(), getBaseMetaTileEntity().getZCoord(), tTags); + TileEntity te = (TileEntity) this.getBaseMetaTileEntity(); + World tWorld = this.getBaseMetaTileEntity().getWorld(); + int iterations = getBaseMetaTileEntity().getRandomNumber(200) + 100; + int x = 0; + int z = 0; + int y = 0; + for (int i = 0; i < iterations; i++) { + x = te.xCoord + tWorld.rand.nextInt(16) - tWorld.rand.nextInt(16); + z = te.zCoord + tWorld.rand.nextInt(16) - tWorld.rand.nextInt(16); + final BiomeGenBase bg = tWorld.getBiomeGenForCoords(x, z); + if (bg.biomeID != ThaumcraftWorldGenerator.biomeTaint.biomeID) { + Utils.setBiomeAt(tWorld, x, z, ThaumcraftWorldGenerator.biomeTaint); + } + if (tWorld.rand.nextBoolean()) { + x = te.xCoord + tWorld.rand.nextInt(10) - tWorld.rand.nextInt(10); + z = te.zCoord + tWorld.rand.nextInt(10) - tWorld.rand.nextInt(10); + y = te.yCoord + tWorld.rand.nextInt(5) - tWorld.rand.nextInt(5); + if (BlockTaintFibres.spreadFibres(tWorld, x, y, z)) { + } + } + } } catch(Throwable e) { - if (GregTech_API.DEBUG_MODE) e.printStackTrace(GT_Log.err); + if (GregTech_API.DEBUG_MODE) GT_Log.log.catching(e); } } } diff --git a/src/main/java/gregtechmod/common/tileentities/GT_MetaTileEntity_MagicEnergyConverter.java b/src/main/java/gregtechmod/common/tileentities/GT_MetaTileEntity_MagicEnergyConverter.java index be034e4..8c43c9e 100644 --- a/src/main/java/gregtechmod/common/tileentities/GT_MetaTileEntity_MagicEnergyConverter.java +++ b/src/main/java/gregtechmod/common/tileentities/GT_MetaTileEntity_MagicEnergyConverter.java @@ -5,13 +5,16 @@ import gregtechmod.api.metatileentity.MetaTileEntity; import gregtechmod.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank; import gregtechmod.api.util.GT_Recipe; import gregtechmod.api.util.GT_Utility; -import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.fluids.FluidStack; -import thaumcraft.api.EnumTag; -import thaumcraft.api.ObjectTags; -import thaumcraft.common.aura.AuraManager; +import thaumcraft.common.blocks.BlockTaintFibres; +import thaumcraft.common.lib.utils.Utils; +import thaumcraft.common.lib.world.ThaumcraftWorldGenerator; public class GT_MetaTileEntity_MagicEnergyConverter extends GT_MetaTileEntity_BasicTank { @@ -54,7 +57,7 @@ public class GT_MetaTileEntity_MagicEnergyConverter extends GT_MetaTileEntity_Ba mInventory[2] = null; else if (mInventory[2] == null) - mInventory[2] = new ItemStack(Block.fire, 1); + mInventory[2] = new ItemStack(Blocks.fire, 1); } else { if (getFuelValue(mFluid) > 0) while (getBaseMetaTileEntity().getUniversalEnergyStored() < (getBaseMetaTileEntity().getOutputVoltage() * 10 + getMinimumStoredEU()) && mFluid.amount > 0) { if (getBaseMetaTileEntity().increaseStoredEnergyUnits(getFuelValue(mFluid), true)) mFluid.amount--; @@ -94,16 +97,27 @@ public class GT_MetaTileEntity_MagicEnergyConverter extends GT_MetaTileEntity_Ba @Override public void onExplosion() { try { - ObjectTags tTags = new ObjectTags(); - tTags.add(EnumTag.MECHANISM, 20 + getBaseMetaTileEntity().getRandomNumber(20)); - tTags.add(EnumTag.DESTRUCTION, 20 + getBaseMetaTileEntity().getRandomNumber(20)); - tTags.add(EnumTag.FLUX, 20 + getBaseMetaTileEntity().getRandomNumber(20)); - tTags.add(EnumTag.EVIL, 20 + getBaseMetaTileEntity().getRandomNumber(20)); - tTags.add(EnumTag.FIRE, 20 + getBaseMetaTileEntity().getRandomNumber(20)); - tTags.add(EnumTag.DARK, 20 + getBaseMetaTileEntity().getRandomNumber(20)); - tTags.add(EnumTag.POWER, 20 + getBaseMetaTileEntity().getRandomNumber(20)); - tTags.add(EnumTag.EXCHANGE, 20 + getBaseMetaTileEntity().getRandomNumber(20)); - AuraManager.addFluxToClosest(getBaseMetaTileEntity().getWorld(), getBaseMetaTileEntity().getXCoord(), getBaseMetaTileEntity().getYCoord(), getBaseMetaTileEntity().getZCoord(), tTags); + TileEntity te = (TileEntity) this.getBaseMetaTileEntity(); + World tWorld = this.getBaseMetaTileEntity().getWorld(); + int iterations = getBaseMetaTileEntity().getRandomNumber(200) + 100; + int x = 0; + int z = 0; + int y = 0; + for (int i = 0; i < iterations; i++) { + x = te.xCoord + tWorld.rand.nextInt(16) - tWorld.rand.nextInt(16); + z = te.zCoord + tWorld.rand.nextInt(16) - tWorld.rand.nextInt(16); + final BiomeGenBase bg = tWorld.getBiomeGenForCoords(x, z); + if (bg.biomeID != ThaumcraftWorldGenerator.biomeTaint.biomeID) { + Utils.setBiomeAt(tWorld, x, z, ThaumcraftWorldGenerator.biomeTaint); + } + if (tWorld.rand.nextBoolean()) { + x = te.xCoord + tWorld.rand.nextInt(10) - tWorld.rand.nextInt(10); + z = te.zCoord + tWorld.rand.nextInt(10) - tWorld.rand.nextInt(10); + y = te.yCoord + tWorld.rand.nextInt(5) - tWorld.rand.nextInt(5); + if (BlockTaintFibres.spreadFibres(tWorld, x, y, z)) { + } + } + } } catch(Throwable e) {} } diff --git a/src/main/java/gregtechmod/loaders/load/GT_MetaTileEntityLoader.java b/src/main/java/gregtechmod/loaders/load/GT_MetaTileEntityLoader.java index 085c318..6984b8c 100644 --- a/src/main/java/gregtechmod/loaders/load/GT_MetaTileEntityLoader.java +++ b/src/main/java/gregtechmod/loaders/load/GT_MetaTileEntityLoader.java @@ -37,10 +37,10 @@ public class GT_MetaTileEntityLoader implements Runnable { new GT_MetaTileEntity_PlasmaGenerator ( 37, "GT_PlasmaGenerator"); new GT_MetaTileEntity_VacuumFreezer ( 38, "GT_VacuumFreezer"); new GT_MetaTileEntity_ElectricRegulatorAdvanced ( 39, "GT_RegulatorAdvanced"); -// new GT_MetaTileEntity_DragonEggEnergySiphon ( 40, "GT_DragonEggEnergySiphon", "metatileentity.GT_DragonEggEnergySiphon.name"); + new GT_MetaTileEntity_DragonEggEnergySiphon ( 40, "GT_DragonEggEnergySiphon"); new GT_MetaTileEntity_ChemicalReactor ( 41, "GT_ChemicalReactor"); -// new GT_MetaTileEntity_MagicEnergyConverter ( 42, "GT_MagicConverter" , "metatileentity.GT_MagicConverter.name"); -// new GT_MetaTileEntity_MagicEnergyAbsorber ( 43, "GT_MagicAbsorber" , "metatileentity.GT_MagicAbsorber.name"); + new GT_MetaTileEntity_MagicEnergyConverter ( 42, "GT_MagicConverter"); + new GT_MetaTileEntity_MagicEnergyAbsorber ( 43, "GT_MagicAbsorber"); new GT_MetaTileEntity_DistillationTower ( 44, "GT_DistillationTower"); new GT_MetaTileEntity_Safe ( 45, "GT_Safe"); new GT_MetaTileEntity_ElectricInventoryManager ( 46, "GT_InventoryManager");