diff options
author | Jordan Byrne <draknyte1@hotmail.com> | 2018-02-22 19:05:33 +1000 |
---|---|---|
committer | Jordan Byrne <draknyte1@hotmail.com> | 2018-02-22 19:05:33 +1000 |
commit | d7d123d15ae716033cb6fd890477e9ffb3fc3661 (patch) | |
tree | dbccacc9e7c65ee11ebf277c66ba053d57ee5c83 /src/Java/gtPlusPlus/core | |
parent | 6ecc76786555e2aaa7b1e9f5c65b9619a9d93239 (diff) | |
download | GT5-Unofficial-d7d123d15ae716033cb6fd890477e9ffb3fc3661.tar.gz GT5-Unofficial-d7d123d15ae716033cb6fd890477e9ffb3fc3661.tar.bz2 GT5-Unofficial-d7d123d15ae716033cb6fd890477e9ffb3fc3661.zip |
$ Buffed all Multiblocks.
% Greatly expanded BlockPos.java.
Diffstat (limited to 'src/Java/gtPlusPlus/core')
-rw-r--r-- | src/Java/gtPlusPlus/core/item/ModItems.java | 7 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/item/tool/misc/ConnectedBlockFinder.java | 81 | ||||
-rw-r--r-- | src/Java/gtPlusPlus/core/util/data/ArrayUtils.java | 14 |
3 files changed, 55 insertions, 47 deletions
diff --git a/src/Java/gtPlusPlus/core/item/ModItems.java b/src/Java/gtPlusPlus/core/item/ModItems.java index 50ff8c061b..c93353459e 100644 --- a/src/Java/gtPlusPlus/core/item/ModItems.java +++ b/src/Java/gtPlusPlus/core/item/ModItems.java @@ -700,8 +700,11 @@ public final class ModItems { //Chemistry CoalTar.run(); - - new ConnectedBlockFinder(); + + //Only used for debugging. + if (CORE.DEVENV) { + new ConnectedBlockFinder(); + } //Misc Items @SuppressWarnings("unused") diff --git a/src/Java/gtPlusPlus/core/item/tool/misc/ConnectedBlockFinder.java b/src/Java/gtPlusPlus/core/item/tool/misc/ConnectedBlockFinder.java index f0cc8c7344..b827f4e601 100644 --- a/src/Java/gtPlusPlus/core/item/tool/misc/ConnectedBlockFinder.java +++ b/src/Java/gtPlusPlus/core/item/tool/misc/ConnectedBlockFinder.java @@ -7,6 +7,7 @@ import java.util.Set; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.api.objects.data.AutoMap; import gtPlusPlus.api.objects.minecraft.BlockPos; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.item.base.BaseItemWithDamageValue; @@ -74,67 +75,57 @@ public class ConnectedBlockFinder extends BaseItemWithDamageValue{ float hitX, float hitY, float hitZ) { BlockPos mStartPoint = new BlockPos(x,y,z); - Block mBlockType = world.getBlock(x, y, z); int mBlockMeta = mBlockType.getDamageValue(world, x, y, z); + //Return if Air. + if (world.isAirBlock(x, y, z)) { + return false; + } + + int breaker = 0; Set<BlockPos> mTotalIndex = new HashSet<BlockPos>(); + Set<BlockPos> mFirstSearch = new HashSet<BlockPos>(); Set<BlockPos> mSearch_A = new HashSet<BlockPos>(); + Set<BlockPos> mSearch_B = new HashSet<BlockPos>(); Set<BlockPos> mSearch_C = new HashSet<BlockPos>(); + Set<BlockPos> mSearch_D = new HashSet<BlockPos>(); - for (BlockPos b : mStartPoint.getSurroundingBlocks().values()) { - if (world.getBlock(b.xPos, b.yPos, b.zPos) == mBlockType) { - if (mBlockType.getDamageValue(world, b.xPos, b.yPos, b.zPos) == mBlockMeta) { - if (mFirstSearch.add(b)) { - if (mTotalIndex.add(b)) { - world.setBlock(b.xPos, b.yPos, b.zPos, Blocks.emerald_ore); - } - } - } - } - } + mFirstSearch.add(mStartPoint); + mTotalIndex.add(mStartPoint); - for (BlockPos b : mFirstSearch) { - if (world.getBlock(b.xPos, b.yPos, b.zPos) == mBlockType) { - if (mBlockType.getDamageValue(world, b.xPos, b.yPos, b.zPos) == mBlockMeta) { - if (mSearch_A.add(b)) { - if (mTotalIndex.add(b)) { - world.setBlock(b.xPos, b.yPos, b.zPos, Blocks.emerald_ore); - } - } - } - } - } - - for (BlockPos b : mSearch_A) { - if (world.getBlock(b.xPos, b.yPos, b.zPos) == mBlockType) { - if (mBlockType.getDamageValue(world, b.xPos, b.yPos, b.zPos) == mBlockMeta) { - if (mSearch_B.add(b)) { - if (mTotalIndex.add(b)) { - world.setBlock(b.xPos, b.yPos, b.zPos, Blocks.emerald_ore); - } - } - } - } - } - for (BlockPos b : mSearch_B) { - if (world.getBlock(b.xPos, b.yPos, b.zPos) == mBlockType) { - if (mBlockType.getDamageValue(world, b.xPos, b.yPos, b.zPos) == mBlockMeta) { - if (mSearch_C.add(b)) { - if (mTotalIndex.add(b)) { - world.setBlock(b.xPos, b.yPos, b.zPos, Blocks.emerald_ore); - } - } - } + + + for (BlockPos G : mSearch_D) { + if (!world.isAirBlock(G.xPos, G.yPos, G.zPos)) { + world.setBlock(G.xPos, G.yPos, G.zPos, Blocks.diamond_ore); } } + + return super.onItemUse(stack, player, world, x, y, z, side, hitX, hitY, hitZ); } - + + public Set<BlockPos> getValidNeighboursForSet(Set<BlockPos> set){ + Set<BlockPos> results = set; + for (BlockPos F : set) { + results.addAll(F.getValidNeighboursAndSelf()); + } + return results; + } + + public Set<BlockPos> getExtraNeighboursForSet(Set<BlockPos> set){ + Set<BlockPos> results = set; + for (BlockPos F : set) { + results.addAll(F.getValidNeighboursAndSelf()); + } + return results; + } + @Override public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { // TODO Auto-generated method stub diff --git a/src/Java/gtPlusPlus/core/util/data/ArrayUtils.java b/src/Java/gtPlusPlus/core/util/data/ArrayUtils.java index 63ffe63314..82b45360f8 100644 --- a/src/Java/gtPlusPlus/core/util/data/ArrayUtils.java +++ b/src/Java/gtPlusPlus/core/util/data/ArrayUtils.java @@ -5,7 +5,9 @@ import net.minecraft.item.ItemStack; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; public class ArrayUtils { @@ -30,5 +32,17 @@ public class ArrayUtils { list.removeAll(Collections.singleton((ItemStack)null)); return list.toArray(new ItemStack[list.size()]); } + + @SuppressWarnings("unchecked") + public static <T> Set<T> combineSetData(Set<T> S, Set<T> J) { + Set<T> mData = new HashSet<T>(); + T[] array1 = (T[]) S.toArray(); + Collections.addAll(mData, array1); + T[] array2 = (T[]) J.toArray(); + Collections.addAll(mData, array2); + return mData; + } + + } |