From f97698b054c1d3ef1544365a65ccd90ba8d3bb6c Mon Sep 17 00:00:00 2001 From: Blood-Asp Date: Sat, 15 Oct 2016 15:42:45 +0200 Subject: Catch crash with Fossils Archeology Revival #642 --- src/main/java/gregtech/api/util/GT_Utility.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index f14d4ad08f..31cf28b250 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -863,6 +863,7 @@ public class GT_Utility { ItemStack[] tStack = GT_OreDictUnificator.getStackArray(true, aOutput); if(tStack==null||(tStack.length>0&>_Utility.areStacksEqual(aInput, tStack[0])))return false; if (tOreName != null) { + if(tOreName.toString().equals("dustAsh")&&tStack[0].getUnlocalizedName().equals("tile.volcanicAsh"))return false; aRecipeList.put(new RecipeInputOreDict(tOreName.toString(), aInput.stackSize), new RecipeOutput(aNBT, tStack)); } else { aRecipeList.put(new RecipeInputItemStack(copy(aInput), aInput.stackSize), new RecipeOutput(aNBT, tStack)); -- cgit From 6c4f17d52edaba38d1cf4a5e1f7488c1a70c9b59 Mon Sep 17 00:00:00 2001 From: Blood-Asp Date: Sat, 22 Oct 2016 23:19:32 +0200 Subject: Try to move full stack into targed inventory, not single operation. --- src/main/java/gregtech/api/util/GT_Utility.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 31cf28b250..a6dff31d62 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -531,16 +531,17 @@ public class GT_Utility { } for (int i = 0; i < tGrabSlots.length; i++) { + byte tMovedItemCount = 0; for (int j = 0; j < tPutSlots.length; j++) { if (listContainsItem(aFilter, aTileEntity1.getStackInSlot(tGrabSlots[i]), true, aInvertFilter)) { if (isAllowedToTakeFromSlot(aTileEntity1, tGrabSlots[i], aGrabFrom, aTileEntity1.getStackInSlot(tGrabSlots[i]))) { if (isAllowedToPutIntoSlot((IInventory) aTileEntity2, tPutSlots[j], aPutTo, aTileEntity1.getStackInSlot(tGrabSlots[i]), aMaxTargetStackSize)) { - byte tMovedItemCount = moveStackFromSlotAToSlotB(aTileEntity1, (IInventory) aTileEntity2, tGrabSlots[i], tPutSlots[j], aMaxTargetStackSize, aMinTargetStackSize, aMaxMoveAtOnce, aMinMoveAtOnce); - if (tMovedItemCount > 0) return tMovedItemCount; + tMovedItemCount = moveStackFromSlotAToSlotB(aTileEntity1, (IInventory) aTileEntity2, tGrabSlots[i], tPutSlots[j], aMaxTargetStackSize, aMinTargetStackSize, aMaxMoveAtOnce, aMinMoveAtOnce); } } } } + if (tMovedItemCount > 0) return tMovedItemCount; } if (aDoCheckChests && aTileEntity1 instanceof TileEntityChest) { -- cgit From 4b29e30e75474cc601dc8e0f23b4b3ff49a19f5b Mon Sep 17 00:00:00 2001 From: Blood-Asp Date: Sun, 23 Oct 2016 00:30:24 +0200 Subject: Fix droping of items when pulling from doublechests --- src/main/java/gregtech/api/util/GT_Utility.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index a6dff31d62..a16c4213dd 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -353,13 +353,21 @@ public class GT_Utility { return ((buildcraft.api.transport.IPipeTile) aTileEntity).isPipeConnected(ForgeDirection.getOrientation(aSide)); return false; } - /** * Moves Stack from Inv-Slot to Inv-Slot, without checking if its even allowed. * * @return the Amount of moved Items */ public static byte moveStackIntoPipe(IInventory aTileEntity1, Object aTileEntity2, int[] aGrabSlots, int aGrabFrom, int aPutTo, List aFilter, boolean aInvertFilter, byte aMaxTargetStackSize, byte aMinTargetStackSize, byte aMaxMoveAtOnce, byte aMinMoveAtOnce) { + return moveStackIntoPipe(aTileEntity1, aTileEntity2, aGrabSlots, aGrabFrom, aPutTo, aFilter, aInvertFilter, aMaxTargetStackSize, aMinTargetStackSize, aMaxMoveAtOnce, aMinMoveAtOnce, true); + } + + /** + * Moves Stack from Inv-Slot to Inv-Slot, without checking if its even allowed. + * + * @return the Amount of moved Items + */ + public static byte moveStackIntoPipe(IInventory aTileEntity1, Object aTileEntity2, int[] aGrabSlots, int aGrabFrom, int aPutTo, List aFilter, boolean aInvertFilter, byte aMaxTargetStackSize, byte aMinTargetStackSize, byte aMaxMoveAtOnce, byte aMinMoveAtOnce, boolean dropItem) { if (aTileEntity1 == null || aMaxTargetStackSize <= 0 || aMinTargetStackSize <= 0 || aMinTargetStackSize > aMaxTargetStackSize || aMaxMoveAtOnce <= 0 || aMinMoveAtOnce > aMaxMoveAtOnce) return 0; if (aTileEntity2 != null) { @@ -408,7 +416,7 @@ public class GT_Utility { ForgeDirection tDirection = ForgeDirection.getOrientation(aGrabFrom); if (aTileEntity1 instanceof TileEntity && tDirection != ForgeDirection.UNKNOWN && tDirection.getOpposite() == ForgeDirection.getOrientation(aPutTo)) { int tX = ((TileEntity) aTileEntity1).xCoord + tDirection.offsetX, tY = ((TileEntity) aTileEntity1).yCoord + tDirection.offsetY, tZ = ((TileEntity) aTileEntity1).zCoord + tDirection.offsetZ; - if (!hasBlockHitBox(((TileEntity) aTileEntity1).getWorldObj(), tX, tY, tZ)) { + if (!hasBlockHitBox(((TileEntity) aTileEntity1).getWorldObj(), tX, tY, tZ) && dropItem) { for (int i = 0; i < aGrabSlots.length; i++) { if (listContainsItem(aFilter, aTileEntity1.getStackInSlot(aGrabSlots[i]), true, aInvertFilter)) { if (isAllowedToTakeFromSlot(aTileEntity1, aGrabSlots[i], (byte) aGrabFrom, aTileEntity1.getStackInSlot(aGrabSlots[i]))) { @@ -578,7 +586,7 @@ public class GT_Utility { } } - return moveStackIntoPipe(aTileEntity1, aTileEntity2, tGrabSlots, aGrabFrom, aPutTo, aFilter, aInvertFilter, aMaxTargetStackSize, aMinTargetStackSize, aMaxMoveAtOnce, aMinMoveAtOnce); + return moveStackIntoPipe(aTileEntity1, aTileEntity2, tGrabSlots, aGrabFrom, aPutTo, aFilter, aInvertFilter, aMaxTargetStackSize, aMinTargetStackSize, aMaxMoveAtOnce, aMinMoveAtOnce, aDoCheckChests); } /** -- cgit From b3ed735ef2e9fbf155bc07fc9dd686373d73a11b Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 30 Oct 2016 11:09:24 +0100 Subject: Fix for Scanner being derp when looking @ pollution --- src/main/java/gregtech/api/util/GT_Utility.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index a16c4213dd..fe3565cd9f 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1754,7 +1754,7 @@ public class GT_Utility { tList.add("Oil in Chunk: " + tFluid.amount + " " + tFluid.getLocalizedName()); } // if(aPlayer.capabilities.isCreativeMode){ - ChunkPosition tPos = new ChunkPosition(aX/16, 1, aZ/16); + ChunkPosition tPos = new ChunkPosition(aX>>4, 1, aZ>>4); if(GT_Proxy.chunkData.containsKey(tPos)){ int[] tPollution = GT_Proxy.chunkData.get(tPos); if(tPollution.length>1){ @@ -2075,4 +2075,4 @@ public class GT_Utility { } } -} \ No newline at end of file +} -- cgit From 60328e2adff7cc017f5c9d8f177698e5cd438e07 Mon Sep 17 00:00:00 2001 From: Blood-Asp Date: Fri, 23 Dec 2016 18:01:36 +0100 Subject: Fix oil only be found on second scan --- src/main/java/gregtech/api/util/GT_Utility.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index fe3565cd9f..25703274ff 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1550,7 +1550,7 @@ public class GT_Utility { if(GT_Proxy.chunkData.containsKey(tPos)){ tInts = GT_Proxy.chunkData.get(tPos); if(tInts.length>0){ - if(tInts[0]>=0){tAmount = tInts[0];} + if(tInts[0]>0){tAmount = tInts[0];} } GT_Proxy.chunkData.remove(tPos); } -- cgit From 4aa8fd45c4258b183e86c95ea79c57e9aa24400e Mon Sep 17 00:00:00 2001 From: KpoxaPy Date: Thu, 5 Jan 2017 02:45:01 +0300 Subject: Add advanced seismic prospector --- src/main/java/gregtech/api/util/GT_Utility.java | 175 ++++++++++++++++++++++-- 1 file changed, 165 insertions(+), 10 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 25703274ff..b652696d16 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1867,6 +1867,58 @@ public class GT_Utility { return formatter.format(aNumber); } + /* + * Check if stack has enough items of given type and subtract from stack, if there's no creative or 111 stack. + */ + public static boolean consumeItems(EntityPlayer player, ItemStack stack, Item item, int count) { + if (stack != null && stack.getItem() == item && stack.stackSize >= count) { + if ((!player.capabilities.isCreativeMode) && (stack.stackSize != 111)) + stack.stackSize -= count; + return true; + } + return false; + } + + /* + * Check if stack has enough items of given gregtech material (will be oredicted) + * and subtract from stack, if there's no creative or 111 stack. + */ + public static boolean consumeItems(EntityPlayer player, ItemStack stack, gregtech.api.enums.Materials mat, int count) { + if (stack != null + && GT_OreDictUnificator.getItemData(stack).mMaterial.mMaterial == mat + && stack.stackSize >= count) { + if ((!player.capabilities.isCreativeMode) && (stack.stackSize != 111)) + stack.stackSize -= count; + return true; + } + return false; + } + + public static ArrayList sortByValueToList( Map map ) + { + List> list = + new LinkedList>( map.entrySet() ); + Collections.sort( list, new Comparator>() + { + public int compare( Map.Entry o1, Map.Entry o2 ) + { + return o2.getValue() - o1.getValue(); + } + } ); + + ArrayList result = new ArrayList(); + for (Map.Entry e : list) + result.add(e.getKey()); + return result; + } + + public static String joinListToString(List list) { + String result = ""; + for (String s : list) + result += (result.isEmpty() ? "" : "|") + s; + return result; + } + public static class ItemNBT { public static void setNBT(ItemStack aStack, NBTTagCompound aNBT) { if (aNBT == null) { @@ -1954,21 +2006,124 @@ public class GT_Utility { setNBT(aStack, tNBT); } + public static void setAdvancedProspectionData( + byte aTier, + ItemStack aStack, + int aX, short aY, int aZ, int aDim, + ArrayList aOils, + ArrayList aNearOres, + ArrayList aMiddleOres, + ArrayList aFarOres, + int aNear, int aMiddle, int aRadius) { + + setBookTitle(aStack, "Raw Prospection Data"); + + NBTTagCompound tNBT = GT_Utility.ItemNBT.getNBT(aStack); + + tNBT.setByte("prospection_tier", aTier); + tNBT.setString("prospection_pos", "X: " + aX + " Y: " + aY + " Z: " + aZ + " Dim: " + aDim); + + // ores + tNBT.setString("prospection_near", joinListToString(aNearOres)); + tNBT.setString("prospection_middle", joinListToString(aMiddleOres)); + tNBT.setString("prospection_far", joinListToString(aFarOres)); + + // oils + ArrayList tOilsTransformed = new ArrayList(aOils.size()); + for (String aStr : aOils) { + String[] aStats = aStr.split(","); + tOilsTransformed.add(aStats[3] + " " + aStats[2] + "L"); + } + tNBT.setString("prospection_oils", joinListToString(tOilsTransformed)); + + tNBT.setString("prospection_bounds", aNear + "|" + aMiddle + "|" + aRadius); + + setNBT(aStack, tNBT); + } + public static void convertProspectionData(ItemStack aStack) { NBTTagCompound tNBT = getNBT(aStack); - String tData = tNBT.getString("prospection"); - String[] tDataArray = tData.split(","); - if (tDataArray.length > 6) { - tNBT.setString("author", "X: " + tDataArray[0] + " Y: " + tDataArray[1] + " Z: " + tDataArray[2] + " Dim: " + tDataArray[3]); - NBTTagList tNBTList = new NBTTagList(); - String tOres = " Prospected Ores: "; - for (int i = 6; tDataArray.length > i; i++) { - tOres += (tDataArray[i] + " "); + byte tTier = tNBT.getByte("prospection_tier"); + + if (tTier == 0) { // basic prospection data + String tData = tNBT.getString("prospection"); + String[] tDataArray = tData.split(","); + if (tDataArray.length > 6) { + tNBT.setString("author", "X: " + tDataArray[0] + " Y: " + tDataArray[1] + " Z: " + tDataArray[2] + " Dim: " + tDataArray[3]); + NBTTagList tNBTList = new NBTTagList(); + String tOres = " Prospected Ores: "; + for (int i = 6; tDataArray.length > i; i++) { + tOres += (tDataArray[i] + " "); + } + tNBTList.appendTag(new NBTTagString("Prospection Data From: X" + tDataArray[0] + " Z:" + tDataArray[2] + " Dim:" + tDataArray[3] + " Produces " + tDataArray[4] + "L " + tDataArray[5] + " " + tOres)); + tNBT.setTag("pages", tNBTList); } - tNBTList.appendTag(new NBTTagString("Prospection Data From: X" + tDataArray[0] + " Z:" + tDataArray[2] + " Dim:" + tDataArray[3] + " Produces " + tDataArray[4] + "L " + tDataArray[5] + " " + tOres)); + setNBT(aStack, tNBT); + } else { // advanced prospection data + String tPos = tNBT.getString("prospection_pos"); + String[] tBounds = tNBT.getString("prospection_bounds").split("\\|"); + + String tNearOresStr = tNBT.getString("prospection_near"); + String tMiddleOresStr = tNBT.getString("prospection_middle"); + String tFarOresStr = tNBT.getString("prospection_far"); + String tOilsStr = tNBT.getString("prospection_oils"); + + String[] tNearOres = tNearOresStr.isEmpty() ? null : tNearOresStr.split("\\|"); + String[] tMiddleOres = tMiddleOresStr.isEmpty() ? null : tMiddleOresStr.split("\\|"); + String[] tFarOres = tFarOresStr.isEmpty() ? null : tFarOresStr.split("\\|"); + String[] tOils = tOilsStr.isEmpty() ? null : tOilsStr.split("\\|"); + + NBTTagList tNBTList = new NBTTagList(); + + String tPageText = "Advanced prospection\n" + + tPos + "\n" + + "Results:\n" + + "- Close Range Ores: " + (tNearOres != null ? tNearOres.length : 0) + "\n" + + "- Mid Range Ores: " + (tMiddleOres != null ? tMiddleOres.length : 0) + "\n" + + "- Far Range Ores: " + (tFarOres != null ? tFarOres.length : 0) + "\n" + + "- Oils: " + (tOils != null ? tOils.length : 0) + "\n\n" + + "Lists was sorted by volume"; + tNBTList.appendTag(new NBTTagString(tPageText)); + + if (tNearOres != null) + fillBookWithList(tNBTList, "Close Range Ores%s\n\n", ", ", 20, tNearOres); + if (tMiddleOres != null) + fillBookWithList(tNBTList, "Mid Range Ores%s\n\n", ", ", 20, tMiddleOres); + if (tFarOres != null) + fillBookWithList(tNBTList, "Far Range Ores%s\n\n", ", ", 20, tFarOres); + if (tOils != null) + fillBookWithList(tNBTList, "Oils%s\n\n", "\n", 9, tOils); + + tPageText = "Notes\n\n" + + "Close range:\nR <= " + tBounds[0] + "\n" + + "Mid range:\n" + tBounds[0] + " < R <= " + tBounds[1] + "\n" + + "Far range:\n" + tBounds[1] + " < R <= " + tBounds[2]; + tNBTList.appendTag(new NBTTagString(tPageText)); + + tNBT.setString("author", tPos); tNBT.setTag("pages", tNBTList); + setNBT(aStack, tNBT); } - setNBT(aStack, tNBT); + } + + public static void fillBookWithList(NBTTagList aBook, String aPageHeader, String aListDelimiter, int aItemsPerPage, String[] list) { + String aPageFormatter = " %d/%d"; + int tTotalPages = list.length / aItemsPerPage + (list.length % aItemsPerPage > 0 ? 1 : 0); + int tPage = 0; + String tPageText; + do { + tPageText = ""; + for (int i = tPage*aItemsPerPage; i < (tPage+1)*aItemsPerPage && i < list.length; i += 1) + tPageText += (tPageText.isEmpty() ? "" : aListDelimiter) + list[i]; + + if (!tPageText.isEmpty()) { + String tPageCounter = tTotalPages > 1 ? String.format(aPageFormatter, tPage + 1, tTotalPages) : ""; + NBTTagString tPageTag = new NBTTagString(String.format(aPageHeader, tPageCounter) + tPageText); + aBook.appendTag(tPageTag); + } + + ++tPage; + } while (!tPageText.isEmpty()); } public static void addEnchantment(ItemStack aStack, Enchantment aEnchantment, int aLevel) { -- cgit From 2c82f057aa0a01862d487d73aacebc13fbdebf93 Mon Sep 17 00:00:00 2001 From: Maxime Legkiy Date: Sun, 5 Feb 2017 18:36:34 +0300 Subject: Fix respawn oil amount if amount down to 0 and reduction amount oil if use Seismic Prospector or more --- src/main/java/gregtech/api/util/GT_Utility.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index b652696d16..b3fffa5b47 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1519,6 +1519,10 @@ public class GT_Utility { } public static FluidStack getUndergroundOil(World aWorld, int aX, int aZ) { + return getUndergroundOil(aWorld, aX, aZ, false); + } + + public static FluidStack getUndergroundOil(World aWorld, int aX, int aZ, boolean needConsumeOil) { Random tRandom = new Random((aWorld.getSeed() + (aX / 96) + (7 * (aZ / 96)))); @@ -1554,7 +1558,8 @@ public class GT_Utility { } GT_Proxy.chunkData.remove(tPos); } - tAmount = tAmount - 5; + if (needConsumeOil && tAmount >= 5000) + tAmount = tAmount - 5; tInts[0] = tAmount; GT_Proxy.chunkData.put(tPos, tInts); -- cgit From 811644f90a7850febcb0679ba8c5a35e80027650 Mon Sep 17 00:00:00 2001 From: Maxime Legkiy Date: Mon, 6 Feb 2017 17:53:03 +0300 Subject: Fix bug > Oil Teleportation to GC Planets #837 --- src/main/java/gregtech/api/util/GT_Utility.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index b3fffa5b47..c2d0cbebf0 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1524,7 +1524,11 @@ public class GT_Utility { public static FluidStack getUndergroundOil(World aWorld, int aX, int aZ, boolean needConsumeOil) { - + if (aWorld.provider.dimensionId!=0) + { + return null; + } + Random tRandom = new Random((aWorld.getSeed() + (aX / 96) + (7 * (aZ / 96)))); int oil = tRandom.nextInt(3); double amount = tRandom.nextInt(50) + tRandom.nextDouble(); @@ -1756,7 +1760,8 @@ public class GT_Utility { } if (aPlayer.capabilities.isCreativeMode&>_Values.D1) { FluidStack tFluid = getUndergroundOil(aWorld, aX, aZ); - tList.add("Oil in Chunk: " + tFluid.amount + " " + tFluid.getLocalizedName()); + if (tFluid!=null) + tList.add("Oil in Chunk: " + tFluid.amount + " " + tFluid.getLocalizedName()); } // if(aPlayer.capabilities.isCreativeMode){ ChunkPosition tPos = new ChunkPosition(aX>>4, 1, aZ>>4); @@ -2003,7 +2008,9 @@ public class GT_Utility { public static void setProspectionData(ItemStack aStack, int aX, int aY, int aZ, int aDim, FluidStack aFluid, String[] aOres) { NBTTagCompound tNBT = getNBT(aStack); - String tData = aX + "," + aY + "," + aZ + "," + aDim + "," + (aFluid.amount / 5000) + "," + aFluid.getLocalizedName() + ","; + String tData = aX + "," + aY + "," + aZ + "," + aDim + ","; + if (aFluid!=null) + tData += (aFluid.amount / 5000) + "," + aFluid.getLocalizedName() + ","; for (String tString : aOres) { tData += tString + ","; } -- cgit From 379b6a8bd15abeff04fd5c411689f438b08ee62c Mon Sep 17 00:00:00 2001 From: Maxime Legkiy Date: Mon, 6 Feb 2017 20:05:08 +0300 Subject: Fix generate oil around coordinates 0 0 --- src/main/java/gregtech/api/util/GT_Utility.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index c2d0cbebf0..1346eef201 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1529,11 +1529,11 @@ public class GT_Utility { return null; } - Random tRandom = new Random((aWorld.getSeed() + (aX / 96) + (7 * (aZ / 96)))); + Random tRandom = new Random((aWorld.getSeed() + ((int)Math.floor(aX / 96.d)) + (7 * ((int)Math.floor(aZ / 96.d))))); int oil = tRandom.nextInt(3); double amount = tRandom.nextInt(50) + tRandom.nextDouble(); oil = tRandom.nextInt(4); -// System.out.println("Oil: "+(aX/96)+" "+(aZ/96)+" "+oil+" "+amount); +// System.out.println("Oil: "+((int)Math.floor(aX/96.d))+" "+((int)Math.floor(aZ/96.d))+" "+oil+" "+amount+"dd"); // amount = 40; Fluid tFluid = null; switch (oil) { -- cgit From 00834b6c4bc69bc825d6dfc84ed9750e3cdedf51 Mon Sep 17 00:00:00 2001 From: Maxime Legkiy Date: Tue, 7 Feb 2017 02:52:26 +0300 Subject: Add Underground Oil Spawn Dimensions Fix bug reduction oil around coordinates 0 0 Add value MaxAmount in GregTech.cfg --- src/main/java/gregtech/api/util/GT_Utility.java | 28 ++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 1346eef201..9d9fada605 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -2,6 +2,7 @@ package gregtech.api.util; import cofh.api.transport.IItemDuct; import cpw.mods.fml.common.FMLCommonHandler; +import gregtech.GT_Mod; import gregtech.api.GregTech_API; import gregtech.api.damagesources.GT_DamageSources; import gregtech.api.enchants.Enchantment_Radioactivity; @@ -1518,22 +1519,35 @@ public class GT_Utility { return false; } + public static int getScaleСoordinates(double aValue, int aScale) { + return (int)Math.floor(aValue / aScale); + } + + public static boolean getUndergroundOilSpawns(int aDimensionId) { + + if (Math.abs(aDimensionId)==1) return false; //If Nether or End... + + if (GT_Mod.gregtechproxy.mUndergroundOilOverworld && aDimensionId==0) return true; //Overworld + if (GT_Mod.gregtechproxy.mUndergroundOilInRealDimension && isRealDimension(aDimensionId)) return true; //Other real world + + return false; //If other planets... + + } + public static FluidStack getUndergroundOil(World aWorld, int aX, int aZ) { return getUndergroundOil(aWorld, aX, aZ, false); } public static FluidStack getUndergroundOil(World aWorld, int aX, int aZ, boolean needConsumeOil) { - if (aWorld.provider.dimensionId!=0) - { + if (!getUndergroundOilSpawns(aWorld.provider.dimensionId)) return null; - } - Random tRandom = new Random((aWorld.getSeed() + ((int)Math.floor(aX / 96.d)) + (7 * ((int)Math.floor(aZ / 96.d))))); + Random tRandom = new Random((aWorld.getSeed() + (getScaleСoordinates(aX,96)) + (7 * (getScaleСoordinates(aZ,96))))); int oil = tRandom.nextInt(3); - double amount = tRandom.nextInt(50) + tRandom.nextDouble(); + double amount = tRandom.nextInt(GT_Mod.gregtechproxy.mUndergroundOilMaxAmount) + tRandom.nextDouble(); oil = tRandom.nextInt(4); -// System.out.println("Oil: "+((int)Math.floor(aX/96.d))+" "+((int)Math.floor(aZ/96.d))+" "+oil+" "+amount+"dd"); +// System.out.println("Oil: "+(getScaleСoordinates(aX,96))+" "+(getScaleСoordinates(aX,96))+" "+oil+" "+amount); // amount = 40; Fluid tFluid = null; switch (oil) { @@ -1553,7 +1567,7 @@ public class GT_Utility { tFluid = Materials.Oil.mFluid; } int tAmount = (int) (Math.pow(amount, 5) / 100); - ChunkPosition tPos = new ChunkPosition(aX/16, 1, aZ/16); + ChunkPosition tPos = new ChunkPosition(getScaleСoordinates(aX,16), 1, getScaleСoordinates(aZ,16)); int[] tInts = new int[2]; if(GT_Proxy.chunkData.containsKey(tPos)){ tInts = GT_Proxy.chunkData.get(tPos); -- cgit From 2d3310718a5ec386d2ba6bada824d0a96f12f6f4 Mon Sep 17 00:00:00 2001 From: Maxime Legkiy Date: Tue, 7 Feb 2017 04:44:35 +0300 Subject: Add Dimension BlackList Add Other Dimension Oil Generating Save Amount for Other Dimension --- src/main/java/gregtech/api/util/GT_Utility.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 9d9fada605..ba43153217 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1525,11 +1525,14 @@ public class GT_Utility { public static boolean getUndergroundOilSpawns(int aDimensionId) { - if (Math.abs(aDimensionId)==1) return false; //If Nether or End... + //Black list + if (DimensionManager.getProvider(aDimensionId).getClass().getName().contains("net.minecraft.world.WorldProviderHell")) return false; + if (DimensionManager.getProvider(aDimensionId).getClass().getName().contains("net.minecraft.world.WorldProviderEnd")) return false; + //Use settings if (GT_Mod.gregtechproxy.mUndergroundOilOverworld && aDimensionId==0) return true; //Overworld if (GT_Mod.gregtechproxy.mUndergroundOilInRealDimension && isRealDimension(aDimensionId)) return true; //Other real world - + return false; //If other planets... } @@ -1543,7 +1546,7 @@ public class GT_Utility { if (!getUndergroundOilSpawns(aWorld.provider.dimensionId)) return null; - Random tRandom = new Random((aWorld.getSeed() + (getScaleСoordinates(aX,96)) + (7 * (getScaleСoordinates(aZ,96))))); + Random tRandom = new Random((aWorld.getSeed() + aWorld.provider.dimensionId * 2 + (getScaleСoordinates(aX,96)) + (7 * (getScaleСoordinates(aZ,96))))); int oil = tRandom.nextInt(3); double amount = tRandom.nextInt(GT_Mod.gregtechproxy.mUndergroundOilMaxAmount) + tRandom.nextDouble(); oil = tRandom.nextInt(4); @@ -1567,7 +1570,7 @@ public class GT_Utility { tFluid = Materials.Oil.mFluid; } int tAmount = (int) (Math.pow(amount, 5) / 100); - ChunkPosition tPos = new ChunkPosition(getScaleСoordinates(aX,16), 1, getScaleСoordinates(aZ,16)); + ChunkPosition tPos = new ChunkPosition(getScaleСoordinates(aX,16), aWorld.provider.dimensionId+1, getScaleСoordinates(aZ,16)); int[] tInts = new int[2]; if(GT_Proxy.chunkData.containsKey(tPos)){ tInts = GT_Proxy.chunkData.get(tPos); -- cgit From 6567820a9b2dde53ccf92697857135caef1aff7e Mon Sep 17 00:00:00 2001 From: Maxime Legkiy Date: Tue, 7 Feb 2017 13:34:31 +0300 Subject: Fix generating Pollution in to other worlds --- src/main/java/gregtech/api/util/GT_Utility.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index ba43153217..0bc98d457f 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1781,7 +1781,7 @@ public class GT_Utility { tList.add("Oil in Chunk: " + tFluid.amount + " " + tFluid.getLocalizedName()); } // if(aPlayer.capabilities.isCreativeMode){ - ChunkPosition tPos = new ChunkPosition(aX>>4, 1, aZ>>4); + ChunkPosition tPos = new ChunkPosition(getScaleСoordinates(aX,16), aWorld.provider.dimensionId+1, getScaleСoordinates(aZ,16)); if(GT_Proxy.chunkData.containsKey(tPos)){ int[] tPollution = GT_Proxy.chunkData.get(tPos); if(tPollution.length>1){ -- cgit From 772ec04bf33679baed10c72991336b5b648603bb Mon Sep 17 00:00:00 2001 From: Maxime Legkiy Date: Thu, 9 Feb 2017 05:38:20 +0300 Subject: Add Underground Oil Generating settings in GregTech.cfg Add supports White and Black List (DIM ID) Add settings generating for standart Dimension and Galacticraft Dimension - Moon and Mars Add settings for select type Underground Fluid - for Nether default Pahoehoe Lava, for Moon - Helium 3 Add settings max Amount Generating For generating oil in other Dimension (Twilight Forest or Mystcraft) use settings - RealDimensionEnable --- src/main/java/gregtech/api/util/GT_Utility.java | 55 ++++++++++++++++++++----- 1 file changed, 44 insertions(+), 11 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 0bc98d457f..ade000012a 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1523,19 +1523,36 @@ public class GT_Utility { return (int)Math.floor(aValue / aScale); } - public static boolean getUndergroundOilSpawns(int aDimensionId) { + public static boolean getUndergroundOilGenerating(int aDimensionId) { - //Black list - if (DimensionManager.getProvider(aDimensionId).getClass().getName().contains("net.minecraft.world.WorldProviderHell")) return false; - if (DimensionManager.getProvider(aDimensionId).getClass().getName().contains("net.minecraft.world.WorldProviderEnd")) return false; - //Use settings - if (GT_Mod.gregtechproxy.mUndergroundOilOverworld && aDimensionId==0) return true; //Overworld - if (GT_Mod.gregtechproxy.mUndergroundOilInRealDimension && isRealDimension(aDimensionId)) return true; //Other real world + if (java.util.Arrays.binarySearch(GT_Mod.gregtechproxy.mUndergroundOilBlackList, aDimensionId) >= 0) return false; //Use BlackList Settings + if (java.util.Arrays.binarySearch(GT_Mod.gregtechproxy.mUndergroundOilWhiteList, aDimensionId) >= 0) return true; //Use WhiteList Settings + if (aDimensionId == 1) return false; //No bedrock, no oil. End. + if (aDimensionId==0) return GT_Mod.gregtechproxy.mUndergroundOilOverworld; //Overworld + if (aDimensionId == -1) return GT_Mod.gregtechproxy.mUndergroundOilNether; //Nether + + if (DimensionManager.getProvider(aDimensionId).getClass().getName().contains("Moon")) return GT_Mod.gregtechproxy.mUndergroundOilMoon; //Moon + if (DimensionManager.getProvider(aDimensionId).getClass().getName().contains("Mars")) return GT_Mod.gregtechproxy.mUndergroundOilMars; //Mars + + if (isRealDimension(aDimensionId)) return GT_Mod.gregtechproxy.mUndergroundOilInRealDimension; //Other real world - return false; //If other planets... + return false; //If other planets or worlds... } + + public static int getUndergroundOilType(int aType, int aOil) { + switch (aType) { + case 1: + aOil = 10; + break; + case 2: + aOil = 11; + break; + } + return aOil; + } + public static FluidStack getUndergroundOil(World aWorld, int aX, int aZ) { return getUndergroundOil(aWorld, aX, aZ, false); @@ -1543,15 +1560,25 @@ public class GT_Utility { public static FluidStack getUndergroundOil(World aWorld, int aX, int aZ, boolean needConsumeOil) { - if (!getUndergroundOilSpawns(aWorld.provider.dimensionId)) + if (!getUndergroundOilGenerating(aWorld.provider.dimensionId)) return null; Random tRandom = new Random((aWorld.getSeed() + aWorld.provider.dimensionId * 2 + (getScaleСoordinates(aX,96)) + (7 * (getScaleСoordinates(aZ,96))))); int oil = tRandom.nextInt(3); - double amount = tRandom.nextInt(GT_Mod.gregtechproxy.mUndergroundOilMaxAmount) + tRandom.nextDouble(); oil = tRandom.nextInt(4); + int maxAmount; + if (aWorld.provider.dimensionId == -1){ + maxAmount = GT_Mod.gregtechproxy.mUndergroundOilNetherMaxAmount; + oil=getUndergroundOilType(GT_Mod.gregtechproxy.mUndergroundOilNetherResType,oil); + } else if (DimensionManager.getProvider(aWorld.provider.dimensionId).getClass().getName().contains("Moon")){ + maxAmount = GT_Mod.gregtechproxy.mUndergroundOilMoonMaxAmount; + oil=getUndergroundOilType(GT_Mod.gregtechproxy.mUndergroundOilMoonResType,oil); + } + else maxAmount = GT_Mod.gregtechproxy.mUndergroundOilMaxAmount; + + maxAmount = (int)Math.round(Math.pow(maxAmount*500000.d, 0.2)); + double amount = tRandom.nextInt(maxAmount) + tRandom.nextDouble(); // System.out.println("Oil: "+(getScaleСoordinates(aX,96))+" "+(getScaleСoordinates(aX,96))+" "+oil+" "+amount); -// amount = 40; Fluid tFluid = null; switch (oil) { case 0: @@ -1566,6 +1593,12 @@ public class GT_Utility { case 3: tFluid = Materials.OilHeavy.mFluid; break; + case 10: + tFluid = FluidRegistry.getFluid("ic2pahoehoelava"); + break; + case 11: + tFluid = Materials.Helium_3.mGas; + break; default: tFluid = Materials.Oil.mFluid; } -- cgit From 901a7d66c1766b3f21de4f74e696a30e5d178018 Mon Sep 17 00:00:00 2001 From: Maxime Legkiy Date: Mon, 13 Feb 2017 04:24:48 +0300 Subject: Add new flexible configuration undeground oil --- src/main/java/gregtech/api/util/GT_Utility.java | 96 +++++++++---------------- 1 file changed, 35 insertions(+), 61 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index ade000012a..0d8100c332 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -18,6 +18,7 @@ import gregtech.api.items.GT_EnergyArmor_Item; import gregtech.api.items.GT_Generic_Item; import gregtech.api.net.GT_Packet_Sound; import gregtech.api.objects.GT_ItemStack; +import gregtech.api.objects.GT_UO_Fluid; import gregtech.api.objects.ItemData; import gregtech.api.threads.GT_Runnable_Sound; import gregtech.common.GT_Proxy; @@ -1523,24 +1524,6 @@ public class GT_Utility { return (int)Math.floor(aValue / aScale); } - public static boolean getUndergroundOilGenerating(int aDimensionId) { - - //Use settings - if (java.util.Arrays.binarySearch(GT_Mod.gregtechproxy.mUndergroundOilBlackList, aDimensionId) >= 0) return false; //Use BlackList Settings - if (java.util.Arrays.binarySearch(GT_Mod.gregtechproxy.mUndergroundOilWhiteList, aDimensionId) >= 0) return true; //Use WhiteList Settings - if (aDimensionId == 1) return false; //No bedrock, no oil. End. - if (aDimensionId==0) return GT_Mod.gregtechproxy.mUndergroundOilOverworld; //Overworld - if (aDimensionId == -1) return GT_Mod.gregtechproxy.mUndergroundOilNether; //Nether - - if (DimensionManager.getProvider(aDimensionId).getClass().getName().contains("Moon")) return GT_Mod.gregtechproxy.mUndergroundOilMoon; //Moon - if (DimensionManager.getProvider(aDimensionId).getClass().getName().contains("Mars")) return GT_Mod.gregtechproxy.mUndergroundOilMars; //Mars - - if (isRealDimension(aDimensionId)) return GT_Mod.gregtechproxy.mUndergroundOilInRealDimension; //Other real world - - return false; //If other planets or worlds... - - } - public static int getUndergroundOilType(int aType, int aOil) { switch (aType) { case 1: @@ -1560,64 +1543,56 @@ public class GT_Utility { public static FluidStack getUndergroundOil(World aWorld, int aX, int aZ, boolean needConsumeOil) { - if (!getUndergroundOilGenerating(aWorld.provider.dimensionId)) + if (GT_Mod.gregtechproxy.mUndergroundOil.CheckBlackList(aWorld.provider.dimensionId)) return null; Random tRandom = new Random((aWorld.getSeed() + aWorld.provider.dimensionId * 2 + (getScaleСoordinates(aX,96)) + (7 * (getScaleСoordinates(aZ,96))))); - int oil = tRandom.nextInt(3); - oil = tRandom.nextInt(4); - int maxAmount; - if (aWorld.provider.dimensionId == -1){ - maxAmount = GT_Mod.gregtechproxy.mUndergroundOilNetherMaxAmount; - oil=getUndergroundOilType(GT_Mod.gregtechproxy.mUndergroundOilNetherResType,oil); - } else if (DimensionManager.getProvider(aWorld.provider.dimensionId).getClass().getName().contains("Moon")){ - maxAmount = GT_Mod.gregtechproxy.mUndergroundOilMoonMaxAmount; - oil=getUndergroundOilType(GT_Mod.gregtechproxy.mUndergroundOilMoonResType,oil); - } - else maxAmount = GT_Mod.gregtechproxy.mUndergroundOilMaxAmount; - - maxAmount = (int)Math.round(Math.pow(maxAmount*500000.d, 0.2)); - double amount = tRandom.nextInt(maxAmount) + tRandom.nextDouble(); -// System.out.println("Oil: "+(getScaleСoordinates(aX,96))+" "+(getScaleСoordinates(aX,96))+" "+oil+" "+amount); + int tAmount = 0; + int tFluidId = 0; Fluid tFluid = null; - switch (oil) { - case 0: - tFluid = Materials.NatruralGas.mGas; - break; - case 1: - tFluid = Materials.OilLight.mFluid; - break; - case 2: - tFluid = Materials.OilMedium.mFluid; - break; - case 3: - tFluid = Materials.OilHeavy.mFluid; - break; - case 10: - tFluid = FluidRegistry.getFluid("ic2pahoehoelava"); - break; - case 11: - tFluid = Materials.Helium_3.mGas; - break; - default: - tFluid = Materials.Oil.mFluid; - } - int tAmount = (int) (Math.pow(amount, 5) / 100); +// System.out.println("Dimension: "+GT_Mod.gregtechproxy.mUndergroundOil.GetDimension(aWorld.provider.dimensionId).Dimension); + try { + GT_UO_Fluid uoFluid = GT_Mod.gregtechproxy.mUndergroundOil.GetDimension(aWorld.provider.dimensionId).getRandomFluid(tRandom); + if (uoFluid != null) + { + tFluid = uoFluid.getFluid(); + tAmount = uoFluid.getRandomAmount(tRandom); + if (tFluid != null) + tFluidId = tFluid.getID(); + //System.out.println("Fluid: ("+tFluidId+")"+tFluid.getName()+" Amount:"+tAmount); + } + + } catch (Exception e) { + tAmount = 0; + tFluidId = 0; + } + ChunkPosition tPos = new ChunkPosition(getScaleСoordinates(aX,16), aWorld.provider.dimensionId+1, getScaleСoordinates(aZ,16)); - int[] tInts = new int[2]; + int[] tInts = new int[0]; if(GT_Proxy.chunkData.containsKey(tPos)){ tInts = GT_Proxy.chunkData.get(tPos); if(tInts.length>0){ if(tInts[0]>0){tAmount = tInts[0];} } + if(tInts.length>2){ + if(tInts[2]>0&&tInts[2]!=tFluidId) + { + tFluidId = tInts[2]; + tFluid = FluidRegistry.getFluid(tFluidId); + } + } GT_Proxy.chunkData.remove(tPos); } + if (needConsumeOil && tAmount >= 5000) tAmount = tAmount - 5; + tInts[0] = tAmount; + tInts[2] = tFluidId; GT_Proxy.chunkData.put(tPos, tInts); - - return new FluidStack(tFluid, tAmount); + if (tFluid!=null) + return new FluidStack(tFluid, tAmount); + return null; } public static int getCoordinateScan(ArrayList aList, EntityPlayer aPlayer, World aWorld, int aScanLevel, int aX, int aY, int aZ, int aSide, float aClickX, float aClickY, float aClickZ) { @@ -2081,7 +2056,6 @@ public class GT_Utility { setBookTitle(aStack, "Raw Prospection Data"); NBTTagCompound tNBT = GT_Utility.ItemNBT.getNBT(aStack); - tNBT.setByte("prospection_tier", aTier); tNBT.setString("prospection_pos", "X: " + aX + " Y: " + aY + " Z: " + aZ + " Dim: " + aDim); -- cgit From 8e2280bc2c700a04ae5b829fe79eba4ba95a22d3 Mon Sep 17 00:00:00 2001 From: Maxime Legkiy Date: Fri, 17 Feb 2017 01:55:54 +0300 Subject: Fix name config category to UndergroundFluid Fix comments configuration Fix Start config - add nether and end to BlackList. Default spawn fluids on overworld and Moon. Add Decrease Per Operation Amount (if 0 an endless source) --- src/main/java/gregtech/api/util/GT_Utility.java | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 0d8100c332..cf70f21069 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1524,19 +1524,6 @@ public class GT_Utility { return (int)Math.floor(aValue / aScale); } - public static int getUndergroundOilType(int aType, int aOil) { - switch (aType) { - case 1: - aOil = 10; - break; - case 2: - aOil = 11; - break; - } - return aOil; - } - - public static FluidStack getUndergroundOil(World aWorld, int aX, int aZ) { return getUndergroundOil(aWorld, aX, aZ, false); } @@ -1549,6 +1536,7 @@ public class GT_Utility { Random tRandom = new Random((aWorld.getSeed() + aWorld.provider.dimensionId * 2 + (getScaleСoordinates(aX,96)) + (7 * (getScaleСoordinates(aZ,96))))); int tAmount = 0; int tFluidId = 0; + int tDecreasePerOperationAmount = 5; Fluid tFluid = null; // System.out.println("Dimension: "+GT_Mod.gregtechproxy.mUndergroundOil.GetDimension(aWorld.provider.dimensionId).Dimension); try { @@ -1557,6 +1545,7 @@ public class GT_Utility { { tFluid = uoFluid.getFluid(); tAmount = uoFluid.getRandomAmount(tRandom); + tDecreasePerOperationAmount = uoFluid.DecreasePerOperationAmount; if (tFluid != null) tFluidId = tFluid.getID(); //System.out.println("Fluid: ("+tFluidId+")"+tFluid.getName()+" Amount:"+tAmount); @@ -1567,7 +1556,7 @@ public class GT_Utility { tFluidId = 0; } - ChunkPosition tPos = new ChunkPosition(getScaleСoordinates(aX,16), aWorld.provider.dimensionId+1, getScaleСoordinates(aZ,16)); + ChunkPosition tPos = new ChunkPosition(getScaleСoordinates(aX,16), aWorld.provider.dimensionId, getScaleСoordinates(aZ,16)); int[] tInts = new int[0]; if(GT_Proxy.chunkData.containsKey(tPos)){ tInts = GT_Proxy.chunkData.get(tPos); @@ -1585,7 +1574,7 @@ public class GT_Utility { } if (needConsumeOil && tAmount >= 5000) - tAmount = tAmount - 5; + tAmount = tAmount - tDecreasePerOperationAmount; tInts[0] = tAmount; tInts[2] = tFluidId; @@ -1789,7 +1778,7 @@ public class GT_Utility { tList.add("Oil in Chunk: " + tFluid.amount + " " + tFluid.getLocalizedName()); } // if(aPlayer.capabilities.isCreativeMode){ - ChunkPosition tPos = new ChunkPosition(getScaleСoordinates(aX,16), aWorld.provider.dimensionId+1, getScaleСoordinates(aZ,16)); + ChunkPosition tPos = new ChunkPosition(getScaleСoordinates(aX,16), aWorld.provider.dimensionId, getScaleСoordinates(aZ,16)); if(GT_Proxy.chunkData.containsKey(tPos)){ int[] tPollution = GT_Proxy.chunkData.get(tPos); if(tPollution.length>1){ @@ -2056,6 +2045,7 @@ public class GT_Utility { setBookTitle(aStack, "Raw Prospection Data"); NBTTagCompound tNBT = GT_Utility.ItemNBT.getNBT(aStack); + tNBT.setByte("prospection_tier", aTier); tNBT.setString("prospection_pos", "X: " + aX + " Y: " + aY + " Z: " + aZ + " Dim: " + aDim); -- cgit From 4e043f617b729fec6e011b0840657da434cafd27 Mon Sep 17 00:00:00 2001 From: Blood-Asp Date: Tue, 28 Feb 2017 02:04:47 +0100 Subject: Circuit changes --- src/main/java/gregtech/api/util/GT_Utility.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index cf70f21069..3d151175a2 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1520,7 +1520,7 @@ public class GT_Utility { return false; } - public static int getScaleСoordinates(double aValue, int aScale) { + public static int getScaleCoordinates(double aValue, int aScale) { return (int)Math.floor(aValue / aScale); } @@ -1533,7 +1533,7 @@ public class GT_Utility { if (GT_Mod.gregtechproxy.mUndergroundOil.CheckBlackList(aWorld.provider.dimensionId)) return null; - Random tRandom = new Random((aWorld.getSeed() + aWorld.provider.dimensionId * 2 + (getScaleСoordinates(aX,96)) + (7 * (getScaleСoordinates(aZ,96))))); + Random tRandom = new Random((aWorld.getSeed() + aWorld.provider.dimensionId * 2 + (getScaleCoordinates(aX,96)) + (7 * (getScaleCoordinates(aZ,96))))); int tAmount = 0; int tFluidId = 0; int tDecreasePerOperationAmount = 5; @@ -1556,7 +1556,7 @@ public class GT_Utility { tFluidId = 0; } - ChunkPosition tPos = new ChunkPosition(getScaleСoordinates(aX,16), aWorld.provider.dimensionId, getScaleСoordinates(aZ,16)); + ChunkPosition tPos = new ChunkPosition(getScaleCoordinates(aX,16), aWorld.provider.dimensionId, getScaleCoordinates(aZ,16)); int[] tInts = new int[0]; if(GT_Proxy.chunkData.containsKey(tPos)){ tInts = GT_Proxy.chunkData.get(tPos); @@ -1778,7 +1778,7 @@ public class GT_Utility { tList.add("Oil in Chunk: " + tFluid.amount + " " + tFluid.getLocalizedName()); } // if(aPlayer.capabilities.isCreativeMode){ - ChunkPosition tPos = new ChunkPosition(getScaleСoordinates(aX,16), aWorld.provider.dimensionId, getScaleСoordinates(aZ,16)); + ChunkPosition tPos = new ChunkPosition(getScaleCoordinates(aX,16), aWorld.provider.dimensionId, getScaleCoordinates(aZ,16)); if(GT_Proxy.chunkData.containsKey(tPos)){ int[] tPollution = GT_Proxy.chunkData.get(tPos); if(tPollution.length>1){ -- cgit From 903661501e6c2a6752d18c8596efb55d225c2a15 Mon Sep 17 00:00:00 2001 From: Maxime Legkiy Date: Mon, 6 Mar 2017 22:09:55 +0300 Subject: Fixed #935 --- src/main/java/gregtech/api/util/GT_Utility.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 3d151175a2..9cbc269684 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1556,8 +1556,9 @@ public class GT_Utility { tFluidId = 0; } + try { ChunkPosition tPos = new ChunkPosition(getScaleCoordinates(aX,16), aWorld.provider.dimensionId, getScaleCoordinates(aZ,16)); - int[] tInts = new int[0]; + int[] tInts = new int[2]; if(GT_Proxy.chunkData.containsKey(tPos)){ tInts = GT_Proxy.chunkData.get(tPos); if(tInts.length>0){ @@ -1579,6 +1580,9 @@ public class GT_Utility { tInts[0] = tAmount; tInts[2] = tFluidId; GT_Proxy.chunkData.put(tPos, tInts); + } catch (Exception e) { + System.out.println("[GT] getUndergroundOil() - Error put data"); + } if (tFluid!=null) return new FluidStack(tFluid, tAmount); return null; -- cgit From c3101d6f04c143c6a8381142eff5e33f4dbccfcf Mon Sep 17 00:00:00 2001 From: Maxime Legkiy Date: Mon, 6 Mar 2017 22:26:16 +0300 Subject: Fixed #935 --- src/main/java/gregtech/api/util/GT_Utility.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 9cbc269684..5c2547196c 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1558,7 +1558,7 @@ public class GT_Utility { try { ChunkPosition tPos = new ChunkPosition(getScaleCoordinates(aX,16), aWorld.provider.dimensionId, getScaleCoordinates(aZ,16)); - int[] tInts = new int[2]; + int[] tInts = new int[3]; if(GT_Proxy.chunkData.containsKey(tPos)){ tInts = GT_Proxy.chunkData.get(tPos); if(tInts.length>0){ @@ -1581,7 +1581,7 @@ public class GT_Utility { tInts[2] = tFluidId; GT_Proxy.chunkData.put(tPos, tInts); } catch (Exception e) { - System.out.println("[GT] getUndergroundOil() - Error put data"); + System.out.println("getUndergroundOil() - Error put data"); } if (tFluid!=null) return new FluidStack(tFluid, tAmount); -- cgit From 445e548b4cd5ba1cf25e96d06ce0218c3b65f023 Mon Sep 17 00:00:00 2001 From: Blood-Asp Date: Thu, 23 Mar 2017 21:16:32 +0100 Subject: Allow teleportation to galacticraft dimensions --- src/main/java/gregtech/api/util/GT_Utility.java | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 5c2547196c..6c3289af30 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1459,6 +1459,9 @@ public class GT_Utility { try { if (DimensionManager.getProvider(aDimensionID).getClass().getName().contains("TwilightForest")) return true; } catch (Throwable e) {/*Do nothing*/} + try { + if (DimensionManager.getProvider(aDimensionID).getClass().getName().contains("galacticraft")) return true; + } catch (Throwable e) {/*Do nothing*/} return GregTech_API.sDimensionalList.contains(aDimensionID); } -- cgit From dd8510792f19ace4bac0ec357e207abdf5fe6808 Mon Sep 17 00:00:00 2001 From: Blood-Asp Date: Fri, 31 Mar 2017 19:01:32 +0200 Subject: Detect low grav dimensions by world provider --- src/main/java/gregtech/api/util/GT_Utility.java | 1 + 1 file changed, 1 insertion(+) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 6c3289af30..f4ae581fc7 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1602,6 +1602,7 @@ public class GT_Utility { Block tBlock = aWorld.getBlock(aX, aY, aZ); tList.add("----- X: " + aX + " Y: " + aY + " Z: " + aZ + " -----"); + tList.add("Dimension: "+DimensionManager.getProvider(aWorld.provider.dimensionId).getClass().getName()); try { if (tTileEntity instanceof IInventory) tList.add("Name: " + ((IInventory) tTileEntity).getInventoryName() + " MetaData: " + aWorld.getBlockMetadata(aX, aY, aZ)); -- cgit From 32a21a0ac165d0e04f780d0d43914838de29b50b Mon Sep 17 00:00:00 2001 From: Blood-Asp Date: Fri, 31 Mar 2017 19:02:45 +0200 Subject: Remove testline --- src/main/java/gregtech/api/util/GT_Utility.java | 1 - 1 file changed, 1 deletion(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index f4ae581fc7..6c3289af30 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1602,7 +1602,6 @@ public class GT_Utility { Block tBlock = aWorld.getBlock(aX, aY, aZ); tList.add("----- X: " + aX + " Y: " + aY + " Z: " + aZ + " -----"); - tList.add("Dimension: "+DimensionManager.getProvider(aWorld.provider.dimensionId).getClass().getName()); try { if (tTileEntity instanceof IInventory) tList.add("Name: " + ((IInventory) tTileEntity).getInventoryName() + " MetaData: " + aWorld.getBlockMetadata(aX, aY, aZ)); -- cgit From 244ef3810efd241766601327a28ea3053d1b2744 Mon Sep 17 00:00:00 2001 From: Technus Date: Thu, 27 Apr 2017 19:03:07 +0200 Subject: Buildable --- src/main/java/gregtech/api/util/GT_Utility.java | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 7e38838728..7e28593abf 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -2,6 +2,7 @@ package gregtech.api.util; import cofh.api.transport.IItemDuct; import cpw.mods.fml.common.FMLCommonHandler; +import gregtech.GT_Mod; import gregtech.api.GregTech_API; import gregtech.api.damagesources.GT_DamageSources; import gregtech.api.enchants.Enchantment_Radioactivity; @@ -17,6 +18,7 @@ import gregtech.api.items.GT_EnergyArmor_Item; import gregtech.api.items.GT_Generic_Item; import gregtech.api.net.GT_Packet_Sound; import gregtech.api.objects.GT_ItemStack; +import gregtech.api.objects.GT_UO_Fluid; import gregtech.api.objects.ItemData; import gregtech.api.objects.XSTR; import gregtech.api.threads.GT_Runnable_Sound; -- cgit From 8ac41d3c3c42e1437fc2af1c6ec3c21c897d1674 Mon Sep 17 00:00:00 2001 From: Johannes Gäßler Date: Sun, 30 Apr 2017 01:36:10 +0200 Subject: Chem reactors can now output 2 items, implemented recipes for Nitric Acid,added utility methods to get Material cells or integrated circuits, it's now possible to declare a temperature for automatically created fluids / gases --- src/main/java/gregtech/api/util/GT_Utility.java | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 6c3289af30..2987448244 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -1950,6 +1950,10 @@ public class GT_Utility { return result; } + public static ItemStack getIntegratedCircuit(int config){ + return ItemList.Circuit_Integrated.getWithDamage(0, config, new Object[0]); + } + public static class ItemNBT { public static void setNBT(ItemStack aStack, NBTTagCompound aNBT) { if (aNBT == null) { -- cgit From c12e474c23ca02fb3479312850f6ae07e623d8b9 Mon Sep 17 00:00:00 2001 From: Technus Date: Mon, 1 May 2017 08:18:30 +0200 Subject: Oil and pollution overhaul --- src/main/java/gregtech/api/util/GT_Utility.java | 139 +++--------------------- 1 file changed, 18 insertions(+), 121 deletions(-) (limited to 'src/main/java/gregtech/api/util/GT_Utility.java') diff --git a/src/main/java/gregtech/api/util/GT_Utility.java b/src/main/java/gregtech/api/util/GT_Utility.java index 7e28593abf..af667eb4d5 100644 --- a/src/main/java/gregtech/api/util/GT_Utility.java +++ b/src/main/java/gregtech/api/util/GT_Utility.java @@ -56,9 +56,11 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.ChunkPosition; import net.minecraft.world.World; import net.minecraft.world.WorldServer; +import net.minecraft.world.chunk.Chunk; import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; @@ -75,6 +77,9 @@ import java.util.*; import java.util.Map.Entry; import static gregtech.api.enums.GT_Values.*; +import static gregtech.common.GT_Proxy.GTPOLLUTION; +import static gregtech.common.GT_Proxy.dimensionWiseChunkData; +import static gregtech.common.GT_UndergroundOil.undergroundOil; /** * NEVER INCLUDE THIS FILE IN YOUR MOD!!! @@ -1575,114 +1580,6 @@ public class GT_Utility { return (int)Math.floor(aValue / aScale); } - public static FluidStack getUndergroundOil(World aWorld, int aX, int aZ) { - return getUndergroundOil(aWorld, aX, aZ, false); - } - - public static FluidStack getUndergroundOil(World aWorld, int aX, int aZ, boolean needConsumeOil) {//TODO RETROGEN!, CHECK FLUIDS AVAILABLE, REWORK - - if (GT_Mod.gregtechproxy.mUndergroundOil.CheckBlackList(aWorld.provider.dimensionId)) - return null; - - XSTR tRandom = new XSTR((aWorld.getSeed() + aWorld.provider.dimensionId * 2 + (getScaleCoordinates(aX,96)) + (7 * (getScaleCoordinates(aZ,96))))); - int tAmount = 0; - int tFluidId = 0; - int tDecreasePerOperationAmount = 5; - Fluid tFluid = null; -// System.out.println("Dimension: "+GT_Mod.gregtechproxy.mUndergroundOil.GetDimension(aWorld.provider.dimensionId).Dimension); - try { - GT_UO_Fluid uoFluid = GT_Mod.gregtechproxy.mUndergroundOil.GetDimension(aWorld.provider.dimensionId).getRandomFluid(tRandom); - if (uoFluid != null) - { - tFluid = uoFluid.getFluid(); - tAmount = uoFluid.getRandomAmount(tRandom); - tDecreasePerOperationAmount = uoFluid.DecreasePerOperationAmount; - if (tFluid != null) - tFluidId = tFluid.getID(); - //System.out.println("Fluid: ("+tFluidId+")"+tFluid.getName()+" Amount:"+tAmount); - } - - } catch (Exception e) { - tAmount = 0; - tFluidId = 0; - } - - try { - ChunkPosition tPos = new ChunkPosition(getScaleCoordinates(aX,16), aWorld.provider.dimensionId, getScaleCoordinates(aZ,16)); - int[] tInts = new int[3]; - if(GT_Proxy.chunkData.containsKey(tPos)){ - tInts = GT_Proxy.chunkData.get(tPos); - if(tInts.length>0){ - if(tInts[0]>0){tAmount = tInts[0];} - } - if(tInts.length>2){ - if(tInts[2]>0&&tInts[2]!=tFluidId) - { - tFluidId = tInts[2]; - tFluid = FluidRegistry.getFluid(tFluidId); - } - } - GT_Proxy.chunkData.remove(tPos); - } - - if (needConsumeOil && tAmount >= 5000) - tAmount = tAmount - tDecreasePerOperationAmount; - - tInts[0] = tAmount; - tInts[2] = tFluidId; - GT_Proxy.chunkData.put(tPos, tInts); - } catch (Exception e) { - System.out.println("getUndergroundOil() - Error put data"); - } - if (tFluid!=null) - return new FluidStack(tFluid, tAmount); - return null; - } - - //private static FluidStack getUndergroundOilFromInfo(int type,int amnt){ - // switch (type) {//0 is old system - // case 1: - // return new FluidStack(Materials.OilLight .mFluid,amnt); - // case 2: - // return new FluidStack(Materials.OilMedium.mFluid,amnt); - // case 3: - // return new FluidStack(Materials.OilHeavy .mFluid,amnt); - // case 4: - // return new FluidStack(Materials.Oil .mFluid,amnt); - // } - // return new FluidStack(Materials.NatruralGas.mGas,amnt);//5 - //} - // - //private static FluidStack setUndergroundOil(World aWorld, int aX, int aZ,ChunkPosition tPos,int[] tInts) { - // XSTR tRandom = new XSTR(aWorld.getSeed() ^ ((long)(aX / 6) + (long)(7000 * (aZ / 6)))); - // int type=tRandom.nextInt(5);//type slowly changes - // int amnt = (int)(Math.ceil(Math.pow(2D+(double)(tRandom.nextInt(48))+(new XSTR()).nextDouble(),8D)/200000D)); - // //roughly uses 28 bits - // FluidStack tFluidStack; - // switch (type) {//0 is old system - // case 1: - // tFluidStack=new FluidStack(Materials.OilLight .mFluid,amnt); - // break; - // case 2: - // tFluidStack=new FluidStack(Materials.OilMedium.mFluid,amnt); - // break; - // case 3: - // tFluidStack=new FluidStack(Materials.OilHeavy .mFluid,amnt); - // break; - // case 4: - // tFluidStack=new FluidStack(Materials.Oil .mFluid,amnt); - // break; - // default://case 0; -> 5 - // type=5;//important, 0 is invalid ! - // tFluidStack=new FluidStack(Materials.NatruralGas.mGas,amnt);//5 - // } - // - // tInts[0]=(type<<28)