Skip to content
This repository has been archived by the owner on May 24, 2024. It is now read-only.

Commit

Permalink
Merge pull request #79 from GTNewHorizons/feature/autoplace
Browse files Browse the repository at this point in the history
Partial autoplace integration
  • Loading branch information
Dream-Master authored Aug 19, 2022
2 parents 9ed7b4b + 406ee6c commit acb8e37
Show file tree
Hide file tree
Showing 7 changed files with 400 additions and 46 deletions.
7 changes: 3 additions & 4 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,17 @@

dependencies {
shadowImplementation('com.github.GTNewHorizons:AVRcore:master-SNAPSHOT')

compile('com.github.GTNewHorizons:GT5-Unofficial:5.09.40.100-pre:dev')
compile('com.github.GTNewHorizons:GT5-Unofficial:5.09.41.00:dev')
compile('com.github.GTNewHorizons:Yamcl:0.5.82:dev')
compile('com.github.GTNewHorizons:NotEnoughItems:2.2.20-GTNH:dev')
compile('com.github.GTNewHorizons:NotEnoughItems:2.2.22:dev')
compile('com.github.GTNewHorizons:CodeChickenLib:1.1.5.3:dev')
compile('com.github.GTNewHorizons:CodeChickenCore:1.1.4:dev')
compile('com.github.GTNewHorizons:StructureLib:1.1.3:dev')
compile('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev')

compileOnly('com.github.GTNewHorizons:OpenModularTurrets:2.2.11-247:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:OpenComputers:1.7.5.23-GTNH:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:GTplusplus:1.7.65-pre:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:GTplusplus:1.7.71:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-94-GTNH:dev') {transitive=false}

compileOnly('curse.maven:cofh-lib-220333:2388748') {transitive=false}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,31 @@
import com.github.technus.tectech.util.CommonValues;
import com.github.technus.tectech.util.TT_Utility;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import com.gtnewhorizon.structurelib.util.Vec3Impl;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IHatchElement;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.IGT_HatchAdder;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ResourceLocation;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.textureOffset;
import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.texturePage;
Expand All @@ -36,14 +43,15 @@
import static com.github.technus.tectech.util.CommonValues.MULTI_CHECK_AT;
import static com.github.technus.tectech.util.CommonValues.V;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofChain;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional;
import static net.minecraft.util.StatCollector.translateToLocal;

/**
* Created by danie_000 on 17.12.2016.
*/
public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockBase_EM implements IConstructable {
public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockBase_EM implements ISurvivalConstructable {
//region variables
private final ArrayList<GT_MetaTileEntity_Hatch_Rack> eRacks = new ArrayList<>();

Expand Down Expand Up @@ -87,8 +95,11 @@ public class GT_MetaTileEntity_EM_computer extends GT_MetaTileEntity_MultiblockB
.addElement('B', ofBlock(sBlockCasingsTT, 1))
.addElement('C', ofBlock(sBlockCasingsTT, 2))
.addElement('D', ofBlock(sBlockCasingsTT, 3))
.addElement('A', ofHatchAdderOptional(GT_MetaTileEntity_EM_computer::addToMachineList, textureOffset + 1, 1, sBlockCasingsTT, 1))
.addElement('E', ofHatchAdderOptional(GT_MetaTileEntity_EM_computer::addRackToMachineList, textureOffset + 3, 2, sBlockCasingsTT, 3))
.addElement('A', classicHatches(textureOffset + 1, 1, sBlockCasingsTT, 1))
.addElement('E', ofChain(
RackHatchElement.INSTANCE.newAny(textureOffset + 3, 2),
ofBlock(sBlockCasingsTT, 3)
))
.build();
//endregion

Expand Down Expand Up @@ -406,6 +417,25 @@ public void construct(ItemStack stackSize, boolean hintsOnly) {
structureBuild_EM("back", 1, 2, offset, stackSize, hintsOnly);
}

@Override
public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
if (mMachine) return -1;
int built;
built = survivialBuildPiece("front", stackSize, 1, 2, 0, elementBudget, source, actor, false, true);
if (built >= 0) return built;
built = survivialBuildPiece("cap", stackSize, 1, 2, -1, elementBudget, source, actor, false, true);
if (built >= 0) return built;

byte offset = -2;
for (int rackSlices = Math.min(stackSize.stackSize, 12); rackSlices > 0; rackSlices--) {
built = survivialBuildPiece("slice", stackSize, 1, 2, offset--, elementBudget, source, actor, false, true);
if (built >= 0) return built;
}
built = survivialBuildPiece("cap", stackSize, 1, 2, offset--, elementBudget, source, actor, false, true);
if (built >= 0) return built;
return survivialBuildPiece("back", stackSize, 1, 2, offset, elementBudget, source, actor, false, true);
}

@Override
public IStructureDefinition<GT_MetaTileEntity_EM_computer> getStructure_EM() {
return STRUCTURE_DEFINITION;
Expand All @@ -415,4 +445,23 @@ public IStructureDefinition<GT_MetaTileEntity_EM_computer> getStructure_EM() {
public String[] getStructureDescription(ItemStack stackSize) {
return description;
}

private enum RackHatchElement implements IHatchElement<GT_MetaTileEntity_EM_computer> {
INSTANCE;

@Override
public List<? extends Class<? extends IMetaTileEntity>> mteClasses() {
return Collections.singletonList(GT_MetaTileEntity_Hatch_Rack.class);
}

@Override
public IGT_HatchAdder<? super GT_MetaTileEntity_EM_computer> adder() {
return GT_MetaTileEntity_EM_computer::addRackToMachineList;
}

@Override
public long count(GT_MetaTileEntity_EM_computer t) {
return t.eRacks.size();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,31 @@
import com.github.technus.tectech.thing.metaTileEntity.multi.base.render.TT_RenderedExtendedFacingTexture;
import com.github.technus.tectech.util.CommonValues;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IHatchElement;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_DataAccess;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.IGT_HatchAdder;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.ResourceLocation;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import static com.github.technus.tectech.recipe.TT_recipeAdder.nullItem;
import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.textureOffset;
Expand All @@ -35,10 +43,10 @@
import static com.github.technus.tectech.util.CommonValues.V;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional;
import static gregtech.api.util.GT_StructureUtility.buildHatchAdder;
import static net.minecraft.util.StatCollector.translateToLocal;

public class GT_MetaTileEntity_EM_dataBank extends GT_MetaTileEntity_MultiblockBase_EM implements IConstructable {
public class GT_MetaTileEntity_EM_dataBank extends GT_MetaTileEntity_MultiblockBase_EM implements ISurvivalConstructable {
//region variables
private final ArrayList<GT_MetaTileEntity_Hatch_OutputDataItems> eStacksDataOutputs = new ArrayList<>();
private final ArrayList<IInventory> eDataAccessHatches = new ArrayList<>();
Expand All @@ -61,8 +69,15 @@ public class GT_MetaTileEntity_EM_dataBank extends GT_MetaTileEntity_MultiblockB
}))
.addElement('A', ofBlock(sBlockCasingsTT, 1))
.addElement('B', ofBlock(sBlockCasingsTT, 2))
.addElement('C', ofHatchAdderOptional(GT_MetaTileEntity_EM_dataBank::addClassicToMachineList, textureOffset, 1, sBlockCasingsTT, 0))
.addElement('D', ofHatchAdderOptional(GT_MetaTileEntity_EM_dataBank::addDataBankHatchToMachineList, textureOffset + 1, 2, sBlockCasingsTT, 1))
.addElement('C', classicHatches(textureOffset, 1, sBlockCasingsTT, 0))
.addElement('D', buildHatchAdder(GT_MetaTileEntity_EM_dataBank.class)
.atLeast(DataBankHatches.OutboundConnector, DataBankHatches.InboundConnector)
.casingIndex(textureOffset + 1)
.dot(2)
.buildAndChain(
DataBankHatches.DataStick.newAny(textureOffset + 1, 2),
ofBlock(sBlockCasingsTT, 1)
))
.build();
//endregion

Expand Down Expand Up @@ -194,6 +209,12 @@ public void construct(ItemStack stackSize, boolean hintsOnly) {
structureBuild_EM("main", 2, 1, 0, stackSize, hintsOnly);
}

@Override
public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
if (mMachine) return -1;
return survivialBuildPiece("main", stackSize, 2, 1, 0, elementBudget, source, actor, false, true);
}

@Override
public IStructureDefinition<GT_MetaTileEntity_EM_dataBank> getStructure_EM() {
return STRUCTURE_DEFINITION;
Expand All @@ -203,4 +224,42 @@ public IStructureDefinition<GT_MetaTileEntity_EM_dataBank> getStructure_EM() {
public String[] getStructureDescription(ItemStack stackSize) {
return description;
}

private enum DataBankHatches implements IHatchElement<GT_MetaTileEntity_EM_dataBank> {
DataStick(GT_MetaTileEntity_Hatch_DataAccess.class) {
@Override
public long count(GT_MetaTileEntity_EM_dataBank t) {
return t.eDataAccessHatches.size();
}
},
OutboundConnector(GT_MetaTileEntity_Hatch_OutputDataItems.class) {
@Override
public long count(GT_MetaTileEntity_EM_dataBank t) {
return t.eStacksDataOutputs.size();
}
},
InboundConnector(GT_MetaTileEntity_Hatch_InputDataItems.class) {
@Override
public long count(GT_MetaTileEntity_EM_dataBank t) {
return t.eDataAccessHatches.size();
}
};

private final List<? extends Class<? extends IMetaTileEntity>> mteClasses;

@SafeVarargs
DataBankHatches(Class<? extends IMetaTileEntity>... mteClasses) {
this.mteClasses = Collections.unmodifiableList(Arrays.asList(mteClasses));
}

@Override
public List<? extends Class<? extends IMetaTileEntity>> mteClasses() {
return mteClasses;
}

@Override
public IGT_HatchAdder<? super GT_MetaTileEntity_EM_dataBank> adder() {
return GT_MetaTileEntity_EM_dataBank::addDataBankHatchToMachineList;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,21 @@
import com.github.technus.tectech.thing.metaTileEntity.multi.base.render.TT_RenderedExtendedFacingTexture;
import com.github.technus.tectech.util.CommonValues;
import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable;
import com.gtnewhorizon.structurelib.structure.IItemSource;
import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
import cpw.mods.fml.common.registry.GameRegistry;
import gregtech.api.enums.ItemList;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.IHatchElement;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Energy;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
import gregtech.api.util.GT_Recipe;
import gregtech.api.util.GT_Utility;
import gregtech.api.util.*;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
Expand All @@ -32,18 +32,24 @@
import org.apache.commons.lang3.reflect.FieldUtils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;

import static com.github.technus.tectech.recipe.TT_recipe.E_RECIPE_ID;
import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.textureOffset;
import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.texturePage;
import static com.github.technus.tectech.thing.casing.TT_Container_Casings.sBlockCasingsTT;
import static com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_EM_crafting.crafter;
import static com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM.HatchElement.DynamoMulti;
import static com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM.HatchElement.EnergyMulti;
import static com.github.technus.tectech.thing.metaTileEntity.multi.em_machine.GT_MetaTileEntity_EM_machine.machine;
import static com.github.technus.tectech.util.CommonValues.V;
import static com.github.technus.tectech.util.CommonValues.VN;
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.util.GT_StructureUtility.buildHatchAdder;
import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional;
import static net.minecraft.util.StatCollector.translateToLocal;
Expand All @@ -52,7 +58,7 @@
/**
* Created by danie_000 on 17.12.2016.
*/
public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockBase_EM implements IConstructable {
public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockBase_EM implements ISurvivalConstructable {
//region variables
private final ArrayList<GT_MetaTileEntity_Hatch_Holder> eHolders = new ArrayList<>();
private GT_Recipe.GT_Recipe_AssemblyLine tRecipe;
Expand Down Expand Up @@ -88,8 +94,8 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB
.addElement('A', ofBlock(sBlockCasingsTT, 1))
.addElement('B', ofBlock(sBlockCasingsTT, 2))
.addElement('C', ofBlock(sBlockCasingsTT, 3))
.addElement('D', ofHatchAdderOptional(GT_MetaTileEntity_EM_research::addClassicToMachineList, textureOffset + 1, 1, sBlockCasingsTT, 1))
.addElement('E', ofHatchAdder(GT_MetaTileEntity_EM_research::addHolderToMachineList, 3, 2))
.addElement('D', classicHatches(textureOffset + 1, 1, sBlockCasingsTT, 1))
.addElement('E', HolderHatchElement.INSTANCE.newAny(3, 2))
.build();
//endregion

Expand Down Expand Up @@ -583,6 +589,12 @@ public void construct(ItemStack stackSize, boolean hintsOnly) {
structureBuild_EM("main", 1, 3, 4, stackSize, hintsOnly);
}

@Override
public int survivalConstruct(ItemStack stackSize, int elementBudget, IItemSource source, EntityPlayerMP actor) {
if (mMachine) return -1;
return survivialBuildPiece("main", stackSize, 1, 3, 4, elementBudget, source, actor, false, true);
}

@Override
public IStructureDefinition<GT_MetaTileEntity_EM_research> getStructure_EM() {
return STRUCTURE_DEFINITION;
Expand All @@ -592,4 +604,23 @@ public IStructureDefinition<GT_MetaTileEntity_EM_research> getStructure_EM() {
public String[] getStructureDescription(ItemStack stackSize) {
return description;
}

private enum HolderHatchElement implements IHatchElement<GT_MetaTileEntity_EM_research> {
INSTANCE;

@Override
public List<? extends Class<? extends IMetaTileEntity>> mteClasses() {
return Collections.singletonList(GT_MetaTileEntity_Hatch_Holder.class);
}

@Override
public IGT_HatchAdder<? super GT_MetaTileEntity_EM_research> adder() {
return GT_MetaTileEntity_EM_research::addHolderToMachineList;
}

@Override
public long count(GT_MetaTileEntity_EM_research t) {
return t.eHolders.size();
}
}
}
Loading

0 comments on commit acb8e37

Please sign in to comment.