From cbd693f6a29a3c1b2d056cd23f47b610d96c2b34 Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Fri, 2 Dec 2022 18:47:58 +0800 Subject: add API to register other simple block as valid boroglass in multi (#240) * add API to register other simple block as valid boroglass in multi * remove raw access to allLevels * fix copy paste error Former-commit-id: e11e3f9634c16d15c69862c170c98d30669b0a8e --- .../bartworks/API/BorosilicateGlass.java | 141 ++++++++++++--------- .../GT_TileEntity_ElectricImplosionCompressor.java | 25 ++++ .../mega/GT_TileEntity_MegaMultiBlockBase.java | 23 ++-- 3 files changed, 112 insertions(+), 77 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/API/BorosilicateGlass.java b/src/main/java/com/github/bartimaeusnek/bartworks/API/BorosilicateGlass.java index 1e5946b78d..35b6bb8f82 100644 --- a/src/main/java/com/github/bartimaeusnek/bartworks/API/BorosilicateGlass.java +++ b/src/main/java/com/github/bartimaeusnek/bartworks/API/BorosilicateGlass.java @@ -2,12 +2,17 @@ package com.github.bartimaeusnek.bartworks.API; import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; -import com.github.bartimaeusnek.bartworks.common.blocks.BW_GlasBlocks; -import com.github.bartimaeusnek.bartworks.common.blocks.BW_GlasBlocks2; +import com.google.common.collect.HashBasedTable; +import com.google.common.collect.LinkedHashMultimap; +import com.google.common.collect.SetMultimap; +import com.google.common.collect.Table; import com.gtnewhorizon.structurelib.structure.IStructureElement; +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.LoaderState; import cpw.mods.fml.common.registry.GameRegistry; import java.util.ArrayList; import java.util.List; +import java.util.PriorityQueue; import java.util.function.BiConsumer; import java.util.function.Function; import java.util.stream.Collectors; @@ -20,40 +25,66 @@ import org.apache.commons.lang3.tuple.Pair; * You might have noticed this API does not expose any Block instance, but only IStructureElements. This is in case we * add more glass blocks later, and we run out of meta id for only one block. *
- * IStructureElements returned from this class should not have its methods called before the game start.
+ * IStructureElements returned from this class SHOULD NOT have its methods called before post init, or else
+ * you might end up with wrong autoplace hints.
*/
public class BorosilicateGlass {
- private static Block block;
+ private static Block block, block2;
private static List
* Use this if you just want boroglass here and doesn't care what tier it is.
*/
@@ -85,6 +133,7 @@ public class BorosilicateGlass {
/**
* Get a structure element for any kind of borosilicate glass. DOES NOT accept other glass like reinforced glass, magic mirror, vanilla glass, etc.
+ * unless these glass are explicitly registered as a borosilicate glass.
*
* Use this if you just want boroglass here and doesn't care what tier it is.
*/
@@ -94,6 +143,7 @@ public class BorosilicateGlass {
/**
* Get a structure element for borosilicate glass. DOES NOT accept other glass like reinforced glass, magic mirror, vanilla glass, etc.
+ * unless these glass are explicitly registered as a borosilicate glass.
*
* This assumes you want all glass used to be of the same tier.
*
@@ -109,6 +159,7 @@ public class BorosilicateGlass {
/**
* Get a structure element for borosilicate glass. DOES NOT accept other glass like reinforced glass, magic mirror, vanilla glass, etc.
+ * unless these glass are explicitly registered as a borosilicate glass.
*
* @param initialValue the value set before structure check started
* @param minTier minimal accepted tier. inclusive. must be greater than 0.
@@ -130,48 +181,12 @@ public class BorosilicateGlass {
/**
* Get the tier of this borosilicate glass. DOES NOT consider other glass like reinforced glass, magic mirror, vanilla glass, etc.
+ * unless these glass are explicitly registered as a borosilicate glass.
+ *
+ * @return glass tier, or -1 if is not a borosilicate glass
*/
public static byte getTier(Block block, int meta) {
- byte ret;
- if (block instanceof BW_GlasBlocks2) meta += 16;
- switch (meta) {
- case 1:
- ret = 4;
- break;
- case 2:
- case 12:
- ret = 5;
- break;
- case 3:
- ret = 6;
- break;
- case 4:
- ret = 7;
- break;
- case 5:
- ret = 8;
- break;
- case 13:
- ret = 9;
- break;
- case 14:
- ret = 10;
- break;
- case 15:
- ret = 11;
- break;
- case 16:
- ret = 12;
- break;
- default:
- ret = 3;
- }
- if (block instanceof BW_GlasBlocks) {
- return block == getGlassBlock() ? ret : -1;
- }
- if (block instanceof BW_GlasBlocks2) {
- return block == getGlassBlock2() ? ret : -1;
- }
- return -1;
+ Byte ret = allLevelsReverse.get(block, meta);
+ return ret == null ? -1 : ret;
}
}
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_ElectricImplosionCompressor.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_ElectricImplosionCompressor.java
index 2f937f1c2d..c643b3c23d 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_ElectricImplosionCompressor.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_ElectricImplosionCompressor.java
@@ -33,6 +33,7 @@ import com.github.bartimaeusnek.bartworks.common.configs.ConfigHandler;
import com.gtnewhorizon.structurelib.StructureLibAPI;
import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits;
import com.gtnewhorizon.structurelib.alignment.enumerable.ExtendedFacing;
+import com.gtnewhorizon.structurelib.structure.AutoPlaceEnvironment;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.structure.IStructureElement;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
@@ -151,6 +152,30 @@ public class GT_TileEntity_ElectricImplosionCompressor
else world.setBlockToAir(x, y, z);
return true;
}
+
+ @Override
+ public BlocksToPlace getBlocksToPlace(
+ GT_TileEntity_ElectricImplosionCompressor t,
+ World world,
+ int x,
+ int y,
+ int z,
+ ItemStack trigger,
+ AutoPlaceEnvironment env) {
+ return BlocksToPlace.createEmpty();
+ }
+
+ @Override
+ public PlaceResult survivalPlaceBlock(
+ GT_TileEntity_ElectricImplosionCompressor t,
+ World world,
+ int x,
+ int y,
+ int z,
+ ItemStack trigger,
+ AutoPlaceEnvironment env) {
+ return isAir().survivalPlaceBlock(t, world, x, y, z, trigger, env);
+ }
})
.build();
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaMultiBlockBase.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaMultiBlockBase.java
index 7cd9595d00..a985814a2d 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaMultiBlockBase.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/mega/GT_TileEntity_MegaMultiBlockBase.java
@@ -13,7 +13,7 @@ import com.github.bartimaeusnek.crossmod.tectech.tileentites.tiered.LowPowerLase
import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_EnergyMulti;
import com.google.common.collect.ImmutableList;
import com.gtnewhorizon.structurelib.StructureLibAPI;
-import com.gtnewhorizon.structurelib.structure.IItemSource;
+import com.gtnewhorizon.structurelib.structure.AutoPlaceEnvironment;
import com.gtnewhorizon.structurelib.structure.IStructureElement;
import cpw.mods.fml.common.Optional;
import gregtech.api.interfaces.IHatchElement;
@@ -25,13 +25,10 @@ import gregtech.api.util.IGT_HatchAdder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.function.Consumer;
-import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.util.IChatComponent;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
@@ -372,19 +369,17 @@ public abstract class GT_TileEntity_MegaMultiBlockBase