From 8a46c870fdecd5d6b08c298656912341125d0f35 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Fri, 6 Aug 2021 15:42:41 +0200 Subject: Fix void miner ore generation Fix ores that are impossible to get because of their weight < 1 Former-commit-id: 3522bd46ed16293667c73626e16fd10f616fbe69 --- .../galacticgreg/GT_TileEntity_VoidMiner_Base.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java b/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java index 21596437e9..a383eb1923 100644 --- a/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java +++ b/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java @@ -22,6 +22,8 @@ package com.github.bartimaeusnek.crossmod.galacticgreg; +//import com.github.bartimaeusnek.bartworks.MainMod; + import bloodasp.galacticgreg.GT_Worldgen_GT_Ore_Layer_Space; import bloodasp.galacticgreg.GT_Worldgen_GT_Ore_SmallPieces_Space; import bloodasp.galacticgreg.GalacticGreg; @@ -268,12 +270,19 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri } private Pair getOreDamage() { - int curentWeight = 0; + /* + dropmap.values().forEach(f -> { + if(f < 1.f) + MainMod.LOGGER.info(f); + }); + */ + + float curentWeight = 0.f; while (true) { - int randomeint = (Math.abs(XSTR.XSTR_INSTANCE.nextInt((int) Math.ceil(totalWeight)))); + float randomnumber = XSTR.XSTR_INSTANCE.nextFloat() * totalWeight; for (Map.Entry, Float> entry : dropmap.entrySet()) { curentWeight += entry.getValue(); - if (randomeint < curentWeight) + if (randomnumber < curentWeight) return entry.getKey(); } } -- cgit From ee45c2ad5e78d3773e73102d7a7ff8d9774ba760 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Fri, 6 Aug 2021 15:49:14 +0200 Subject: Remove comments Former-commit-id: 1062f70ea6f76f2fe2fbffdcbae8692f5cd0f7d4 --- .../crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java | 9 --------- 1 file changed, 9 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java b/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java index a383eb1923..583d01d88b 100644 --- a/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java +++ b/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java @@ -22,8 +22,6 @@ package com.github.bartimaeusnek.crossmod.galacticgreg; -//import com.github.bartimaeusnek.bartworks.MainMod; - import bloodasp.galacticgreg.GT_Worldgen_GT_Ore_Layer_Space; import bloodasp.galacticgreg.GT_Worldgen_GT_Ore_SmallPieces_Space; import bloodasp.galacticgreg.GalacticGreg; @@ -270,13 +268,6 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri } private Pair getOreDamage() { - /* - dropmap.values().forEach(f -> { - if(f < 1.f) - MainMod.LOGGER.info(f); - }); - */ - float curentWeight = 0.f; while (true) { float randomnumber = XSTR.XSTR_INSTANCE.nextFloat() * totalWeight; -- cgit From 57ec3824cf15f019942a93728a526c67bd8d0f8e Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sat, 7 Aug 2021 00:13:59 +0200 Subject: Fix ross ores & generation chances Fixes issue where ross planets have all ores from both of them & Fixes weight override when the same ore appears more than once Former-commit-id: a79536975a6362224cab0cb7844210550d2eb7ab --- .../galacticgreg/GT_TileEntity_VoidMiner_Base.java | 45 +++++++++++++--------- 1 file changed, 26 insertions(+), 19 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java b/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java index 583d01d88b..8b65acd176 100644 --- a/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java +++ b/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java @@ -215,19 +215,26 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri } } + private void put(Pair key, float value){ + if(!dropmap.containsKey(key)) + dropmap.put(key, value); + else + dropmap.put(key, dropmap.get(key) + value); + } + private void getDropsVanillaVeins(Predicate oreLayerPredicate) { GT_Worldgen_GT_Ore_Layer.sList.stream().filter(gt_worldgen -> gt_worldgen.mEnabled && oreLayerPredicate.test(gt_worldgen)).forEach(element -> { - dropmap.put(new Pair<>((int) element.mPrimaryMeta,false), (float) element.mWeight); - dropmap.put(new Pair<>((int) element.mSecondaryMeta,false), (float) element.mWeight); - dropmap.put(new Pair<>((int) element.mSporadicMeta,false), (element.mWeight / 8f)); - dropmap.put(new Pair<>((int) element.mBetweenMeta,false), (element.mWeight / 8f)); + put(new Pair<>((int) element.mPrimaryMeta,false), (float) element.mWeight); + put(new Pair<>((int) element.mSecondaryMeta,false), (float) element.mWeight); + put(new Pair<>((int) element.mSporadicMeta,false), (element.mWeight / 8f)); + put(new Pair<>((int) element.mBetweenMeta,false), (element.mWeight / 8f)); } ); } private void getDropsVanillaSmallOres(Predicate smallOresPredicate) { GT_Worldgen_GT_Ore_SmallPieces.sList.stream().filter(gt_worldgen -> gt_worldgen.mEnabled && smallOresPredicate.test(gt_worldgen)).forEach(element -> - dropmap.put(new Pair<>((int) element.mMeta,false), (float) element.mAmount) + put(new Pair<>((int) element.mMeta,false), (float) element.mAmount) ); } @@ -248,10 +255,10 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri space.forEach( element -> { - dropmap.put(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mPrimaryMeta,false), (float) ((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight); - dropmap.put(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mSecondaryMeta,false), (float) ((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight); - dropmap.put(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mSporadicMeta,false), (((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight / 8f)); - dropmap.put(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mBetweenMeta,false), (((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight / 8f)); + put(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mPrimaryMeta,false), (float) ((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight); + put(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mSecondaryMeta,false), (float) ((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight); + put(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mSporadicMeta,false), (((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight / 8f)); + put(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mBetweenMeta,false), (((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight / 8f)); } ); } @@ -263,7 +270,7 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri space.forEach( element -> - dropmap.put(new Pair<>((int) ((GT_Worldgen_GT_Ore_SmallPieces_Space) element).mMeta,false), (float) ((GT_Worldgen_GT_Ore_SmallPieces_Space) element).mAmount) + put(new Pair<>((int) ((GT_Worldgen_GT_Ore_SmallPieces_Space) element).mMeta,false), (float) ((GT_Worldgen_GT_Ore_SmallPieces_Space) element).mAmount) ); } @@ -311,10 +318,10 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri private void getDropMapRoss(int aID) { Consumer addToList = makeAddToList(); - if (aID == ConfigHandler.ross128BID) - BW_WorldGenRoss128b.sList.forEach(addToList); - else if (aID == ConfigHandler.ross128BAID) - BW_WorldGenRoss128ba.sList.forEach(addToList); + BW_OreLayer.sList.stream() + .filter(gt_worldgen -> gt_worldgen.mEnabled && gt_worldgen instanceof BW_OreLayer && gt_worldgen.isGenerationAllowed(null, aID, 0)) + .collect(Collectors.toSet()) + .forEach(addToList); } private void getDropMapBartworks(ModDimensionDef finalDef) { @@ -327,10 +334,10 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri return element -> { List> data = element.getStacksRawData(); for (int i = 0; i < data.size(); i++) { - if (i < data.size()-1) - dropmap.put(data.get(i), (float) element.mWeight); + if (i < data.size()-2) + put(data.get(i), (float) element.mWeight); else - dropmap.put(data.get(i), (element.mWeight/8f)); + put(data.get(i), (element.mWeight/8f)); } }; } @@ -361,13 +368,13 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri space.forEach( element -> - dropmap.put(new Pair<>(((BW_Worldgen_Ore_SmallOre_Space) element).mPrimaryMeta, ((BW_Worldgen_Ore_SmallOre_Space) element).bwOres != 0), (float) ((BW_Worldgen_Ore_SmallOre_Space) element).mDensity) + put(new Pair<>(((BW_Worldgen_Ore_SmallOre_Space) element).mPrimaryMeta, ((BW_Worldgen_Ore_SmallOre_Space) element).bwOres != 0), (float) ((BW_Worldgen_Ore_SmallOre_Space) element).mDensity) ); } catch (NullPointerException ignored) {} } private void handleExtraDrops(int id) { - Optional.ofNullable(getExtraDropsDimMap().get(id)).ifPresent(e -> e.forEach(f -> dropmap.put(f.getKey(), f.getValue()))); + Optional.ofNullable(getExtraDropsDimMap().get(id)).ifPresent(e -> e.forEach(f -> put(f.getKey(), f.getValue()))); } private void calculateTotalWeight() { -- cgit From eaa509aca3202388871fa482c1cc56bda4cd81e0 Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 8 Aug 2021 00:12:27 +0200 Subject: Fix server freeze when miner is placed in garden dim or any other dim without ores & name changes Former-commit-id: 2f4afe6749189afebef3e646a52be48ed70ccd4e --- .../galacticgreg/GT_TileEntity_VoidMiner_Base.java | 42 ++++++++++++---------- 1 file changed, 24 insertions(+), 18 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java b/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java index 8b65acd176..370a2b579e 100644 --- a/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java +++ b/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java @@ -140,9 +140,15 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri @Override protected boolean workingAtBottom(ItemStack aStack, int xDrill, int yDrill, int zDrill, int xPipe, int zPipe, int yHead, int oldYHead) { makeDropMap(); - handleFluidConsumption(); - handleOutputs(); - return true; + if(dropmap.size() > 0){ + handleFluidConsumption(); + handleOutputs(); + return true; + } + else{ + stopMachine(); + return false; + } } @Override @@ -215,7 +221,7 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri } } - private void put(Pair key, float value){ + private void addDrop(Pair key, float value){ if(!dropmap.containsKey(key)) dropmap.put(key, value); else @@ -224,17 +230,17 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri private void getDropsVanillaVeins(Predicate oreLayerPredicate) { GT_Worldgen_GT_Ore_Layer.sList.stream().filter(gt_worldgen -> gt_worldgen.mEnabled && oreLayerPredicate.test(gt_worldgen)).forEach(element -> { - put(new Pair<>((int) element.mPrimaryMeta,false), (float) element.mWeight); - put(new Pair<>((int) element.mSecondaryMeta,false), (float) element.mWeight); - put(new Pair<>((int) element.mSporadicMeta,false), (element.mWeight / 8f)); - put(new Pair<>((int) element.mBetweenMeta,false), (element.mWeight / 8f)); + addDrop(new Pair<>((int) element.mPrimaryMeta,false), (float) element.mWeight); + addDrop(new Pair<>((int) element.mSecondaryMeta,false), (float) element.mWeight); + addDrop(new Pair<>((int) element.mSporadicMeta,false), (element.mWeight / 8f)); + addDrop(new Pair<>((int) element.mBetweenMeta,false), (element.mWeight / 8f)); } ); } private void getDropsVanillaSmallOres(Predicate smallOresPredicate) { GT_Worldgen_GT_Ore_SmallPieces.sList.stream().filter(gt_worldgen -> gt_worldgen.mEnabled && smallOresPredicate.test(gt_worldgen)).forEach(element -> - put(new Pair<>((int) element.mMeta,false), (float) element.mAmount) + addDrop(new Pair<>((int) element.mMeta,false), (float) element.mAmount) ); } @@ -255,10 +261,10 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri space.forEach( element -> { - put(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mPrimaryMeta,false), (float) ((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight); - put(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mSecondaryMeta,false), (float) ((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight); - put(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mSporadicMeta,false), (((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight / 8f)); - put(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mBetweenMeta,false), (((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight / 8f)); + addDrop(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mPrimaryMeta,false), (float) ((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight); + addDrop(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mSecondaryMeta,false), (float) ((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight); + addDrop(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mSporadicMeta,false), (((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight / 8f)); + addDrop(new Pair<>((int) ((GT_Worldgen_GT_Ore_Layer_Space) element).mBetweenMeta,false), (((GT_Worldgen_GT_Ore_Layer_Space) element).mWeight / 8f)); } ); } @@ -270,7 +276,7 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri space.forEach( element -> - put(new Pair<>((int) ((GT_Worldgen_GT_Ore_SmallPieces_Space) element).mMeta,false), (float) ((GT_Worldgen_GT_Ore_SmallPieces_Space) element).mAmount) + addDrop(new Pair<>((int) ((GT_Worldgen_GT_Ore_SmallPieces_Space) element).mMeta,false), (float) ((GT_Worldgen_GT_Ore_SmallPieces_Space) element).mAmount) ); } @@ -335,9 +341,9 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri List> data = element.getStacksRawData(); for (int i = 0; i < data.size(); i++) { if (i < data.size()-2) - put(data.get(i), (float) element.mWeight); + addDrop(data.get(i), (float) element.mWeight); else - put(data.get(i), (element.mWeight/8f)); + addDrop(data.get(i), (element.mWeight/8f)); } }; } @@ -368,13 +374,13 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri space.forEach( element -> - put(new Pair<>(((BW_Worldgen_Ore_SmallOre_Space) element).mPrimaryMeta, ((BW_Worldgen_Ore_SmallOre_Space) element).bwOres != 0), (float) ((BW_Worldgen_Ore_SmallOre_Space) element).mDensity) + addDrop(new Pair<>(((BW_Worldgen_Ore_SmallOre_Space) element).mPrimaryMeta, ((BW_Worldgen_Ore_SmallOre_Space) element).bwOres != 0), (float) ((BW_Worldgen_Ore_SmallOre_Space) element).mDensity) ); } catch (NullPointerException ignored) {} } private void handleExtraDrops(int id) { - Optional.ofNullable(getExtraDropsDimMap().get(id)).ifPresent(e -> e.forEach(f -> put(f.getKey(), f.getValue()))); + Optional.ofNullable(getExtraDropsDimMap().get(id)).ifPresent(e -> e.forEach(f -> addDrop(f.getKey(), f.getValue()))); } private void calculateTotalWeight() { -- cgit From 97dba8b15bbcea8ae17ac46ab02ec8088a0be42e Mon Sep 17 00:00:00 2001 From: kuba6000 Date: Sun, 8 Aug 2021 00:35:01 +0200 Subject: Change logic Former-commit-id: 0b1528224ccf3921febe2d5b74df97538ba86a06 --- .../crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java') diff --git a/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java b/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java index 370a2b579e..6f304fda39 100644 --- a/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java +++ b/src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java @@ -140,7 +140,7 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri @Override protected boolean workingAtBottom(ItemStack aStack, int xDrill, int yDrill, int zDrill, int xPipe, int zPipe, int yHead, int oldYHead) { makeDropMap(); - if(dropmap.size() > 0){ + if(totalWeight != 0.f){ handleFluidConsumption(); handleOutputs(); return true; -- cgit