diff options
author | Martin Robertz <dream-master@gmx.net> | 2021-08-08 00:40:37 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-08 00:40:37 +0200 |
commit | dc405f9ae8f5157ca1e2e0530d09c922288206fc (patch) | |
tree | 0da099d3a2c588191b6786d8573e4cfd439ebea0 /src/main/java | |
parent | 3441832bbda438794789488afd0e7f27a5d0a5cd (diff) | |
parent | 97dba8b15bbcea8ae17ac46ab02ec8088a0be42e (diff) | |
download | GT5-Unofficial-dc405f9ae8f5157ca1e2e0530d09c922288206fc.tar.gz GT5-Unofficial-dc405f9ae8f5157ca1e2e0530d09c922288206fc.tar.bz2 GT5-Unofficial-dc405f9ae8f5157ca1e2e0530d09c922288206fc.zip |
Merge pull request #23 from kuba6000/master
Fix void miner ore generation
Former-commit-id: 953e06e849cd2d506ab7b1172329cdbd9e11615d
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java | 63 |
1 files changed, 38 insertions, 25 deletions
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..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,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(totalWeight != 0.f){ + handleFluidConsumption(); + handleOutputs(); + return true; + } + else{ + stopMachine(); + return false; + } } @Override @@ -215,19 +221,26 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri } } + private void addDrop(Pair<Integer,Boolean> key, float value){ + if(!dropmap.containsKey(key)) + dropmap.put(key, value); + else + dropmap.put(key, dropmap.get(key) + value); + } + private void getDropsVanillaVeins(Predicate<GT_Worldgen_GT_Ore_Layer> 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)); + 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<GT_Worldgen_GT_Ore_SmallPieces> 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) + addDrop(new Pair<>((int) element.mMeta,false), (float) element.mAmount) ); } @@ -248,10 +261,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)); + 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)); } ); } @@ -263,17 +276,17 @@ 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) + addDrop(new Pair<>((int) ((GT_Worldgen_GT_Ore_SmallPieces_Space) element).mMeta,false), (float) ((GT_Worldgen_GT_Ore_SmallPieces_Space) element).mAmount) ); } private Pair<Integer,Boolean> getOreDamage() { - int curentWeight = 0; + 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<Pair<Integer,Boolean>, Float> entry : dropmap.entrySet()) { curentWeight += entry.getValue(); - if (randomeint < curentWeight) + if (randomnumber < curentWeight) return entry.getKey(); } } @@ -311,10 +324,10 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri private void getDropMapRoss(int aID) { Consumer<BW_OreLayer> 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 +340,10 @@ public abstract class GT_TileEntity_VoidMiner_Base extends GT_MetaTileEntity_Dri return element -> { List<Pair<Integer,Boolean>> 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) + addDrop(data.get(i), (float) element.mWeight); else - dropmap.put(data.get(i), (element.mWeight/8f)); + addDrop(data.get(i), (element.mWeight/8f)); } }; } @@ -361,13 +374,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) + 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 -> dropmap.put(f.getKey(), f.getValue()))); + Optional.ofNullable(getExtraDropsDimMap().get(id)).ifPresent(e -> e.forEach(f -> addDrop(f.getKey(), f.getValue()))); } private void calculateTotalWeight() { |