entities can now have building permissions in schematics

This commit is contained in:
asiekierka 2015-02-26 17:08:29 +01:00
parent 229f064e05
commit 1d462b1794
4 changed files with 40 additions and 21 deletions

View file

@ -26,7 +26,6 @@ import net.minecraftforge.common.util.Constants;
import buildcraft.api.core.Position;
public class SchematicEntity extends Schematic {
public Class<? extends Entity> 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<ItemStack> 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;
}
}

View file

@ -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;

View file

@ -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<BlockIndex> {

View file

@ -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;
}
}
}
}