From 1d462b17941b2cf87ebf1808c14f7e3daa11afb2 Mon Sep 17 00:00:00 2001 From: asiekierka Date: Thu, 26 Feb 2015 17:08:29 +0100 Subject: [PATCH] entities can now have building permissions in schematics --- .../api/blueprints/SchematicEntity.java | 13 +++--- .../api/blueprints/package-info.java | 2 +- api/buildcraft/api/core/BlockIndex.java | 2 +- .../buildcraft/core/blueprints/Blueprint.java | 44 +++++++++++++------ 4 files changed, 40 insertions(+), 21 deletions(-) diff --git a/api/buildcraft/api/blueprints/SchematicEntity.java b/api/buildcraft/api/blueprints/SchematicEntity.java index 8dc12f85..b1749fc3 100755 --- a/api/buildcraft/api/blueprints/SchematicEntity.java +++ b/api/buildcraft/api/blueprints/SchematicEntity.java @@ -26,7 +26,6 @@ import net.minecraftforge.common.util.Constants; import buildcraft.api.core.Position; public class SchematicEntity extends Schematic { - public Class entity; /** @@ -43,6 +42,7 @@ public class SchematicEntity extends Schematic { * Schematic. */ public ItemStack[] storedRequirements = new ItemStack[0]; + public BuildingPermission defaultPermission = BuildingPermission.ALL; @Override public void getRequirementsForPlacement(IBuilderContext context, LinkedList requirements) { @@ -154,13 +154,11 @@ public class SchematicEntity extends Schematic { rqs.add(ItemStack.loadItemStackFromNBT(sub)); } else { - // TODO: requirement can't be retreived, this blueprint is - // only useable in creative + defaultPermission = BuildingPermission.CREATIVE_ONLY; } } catch (Throwable t) { t.printStackTrace(); - // TODO: requirement can't be retreived, this blueprint is - // only useable in creative + defaultPermission = BuildingPermission.CREATIVE_ONLY; } } @@ -215,4 +213,9 @@ public class SchematicEntity extends Schematic { public int buildTime() { return 5; } + + @Override + public BuildingPermission getBuildingPermission() { + return defaultPermission; + } } diff --git a/api/buildcraft/api/blueprints/package-info.java b/api/buildcraft/api/blueprints/package-info.java index a041a45f..a9b38269 100644 --- a/api/buildcraft/api/blueprints/package-info.java +++ b/api/buildcraft/api/blueprints/package-info.java @@ -6,7 +6,7 @@ * Please check the contents of the license, which should be located * as "LICENSE.API" in the BuildCraft source code distribution. */ -@API(apiVersion = "1.1", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|blueprints") +@API(apiVersion = "1.2", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|blueprints") package buildcraft.api.blueprints; import cpw.mods.fml.common.API; diff --git a/api/buildcraft/api/core/BlockIndex.java b/api/buildcraft/api/core/BlockIndex.java index cf378ea8..862f778c 100644 --- a/api/buildcraft/api/core/BlockIndex.java +++ b/api/buildcraft/api/core/BlockIndex.java @@ -15,7 +15,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; /** - * This class is a comparable container for block positions. TODO: should this be merged with position? + * This class is a comparable container for integer block positions. */ public class BlockIndex implements Comparable { diff --git a/common/buildcraft/core/blueprints/Blueprint.java b/common/buildcraft/core/blueprints/Blueprint.java index b4be5267..513ae9e6 100644 --- a/common/buildcraft/core/blueprints/Blueprint.java +++ b/common/buildcraft/core/blueprints/Blueprint.java @@ -113,25 +113,26 @@ public class Blueprint extends BlueprintBase { } switch (slot.getBuildingPermission()) { - case ALL: - break; - case CREATIVE_ONLY: - if (bptContext.readConfiguration.allowCreative) { - if (buildingPermission == BuildingPermission.ALL) { - buildingPermission = BuildingPermission.CREATIVE_ONLY; + case ALL: + break; + case CREATIVE_ONLY: + if (bptContext.readConfiguration.allowCreative) { + if (buildingPermission == BuildingPermission.ALL) { + buildingPermission = BuildingPermission.CREATIVE_ONLY; + } + } else { + contents[posX][posY][posZ] = null; } - } else { - contents[posX][posY][posZ] = null; - } - break; - case NONE: - buildingPermission = BuildingPermission.NONE; - break; + break; + case NONE: + buildingPermission = BuildingPermission.NONE; + break; } } @Override public void readEntitiesFromWorld(IBuilderContext context, TileEntity anchorTile) { + BptContext bptContext = (BptContext) context; Translation transform = new Translation(); transform.x = -context.surroundingBox().pMin().x; @@ -146,7 +147,22 @@ public class Blueprint extends BlueprintBase { if (s != null) { s.readFromWorld(context, e); - entities.add(s); + switch (s.getBuildingPermission()) { + case ALL: + entities.add(s); + break; + case CREATIVE_ONLY: + if (bptContext.readConfiguration.allowCreative) { + if (buildingPermission == BuildingPermission.ALL) { + buildingPermission = BuildingPermission.CREATIVE_ONLY; + } + entities.add(s); + } + break; + case NONE: + buildingPermission = BuildingPermission.NONE; + break; + } } } }