diff options
author | kuba6000 <kuba.123123.6000@gmail.com> | 2021-08-08 00:12:27 +0200 |
---|---|---|
committer | kuba6000 <kuba.123123.6000@gmail.com> | 2021-08-08 00:12:27 +0200 |
commit | eaa509aca3202388871fa482c1cc56bda4cd81e0 (patch) | |
tree | d2d654aed65e74c1aedafb68c1114fecba1c617f /src/main | |
parent | 57ec3824cf15f019942a93728a526c67bd8d0f8e (diff) | |
download | GT5-Unofficial-eaa509aca3202388871fa482c1cc56bda4cd81e0.tar.gz GT5-Unofficial-eaa509aca3202388871fa482c1cc56bda4cd81e0.tar.bz2 GT5-Unofficial-eaa509aca3202388871fa482c1cc56bda4cd81e0.zip |
Fix server freeze when miner is placed in garden dim or any other dim without ores & name changes
Former-commit-id: 2f4afe6749189afebef3e646a52be48ed70ccd4e
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/github/bartimaeusnek/crossmod/galacticgreg/GT_TileEntity_VoidMiner_Base.java | 42 |
1 files changed, 24 insertions, 18 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 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<Integer,Boolean> key, float value){ + private void addDrop(Pair<Integer,Boolean> 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<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 -> { - 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<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 -> - 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<Pair<Integer,Boolean>> 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() { |