diff options
author | Jakub <53441451+kuba6000@users.noreply.github.com> | 2022-11-14 21:13:28 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-14 21:13:28 +0100 |
commit | a54d284d4536d9bbb6e6932ebbbc32781c53e375 (patch) | |
tree | 183ad424defc3505d690eb696353bceee1fafa8b /src | |
parent | dc436cf61864bc23ab6ebe662f6db3ffba8b21c7 (diff) | |
download | GT5-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')
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); + } }; } |