aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJakub <53441451+kuba6000@users.noreply.github.com>2022-11-14 21:13:28 +0100
committerGitHub <noreply@github.com>2022-11-14 21:13:28 +0100
commita54d284d4536d9bbb6e6932ebbbc32781c53e375 (patch)
tree183ad424defc3505d690eb696353bceee1fafa8b /src
parentdc436cf61864bc23ab6ebe662f6db3ffba8b21c7 (diff)
downloadGT5-Unofficial-a54d284d4536d9bbb6e6932ebbbc32781c53e375.tar.gz
GT5-Unofficial-a54d284d4536d9bbb6e6932ebbbc32781c53e375.tar.bz2
GT5-Unofficial-a54d284d4536d9bbb6e6932ebbbc32781c53e375.zip
Structures fixes (#237)
* Fix * Windmill Former-commit-id: 1b13177de01df5f05f0b87a2ada3da9ed4bf30c1
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java14
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_Windmill.java79
-rw-r--r--src/main/java/com/github/bartimaeusnek/bartworks/util/BW_Util.java40
3 files changed, 95 insertions, 38 deletions
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java
index e3ab8def8e..d3254fc894 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_CircuitAssemblyLine.java
@@ -27,6 +27,7 @@ import static com.github.bartimaeusnek.bartworks.util.BW_Util.ofGlassTieredMixed
import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
import static gregtech.api.enums.GT_HatchElement.*;
+import static gregtech.api.enums.SoundResource.IC2_MACHINES_MAGNETIZER_LOOP;
import static gregtech.api.enums.Textures.BlockIcons.*;
import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
@@ -36,8 +37,8 @@ import com.github.bartimaeusnek.bartworks.util.BWRecipes;
import com.github.bartimaeusnek.bartworks.util.BW_Tooltip_Reference;
import com.github.bartimaeusnek.bartworks.util.BW_Util;
import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
-import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment;
import com.gtnewhorizon.structurelib.structure.StructureDefinition;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Textures;
@@ -56,7 +57,6 @@ import gregtech.api.util.GT_Utility;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
-import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.StatCollector;
@@ -183,7 +183,7 @@ public class GT_TileEntity_CircuitAssemblyLine
public void startSoundLoop(byte aIndex, double aX, double aY, double aZ) {
super.startSoundLoop(aIndex, aX, aY, aZ);
if (aIndex == 20) {
- GT_Utility.doSoundAtClient(GregTech_API.sSoundList.get(212), 10, 1.0F, aX, aY, aZ);
+ GT_Utility.doSoundAtClient(IC2_MACHINES_MAGNETIZER_LOOP, 10, 1.0F, aX, aY, aZ);
}
}
@@ -425,17 +425,15 @@ public class GT_TileEntity_CircuitAssemblyLine
}
@Override
- public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) {
if (mMachine) return -1;
int built;
- built = survivialBuildPiece(
- STRUCTURE_PIECE_FIRST, stackSize, 0, 0, 0, elementBudget, source, actor, false, true);
+ built = survivialBuildPiece(STRUCTURE_PIECE_FIRST, stackSize, 0, 0, 0, elementBudget, env, false, true);
if (built >= 0) return built;
int tLength = Math.min(stackSize.stackSize + 1, 7);
for (int i = 1; i < tLength; ++i) {
- built = survivialBuildPiece(
- STRUCTURE_PIECE_NEXT, stackSize, -i, 0, 0, elementBudget, source, actor, false, true);
+ built = survivialBuildPiece(STRUCTURE_PIECE_NEXT, stackSize, -i, 0, 0, elementBudget, env, false, true);
if (built >= 0) return built;
}
return -1;
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_Windmill.java b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_Windmill.java
index fddf307ec1..83075e48e0 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_Windmill.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/common/tileentities/multis/GT_TileEntity_Windmill.java
@@ -29,14 +29,13 @@ import static gregtech.api.enums.GT_Values.V;
import com.github.bartimaeusnek.bartworks.MainMod;
import com.github.bartimaeusnek.bartworks.client.gui.BW_GUIContainer_Windmill;
import com.github.bartimaeusnek.bartworks.common.items.BW_Stonage_Rotors;
+import com.github.bartimaeusnek.bartworks.common.loaders.ItemRegistry;
import com.github.bartimaeusnek.bartworks.common.tileentities.classic.BW_RotorBlock;
import com.github.bartimaeusnek.bartworks.server.container.BW_Container_Windmill;
import com.gtnewhorizon.structurelib.StructureLibAPI;
import com.gtnewhorizon.structurelib.alignment.IAlignmentLimits;
import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
-import com.gtnewhorizon.structurelib.structure.IItemSource;
-import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
-import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+import com.gtnewhorizon.structurelib.structure.*;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -60,7 +59,6 @@ import java.util.List;
import java.util.Set;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
-import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
@@ -69,6 +67,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityDispenser;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.World;
public class GT_TileEntity_Windmill extends GT_MetaTileEntity_EnhancedMultiBlockBase<GT_TileEntity_Windmill>
implements ISurvivalConstructable {
@@ -115,10 +114,71 @@ public class GT_TileEntity_Windmill extends GT_MetaTileEntity_EnhancedMultiBlock
onElementPass(t -> t.mHardenedClay++, ofBlock(Blocks.hardened_clay, 0)),
ofTileAdder(
GT_TileEntity_Windmill::addDispenserToOutputSet, Blocks.hardened_clay, 0),
- onElementPass(t -> t.mDoor++, ofBlock(Blocks.wooden_door, 0))))
+ onElementPass(
+ t -> t.mDoor++, new IStructureElementNoPlacement<GT_TileEntity_Windmill>() {
+ private final IStructureElement<GT_TileEntity_Windmill> delegate =
+ ofBlock(Blocks.wooden_door, 0);
+
+ @Override
+ public boolean check(
+ GT_TileEntity_Windmill gt_tileEntity_windmill,
+ World world,
+ int x,
+ int y,
+ int z) {
+ return delegate.check(gt_tileEntity_windmill, world, x, y, z);
+ }
+
+ @Override
+ public boolean spawnHint(
+ GT_TileEntity_Windmill gt_tileEntity_windmill,
+ World world,
+ int x,
+ int y,
+ int z,
+ ItemStack trigger) {
+ return delegate.spawnHint(
+ gt_tileEntity_windmill, world, x, y, z, trigger);
+ }
+ })))
.addElement('b', ofBlock(Blocks.brick_block, 0))
- .addElement(
- 's', ofTileAdder(GT_TileEntity_Windmill::setRotorBlock, StructureLibAPI.getBlockHint(), 0))
+ .addElement('s', new IStructureElement<GT_TileEntity_Windmill>() {
+ @Override
+ public boolean check(GT_TileEntity_Windmill t, World world, int x, int y, int z) {
+ TileEntity tileEntity = world.getTileEntity(x, y, z);
+ return t.setRotorBlock(tileEntity);
+ }
+
+ @Override
+ public boolean spawnHint(
+ GT_TileEntity_Windmill t, World world, int x, int y, int z, ItemStack trigger) {
+ StructureLibAPI.hintParticle(world, x, y, z, StructureLibAPI.getBlockHint(), 0);
+ return true;
+ }
+
+ @Override
+ public boolean placeBlock(
+ GT_TileEntity_Windmill gt_tileEntity_windmill,
+ World world,
+ int x,
+ int y,
+ int z,
+ ItemStack trigger) {
+ return false;
+ }
+
+ @Override
+ public BlocksToPlace getBlocksToPlace(
+ GT_TileEntity_Windmill gt_tileEntity_windmill,
+ World world,
+ int x,
+ int y,
+ int z,
+ ItemStack trigger,
+ AutoPlaceEnvironment env) {
+ return BlocksToPlace.create(new ItemStack(ItemRegistry.ROTORBLOCK));
+ }
+ })
.build();
@Override
@@ -487,10 +547,9 @@ public class GT_TileEntity_Windmill extends GT_MetaTileEntity_EnhancedMultiBlock
}
@Override
- public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
+ public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) {
if (mMachine) return -1;
- return survivialBuildPiece(
- STRUCTURE_PIECE_MAIN, stackSize, 3, 11, 0, elementBudget, source, actor, false, true);
+ return survivialBuildPiece(STRUCTURE_PIECE_MAIN, stackSize, 3, 11, 0, elementBudget, env, false, true);
}
public float OutputMultiplier(BW_RotorBlock rotorBlock) {
diff --git a/src/main/java/com/github/bartimaeusnek/bartworks/util/BW_Util.java b/src/main/java/com/github/bartimaeusnek/bartworks/util/BW_Util.java
index 365c79d496..de6037095f 100644
--- a/src/main/java/com/github/bartimaeusnek/bartworks/util/BW_Util.java
+++ b/src/main/java/com/github/bartimaeusnek/bartworks/util/BW_Util.java
@@ -28,9 +28,8 @@ import com.github.bartimaeusnek.bartworks.API.BioVatLogicAdder;
import com.github.bartimaeusnek.bartworks.API.BorosilicateGlass;
import com.github.bartimaeusnek.bartworks.MainMod;
import com.gtnewhorizon.structurelib.StructureLibAPI;
-import com.gtnewhorizon.structurelib.structure.IItemSource;
+import com.gtnewhorizon.structurelib.structure.AutoPlaceEnvironment;
import com.gtnewhorizon.structurelib.structure.IStructureElement;
-import com.gtnewhorizon.structurelib.structure.IStructureElementNoPlacement;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OreDictNames;
import gregtech.api.enums.ToolDictNames;
@@ -46,7 +45,6 @@ import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.util.*;
import java.util.function.BiConsumer;
-import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Nonnegative;
@@ -54,7 +52,6 @@ import javax.annotation.Nonnull;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.enchantment.Enchantment;
-import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.EnumRarity;
@@ -62,7 +59,6 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.IRecipe;
-import net.minecraft.util.IChatComponent;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
@@ -976,8 +972,7 @@ public class BW_Util {
if (world.isAirBlock(x, y, z)) return false;
byte glasstier =
BW_Util.calculateGlassTier(world.getBlock(x, y, z), (byte) world.getBlockMetadata(x, y, z));
- if (glasstier == 0) // is not a glass ?
- return false;
+ if (glasstier == 0) return false; // is not a glass ?
if (glasstier == notset) return false;
if (glasstier < mintier) return false;
if (glasstier > maxtier) return false;
@@ -998,29 +993,23 @@ public class BW_Util {
@Override
public PlaceResult survivalPlaceBlock(
- T t,
- World world,
- int x,
- int y,
- int z,
- ItemStack trigger,
- IItemSource s,
- EntityPlayerMP actor,
- Consumer<IChatComponent> chatter) {
- return placementDelegate.survivalPlaceBlock(t, world, x, y, z, trigger, s, actor, chatter);
+ T t, World world, int x, int y, int z, ItemStack trigger, AutoPlaceEnvironment env) {
+ return placementDelegate.survivalPlaceBlock(t, world, x, y, z, trigger, env);
}
};
}
public static <T> IStructureElement<T> ofGlassTieredMixed(byte mintier, byte maxtier, int aDots) {
- return new IStructureElementNoPlacement<T>() {
+ return new IStructureElement<T>() {
+ private final IStructureElement<T> placementDelegate =
+ BorosilicateGlass.ofBoroGlass((byte) 0, mintier, maxtier, (v1, v2) -> {}, (v1) -> (byte) 0);
+
@Override
public boolean check(T te, World world, int x, int y, int z) {
if (world.isAirBlock(x, y, z)) return false;
byte glasstier =
BW_Util.calculateGlassTier(world.getBlock(x, y, z), (byte) world.getBlockMetadata(x, y, z));
- if (glasstier == 0) // is not a glass ?
- return false;
+ if (glasstier == 0) return false; // is not a glass ?
return glasstier >= mintier && glasstier <= maxtier;
}
@@ -1029,6 +1018,17 @@ public class BW_Util {
StructureLibAPI.hintParticle(world, x, y, z, StructureLibAPI.getBlockHint(), aDots - 1);
return true;
}
+
+ @Override
+ public boolean placeBlock(T t, World world, int x, int y, int z, ItemStack trigger) {
+ return placementDelegate.placeBlock(t, world, x, y, z, trigger);
+ }
+
+ @Override
+ public PlaceResult survivalPlaceBlock(
+ T t, World world, int x, int y, int z, ItemStack trigger, AutoPlaceEnvironment env) {
+ return placementDelegate.survivalPlaceBlock(t, world, x, y, z, trigger, env);
+ }
};
}