mirror of
https://github.com/GTNewHorizons/Botania.git
synced 2026-10-26 22:34:08 +00:00
Compare commits
186
Commits
1.9.4-GTNH
...
v0.2-alpha
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2ddf71d76f | ||
|
|
34fae04641 | ||
|
|
dc6af948d9 | ||
|
|
3fe2a0006c | ||
|
|
89dac440c8 | ||
|
|
5797d18d9b | ||
|
|
52cf3df27e | ||
|
|
b976ed5df1 | ||
|
|
e727cb7f2b | ||
|
|
8e6dc7c637 | ||
|
|
28249d1e33 | ||
|
|
b24585b13d | ||
|
|
86880bfd49 | ||
|
|
c8c50f9af0 | ||
|
|
0e301a4e33 | ||
|
|
10d095d656 | ||
|
|
9bf2e0c555 | ||
|
|
95118696ce | ||
|
|
ab4f6f6433 | ||
|
|
46c13be698 | ||
|
|
ad58fb1855 | ||
|
|
12ae7ed3d1 | ||
|
|
6cf82eb98d | ||
|
|
b10a642297 | ||
|
|
75ab210227 | ||
|
|
0b27d9d0b5 | ||
|
|
3c102bbc75 | ||
|
|
4e1065855e | ||
|
|
3eb67e3fea | ||
|
|
5d80b7d9ce | ||
|
|
f7e5054bf4 | ||
|
|
906fb74ec0 | ||
|
|
48cf387682 | ||
|
|
c54b85dfd5 | ||
|
|
bd98879d49 | ||
|
|
b3a83031c1 | ||
|
|
c8d4c54ed7 | ||
|
|
9ee02b55ad | ||
|
|
2cc7e133cc | ||
|
|
0c062967a0 | ||
|
|
1cf175d412 | ||
|
|
5293f811c8 | ||
|
|
c5a5657810 | ||
|
|
4dd62fae37 | ||
|
|
a67aeee496 | ||
|
|
c2470f80ee | ||
|
|
b4300a9e3b | ||
|
|
9f5455aa9f | ||
|
|
37b5d00388 | ||
|
|
1973779897 | ||
|
|
71607ae3bd | ||
|
|
965ab01889 | ||
|
|
5a630fbf39 | ||
|
|
3aef9efe8b | ||
|
|
8f70814ae6 | ||
|
|
43cd84d2cd | ||
|
|
2f0915e18c | ||
|
|
8eedaa5563 | ||
|
|
b701f197ee | ||
|
|
bf07f10ac7 | ||
|
|
90fcc98bd0 | ||
|
|
c513f17f88 | ||
|
|
e83d1600cf | ||
|
|
5b1ac0368d | ||
|
|
65837fbf38 | ||
|
|
33a8d5e33c | ||
|
|
b740a22684 | ||
|
|
7c41ffcaa1 | ||
|
|
781f586d19 | ||
|
|
794e1352e8 | ||
|
|
f449fca882 | ||
|
|
73663e8a0a | ||
|
|
86cd656360 | ||
|
|
20b433af3c | ||
|
|
5fe696875f | ||
|
|
18dceeeb5f | ||
|
|
ccbf325a76 | ||
|
|
2f4785c7b4 | ||
|
|
e2ac5ecad1 | ||
|
|
8cda41cdb8 | ||
|
|
b36f51f6d8 | ||
|
|
32fe7f6ce3 | ||
|
|
0687f56c32 | ||
|
|
70d4450a6a | ||
|
|
dcd08963e9 | ||
|
|
23cab39892 | ||
|
|
f4ea60ba2c | ||
|
|
319bab35a0 | ||
|
|
d58f153742 | ||
|
|
64a8dfbcfe | ||
|
|
eabb0f94e3 | ||
|
|
d23cca33e1 | ||
|
|
cbbefff0ce | ||
|
|
cfaeecc41a | ||
|
|
0887191a64 | ||
|
|
b10615c909 | ||
|
|
2c660ba82b | ||
|
|
92e90ed2b9 | ||
|
|
3d41be585b | ||
|
|
57e5a3d0ac | ||
|
|
1b1e5e3bf0 | ||
|
|
7e0145bf34 | ||
|
|
e77678593f | ||
|
|
9f429c7e17 | ||
|
|
305b99b3f5 | ||
|
|
33b423aaa1 | ||
|
|
d2340905d6 | ||
|
|
70353cf143 | ||
|
|
42110cec45 | ||
|
|
cff6120aaf | ||
|
|
56228446b8 | ||
|
|
b21d6f5ee6 | ||
|
|
0db00970ab | ||
|
|
320f6405e4 | ||
|
|
a23f317368 | ||
|
|
5379cda754 | ||
|
|
a9b060257f | ||
|
|
5d666cd891 | ||
|
|
ffe7b4ccc8 | ||
|
|
c480a3303a | ||
|
|
dbb549ba2a | ||
|
|
b8a1a9cd5d | ||
|
|
5211ed9149 | ||
|
|
6b03424e2c | ||
|
|
8361d1743d | ||
|
|
6cc88f1c5a | ||
|
|
4736be9d61 | ||
|
|
e4864d2e7b | ||
|
|
d0a14a451b | ||
|
|
f58440b79a | ||
|
|
9ea899bad5 | ||
|
|
e4b58e0c2d | ||
|
|
a9baf71924 | ||
|
|
4a4763b075 | ||
|
|
1817e75b5d | ||
|
|
6c637d27b2 | ||
|
|
e679a2062d | ||
|
|
bf81e002e8 | ||
|
|
a40a443607 | ||
|
|
ddf2a94aa1 | ||
|
|
2dae52a9ff | ||
|
|
9cd7a4a0d5 | ||
|
|
0a7268fc98 | ||
|
|
4426f8904f | ||
|
|
c0bcfb6448 | ||
|
|
b4d9c3ded8 | ||
|
|
605e38337a | ||
|
|
b72be67dd7 | ||
|
|
c2f1a9ab17 | ||
|
|
999705294d | ||
|
|
3fe15e6b7d | ||
|
|
921370b546 | ||
|
|
3f9d5c888f | ||
|
|
55bf02798d | ||
|
|
e3b22975cb | ||
|
|
3ebcd10233 | ||
|
|
02ed9f1c84 | ||
|
|
27126c074d | ||
|
|
8cc23c7fb3 | ||
|
|
9cbd2708db | ||
|
|
4c0922f0b4 | ||
|
|
ed75f4a4b7 | ||
|
|
5c98dc562c | ||
|
|
da1dc51202 | ||
|
|
2376287dd7 | ||
|
|
750276db9b | ||
|
|
58dbb0f9cf | ||
|
|
6fb9b0101e | ||
|
|
3b8926c24b | ||
|
|
bbbe93a8de | ||
|
|
9da9d61880 | ||
|
|
29e42d86ea | ||
|
|
88ca096ae0 | ||
|
|
b07cac07a0 | ||
|
|
afb9650b12 | ||
|
|
a1c3b00ae0 | ||
|
|
b22e485217 | ||
|
|
7ad1820fcb | ||
|
|
8591551a1b | ||
|
|
4d674da1b7 | ||
|
|
d293a7dcc7 | ||
|
|
920324b135 | ||
|
|
67d5d65902 | ||
|
|
f6cfeedd1d | ||
|
|
5a11a58346 | ||
|
|
da2e5dfa51 |
No files matched your search
Binary file not shown.
@@ -0,0 +1,29 @@
|
||||
-- API --
|
||||
* Updated to BlockPos and EnumFacing everywhere where it made sense
|
||||
* Registering repainting blocks will need to also receive a PropertyEnum with EnumDyeColor as the component type
|
||||
so Botania knows what property to set the color on
|
||||
* ICorporeaSpark.getInventory had to be changed to ICorporeaSpark.getSparkInventory because the signature clashed (IInventory vs ItemStack[], respectively)
|
||||
This can be changed to match vanilla signature, but either would break backward compat.
|
||||
* SubTileEntity.getComparatorInputOverride parameter removed (it was actually incorrect also. Not side, but the meta of the block).
|
||||
Anyways, vanilla removed it from their method so we follow suit.
|
||||
* SubTileEntity's methods that are copied from block (onBlockadded, etc.) updated to match vanilla counterparts
|
||||
* Multiblock system reworked to use states and blockposes
|
||||
* Magnet blacklist still uses metas instead of states because they need to support the short maxvalue wildcard.
|
||||
* Now includes a way for addons to pass the Botania loader the models they want to use to render their subtile with
|
||||
* IRelic changed to use UUIDs
|
||||
* Removed icon methods from SubTileSignature
|
||||
|
||||
-- Other --
|
||||
* Most things left untouched to make patches from upstream easier
|
||||
* Most uses of chunkcoordinates directly convert blockpos (THANK YOU VAZKII FOR USING THEM). Remove creation of extra instances
|
||||
since BlockPos'es are immutable and thus can be reused everywhere.
|
||||
* Some really needed fields in EntityItem are private now. Reflection time :(
|
||||
* Alfglass now just uses the vanilla random model selection system to choose a pattern. Some of your builds may look different.
|
||||
Unless someone figures out a way to use the old one
|
||||
* The alt textures will probably be a resource pack now to decrease complexity...
|
||||
sorry :/ The systems needed to dynamically switch out the textures like that is not worth just throwing them into a resource pack
|
||||
* Slabs are kinda janky if you look at them - Mojang made some extremely silly assumptions and we're going to have to go with them
|
||||
* Quartz stair textures may be assigned incorrectly - resource pack authors check me
|
||||
* Glass pane inner faces are not getting culled (vanilla bug?)
|
||||
* Some item forms of technical/non-user blocks are removed
|
||||
* Full list: [all double slab items, all solid vine items]
|
||||
@@ -1,3 +1,15 @@
|
||||
1.8 PORT README:
|
||||
|
||||
This is williewillus' 1.8(.8) port of Botania!
|
||||
|
||||
All licensing and distribution rights are exactly as 1.7.10 Botania
|
||||
|
||||
Use at your own risk as bugs may pop up unexpectedly.
|
||||
|
||||
I will EXACTLY match Vazkii/upstream design wise so NEVER ask me for balance or design changes. No.
|
||||
|
||||
Please report all 1.8 bugs to MY REPOSITORY, NOT VAZKII'S.
|
||||
|
||||

|
||||
Welcome to the Botania repository.
|
||||
|
||||
|
||||
+27
-15
@@ -11,7 +11,8 @@ buildscript {
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
|
||||
classpath 'com.matthewprenger:CurseGradle:1.0-SNAPSHOT'
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,10 +21,13 @@ repositories {
|
||||
name = "chickenbones"
|
||||
url = "http://chickenbones.net/maven/"
|
||||
}
|
||||
maven {
|
||||
url "http://dvs1.progwml6.com/files/maven"
|
||||
}
|
||||
}
|
||||
|
||||
apply plugin: 'forge'
|
||||
apply plugin: 'curseforge'
|
||||
apply plugin: 'net.minecraftforge.gradle.forge'
|
||||
apply plugin: 'com.matthewprenger.cursegradle'
|
||||
|
||||
ext.configFile = file('build.properties')
|
||||
|
||||
@@ -36,14 +40,16 @@ archivesBaseName = config.mod_name
|
||||
|
||||
minecraft {
|
||||
version = "${config.mc_version}-${config.forge_version}"
|
||||
assetDir = "eclipse/assets"
|
||||
runDir = "eclipse/assets"
|
||||
|
||||
mappings = "snapshot_20151229"
|
||||
//This, does the token replacement.
|
||||
//Though, I reccomend this to be replaced with a token such as @VERSION@
|
||||
replace 'GRADLE:BUILD', config.build_number
|
||||
replace 'GRADLE:VERSION', config.version
|
||||
|
||||
replaceIn 'LibMisc.java' //I may have missed another file, though I can only find it in here.
|
||||
useDepAts = true
|
||||
}
|
||||
|
||||
//This here is for SCP
|
||||
@@ -60,10 +66,12 @@ dependencies {
|
||||
compile files(
|
||||
'Baubles-deobf.jar'
|
||||
)
|
||||
compile "codechicken:CodeChickenLib:1.7.10-1.1.1.109:dev"
|
||||
compile "codechicken:CodeChickenCore:1.7.10-1.0.2.9:dev"
|
||||
compile "codechicken:NotEnoughItems:1.7.10-1.0.2.15:dev"
|
||||
compile "codechicken:ForgeMultipart:1.7.10-1.1.1.320:dev"
|
||||
//compile "codechicken:CodeChickenLib:1.8-1.1.2.139:dev"
|
||||
//compile "codechicken:CodeChickenCore:1.8-1.0.5.36:dev"
|
||||
//compile "codechicken:NotEnoughItems:1.8-1.0.5.104:dev"
|
||||
//compile "codechicken:ForgeMultipart:1.7.10-1.1.1.320:dev"
|
||||
|
||||
deobfCompile "mezz.jei:jei_1.8.9:2.13.7.64"
|
||||
|
||||
//and a bit more for SCP
|
||||
sshAntTask "org.apache.ant:ant-jsch:1.7.1", "jsch:jsch:0.1.29"
|
||||
@@ -207,14 +215,18 @@ jar {
|
||||
archiveName = "${baseName} ${version}.${extension}"
|
||||
}
|
||||
|
||||
curse {
|
||||
curseforge {
|
||||
apiKey = priv.cfkey
|
||||
projectId = "225643"
|
||||
changelog = """
|
||||
See http://botaniamod.net/changelog.php#${version}
|
||||
"""
|
||||
releaseType = "release"
|
||||
relatedProject 'baubles': 'requiredLibrary'
|
||||
project {
|
||||
id = "225643"
|
||||
changelog = """
|
||||
See http://botaniamod.net/changelog.php#${version}
|
||||
"""
|
||||
releaseType = "release"
|
||||
relations {
|
||||
requiredLibrary 'baubles'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defaultTasks 'clean', 'build', 'sort', 'forgecraft', 'incrementBuildNumber', 'curse', 'upload'
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
version=r1.8
|
||||
dir_output=../Build Output/Botania/
|
||||
dir_repo=./
|
||||
forge_version=10.13.2.1291
|
||||
mc_version=1.7.10
|
||||
forge_version=11.15.0.1656
|
||||
mc_version=1.8.9
|
||||
build_number=248
|
||||
mod_name=Botania
|
||||
Vendored
BIN
Binary file not shown.
+6
-6
@@ -1,6 +1,6 @@
|
||||
#Mon Oct 27 18:34:11 EDT 2014
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.1-bin.zip
|
||||
#Mon Sep 14 12:28:28 PDT 2015
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-bin.zip
|
||||
@@ -1,60 +1,42 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.core;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import org.apache.logging.log4j.Level;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
public final class BCLog {
|
||||
public static final Logger logger = LogManager.getLogger("BuildCraft");
|
||||
|
||||
public static final Logger logger = LogManager.getLogger("BuildCraft");
|
||||
|
||||
/**
|
||||
* Deactivate constructor
|
||||
*/
|
||||
private BCLog() {
|
||||
}
|
||||
|
||||
public static void initLog() {
|
||||
|
||||
logger.info("Starting BuildCraft " + getVersion());
|
||||
logger.info("Copyright (c) SpaceToad, 2011-2015");
|
||||
logger.info("http://www.mod-buildcraft.com");
|
||||
}
|
||||
/** Deactivate constructor */
|
||||
private BCLog() {}
|
||||
|
||||
@Deprecated
|
||||
public static void logErrorAPI(String mod, Throwable error, Class<?> classFile) {
|
||||
StringBuilder msg = new StringBuilder(mod);
|
||||
msg.append(" API error, please update your mods. Error: ").append(error);
|
||||
StackTraceElement[] stackTrace = error.getStackTrace();
|
||||
if (stackTrace.length > 0) {
|
||||
msg.append(", ").append(stackTrace[0]);
|
||||
}
|
||||
logErrorAPI(error, classFile);
|
||||
}
|
||||
|
||||
logger.log(Level.ERROR, msg.toString());
|
||||
public static void logErrorAPI(Throwable error, Class<?> classFile) {
|
||||
StringBuilder msg = new StringBuilder("API error! Please update your mods. Error: ");
|
||||
msg.append(error);
|
||||
StackTraceElement[] stackTrace = error.getStackTrace();
|
||||
if (stackTrace.length > 0) {
|
||||
msg.append(", ").append(stackTrace[0]);
|
||||
}
|
||||
|
||||
if (classFile != null) {
|
||||
msg = new StringBuilder(mod);
|
||||
msg.append(" API error: ").append(classFile.getSimpleName()).append(" is loaded from ").append(classFile.getProtectionDomain().getCodeSource().getLocation());
|
||||
logger.log(Level.ERROR, msg.toString());
|
||||
}
|
||||
}
|
||||
logger.log(Level.ERROR, msg.toString());
|
||||
|
||||
public static String getVersion() {
|
||||
try {
|
||||
Class<?> clazz = Class.forName("buildcraft.core.Version");
|
||||
Method method = clazz.getDeclaredMethod("getVersion");
|
||||
return String.valueOf(method.invoke(null));
|
||||
} catch (Exception e) {
|
||||
return "UNKNOWN VERSION";
|
||||
if (classFile != null) {
|
||||
msg.append("API error: ").append(classFile.getSimpleName()).append(" is loaded from ").append(classFile.getProtectionDomain().getCodeSource().getLocation());
|
||||
logger.log(Level.ERROR, msg.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static String getVersion() {
|
||||
return BuildCraftAPI.getVersion();
|
||||
}
|
||||
}
|
||||
@@ -1,115 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
package buildcraft.api.core;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
* This class is a comparable container for integer block positions.
|
||||
*/
|
||||
public class BlockIndex implements Comparable<BlockIndex> {
|
||||
|
||||
public int x;
|
||||
public int y;
|
||||
public int z;
|
||||
|
||||
public BlockIndex() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an index for a block located on x, y. z
|
||||
*/
|
||||
public BlockIndex(int x, int y, int z) {
|
||||
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
}
|
||||
|
||||
public BlockIndex(NBTTagCompound c) {
|
||||
this.x = c.getInteger("i");
|
||||
this.y = c.getInteger("j");
|
||||
this.z = c.getInteger("k");
|
||||
}
|
||||
|
||||
public BlockIndex(Entity entity) {
|
||||
x = (int) Math.floor(entity.posX);
|
||||
y = (int) Math.floor(entity.posY);
|
||||
z = (int) Math.floor(entity.posZ);
|
||||
}
|
||||
|
||||
public BlockIndex(TileEntity entity) {
|
||||
this(entity.xCoord, entity.yCoord, entity.zCoord);
|
||||
}
|
||||
|
||||
/**
|
||||
* Provides a deterministic and complete ordering of block positions.
|
||||
*/
|
||||
@Override
|
||||
public int compareTo(BlockIndex o) {
|
||||
|
||||
if (o.x < x) {
|
||||
return 1;
|
||||
} else if (o.x > x) {
|
||||
return -1;
|
||||
} else if (o.z < z) {
|
||||
return 1;
|
||||
} else if (o.z > z) {
|
||||
return -1;
|
||||
} else if (o.y < y) {
|
||||
return 1;
|
||||
} else if (o.y > y) {
|
||||
return -1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public void writeTo(NBTTagCompound c) {
|
||||
c.setInteger("i", x);
|
||||
c.setInteger("j", y);
|
||||
c.setInteger("k", z);
|
||||
}
|
||||
|
||||
public Block getBlock(World world) {
|
||||
return world.getBlock(x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "{" + x + ", " + y + ", " + z + "}";
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof BlockIndex) {
|
||||
BlockIndex b = (BlockIndex) obj;
|
||||
|
||||
return b.x == x && b.y == y && b.z == z;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (x * 37 + y) * 37 + z;
|
||||
}
|
||||
|
||||
public boolean nextTo(BlockIndex blockIndex) {
|
||||
return (Math.abs(blockIndex.x - x) <= 1 && blockIndex.y == y && blockIndex.z == z)
|
||||
|| (blockIndex.x == x && Math.abs(blockIndex.y - y) <= 1 && blockIndex.z == z)
|
||||
|| (blockIndex.x == x && blockIndex.y == y && Math.abs(blockIndex.z - z) <= 1);
|
||||
}
|
||||
}
|
||||
@@ -1,45 +1,52 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.core;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public final class BuildCraftAPI {
|
||||
|
||||
public static ICoreProxy proxy;
|
||||
public static ICoreProxy proxy;
|
||||
|
||||
public static final Set<Block> softBlocks = new HashSet<Block>();
|
||||
public static final HashMap<String, IWorldProperty> worldProperties = new HashMap<String, IWorldProperty>();
|
||||
public static final Set<Block> softBlocks = Sets.newHashSet();
|
||||
public static final HashMap<String, IWorldProperty> worldProperties = Maps.newHashMap();
|
||||
|
||||
/**
|
||||
* Deactivate constructor
|
||||
*/
|
||||
private BuildCraftAPI() {
|
||||
}
|
||||
/** Deactivate constructor */
|
||||
private BuildCraftAPI() {}
|
||||
|
||||
public static IWorldProperty getWorldProperty(String name) {
|
||||
return worldProperties.get(name);
|
||||
}
|
||||
|
||||
public static void registerWorldProperty(String name, IWorldProperty property) {
|
||||
if (worldProperties.containsKey(name)) {
|
||||
BCLog.logger.warn("The WorldProperty key '" + name + "' is being overidden with " + property.getClass().getSimpleName() + "!");
|
||||
public static String getVersion() {
|
||||
try {
|
||||
Class<?> clazz = Class.forName("buildcraft.core.Version");
|
||||
Method method = clazz.getDeclaredMethod("getVersion");
|
||||
return String.valueOf(method.invoke(null));
|
||||
} catch (Exception e) {
|
||||
return "UNKNOWN VERSION";
|
||||
}
|
||||
worldProperties.put(name, property);
|
||||
}
|
||||
|
||||
public static boolean isSoftBlock(World world, int x, int y, int z) {
|
||||
return worldProperties.get("soft").get(world, x, y, z);
|
||||
}
|
||||
public static IWorldProperty getWorldProperty(String name) {
|
||||
return worldProperties.get(name);
|
||||
}
|
||||
|
||||
public static void registerWorldProperty(String name, IWorldProperty property) {
|
||||
if (worldProperties.containsKey(name)) {
|
||||
BCLog.logger.warn("The WorldProperty key '" + name + "' is being overidden with " + property.getClass().getSimpleName() + "!");
|
||||
}
|
||||
worldProperties.put(name, property);
|
||||
}
|
||||
|
||||
public static boolean isSoftBlock(World world, BlockPos pos) {
|
||||
return worldProperties.get("soft").get(world, pos);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package buildcraft.api.core;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.minecraftforge.common.config.Property;
|
||||
|
||||
/** Use this to access the various config options. It is recommended that you use this as opposed to the variables in
|
||||
* the mod, as users may only install the modules that they want, and not the one you may have refereed to. */
|
||||
@Deprecated
|
||||
public final class ConfigAccessor {
|
||||
public enum EMod {
|
||||
CORE,
|
||||
BUILDERS,
|
||||
ENERGY,
|
||||
FACTORY,
|
||||
ROBITICS,
|
||||
SILICON,
|
||||
TRANSPORT
|
||||
}
|
||||
|
||||
private static Map<EMod, IBuildCraftMod> mods = Maps.newHashMap();
|
||||
|
||||
private ConfigAccessor() {}
|
||||
|
||||
public static Property getOption(EMod mod, String name) {
|
||||
if (mods.containsKey(mod)) {
|
||||
return mods.get(mod).getOption(name);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean getBoolean(EMod mod, String name, boolean defaultBoolean) {
|
||||
Property prop = getOption(mod, name);
|
||||
if (prop == null) {
|
||||
return defaultBoolean;
|
||||
} else {
|
||||
return prop.getBoolean(defaultBoolean);
|
||||
}
|
||||
}
|
||||
|
||||
/** WARNING: INTERNAL USE ONLY! */
|
||||
public static void addMod(EMod mod, IBuildCraftMod actual) {
|
||||
mods.put(mod, actual);
|
||||
}
|
||||
}
|
||||
@@ -1,201 +1,147 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.core;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.util.IStringSerializable;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.StatCollector;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public enum EnumColor {
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
BLACK,
|
||||
RED,
|
||||
GREEN,
|
||||
BROWN,
|
||||
BLUE,
|
||||
PURPLE,
|
||||
CYAN,
|
||||
LIGHT_GRAY,
|
||||
GRAY,
|
||||
PINK,
|
||||
LIME,
|
||||
YELLOW,
|
||||
LIGHT_BLUE,
|
||||
MAGENTA,
|
||||
ORANGE,
|
||||
WHITE;
|
||||
/** Use minecraft's EnumDyeColor in as many places as possible. */
|
||||
@Deprecated
|
||||
public enum EnumColor implements IStringSerializable {
|
||||
|
||||
public static final EnumColor[] VALUES = values();
|
||||
public static final String[] DYES = {
|
||||
"dyeBlack",
|
||||
"dyeRed",
|
||||
"dyeGreen",
|
||||
"dyeBrown",
|
||||
"dyeBlue",
|
||||
"dyePurple",
|
||||
"dyeCyan",
|
||||
"dyeLightGray",
|
||||
"dyeGray",
|
||||
"dyePink",
|
||||
"dyeLime",
|
||||
"dyeYellow",
|
||||
"dyeLightBlue",
|
||||
"dyeMagenta",
|
||||
"dyeOrange",
|
||||
"dyeWhite"};
|
||||
public static final String[] NAMES = {
|
||||
"Black",
|
||||
"Red",
|
||||
"Green",
|
||||
"Brown",
|
||||
"Blue",
|
||||
"Purple",
|
||||
"Cyan",
|
||||
"LightGray",
|
||||
"Gray",
|
||||
"Pink",
|
||||
"Lime",
|
||||
"Yellow",
|
||||
"LightBlue",
|
||||
"Magenta",
|
||||
"Orange",
|
||||
"White"};
|
||||
public static final int[] DARK_HEX = {
|
||||
0x2D2D2D,
|
||||
0xA33835,
|
||||
0x394C1E,
|
||||
0x5C3A24,
|
||||
0x3441A2,
|
||||
0x843FBF,
|
||||
0x36809E,
|
||||
0x888888,
|
||||
0x444444,
|
||||
0xE585A0,
|
||||
0x3FAA36,
|
||||
0xCFC231,
|
||||
0x7F9AD1,
|
||||
0xFF64FF,
|
||||
0xFF6A00,
|
||||
0xFFFFFF};
|
||||
public static final int[] LIGHT_HEX = {
|
||||
0x181414,
|
||||
0xBE2B27,
|
||||
0x007F0E,
|
||||
0x89502D,
|
||||
0x253193,
|
||||
0x7e34bf,
|
||||
0x299799,
|
||||
0xa0a7a7,
|
||||
0x7A7A7A,
|
||||
0xD97199,
|
||||
0x39D52E,
|
||||
0xFFD91C,
|
||||
0x66AAFF,
|
||||
0xD943C6,
|
||||
0xEA7835,
|
||||
0xe4e4e4};
|
||||
BLACK,
|
||||
RED,
|
||||
GREEN,
|
||||
BROWN,
|
||||
BLUE,
|
||||
PURPLE,
|
||||
CYAN,
|
||||
LIGHT_GRAY,
|
||||
GRAY,
|
||||
PINK,
|
||||
LIME,
|
||||
YELLOW,
|
||||
LIGHT_BLUE,
|
||||
MAGENTA,
|
||||
ORANGE,
|
||||
WHITE;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
private static IIcon[] brushIcons;
|
||||
public static final EnumColor[] VALUES = values();
|
||||
public static final String[] DYES = { "dyeBlack", "dyeRed", "dyeGreen", "dyeBrown", "dyeBlue", "dyePurple", "dyeCyan", "dyeLightGray", "dyeGray",
|
||||
"dyePink", "dyeLime", "dyeYellow", "dyeLightBlue", "dyeMagenta", "dyeOrange", "dyeWhite" };
|
||||
public static final String[] NAMES = { "Black", "Red", "Green", "Brown", "Blue", "Purple", "Cyan", "LightGray", "Gray", "Pink", "Lime", "Yellow",
|
||||
"LightBlue", "Magenta", "Orange", "White" };
|
||||
public static final int[] DARK_HEX = { 0x2D2D2D, 0xA33835, 0x394C1E, 0x5C3A24, 0x3441A2, 0x843FBF, 0x36809E, 0x888888, 0x444444, 0xE585A0,
|
||||
0x3FAA36, 0xCFC231, 0x7F9AD1, 0xFF64FF, 0xFF6A00, 0xFFFFFF };
|
||||
public static final int[] LIGHT_HEX = { 0x181414, 0xBE2B27, 0x007F0E, 0x89502D, 0x253193, 0x7e34bf, 0x299799, 0xa0a7a7, 0x7A7A7A, 0xD97199,
|
||||
0x39D52E, 0xFFD91C, 0x66AAFF, 0xD943C6, 0xEA7835, 0xe4e4e4 };
|
||||
|
||||
public int getDarkHex() {
|
||||
return DARK_HEX[ordinal()];
|
||||
}
|
||||
@SideOnly(Side.CLIENT)
|
||||
private static ResourceLocation iconSheet;
|
||||
|
||||
public int getLightHex() {
|
||||
return LIGHT_HEX[ordinal()];
|
||||
}
|
||||
@SideOnly(Side.CLIENT)
|
||||
private static TextureAtlasSprite[] brushSprites;
|
||||
|
||||
public static EnumColor fromId(int id) {
|
||||
if (id < 0 || id >= VALUES.length) {
|
||||
return WHITE;
|
||||
}
|
||||
return VALUES[id];
|
||||
}
|
||||
public int getDarkHex() {
|
||||
return DARK_HEX[ordinal()];
|
||||
}
|
||||
|
||||
public static EnumColor fromDye(String dyeTag) {
|
||||
for (int id = 0; id < DYES.length; id++) {
|
||||
if (DYES[id].equals(dyeTag)) {
|
||||
return VALUES[id];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public int getLightHex() {
|
||||
return LIGHT_HEX[ordinal()];
|
||||
}
|
||||
|
||||
public static EnumColor fromName(String name) {
|
||||
for (int id = 0; id < NAMES.length; id++) {
|
||||
if (NAMES[id].equals(name)) {
|
||||
return VALUES[id];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
public static EnumColor fromId(int id) {
|
||||
if (id < 0 || id >= VALUES.length) {
|
||||
return WHITE;
|
||||
}
|
||||
return VALUES[id];
|
||||
}
|
||||
|
||||
public static EnumColor getRand() {
|
||||
return VALUES[new Random().nextInt(VALUES.length)];
|
||||
}
|
||||
public static EnumColor fromDye(String dyeTag) {
|
||||
for (int id = 0; id < DYES.length; id++) {
|
||||
if (DYES[id].equals(dyeTag)) {
|
||||
return VALUES[id];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public EnumColor getNext() {
|
||||
EnumColor next = VALUES[(ordinal() + 1) % VALUES.length];
|
||||
return next;
|
||||
}
|
||||
public static EnumColor fromName(String name) {
|
||||
for (int id = 0; id < NAMES.length; id++) {
|
||||
if (NAMES[id].equals(name)) {
|
||||
return VALUES[id];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public EnumColor getPrevious() {
|
||||
EnumColor previous = VALUES[(ordinal() + VALUES.length - 1) % VALUES.length];
|
||||
return previous;
|
||||
}
|
||||
public static EnumColor getRand() {
|
||||
return VALUES[new Random().nextInt(VALUES.length)];
|
||||
}
|
||||
|
||||
public EnumColor inverse() {
|
||||
return EnumColor.VALUES[15 - ordinal()];
|
||||
}
|
||||
public EnumColor getNext() {
|
||||
EnumColor next = VALUES[(ordinal() + 1) % VALUES.length];
|
||||
return next;
|
||||
}
|
||||
|
||||
public String getTag() {
|
||||
return "color." + name().replace("_", ".").toLowerCase(Locale.ENGLISH);
|
||||
}
|
||||
public EnumColor getPrevious() {
|
||||
EnumColor previous = VALUES[(ordinal() + VALUES.length - 1) % VALUES.length];
|
||||
return previous;
|
||||
}
|
||||
|
||||
public String getBasicTag() {
|
||||
return name().replace("_", ".").toLowerCase(Locale.ENGLISH);
|
||||
}
|
||||
public EnumColor inverse() {
|
||||
return EnumColor.VALUES[15 - ordinal()];
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return NAMES[ordinal()];
|
||||
}
|
||||
public String getTag() {
|
||||
return "color." + name().replace("_", ".").toLowerCase(Locale.ENGLISH);
|
||||
}
|
||||
|
||||
public String getLocalizedName() {
|
||||
return StatCollector.translateToLocal(getTag());
|
||||
}
|
||||
public String getBasicTag() {
|
||||
return name().replace("_", ".").toLowerCase(Locale.ENGLISH);
|
||||
}
|
||||
|
||||
public String getDye() {
|
||||
return DYES[ordinal()];
|
||||
}
|
||||
@Override
|
||||
public String getName() {
|
||||
return NAMES[ordinal()];
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
String s = name().replace("_", " ");
|
||||
String[] words = s.split(" ");
|
||||
StringBuilder b = new StringBuilder();
|
||||
for (String word : words) {
|
||||
b.append(word.charAt(0)).append(word.substring(1).toLowerCase(Locale.ENGLISH)).append(" ");
|
||||
}
|
||||
return b.toString().trim();
|
||||
}
|
||||
public String getLocalizedName() {
|
||||
return StatCollector.translateToLocal(getTag());
|
||||
}
|
||||
|
||||
public static void setIconArray(IIcon[] icons) {
|
||||
brushIcons = icons;
|
||||
}
|
||||
public String getDye() {
|
||||
return DYES[ordinal()];
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon() {
|
||||
return brushIcons [ordinal()];
|
||||
}
|
||||
@Override
|
||||
public String toString() {
|
||||
String s = name().replace("_", " ");
|
||||
String[] words = s.split(" ");
|
||||
StringBuilder b = new StringBuilder();
|
||||
for (String word : words) {
|
||||
b.append(word.charAt(0)).append(word.substring(1).toLowerCase(Locale.ENGLISH)).append(" ");
|
||||
}
|
||||
return b.toString().trim();
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public static void registerSprites(TextureAtlasSprite[] sprites) {
|
||||
brushSprites = sprites;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public TextureAtlasSprite getSprite() {
|
||||
return brushSprites[ordinal()];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
package buildcraft.api.core;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.minecraft.nbt.NBTBase;
|
||||
import net.minecraft.nbt.NBTBase.NBTPrimitive;
|
||||
import net.minecraft.nbt.NBTTagString;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.IStringSerializable;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
|
||||
public enum EnumPipePart implements IStringSerializable,INetworkLoadable_BC8<EnumPipePart> {
|
||||
DOWN(EnumFacing.DOWN),
|
||||
UP(EnumFacing.UP),
|
||||
NORTH(EnumFacing.NORTH),
|
||||
SOUTH(EnumFacing.SOUTH),
|
||||
WEST(EnumFacing.WEST),
|
||||
EAST(EnumFacing.EAST),
|
||||
/** CENTER, UNKNOWN and ALL are all valid uses of this constant. */
|
||||
CENTER(null);
|
||||
|
||||
private static final Map<EnumFacing, EnumPipePart> facingMap = Maps.newEnumMap(EnumFacing.class);
|
||||
private static final Map<String, EnumPipePart> nameMap = Maps.newHashMap();
|
||||
private static final int MAX_VALUES = values().length;
|
||||
|
||||
public final EnumFacing face;
|
||||
|
||||
static {
|
||||
for (EnumPipePart part : values()) {
|
||||
nameMap.put(part.name(), part);
|
||||
if (part.face != null) facingMap.put(part.face, part);
|
||||
}
|
||||
}
|
||||
|
||||
public static EnumPipePart fromFacing(EnumFacing face) {
|
||||
if (face == null) return EnumPipePart.CENTER;
|
||||
return facingMap.get(face);
|
||||
}
|
||||
|
||||
public static EnumPipePart[] validFaces() {
|
||||
return new EnumPipePart[] { DOWN, UP, NORTH, SOUTH, WEST, EAST };
|
||||
}
|
||||
|
||||
public static EnumPipePart fromMeta(int meta) {
|
||||
if (meta < 0 || meta >= MAX_VALUES) return EnumPipePart.CENTER;
|
||||
return values()[meta];
|
||||
}
|
||||
|
||||
private EnumPipePart(EnumFacing face) {
|
||||
this.face = face;
|
||||
}
|
||||
|
||||
public int getIndex() {
|
||||
if (face == null) return 6;
|
||||
return face.getIndex();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name().toLowerCase(Locale.ROOT);
|
||||
}
|
||||
|
||||
public EnumPipePart next() {
|
||||
switch (this) {
|
||||
case DOWN:
|
||||
return EAST;
|
||||
case EAST:
|
||||
return NORTH;
|
||||
case NORTH:
|
||||
return SOUTH;
|
||||
case SOUTH:
|
||||
return UP;
|
||||
case UP:
|
||||
return WEST;
|
||||
case WEST:
|
||||
return DOWN;
|
||||
default:
|
||||
return DOWN;
|
||||
}
|
||||
}
|
||||
|
||||
public EnumPipePart opposite() {
|
||||
if (this == CENTER) return CENTER;
|
||||
return fromFacing(face.getOpposite());
|
||||
}
|
||||
|
||||
public static EnumPipePart readFromNBT(NBTBase base) {
|
||||
if (base == null) return CENTER;
|
||||
if (base instanceof NBTTagString) {
|
||||
NBTTagString nbtString = (NBTTagString) base;
|
||||
String string = nbtString.getString();
|
||||
return nameMap.containsKey(string) ? nameMap.get(string) : CENTER;
|
||||
} else {
|
||||
byte ord = ((NBTPrimitive) base).getByte();
|
||||
if (ord < 0 || ord > 6) return CENTER;
|
||||
return values()[ord];
|
||||
}
|
||||
}
|
||||
|
||||
public NBTBase writeToNBT() {
|
||||
return new NBTTagString(name());
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnumPipePart readFromByteBuf(ByteBuf buf) {
|
||||
byte ord = buf.readByte();
|
||||
return fromMeta(ord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToByteBuf(ByteBuf buf) {
|
||||
buf.writeByte(ordinal());
|
||||
}
|
||||
}
|
||||
@@ -1,31 +1,17 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.core;
|
||||
|
||||
/**
|
||||
* To be implemented by TileEntities able to provide a square area on the world, typically BuildCraft markers.
|
||||
*/
|
||||
import net.minecraft.util.BlockPos;
|
||||
|
||||
/** To be implemented by TileEntities able to provide a square area on the world, typically BuildCraft markers. */
|
||||
public interface IAreaProvider {
|
||||
int xMin();
|
||||
BlockPos min();
|
||||
|
||||
int yMin();
|
||||
BlockPos max();
|
||||
|
||||
int zMin();
|
||||
|
||||
int xMax();
|
||||
|
||||
int yMax();
|
||||
|
||||
int zMax();
|
||||
|
||||
/**
|
||||
* Remove from the world all objects used to define the area.
|
||||
*/
|
||||
void removeFromWorld();
|
||||
/** Remove from the world all objects used to define the area. */
|
||||
void removeFromWorld();
|
||||
}
|
||||
@@ -1,23 +1,19 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.core;
|
||||
|
||||
import net.minecraft.util.BlockPos;
|
||||
|
||||
public interface IBox extends IZone {
|
||||
IBox expand(int amount);
|
||||
|
||||
IBox expand(int amount);
|
||||
IBox contract(int amount);
|
||||
|
||||
IBox contract(int amount);
|
||||
BlockPos min();
|
||||
|
||||
Position pMin();
|
||||
|
||||
Position pMax();
|
||||
|
||||
void createLaserData();
|
||||
BlockPos max();
|
||||
|
||||
void createLaserData();
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package buildcraft.api.core;
|
||||
|
||||
import net.minecraftforge.common.config.Property;
|
||||
|
||||
public interface IBuildCraftMod {
|
||||
Property getOption(String name);
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.core;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
@@ -14,5 +10,5 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.world.WorldServer;
|
||||
|
||||
public interface ICoreProxy {
|
||||
WeakReference<EntityPlayer> getBuildCraftPlayer(WorldServer world);
|
||||
WeakReference<EntityPlayer> getBuildCraftPlayer(WorldServer world);
|
||||
}
|
||||
@@ -1,31 +1,13 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
package buildcraft.api.core;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.util.IIcon;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.client.renderer.texture.TextureMap;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
public interface IIconProvider {
|
||||
public TextureAtlasSprite getIcon(int iconIndex);
|
||||
|
||||
/**
|
||||
* @param iconIndex
|
||||
*/
|
||||
@SideOnly(Side.CLIENT)
|
||||
IIcon getIcon(int iconIndex);
|
||||
|
||||
/**
|
||||
* A call for the provider to register its Icons. This may be called multiple times but should only be executed once per provider
|
||||
* @param iconRegister
|
||||
*/
|
||||
@SideOnly(Side.CLIENT)
|
||||
void registerIcons(IIconRegister iconRegister);
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(TextureMap iconRegister);
|
||||
}
|
||||
@@ -1,21 +1,15 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.core;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public interface IInvSlot {
|
||||
/**
|
||||
* Returns the slot number of the underlying Inventory.
|
||||
/** Returns the slot number of the underlying Inventory.
|
||||
*
|
||||
* @return the slot number
|
||||
*/
|
||||
* @return the slot number */
|
||||
int getIndex();
|
||||
|
||||
boolean canPutStackInSlot(ItemStack stack);
|
||||
@@ -24,7 +18,7 @@ public interface IInvSlot {
|
||||
|
||||
boolean isItemValidForSlot(ItemStack stack);
|
||||
|
||||
ItemStack decreaseStackInSlot(int amount);
|
||||
ItemStack decreaseStackInSlot(int amount);
|
||||
|
||||
ItemStack getStackInSlot();
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package buildcraft.api.core;
|
||||
|
||||
import net.minecraft.nbt.NBTBase;
|
||||
|
||||
/** @param <T> The type that will be loaded from and saved too. This essentially allows Immutable objects to be safely
|
||||
* loaded without helper methods everywhere. However you are allowed to return this if you are a mutable
|
||||
* object */
|
||||
public interface INBTLoadable_BC8<T> {
|
||||
/** @return An object that has the properties loaded. WARNIG! This might be the same object as the one this method
|
||||
* was called on! (You should always replace the object you have stored with whatever this returns) */
|
||||
T readFromNBT(NBTBase nbt);
|
||||
|
||||
NBTBase writeToNBT();
|
||||
}
|
||||
@@ -2,7 +2,11 @@ package buildcraft.api.core;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
/** Use {@link INBTLoadable_BC8} instead of this, as this gives you more control over what NBT goes where, and what
|
||||
* objects are allowed to do. */
|
||||
@Deprecated
|
||||
public interface INBTStoreable {
|
||||
void readFromNBT(NBTTagCompound tag);
|
||||
void writeToNBT(NBTTagCompound tag);
|
||||
void readFromNBT(NBTTagCompound tag);
|
||||
|
||||
void writeToNBT(NBTTagCompound tag);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package buildcraft.api.core;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
|
||||
public interface INetworkLoadable_BC8<T> {
|
||||
T readFromByteBuf(ByteBuf buf);
|
||||
|
||||
void writeToByteBuf(ByteBuf buf);
|
||||
}
|
||||
@@ -2,9 +2,14 @@ package buildcraft.api.core;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* To be implemented by TileEntities able to provide a path on the world, typically BuildCraft path markers.
|
||||
*/
|
||||
import net.minecraft.util.BlockPos;
|
||||
|
||||
/** To be implemented by TileEntities able to provide a path on the world, typically BuildCraft path markers. */
|
||||
public interface IPathProvider {
|
||||
List<BlockIndex> getPath();
|
||||
List<BlockPos> getPath();
|
||||
|
||||
/**
|
||||
* Remove from the world all objects used to define the path.
|
||||
*/
|
||||
void removeFromWorld();
|
||||
}
|
||||
@@ -1,30 +1,21 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public License 1.0, or MMPL. Please check the contents
|
||||
* of the license located in http://www.mod-buildcraft.com/MMPL-1.0.txt */
|
||||
package buildcraft.api.core;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
|
||||
/**
|
||||
* Implemented by classes representing serializable packet state
|
||||
*/
|
||||
/** Use {@link INetworkLoadable_BC8} instead, as that gives you more control over how you use objects */
|
||||
@Deprecated
|
||||
public interface ISerializable {
|
||||
/**
|
||||
* Serializes the state to the stream
|
||||
*
|
||||
* @param data
|
||||
*/
|
||||
void writeData(ByteBuf data);
|
||||
/** Serializes the state to the stream
|
||||
*
|
||||
* @param data */
|
||||
void writeData(ByteBuf data);
|
||||
|
||||
/**
|
||||
* Deserializes the state from the stream
|
||||
*
|
||||
* @param data
|
||||
*/
|
||||
void readData(ByteBuf data);
|
||||
/** Deserializes the state from the stream
|
||||
*
|
||||
* @param data */
|
||||
void readData(ByteBuf data);
|
||||
}
|
||||
@@ -1,17 +1,14 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.core;
|
||||
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public interface IWorldProperty {
|
||||
boolean get(World world, int x, int y, int z);
|
||||
boolean get(World world, BlockPos pos);
|
||||
|
||||
void clear();
|
||||
void clear();
|
||||
}
|
||||
@@ -1,23 +1,26 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.core;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.Vec3;
|
||||
|
||||
public interface IZone {
|
||||
/** Returns the smallest possible distance that the index would have to be changed by in order for
|
||||
* {@link #contains(Vec3)} to return true. If the position is already inside then this will return 0 */
|
||||
double distanceTo(BlockPos index);
|
||||
|
||||
double distanceTo(BlockIndex index);
|
||||
/** Returns {@link #distanceTo(BlockPos)} but squared. Usually this will be quicker to calculate. */
|
||||
double distanceToSquared(BlockPos index);
|
||||
|
||||
double distanceToSquared(BlockIndex index);
|
||||
|
||||
boolean contains(double x, double y, double z);
|
||||
|
||||
BlockIndex getRandomBlockIndex(Random rand);
|
||||
/** Returns true if the point is enclosed by this zone, such that none of the coordinates lie outside the range
|
||||
* specified by this zone. */
|
||||
boolean contains(Vec3 point);
|
||||
|
||||
/** Gets a random position that {@link #contains(Vec3)} will return true. */
|
||||
BlockPos getRandomBlockPos(Random rand);
|
||||
}
|
||||
@@ -1,43 +1,39 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.core;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public final class JavaTools {
|
||||
private JavaTools(){
|
||||
|
||||
}
|
||||
|
||||
public static <T> T[] concat(T[] first, T[] second) {
|
||||
T[] result = Arrays.copyOf(first, first.length + second.length);
|
||||
System.arraycopy(second, 0, result, first.length, second.length);
|
||||
return result;
|
||||
}
|
||||
private JavaTools() {
|
||||
|
||||
public static int[] concat(int[] first, int[] second) {
|
||||
int[] result = Arrays.copyOf(first, first.length + second.length);
|
||||
System.arraycopy(second, 0, result, first.length, second.length);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public static float[] concat(float[] first, float[] second) {
|
||||
float[] result = Arrays.copyOf(first, first.length + second.length);
|
||||
System.arraycopy(second, 0, result, first.length, second.length);
|
||||
return result;
|
||||
}
|
||||
public static <T> T[] concat(T[] first, T[] second) {
|
||||
T[] result = Arrays.copyOf(first, first.length + second.length);
|
||||
System.arraycopy(second, 0, result, first.length, second.length);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String surroundWithQuotes(String stringToSurroundWithQuotes) {
|
||||
return String.format("\"%s\"", stringToSurroundWithQuotes);
|
||||
}
|
||||
public static int[] concat(int[] first, int[] second) {
|
||||
int[] result = Arrays.copyOf(first, first.length + second.length);
|
||||
System.arraycopy(second, 0, result, first.length, second.length);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String stripSurroundingQuotes(String stringToStripQuotes) {
|
||||
return stringToStripQuotes.replaceAll("^\"|\"$", "");
|
||||
}
|
||||
public static float[] concat(float[] first, float[] second) {
|
||||
float[] result = Arrays.copyOf(first, first.length + second.length);
|
||||
System.arraycopy(second, 0, result, first.length, second.length);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String surroundWithQuotes(String stringToSurroundWithQuotes) {
|
||||
return String.format("\"%s\"", stringToSurroundWithQuotes);
|
||||
}
|
||||
|
||||
public static String stripSurroundingQuotes(String stringToStripQuotes) {
|
||||
return stringToStripQuotes.replaceAll("^\"|\"$", "");
|
||||
}
|
||||
}
|
||||
@@ -1,200 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
package buildcraft.api.core;
|
||||
|
||||
import io.netty.buffer.ByteBuf;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class Position implements ISerializable {
|
||||
|
||||
public double x, y, z;
|
||||
public ForgeDirection orientation;
|
||||
|
||||
public Position() {
|
||||
x = 0;
|
||||
y = 0;
|
||||
z = 0;
|
||||
orientation = ForgeDirection.UNKNOWN;
|
||||
}
|
||||
|
||||
public Position(double ci, double cj, double ck) {
|
||||
x = ci;
|
||||
y = cj;
|
||||
z = ck;
|
||||
orientation = ForgeDirection.UNKNOWN;
|
||||
}
|
||||
|
||||
public Position(double ci, double cj, double ck, ForgeDirection corientation) {
|
||||
x = ci;
|
||||
y = cj;
|
||||
z = ck;
|
||||
orientation = corientation;
|
||||
|
||||
if (orientation == null) {
|
||||
orientation = ForgeDirection.UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
public Position(Position p) {
|
||||
x = p.x;
|
||||
y = p.y;
|
||||
z = p.z;
|
||||
orientation = p.orientation;
|
||||
}
|
||||
|
||||
public Position(NBTTagCompound nbttagcompound) {
|
||||
readFromNBT(nbttagcompound);
|
||||
}
|
||||
|
||||
public Position(TileEntity tile) {
|
||||
x = tile.xCoord;
|
||||
y = tile.yCoord;
|
||||
z = tile.zCoord;
|
||||
orientation = ForgeDirection.UNKNOWN;
|
||||
}
|
||||
|
||||
public Position(BlockIndex index) {
|
||||
x = index.x;
|
||||
y = index.y;
|
||||
z = index.z;
|
||||
orientation = ForgeDirection.UNKNOWN;
|
||||
}
|
||||
|
||||
public void moveRight(double step) {
|
||||
switch (orientation) {
|
||||
case SOUTH:
|
||||
x = x - step;
|
||||
break;
|
||||
case NORTH:
|
||||
x = x + step;
|
||||
break;
|
||||
case EAST:
|
||||
z = z + step;
|
||||
break;
|
||||
case WEST:
|
||||
z = z - step;
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
public void moveLeft(double step) {
|
||||
moveRight(-step);
|
||||
}
|
||||
|
||||
public void moveForwards(double step) {
|
||||
switch (orientation) {
|
||||
case UP:
|
||||
y = y + step;
|
||||
break;
|
||||
case DOWN:
|
||||
y = y - step;
|
||||
break;
|
||||
case SOUTH:
|
||||
z = z + step;
|
||||
break;
|
||||
case NORTH:
|
||||
z = z - step;
|
||||
break;
|
||||
case EAST:
|
||||
x = x + step;
|
||||
break;
|
||||
case WEST:
|
||||
x = x - step;
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
public void moveBackwards(double step) {
|
||||
moveForwards(-step);
|
||||
}
|
||||
|
||||
public void moveUp(double step) {
|
||||
switch (orientation) {
|
||||
case SOUTH:
|
||||
case NORTH:
|
||||
case EAST:
|
||||
case WEST:
|
||||
y = y + step;
|
||||
break;
|
||||
default:
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void moveDown(double step) {
|
||||
moveUp(-step);
|
||||
}
|
||||
|
||||
public void writeToNBT(NBTTagCompound nbttagcompound) {
|
||||
if (orientation == null) {
|
||||
orientation = ForgeDirection.UNKNOWN;
|
||||
}
|
||||
|
||||
nbttagcompound.setDouble("i", x);
|
||||
nbttagcompound.setDouble("j", y);
|
||||
nbttagcompound.setDouble("k", z);
|
||||
nbttagcompound.setByte("orientation", (byte) orientation.ordinal());
|
||||
}
|
||||
|
||||
public void readFromNBT(NBTTagCompound nbttagcompound) {
|
||||
x = nbttagcompound.getDouble("i");
|
||||
y = nbttagcompound.getDouble("j");
|
||||
z = nbttagcompound.getDouble("k");
|
||||
orientation = ForgeDirection.values() [nbttagcompound.getByte("orientation")];
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "{" + x + ", " + y + ", " + z + "}";
|
||||
}
|
||||
|
||||
public Position min(Position p) {
|
||||
return new Position(p.x > x ? x : p.x, p.y > y ? y : p.y, p.z > z ? z : p.z);
|
||||
}
|
||||
|
||||
public Position max(Position p) {
|
||||
return new Position(p.x < x ? x : p.x, p.y < y ? y : p.y, p.z < z ? z : p.z);
|
||||
}
|
||||
|
||||
public boolean isClose(Position newPosition, float f) {
|
||||
double dx = x - newPosition.x;
|
||||
double dy = y - newPosition.y;
|
||||
double dz = z - newPosition.z;
|
||||
|
||||
double sqrDis = dx * dx + dy * dy + dz * dz;
|
||||
|
||||
return !(sqrDis > f * f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readData(ByteBuf stream) {
|
||||
x = stream.readDouble();
|
||||
y = stream.readDouble();
|
||||
z = stream.readDouble();
|
||||
orientation = ForgeDirection.getOrientation(stream.readByte());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeData(ByteBuf stream) {
|
||||
stream.writeDouble(x);
|
||||
stream.writeDouble(y);
|
||||
stream.writeDouble(z);
|
||||
stream.writeByte(orientation.ordinal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return (51 * (int) x) + (13 * (int) y) + (int) z;
|
||||
}
|
||||
}
|
||||
@@ -1,85 +1,68 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.core;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class SafeTimeTracker {
|
||||
|
||||
private long lastMark = Long.MIN_VALUE;
|
||||
private long duration = -1;
|
||||
private long randomRange = 0;
|
||||
private long lastRandomDelay = 0;
|
||||
private long internalDelay = 1;
|
||||
private long lastMark = Long.MIN_VALUE;
|
||||
private long duration = -1;
|
||||
private long randomRange = 0;
|
||||
private long lastRandomDelay = 0;
|
||||
private long internalDelay = 1;
|
||||
|
||||
/**
|
||||
* @deprecated should use constructors with parameters instead
|
||||
*/
|
||||
public SafeTimeTracker () {
|
||||
/** Only use this if the delay time changes (say, if you use this to determine when a refining should be complete */
|
||||
public SafeTimeTracker() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public SafeTimeTracker (long delay) {
|
||||
internalDelay = delay;
|
||||
}
|
||||
public SafeTimeTracker(long delay) {
|
||||
internalDelay = delay;
|
||||
}
|
||||
|
||||
/**
|
||||
* In many situations, it is a bad idea to have all objects of the same
|
||||
* kind to be waiting for the exact same amount of time, as that can lead
|
||||
* to some situation where they're all synchronized and got to work all
|
||||
* at the same time. When created with a random range, the mark that is set
|
||||
* when reaching the expect delay will be added with a random number
|
||||
* between [0, range[, meaning that the event will take between 0 and range
|
||||
* more tick to run.
|
||||
*/
|
||||
public SafeTimeTracker (long delay, long random) {
|
||||
internalDelay = delay;
|
||||
randomRange = random;
|
||||
}
|
||||
/** In many situations, it is a bad idea to have all objects of the same kind to be waiting for the exact same
|
||||
* amount of time, as that can lead to some situation where they're all synchronized and got to work all at the same
|
||||
* time. When created with a random range, the mark that is set when reaching the expect delay will be added with a
|
||||
* random number between [0, range[, meaning that the event will take between 0 and range more tick to run. */
|
||||
public SafeTimeTracker(long delay, long random) {
|
||||
internalDelay = delay;
|
||||
randomRange = random;
|
||||
}
|
||||
|
||||
public boolean markTimeIfDelay(World world) {
|
||||
return markTimeIfDelay(world, internalDelay);
|
||||
}
|
||||
public boolean markTimeIfDelay(World world) {
|
||||
return markTimeIfDelay(world, internalDelay);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if a given delay has passed since last time marked was called
|
||||
* successfully.
|
||||
*
|
||||
* @deprecated should use the constructor with a delay instead, and call
|
||||
* this function without a parameter
|
||||
*/
|
||||
public boolean markTimeIfDelay(World world, long delay) {
|
||||
if (world == null) {
|
||||
return false;
|
||||
}
|
||||
/** Return true if a given delay has passed since last time marked was called successfully. */
|
||||
public boolean markTimeIfDelay(World world, long delay) {
|
||||
if (world == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
long currentTime = world.getTotalWorldTime();
|
||||
long currentTime = world.getTotalWorldTime();
|
||||
|
||||
if (currentTime < lastMark) {
|
||||
lastMark = currentTime;
|
||||
return false;
|
||||
} else if (lastMark + delay + lastRandomDelay <= currentTime) {
|
||||
duration = currentTime - lastMark;
|
||||
lastMark = currentTime;
|
||||
lastRandomDelay = (int) (Math.random() * randomRange);
|
||||
if (currentTime < lastMark) {
|
||||
lastMark = currentTime;
|
||||
return false;
|
||||
} else if (lastMark + delay + lastRandomDelay <= currentTime) {
|
||||
duration = currentTime - lastMark;
|
||||
lastMark = currentTime;
|
||||
lastRandomDelay = (int) (Math.random() * randomRange);
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public long durationOfLastDelay() {
|
||||
return duration > 0 ? duration : 0;
|
||||
}
|
||||
public long durationOfLastDelay() {
|
||||
return duration > 0 ? duration : 0;
|
||||
}
|
||||
|
||||
public void markTime(World world) {
|
||||
lastMark = world.getTotalWorldTime();
|
||||
}
|
||||
}
|
||||
public void markTime(World world) {
|
||||
lastMark = world.getTotalWorldTime();
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.core;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
@@ -15,120 +11,115 @@ import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidContainerRegistry;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
/**
|
||||
* This class is used whenever stacks needs to be stored as keys.
|
||||
*/
|
||||
/** This class is used whenever stacks needs to be stored as keys. */
|
||||
public final class StackKey {
|
||||
public final ItemStack stack;
|
||||
public final FluidStack fluidStack;
|
||||
public final ItemStack stack;
|
||||
public final FluidStack fluidStack;
|
||||
|
||||
public StackKey(FluidStack fluidStack) {
|
||||
this(null, fluidStack);
|
||||
}
|
||||
public StackKey(FluidStack fluidStack) {
|
||||
this(null, fluidStack);
|
||||
}
|
||||
|
||||
public StackKey(ItemStack stack) {
|
||||
this(stack, null);
|
||||
}
|
||||
public StackKey(ItemStack stack) {
|
||||
this(stack, null);
|
||||
}
|
||||
|
||||
public StackKey(ItemStack stack, FluidStack fluidStack) {
|
||||
this.stack = stack;
|
||||
this.fluidStack = fluidStack;
|
||||
}
|
||||
public StackKey(ItemStack stack, FluidStack fluidStack) {
|
||||
this.stack = stack;
|
||||
this.fluidStack = fluidStack;
|
||||
}
|
||||
|
||||
public static StackKey stack(Item item, int amount, int damage) {
|
||||
return new StackKey(new ItemStack(item, amount, damage));
|
||||
}
|
||||
public static StackKey stack(Item item, int amount, int damage) {
|
||||
return new StackKey(new ItemStack(item, amount, damage));
|
||||
}
|
||||
|
||||
public static StackKey stack(Block block, int amount, int damage) {
|
||||
return new StackKey(new ItemStack(block, amount, damage));
|
||||
}
|
||||
public static StackKey stack(Block block, int amount, int damage) {
|
||||
return new StackKey(new ItemStack(block, amount, damage));
|
||||
}
|
||||
|
||||
public static StackKey stack(Item item) {
|
||||
return new StackKey(new ItemStack(item, 1, 0));
|
||||
}
|
||||
public static StackKey stack(Item item) {
|
||||
return new StackKey(new ItemStack(item, 1, 0));
|
||||
}
|
||||
|
||||
public static StackKey stack(Block block) {
|
||||
return new StackKey(new ItemStack(block, 1, 0));
|
||||
}
|
||||
public static StackKey stack(Block block) {
|
||||
return new StackKey(new ItemStack(block, 1, 0));
|
||||
}
|
||||
|
||||
public static StackKey stack(ItemStack itemStack) {
|
||||
return new StackKey(itemStack);
|
||||
}
|
||||
public static StackKey stack(ItemStack itemStack) {
|
||||
return new StackKey(itemStack);
|
||||
}
|
||||
|
||||
public static StackKey fluid(Fluid fluid, int amount) {
|
||||
return new StackKey(new FluidStack(fluid, amount));
|
||||
}
|
||||
public static StackKey fluid(Fluid fluid, int amount) {
|
||||
return new StackKey(new FluidStack(fluid, amount));
|
||||
}
|
||||
|
||||
public static StackKey fluid(Fluid fluid) {
|
||||
return new StackKey(new FluidStack(fluid, FluidContainerRegistry.BUCKET_VOLUME));
|
||||
}
|
||||
public static StackKey fluid(Fluid fluid) {
|
||||
return new StackKey(new FluidStack(fluid, FluidContainerRegistry.BUCKET_VOLUME));
|
||||
}
|
||||
|
||||
public static StackKey fluid(FluidStack fluidStack) {
|
||||
return new StackKey(fluidStack);
|
||||
}
|
||||
public static StackKey fluid(FluidStack fluidStack) {
|
||||
return new StackKey(fluidStack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || o.getClass() != StackKey.class) {
|
||||
return false;
|
||||
}
|
||||
StackKey k = (StackKey) o;
|
||||
if ((stack == null ^ k.stack == null) || (fluidStack == null ^ k.fluidStack == null)) {
|
||||
return false;
|
||||
}
|
||||
if (stack != null) {
|
||||
if (stack.getItem() != k.stack.getItem() ||
|
||||
stack.getHasSubtypes() && stack.getItemDamage() != k.stack.getItemDamage() ||
|
||||
!objectsEqual(stack.getTagCompound(), k.stack.getTagCompound())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (fluidStack != null) {
|
||||
if (fluidStack.getFluid().getID() != k.fluidStack.getFluid().getID() ||
|
||||
fluidStack.amount != k.fluidStack.amount ||
|
||||
!objectsEqual(fluidStack.tag, k.fluidStack.tag)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || o.getClass() != StackKey.class) {
|
||||
return false;
|
||||
}
|
||||
StackKey k = (StackKey) o;
|
||||
if ((stack == null ^ k.stack == null) || (fluidStack == null ^ k.fluidStack == null)) {
|
||||
return false;
|
||||
}
|
||||
if (stack != null) {
|
||||
if (stack.getItem() != k.stack.getItem() || stack.getHasSubtypes() && stack.getItemDamage() != k.stack.getItemDamage() || !objectsEqual(
|
||||
stack.getTagCompound(), k.stack.getTagCompound())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (fluidStack != null) {
|
||||
if (fluidStack.getFluid().getID() != k.fluidStack.getFluid().getID() || fluidStack.amount != k.fluidStack.amount || !objectsEqual(
|
||||
fluidStack.tag, k.fluidStack.tag)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = 7;
|
||||
if (stack != null) {
|
||||
result = 31 * result + stack.getItem().hashCode();
|
||||
result = 31 * result + stack.getItemDamage();
|
||||
result = 31 * result + objectHashCode(stack.getTagCompound());
|
||||
}
|
||||
result = 31 * result + 7;
|
||||
if (fluidStack != null) {
|
||||
result = 31 * result + fluidStack.getFluid().getID();
|
||||
result = 31 * result + fluidStack.amount;
|
||||
result = 31 * result + objectHashCode(fluidStack.tag);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = 7;
|
||||
if (stack != null) {
|
||||
result = 31 * result + stack.getItem().hashCode();
|
||||
result = 31 * result + stack.getItemDamage();
|
||||
result = 31 * result + objectHashCode(stack.getTagCompound());
|
||||
}
|
||||
result = 31 * result + 7;
|
||||
if (fluidStack != null) {
|
||||
result = 31 * result + fluidStack.getFluid().getID();
|
||||
result = 31 * result + fluidStack.amount;
|
||||
result = 31 * result + objectHashCode(fluidStack.tag);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private boolean objectsEqual(Object o1, Object o2) {
|
||||
if (o1 == null && o2 == null) {
|
||||
return true;
|
||||
} else if (o1 == null || o2 == null) {
|
||||
return false;
|
||||
} else {
|
||||
return o1.equals(o2);
|
||||
}
|
||||
}
|
||||
|
||||
private int objectHashCode(Object o) {
|
||||
return o != null ? o.hashCode() : 0;
|
||||
}
|
||||
private boolean objectsEqual(Object o1, Object o2) {
|
||||
if (o1 == null && o2 == null) {
|
||||
return true;
|
||||
} else if (o1 == null || o2 == null) {
|
||||
return false;
|
||||
} else {
|
||||
return o1.equals(o2);
|
||||
}
|
||||
}
|
||||
|
||||
public StackKey copy() {
|
||||
return new StackKey(stack != null ? stack.copy() : null,
|
||||
fluidStack != null ? fluidStack.copy() : null);
|
||||
}
|
||||
private int objectHashCode(Object o) {
|
||||
return o != null ? o.hashCode() : 0;
|
||||
}
|
||||
|
||||
public StackKey copy() {
|
||||
return new StackKey(stack != null ? stack.copy() : null, fluidStack != null ? fluidStack.copy() : null);
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,10 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
@API(apiVersion = "1.5", owner = "BuildCraft|Core", provides = "BuildCraftAPI|core")
|
||||
@API(apiVersion = "2.0", owner = "BuildCraft|Core", provides = "BuildCraftAPI|core")
|
||||
package buildcraft.api.core;
|
||||
import cpw.mods.fml.common.API;
|
||||
|
||||
import net.minecraftforge.fml.common.API;
|
||||
@@ -1,32 +1,27 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public License 1.0, or MMPL. Please check the contents
|
||||
* of the license located in http://www.mod-buildcraft.com/MMPL-1.0.txt */
|
||||
package buildcraft.api.core.render;
|
||||
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
/*
|
||||
* This interface designates a block as a state machine responsible for culling
|
||||
* For implementation details look into FakeBlock implementation
|
||||
*/
|
||||
/* This interface designates a block as a state machine responsible for culling For implementation details look into
|
||||
* FakeBlock implementation */
|
||||
public interface ICullable {
|
||||
|
||||
//Side Rendering States
|
||||
//They are used to effectively cull obstructed sides while processing facades.
|
||||
//Make sure your implementation is correct otherwise expect FPS drop
|
||||
|
||||
void setRenderSide(ForgeDirection side, boolean render);
|
||||
|
||||
void setRenderAllSides();
|
||||
|
||||
boolean shouldSideBeRendered(IBlockAccess blockAccess, int x, int y, int z, int side);
|
||||
|
||||
void setRenderMask(int mask);
|
||||
|
||||
// Side Rendering States
|
||||
// They are used to effectively cull obstructed sides while processing facades.
|
||||
// Make sure your implementation is correct otherwise expect FPS drop
|
||||
|
||||
void setRenderSide(EnumFacing side, boolean render);
|
||||
|
||||
void setRenderAllSides();
|
||||
|
||||
boolean shouldSideBeRendered(IBlockAccess blockAccess, BlockPos pos, int side);
|
||||
|
||||
void setRenderMask(int mask);
|
||||
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package buildcraft.api.core.render;
|
||||
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
|
||||
public interface ITextureStateManager {
|
||||
void set(IIcon icon);
|
||||
void set(TextureAtlasSprite icon);
|
||||
}
|
||||
@@ -1,22 +1,18 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public License 1.0, or MMPL. Please check the contents
|
||||
* of the license located in http://www.mod-buildcraft.com/MMPL-1.0.txt */
|
||||
package buildcraft.api.core.render;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
|
||||
public interface ITextureStates extends ICullable {
|
||||
|
||||
ITextureStateManager getTextureState();
|
||||
|
||||
IIcon getIcon(int side, int meta);
|
||||
|
||||
Block getBlock();
|
||||
|
||||
ITextureStateManager getTextureState();
|
||||
|
||||
TextureAtlasSprite getIcon(int side, int meta);
|
||||
|
||||
Block getBlock();
|
||||
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.gates;
|
||||
|
||||
import java.util.List;
|
||||
@@ -20,45 +16,39 @@ import buildcraft.api.statements.ITriggerInternal;
|
||||
|
||||
public abstract class GateExpansionController {
|
||||
|
||||
public final IGateExpansion type;
|
||||
public final TileEntity pipeTile;
|
||||
public final IGateExpansion type;
|
||||
public final TileEntity pipeTile;
|
||||
|
||||
public GateExpansionController(IGateExpansion type, TileEntity pipeTile) {
|
||||
this.pipeTile = pipeTile;
|
||||
this.type = type;
|
||||
}
|
||||
public GateExpansionController(IGateExpansion type, TileEntity pipeTile) {
|
||||
this.pipeTile = pipeTile;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public IGateExpansion getType() {
|
||||
return type;
|
||||
}
|
||||
public IGateExpansion getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public boolean isActive() {
|
||||
return false;
|
||||
}
|
||||
public boolean isActive() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void tick(IGate gate) {
|
||||
}
|
||||
public void tick(IGate gate) {}
|
||||
|
||||
public void startResolution() {
|
||||
}
|
||||
public void startResolution() {}
|
||||
|
||||
public boolean resolveAction(IStatement action, int count) {
|
||||
return false;
|
||||
}
|
||||
public boolean resolveAction(IStatement action, int count) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean isTriggerActive(IStatement trigger, IStatementParameter[] parameters) {
|
||||
return false;
|
||||
}
|
||||
public boolean isTriggerActive(IStatement trigger, IStatementParameter[] parameters) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void addTriggers(List<ITriggerInternal> list) {
|
||||
}
|
||||
public void addTriggers(List<ITriggerInternal> list) {}
|
||||
|
||||
public void addActions(List<IActionInternal> list) {
|
||||
}
|
||||
public void addActions(List<IActionInternal> list) {}
|
||||
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
}
|
||||
public void writeToNBT(NBTTagCompound nbt) {}
|
||||
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
}
|
||||
public void readFromNBT(NBTTagCompound nbt) {}
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.gates;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -19,48 +15,47 @@ import com.google.common.collect.HashBiMap;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public final class GateExpansions {
|
||||
private static final Map<String, IGateExpansion> expansions = new HashMap<String, IGateExpansion>();
|
||||
private static final ArrayList<IGateExpansion> expansionIDs = new ArrayList<IGateExpansion>();
|
||||
private static final Map<IGateExpansion, ItemStack> recipes = HashBiMap.create();
|
||||
private static final Map<String, IGateExpansion> expansions = new HashMap<String, IGateExpansion>();
|
||||
private static final ArrayList<IGateExpansion> expansionIDs = new ArrayList<IGateExpansion>();
|
||||
private static final Map<IGateExpansion, ItemStack> recipes = HashBiMap.create();
|
||||
|
||||
private GateExpansions() {
|
||||
}
|
||||
private GateExpansions() {}
|
||||
|
||||
public static void registerExpansion(IGateExpansion expansion) {
|
||||
registerExpansion(expansion.getUniqueIdentifier(), expansion);
|
||||
}
|
||||
public static void registerExpansion(IGateExpansion expansion) {
|
||||
registerExpansion(expansion.getUniqueIdentifier(), expansion);
|
||||
}
|
||||
|
||||
public static void registerExpansion(String identifier, IGateExpansion expansion) {
|
||||
expansions.put(identifier, expansion);
|
||||
expansionIDs.add(expansion);
|
||||
}
|
||||
public static void registerExpansion(String identifier, IGateExpansion expansion) {
|
||||
expansions.put(identifier, expansion);
|
||||
expansionIDs.add(expansion);
|
||||
}
|
||||
|
||||
public static void registerExpansion(IGateExpansion expansion, ItemStack addedRecipe) {
|
||||
registerExpansion(expansion.getUniqueIdentifier(), expansion);
|
||||
recipes.put(expansion, addedRecipe);
|
||||
}
|
||||
public static void registerExpansion(IGateExpansion expansion, ItemStack addedRecipe) {
|
||||
registerExpansion(expansion.getUniqueIdentifier(), expansion);
|
||||
recipes.put(expansion, addedRecipe);
|
||||
}
|
||||
|
||||
public static IGateExpansion getExpansion(String identifier) {
|
||||
return expansions.get(identifier);
|
||||
}
|
||||
public static IGateExpansion getExpansion(String identifier) {
|
||||
return expansions.get(identifier);
|
||||
}
|
||||
|
||||
public static Set<IGateExpansion> getExpansions() {
|
||||
Set<IGateExpansion> set = new HashSet<IGateExpansion>();
|
||||
set.addAll(expansionIDs);
|
||||
return set;
|
||||
}
|
||||
public static Set<IGateExpansion> getExpansions() {
|
||||
Set<IGateExpansion> set = new HashSet<IGateExpansion>();
|
||||
set.addAll(expansionIDs);
|
||||
return set;
|
||||
}
|
||||
|
||||
public static Map<IGateExpansion, ItemStack> getRecipesForPostInit() {
|
||||
return recipes;
|
||||
}
|
||||
|
||||
// The code below is used by networking.
|
||||
|
||||
public static IGateExpansion getExpansionByID(int id) {
|
||||
return expansionIDs.get(id);
|
||||
}
|
||||
|
||||
public static int getExpansionID(IGateExpansion expansion) {
|
||||
return expansionIDs.indexOf(expansion);
|
||||
}
|
||||
public static Map<IGateExpansion, ItemStack> getRecipesForPostInit() {
|
||||
return recipes;
|
||||
}
|
||||
|
||||
// The code below is used by networking.
|
||||
|
||||
public static IGateExpansion getExpansionByID(int id) {
|
||||
return expansionIDs.get(id);
|
||||
}
|
||||
|
||||
public static int getExpansionID(IGateExpansion expansion) {
|
||||
return expansionIDs.indexOf(expansion);
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.gates;
|
||||
|
||||
import java.util.List;
|
||||
@@ -17,16 +13,18 @@ import buildcraft.api.statements.containers.ISidedStatementContainer;
|
||||
import buildcraft.api.transport.IPipe;
|
||||
|
||||
public interface IGate extends ISidedStatementContainer {
|
||||
@Deprecated
|
||||
void setPulsing(boolean pulse);
|
||||
@Deprecated
|
||||
void setPulsing(boolean pulse);
|
||||
|
||||
IPipe getPipe();
|
||||
IPipe getPipe();
|
||||
|
||||
List<IStatement> getTriggers();
|
||||
List<IStatement> getActions();
|
||||
List<IStatement> getTriggers();
|
||||
|
||||
List<StatementSlot> getActiveActions();
|
||||
List<IStatement> getActions();
|
||||
|
||||
List<IStatementParameter> getTriggerParameters(int index);
|
||||
List<IStatementParameter> getActionParameters(int index);
|
||||
List<StatementSlot> getActiveActions();
|
||||
|
||||
List<IStatementParameter> getTriggerParameters(int index);
|
||||
|
||||
List<IStatementParameter> getActionParameters(int index);
|
||||
}
|
||||
@@ -1,30 +1,34 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.gates;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.renderer.texture.TextureMap;
|
||||
import net.minecraft.client.renderer.vertex.VertexFormat;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.IIcon;
|
||||
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
public interface IGateExpansion {
|
||||
|
||||
String getUniqueIdentifier();
|
||||
String getUniqueIdentifier();
|
||||
|
||||
String getDisplayName();
|
||||
String getDisplayName();
|
||||
|
||||
GateExpansionController makeController(TileEntity pipeTile);
|
||||
GateExpansionController makeController(TileEntity pipeTile);
|
||||
|
||||
void registerBlockOverlay(IIconRegister iconRegister);
|
||||
@SideOnly(Side.CLIENT)
|
||||
void textureStitch(TextureMap map);
|
||||
|
||||
void registerItemOverlay(IIconRegister iconRegister);
|
||||
@SideOnly(Side.CLIENT)
|
||||
IGateStaticRenderState getRenderState();
|
||||
|
||||
IIcon getOverlayBlock();
|
||||
|
||||
IIcon getOverlayItem();
|
||||
public interface IGateStaticRenderState {
|
||||
List<BakedQuad> bake(VertexFormat format);
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,8 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
@API(apiVersion = "4.1", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|gates")
|
||||
package buildcraft.api.gates;
|
||||
import cpw.mods.fml.common.API;
|
||||
|
||||
import net.minecraftforge.fml.common.API;
|
||||
@@ -1,11 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
public class ActionState {
|
||||
|
||||
@@ -1,16 +1,12 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
public interface IActionExternal extends IStatement {
|
||||
void actionActivate(TileEntity target, ForgeDirection side, IStatementContainer source, IStatementParameter[] parameters);
|
||||
void actionActivate(TileEntity target, EnumFacing side, IStatementContainer source, IStatementParameter[] parameters);
|
||||
}
|
||||
@@ -1,15 +1,11 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
public interface IActionInternal extends IStatement {
|
||||
|
||||
void actionActivate(IStatementContainer source, IStatementParameter[] parameters);
|
||||
|
||||
void actionActivate(IStatementContainer source, IStatementParameter[] parameters);
|
||||
|
||||
}
|
||||
@@ -1,28 +1,19 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
public interface IActionProvider {
|
||||
|
||||
/**
|
||||
* Returns the list of actions that are available from the statement container holding the
|
||||
* gate.
|
||||
*/
|
||||
Collection<IActionInternal> getInternalActions(IStatementContainer container);
|
||||
/** Returns the list of actions that are available from the statement container holding the gate. */
|
||||
Collection<IActionInternal> getInternalActions(IStatementContainer container);
|
||||
|
||||
/**
|
||||
* Returns the list of actions available to a gate next to the given block.
|
||||
*/
|
||||
Collection<IActionExternal> getExternalActions(ForgeDirection side, TileEntity tile);
|
||||
/** Returns the list of actions available to a gate next to the given block. */
|
||||
Collection<IActionExternal> getExternalActions(EnumFacing side, TileEntity tile);
|
||||
}
|
||||
@@ -1,13 +1,9 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
public interface IActionReceptor {
|
||||
void actionActivated(IStatement statement, IStatementParameter[] parameters);
|
||||
void actionActivated(IStatement statement, IStatementParameter[] parameters);
|
||||
}
|
||||
@@ -1,16 +1,13 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface IOverrideDefaultStatements {
|
||||
List<ITriggerExternal> overrideTriggers();
|
||||
List<IActionExternal> overrideActions();
|
||||
List<ITriggerExternal> overrideTriggers();
|
||||
|
||||
List<IActionExternal> overrideActions();
|
||||
}
|
||||
@@ -1,56 +1,36 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.util.IIcon;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
public interface IStatement {
|
||||
/**
|
||||
* Every statement needs a unique tag, it should be in the format of
|
||||
* "<modid>:<name>.
|
||||
*
|
||||
* @return the unique id
|
||||
*/
|
||||
String getUniqueTag();
|
||||
/** Every statement needs a unique tag, it should be in the format of "<modid>:<name>.
|
||||
*
|
||||
* @return the unique id */
|
||||
String getUniqueTag();
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
IIcon getIcon();
|
||||
/** Return the maximum number of parameter this statement can have, 0 if none. */
|
||||
int maxParameters();
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
void registerIcons(IIconRegister iconRegister);
|
||||
/** Return the minimum number of parameter this statement can have, 0 if none. */
|
||||
int minParameters();
|
||||
|
||||
/**
|
||||
* Return the maximum number of parameter this statement can have, 0 if none.
|
||||
*/
|
||||
int maxParameters();
|
||||
/** Return the statement description in the UI */
|
||||
String getDescription();
|
||||
|
||||
/**
|
||||
* Return the minimum number of parameter this statement can have, 0 if none.
|
||||
*/
|
||||
int minParameters();
|
||||
/** Create parameters for the statement. */
|
||||
IStatementParameter createParameter(int index);
|
||||
|
||||
/**
|
||||
* Return the statement description in the UI
|
||||
*/
|
||||
String getDescription();
|
||||
/** This returns the statement after a left rotation. Used in particular in blueprints orientation. */
|
||||
IStatement rotateLeft();
|
||||
|
||||
/**
|
||||
* Create parameters for the statement.
|
||||
*/
|
||||
IStatementParameter createParameter(int index);
|
||||
|
||||
/**
|
||||
* This returns the statement after a left rotation. Used in particular in
|
||||
* blueprints orientation.
|
||||
*/
|
||||
IStatement rotateLeft();
|
||||
/** This should return the icon for this statement, suitable for rending directly into a GUI. This should refer to a
|
||||
* texture on the map block texture map. */
|
||||
@SideOnly(Side.CLIENT)
|
||||
TextureAtlasSprite getGuiSprite();
|
||||
}
|
||||
@@ -1,19 +1,12 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
/**
|
||||
* This is implemented by objects containing Statements, such as
|
||||
* Gates and TileEntities.
|
||||
*/
|
||||
/** This is implemented by objects containing Statements, such as Gates and TileEntities. */
|
||||
public interface IStatementContainer {
|
||||
TileEntity getTile();
|
||||
TileEntity getTile();
|
||||
}
|
||||
@@ -1,59 +1,36 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.IIcon;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
public interface IStatementParameter {
|
||||
|
||||
/**
|
||||
* Every parameter needs a unique tag, it should be in the format of
|
||||
* "<modi>:<name>".
|
||||
*
|
||||
* @return the unique id
|
||||
*/
|
||||
String getUniqueTag();
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
IIcon getIcon();
|
||||
|
||||
ItemStack getItemStack();
|
||||
/** Every parameter needs a unique tag, it should be in the format of "<modid>:<name>".
|
||||
*
|
||||
* @return the unique id */
|
||||
String getUniqueTag();
|
||||
|
||||
/**
|
||||
* Something that is initially unintuitive: you HAVE to
|
||||
* keep your icons as static variables, due to the fact
|
||||
* that every IStatementParameter is instantiated upon creation,
|
||||
* in opposition to IStatements which are singletons (due to the
|
||||
* fact that they, unlike Parameters, store no additional data)
|
||||
*/
|
||||
@SideOnly(Side.CLIENT)
|
||||
void registerIcons(IIconRegister iconRegister);
|
||||
|
||||
/**
|
||||
* Return the parameter description in the UI
|
||||
*/
|
||||
String getDescription();
|
||||
@SideOnly(Side.CLIENT)
|
||||
TextureAtlasSprite getIcon();
|
||||
|
||||
void onClick(IStatementContainer source, IStatement stmt, ItemStack stack, StatementMouseClick mouse);
|
||||
ItemStack getItemStack();
|
||||
|
||||
void readFromNBT(NBTTagCompound compound);
|
||||
/** Return the parameter description in the UI */
|
||||
String getDescription();
|
||||
|
||||
void writeToNBT(NBTTagCompound compound);
|
||||
void onClick(IStatementContainer source, IStatement stmt, ItemStack stack, StatementMouseClick mouse);
|
||||
|
||||
/**
|
||||
* This returns the parameter after a left rotation. Used in particular in
|
||||
* blueprints orientation.
|
||||
*/
|
||||
IStatementParameter rotateLeft();
|
||||
void readFromNBT(NBTTagCompound compound);
|
||||
|
||||
void writeToNBT(NBTTagCompound compound);
|
||||
|
||||
/** This returns the parameter after a left rotation. Used in particular in blueprints orientation. */
|
||||
IStatementParameter rotateLeft();
|
||||
}
|
||||
@@ -1,18 +1,14 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
public interface ITriggerExternal extends IStatement {
|
||||
|
||||
boolean isTriggerActive(TileEntity target, ForgeDirection side, IStatementContainer source, IStatementParameter[] parameters);
|
||||
|
||||
boolean isTriggerActive(TileEntity target, EnumFacing side, IStatementContainer source, IStatementParameter[] parameters);
|
||||
|
||||
}
|
||||
@@ -1,17 +1,16 @@
|
||||
package buildcraft.api.statements;
|
||||
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
/**
|
||||
* This interface can be used by tiles to override external trigger
|
||||
* behaviour.
|
||||
/** This interface can be used by tiles to override external trigger behaviour.
|
||||
*
|
||||
* Please use wisely.
|
||||
*/
|
||||
* Please use wisely. */
|
||||
public interface ITriggerExternalOverride {
|
||||
public enum Result {
|
||||
TRUE, FALSE, IGNORE
|
||||
}
|
||||
public enum Result {
|
||||
TRUE,
|
||||
FALSE,
|
||||
IGNORE
|
||||
}
|
||||
|
||||
Result override(ForgeDirection side, IStatementContainer source, IStatementParameter[] parameters);
|
||||
Result override(EnumFacing side, IStatementContainer source, IStatementParameter[] parameters);
|
||||
}
|
||||
@@ -1,15 +1,11 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
public interface ITriggerInternal extends IStatement {
|
||||
|
||||
boolean isTriggerActive(IStatementContainer source, IStatementParameter[] parameters);
|
||||
boolean isTriggerActive(IStatementContainer source, IStatementParameter[] parameters);
|
||||
|
||||
}
|
||||
@@ -1,28 +1,20 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
public interface ITriggerProvider {
|
||||
|
||||
/**
|
||||
* Returns the list of triggers that are available from the object holding the gate.
|
||||
*/
|
||||
Collection<ITriggerInternal> getInternalTriggers(IStatementContainer container);
|
||||
/** Returns the list of triggers that are available from the object holding the gate. */
|
||||
Collection<ITriggerInternal> getInternalTriggers(IStatementContainer container);
|
||||
|
||||
/**
|
||||
* Returns the list of triggers available to a gate next to the given block.
|
||||
*/
|
||||
Collection<ITriggerExternal> getExternalTriggers(ForgeDirection side, TileEntity tile);
|
||||
/** Returns the list of triggers available to a gate next to the given block. */
|
||||
Collection<ITriggerExternal> getExternalTriggers(EnumFacing side, TileEntity tile);
|
||||
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
import java.util.Collection;
|
||||
@@ -14,169 +10,168 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
import buildcraft.api.core.BCLog;
|
||||
|
||||
public final class StatementManager {
|
||||
|
||||
public static Map<String, IStatement> statements = new HashMap<String, IStatement>();
|
||||
public static Map<String, Class<? extends IStatementParameter>> parameters = new HashMap<String, Class<? extends IStatementParameter>>();
|
||||
private static List<ITriggerProvider> triggerProviders = new LinkedList<ITriggerProvider>();
|
||||
private static List<IActionProvider> actionProviders = new LinkedList<IActionProvider>();
|
||||
public static Map<String, IStatement> statements = new HashMap<String, IStatement>();
|
||||
public static Map<String, Class<? extends IStatementParameter>> parameters = new HashMap<String, Class<? extends IStatementParameter>>();
|
||||
private static List<ITriggerProvider> triggerProviders = new LinkedList<ITriggerProvider>();
|
||||
private static List<IActionProvider> actionProviders = new LinkedList<IActionProvider>();
|
||||
|
||||
/**
|
||||
* Deactivate constructor
|
||||
*/
|
||||
private StatementManager() {
|
||||
}
|
||||
/** Deactivate constructor */
|
||||
private StatementManager() {}
|
||||
|
||||
public static void registerTriggerProvider(ITriggerProvider provider) {
|
||||
if (provider != null && !triggerProviders.contains(provider)) {
|
||||
triggerProviders.add(provider);
|
||||
}
|
||||
}
|
||||
public static void registerTriggerProvider(ITriggerProvider provider) {
|
||||
if (provider != null && !triggerProviders.contains(provider)) {
|
||||
triggerProviders.add(provider);
|
||||
}
|
||||
}
|
||||
|
||||
public static void registerActionProvider(IActionProvider provider) {
|
||||
if (provider != null && !actionProviders.contains(provider)) {
|
||||
actionProviders.add(provider);
|
||||
}
|
||||
}
|
||||
public static void registerActionProvider(IActionProvider provider) {
|
||||
if (provider != null && !actionProviders.contains(provider)) {
|
||||
actionProviders.add(provider);
|
||||
}
|
||||
}
|
||||
|
||||
public static void registerStatement(IStatement statement) {
|
||||
statements.put(statement.getUniqueTag(), statement);
|
||||
}
|
||||
public static void registerStatement(IStatement statement) {
|
||||
statements.put(statement.getUniqueTag(), statement);
|
||||
}
|
||||
|
||||
public static void registerParameterClass(Class<? extends IStatementParameter> param) {
|
||||
parameters.put(createParameter(param).getUniqueTag(), param);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void registerParameterClass(String name, Class<? extends IStatementParameter> param) {
|
||||
parameters.put(name, param);
|
||||
}
|
||||
public static void registerParameterClass(Class<? extends IStatementParameter> param) {
|
||||
parameters.put(createParameter(param).getUniqueTag(), param);
|
||||
}
|
||||
|
||||
public static List<ITriggerExternal> getExternalTriggers(ForgeDirection side, TileEntity entity) {
|
||||
List<ITriggerExternal> result;
|
||||
@Deprecated
|
||||
public static void registerParameterClass(String name, Class<? extends IStatementParameter> param) {
|
||||
parameters.put(name, param);
|
||||
}
|
||||
|
||||
if (entity instanceof IOverrideDefaultStatements) {
|
||||
result = ((IOverrideDefaultStatements) entity).overrideTriggers();
|
||||
if (result != null) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
public static List<ITriggerExternal> getExternalTriggers(EnumFacing side, TileEntity entity) {
|
||||
List<ITriggerExternal> result;
|
||||
|
||||
if (entity instanceof IOverrideDefaultStatements) {
|
||||
result = ((IOverrideDefaultStatements) entity).overrideTriggers();
|
||||
if (result != null) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
result = new LinkedList<ITriggerExternal>();
|
||||
|
||||
for (ITriggerProvider provider : triggerProviders) {
|
||||
Collection<ITriggerExternal> toAdd = provider.getExternalTriggers(side, entity);
|
||||
|
||||
if (toAdd != null) {
|
||||
for (ITriggerExternal t : toAdd) {
|
||||
if (!result.contains(t)) {
|
||||
result.add(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<IActionExternal> getExternalActions(EnumFacing side, TileEntity entity) {
|
||||
List<IActionExternal> result = new LinkedList<IActionExternal>();
|
||||
|
||||
if (entity instanceof IOverrideDefaultStatements) {
|
||||
result = ((IOverrideDefaultStatements) entity).overrideActions();
|
||||
if (result != null) {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
result = new LinkedList<IActionExternal>();
|
||||
|
||||
result = new LinkedList<ITriggerExternal>();
|
||||
|
||||
for (ITriggerProvider provider : triggerProviders) {
|
||||
Collection<ITriggerExternal> toAdd = provider.getExternalTriggers(side, entity);
|
||||
for (IActionProvider provider : actionProviders) {
|
||||
Collection<IActionExternal> toAdd = provider.getExternalActions(side, entity);
|
||||
|
||||
if (toAdd != null) {
|
||||
for (ITriggerExternal t : toAdd) {
|
||||
if (!result.contains(t)) {
|
||||
result.add(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (toAdd != null) {
|
||||
for (IActionExternal t : toAdd) {
|
||||
if (!result.contains(t)) {
|
||||
result.add(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<IActionExternal> getExternalActions(ForgeDirection side, TileEntity entity) {
|
||||
List<IActionExternal> result = new LinkedList<IActionExternal>();
|
||||
public static List<ITriggerInternal> getInternalTriggers(IStatementContainer container) {
|
||||
List<ITriggerInternal> result = new LinkedList<ITriggerInternal>();
|
||||
|
||||
if (entity instanceof IOverrideDefaultStatements) {
|
||||
result = ((IOverrideDefaultStatements) entity).overrideActions();
|
||||
if (result != null) {
|
||||
return result;
|
||||
} else {
|
||||
result = new LinkedList<IActionExternal>();
|
||||
}
|
||||
}
|
||||
|
||||
for (IActionProvider provider : actionProviders) {
|
||||
Collection<IActionExternal> toAdd = provider.getExternalActions(side, entity);
|
||||
for (ITriggerProvider provider : triggerProviders) {
|
||||
Collection<ITriggerInternal> toAdd = provider.getInternalTriggers(container);
|
||||
|
||||
if (toAdd != null) {
|
||||
for (IActionExternal t : toAdd) {
|
||||
if (!result.contains(t)) {
|
||||
result.add(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (toAdd != null) {
|
||||
for (ITriggerInternal t : toAdd) {
|
||||
if (!result.contains(t)) {
|
||||
result.add(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<ITriggerInternal> getInternalTriggers(IStatementContainer container) {
|
||||
List<ITriggerInternal> result = new LinkedList<ITriggerInternal>();
|
||||
public static List<IActionInternal> getInternalActions(IStatementContainer container) {
|
||||
List<IActionInternal> result = new LinkedList<IActionInternal>();
|
||||
|
||||
for (ITriggerProvider provider : triggerProviders) {
|
||||
Collection<ITriggerInternal> toAdd = provider.getInternalTriggers(container);
|
||||
for (IActionProvider provider : actionProviders) {
|
||||
Collection<IActionInternal> toAdd = provider.getInternalActions(container);
|
||||
|
||||
if (toAdd != null) {
|
||||
for (ITriggerInternal t : toAdd) {
|
||||
if (!result.contains(t)) {
|
||||
result.add(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (toAdd != null) {
|
||||
for (IActionInternal t : toAdd) {
|
||||
if (!result.contains(t)) {
|
||||
result.add(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<IActionInternal> getInternalActions(IStatementContainer container) {
|
||||
List<IActionInternal> result = new LinkedList<IActionInternal>();
|
||||
public static IStatementParameter createParameter(String kind) {
|
||||
return createParameter(parameters.get(kind));
|
||||
}
|
||||
|
||||
for (IActionProvider provider : actionProviders) {
|
||||
Collection<IActionInternal> toAdd = provider.getInternalActions(container);
|
||||
private static IStatementParameter createParameter(Class<? extends IStatementParameter> param) {
|
||||
try {
|
||||
return param.newInstance();
|
||||
} catch (InstantiationException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
} catch (Error error) {
|
||||
BCLog.logErrorAPI(error, IStatementParameter.class);
|
||||
throw error;
|
||||
}
|
||||
|
||||
if (toAdd != null) {
|
||||
for (IActionInternal t : toAdd) {
|
||||
if (!result.contains(t)) {
|
||||
result.add(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static IStatementParameter createParameter(String kind) {
|
||||
return createParameter(parameters.get(kind));
|
||||
}
|
||||
|
||||
private static IStatementParameter createParameter(Class<? extends IStatementParameter> param) {
|
||||
try {
|
||||
return param.newInstance();
|
||||
} catch (InstantiationException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generally, this function should be called by every mod implementing
|
||||
* the Statements API ***as a container*** (that is, adding its own gates)
|
||||
* on the client side from a given Item of choice.
|
||||
*/
|
||||
@SideOnly(Side.CLIENT)
|
||||
public static void registerIcons(IIconRegister register) {
|
||||
for (IStatement statement : statements.values()) {
|
||||
statement.registerIcons(register);
|
||||
}
|
||||
|
||||
for (Class<? extends IStatementParameter> parameter : parameters.values()) {
|
||||
createParameter(parameter).registerIcons(register);
|
||||
}
|
||||
}
|
||||
// /**
|
||||
// * Generally, this function should be called by every mod implementing
|
||||
// * the Statements API ***as a container*** (that is, adding its own gates)
|
||||
// * on the client side from a given Item of choice.
|
||||
// */
|
||||
// @SideOnly(Side.CLIENT)
|
||||
// public static void registerIcons(TextureAtlasSpriteRegister register) {
|
||||
// for (IStatement statement : statements.values()) {
|
||||
// statement.registerIcons(register);
|
||||
// }
|
||||
//
|
||||
// for (Class<? extends IStatementParameter> parameter : parameters.values()) {
|
||||
// createParameter(parameter).registerIcons(register);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
@@ -1,27 +1,23 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
public final class StatementMouseClick {
|
||||
private int button;
|
||||
private boolean shift;
|
||||
|
||||
public StatementMouseClick(int button, boolean shift) {
|
||||
this.button = button;
|
||||
this.shift = shift;
|
||||
}
|
||||
|
||||
public boolean isShift() {
|
||||
return shift;
|
||||
}
|
||||
|
||||
public int getButton() {
|
||||
return button;
|
||||
}
|
||||
private int button;
|
||||
private boolean shift;
|
||||
|
||||
public StatementMouseClick(int button, boolean shift) {
|
||||
this.button = button;
|
||||
this.shift = shift;
|
||||
}
|
||||
|
||||
public boolean isShift() {
|
||||
return shift;
|
||||
}
|
||||
|
||||
public int getButton() {
|
||||
return button;
|
||||
}
|
||||
}
|
||||
@@ -1,88 +1,83 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.statements;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.IIcon;
|
||||
|
||||
public class StatementParameterItemStack implements IStatementParameter {
|
||||
|
||||
protected ItemStack stack;
|
||||
|
||||
@Override
|
||||
public IIcon getIcon() {
|
||||
return null;
|
||||
}
|
||||
protected ItemStack stack;
|
||||
|
||||
@Override
|
||||
public ItemStack getItemStack() {
|
||||
return stack;
|
||||
}
|
||||
@Override
|
||||
public TextureAtlasSprite getIcon() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(IStatementContainer source, IStatement stmt, ItemStack stack, StatementMouseClick mouse) {
|
||||
if (stack != null) {
|
||||
this.stack = stack.copy();
|
||||
this.stack.stackSize = 1;
|
||||
} else {
|
||||
this.stack = null;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public ItemStack getItemStack() {
|
||||
return stack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound compound) {
|
||||
if (stack != null) {
|
||||
NBTTagCompound tagCompound = new NBTTagCompound();
|
||||
stack.writeToNBT(tagCompound);
|
||||
compound.setTag("stack", tagCompound);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onClick(IStatementContainer source, IStatement stmt, ItemStack stack, StatementMouseClick mouse) {
|
||||
if (stack != null) {
|
||||
this.stack = stack.copy();
|
||||
this.stack.stackSize = 1;
|
||||
} else {
|
||||
this.stack = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound compound) {
|
||||
stack = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("stack"));
|
||||
}
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound compound) {
|
||||
if (stack != null) {
|
||||
NBTTagCompound tagCompound = new NBTTagCompound();
|
||||
stack.writeToNBT(tagCompound);
|
||||
compound.setTag("stack", tagCompound);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object object) {
|
||||
if (object instanceof StatementParameterItemStack) {
|
||||
StatementParameterItemStack param = (StatementParameterItemStack) object;
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound compound) {
|
||||
stack = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("stack"));
|
||||
}
|
||||
|
||||
return ItemStack.areItemStacksEqual(stack, param.stack)
|
||||
&& ItemStack.areItemStackTagsEqual(stack, param.stack);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public boolean equals(Object object) {
|
||||
if (object instanceof StatementParameterItemStack) {
|
||||
StatementParameterItemStack param = (StatementParameterItemStack) object;
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
if (stack != null) {
|
||||
return stack.getDisplayName();
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
return ItemStack.areItemStacksEqual(stack, param.stack) && ItemStack.areItemStackTagsEqual(stack, param.stack);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUniqueTag() {
|
||||
return "buildcraft:stack";
|
||||
}
|
||||
@Override
|
||||
public String getDescription() {
|
||||
if (stack != null) {
|
||||
return stack.getDisplayName();
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerIcons(IIconRegister iconRegister) {
|
||||
|
||||
}
|
||||
@Override
|
||||
public String getUniqueTag() {
|
||||
return "buildcraft:stack";
|
||||
}
|
||||
|
||||
@Override
|
||||
public IStatementParameter rotateLeft() {
|
||||
return this;
|
||||
}
|
||||
// @Override
|
||||
// public void registerIcons(TextureAtlasSpriteRegister iconRegister) {
|
||||
//
|
||||
// }
|
||||
|
||||
@Override
|
||||
public IStatementParameter rotateLeft() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
Regular → Executable
+26
-30
@@ -1,36 +1,32 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public License 1.0, or MMPL. Please check the contents
|
||||
* of the license located in http://www.mod-buildcraft.com/MMPL-1.0.txt */
|
||||
package buildcraft.api.statements;
|
||||
|
||||
public class StatementSlot {
|
||||
public IStatement statement;
|
||||
public IStatementParameter[] parameters;
|
||||
public IStatement statement;
|
||||
public IStatementParameter[] parameters;
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null || !(o instanceof StatementSlot)) {
|
||||
return false;
|
||||
}
|
||||
StatementSlot s = (StatementSlot) o;
|
||||
if (s.statement != statement || parameters.length != s.parameters.length) {
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < parameters.length; i++) {
|
||||
IStatementParameter p1 = parameters[i];
|
||||
IStatementParameter p2 = s.parameters[i];
|
||||
if (p1 == null && p2 != null) {
|
||||
return false;
|
||||
}
|
||||
if (!(p1.equals(p2))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o == null || !(o instanceof StatementSlot)) {
|
||||
return false;
|
||||
}
|
||||
StatementSlot s = (StatementSlot) o;
|
||||
if (s.statement != statement || parameters.length != s.parameters.length) {
|
||||
return false;
|
||||
}
|
||||
for (int i = 0; i < parameters.length; i++) {
|
||||
IStatementParameter p1 = parameters[i];
|
||||
IStatementParameter p2 = s.parameters[i];
|
||||
if (p1 == null && p2 != null) {
|
||||
return false;
|
||||
}
|
||||
if (!(p1.equals(p2))) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+11
-13
@@ -1,19 +1,17 @@
|
||||
package buildcraft.api.statements.containers;
|
||||
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
public interface IRedstoneStatementContainer {
|
||||
/**
|
||||
* Get the redstone input from a given side.
|
||||
* @param side The side - use "UNKNOWN" for maximum input.
|
||||
* @return The redstone input, from 0 to 15.
|
||||
*/
|
||||
int getRedstoneInput(ForgeDirection side);
|
||||
/** Get the redstone input from a given side.
|
||||
*
|
||||
* @param side The side - use "UNKNOWN" for maximum input.
|
||||
* @return The redstone input, from 0 to 15. */
|
||||
int getRedstoneInput(EnumFacing side);
|
||||
|
||||
/**
|
||||
* Set the redstone input for a given side.
|
||||
* @param side The side - use "UNKNOWN" for all sides.
|
||||
* @return Whether the set was successful.
|
||||
*/
|
||||
boolean setRedstoneOutput(ForgeDirection side, int value);
|
||||
/** Set the redstone input for a given side.
|
||||
*
|
||||
* @param side The side - use "UNKNOWN" for all sides.
|
||||
* @return Whether the set was successful. */
|
||||
boolean setRedstoneOutput(EnumFacing side, int value);
|
||||
}
|
||||
@@ -1,12 +1,10 @@
|
||||
package buildcraft.api.statements.containers;
|
||||
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
import buildcraft.api.statements.IStatementContainer;
|
||||
|
||||
/**
|
||||
* Created by asie on 3/14/15.
|
||||
*/
|
||||
/** Created by asie on 3/14/15. */
|
||||
public interface ISidedStatementContainer extends IStatementContainer {
|
||||
ForgeDirection getSide();
|
||||
EnumFacing getSide();
|
||||
}
|
||||
@@ -1,12 +1,8 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. 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|statements")
|
||||
package buildcraft.api.statements;
|
||||
import cpw.mods.fml.common.API;
|
||||
|
||||
import net.minecraftforge.fml.common.API;
|
||||
@@ -0,0 +1,12 @@
|
||||
package buildcraft.api.transport;
|
||||
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public interface ICustomPipeConnection {
|
||||
/** @return How long the connecting pipe should extend for. Values less than -4/16 indicate that the pipe will not
|
||||
* connect at all, and will render as it it was not connected. */
|
||||
public float getExtension(World world, BlockPos pos, EnumFacing face, IBlockState state);
|
||||
}
|
||||
@@ -1,23 +1,18 @@
|
||||
package buildcraft.api.transport;
|
||||
|
||||
import net.minecraft.item.EnumDyeColor;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import buildcraft.api.core.EnumColor;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
public interface IInjectable {
|
||||
boolean canInjectItems(ForgeDirection from);
|
||||
boolean canInjectItems(EnumFacing from);
|
||||
|
||||
/**
|
||||
* Offers an ItemStack for 3addition to the pipe. Will be rejected if the
|
||||
* pipe doesn't accept items from that side.
|
||||
*
|
||||
* @param stack ItemStack offered for addition. Do not manipulate this!
|
||||
* @param doAdd If false no actual addition should take place. Implementors
|
||||
* should simulate.
|
||||
* @param from Orientation the ItemStack is offered from.
|
||||
* @param color The color of the item to be added to the pipe, or null for no color.
|
||||
* @return Amount of items used from the passed stack.
|
||||
*/
|
||||
int injectItem(ItemStack stack, boolean doAdd, ForgeDirection from, EnumColor color);
|
||||
/** Offers an ItemStack for 3addition to the pipe. Will be rejected if the pipe doesn't accept items from that side.
|
||||
*
|
||||
* @param stack ItemStack offered for addition. Do not manipulate this!
|
||||
* @param doAdd If false no actual addition should take place. Implementors should simulate.
|
||||
* @param from Orientation the ItemStack is offered from.
|
||||
* @param color The color of the item to be added to the pipe, or null for no color.
|
||||
* @return Amount of items used from the passed stack. */
|
||||
int injectItem(ItemStack stack, boolean doAdd, EnumFacing from, EnumDyeColor color);
|
||||
}
|
||||
@@ -1,16 +1,11 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public License 1.0, or MMPL. Please check the contents
|
||||
* of the license located in http://www.mod-buildcraft.com/MMPL-1.0.txt */
|
||||
package buildcraft.api.transport;
|
||||
|
||||
/**
|
||||
* To be implemented by the real item pipe in Transport mod, but leaves knowledge for classes that do not have direct dependency on transport.
|
||||
*/
|
||||
/** To be implemented by the real item pipe in Transport mod, but leaves knowledge for classes that do not have direct
|
||||
* dependency on transport. */
|
||||
public interface IItemPipe {
|
||||
|
||||
}
|
||||
@@ -1,25 +1,21 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.transport;
|
||||
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
import buildcraft.api.gates.IGate;
|
||||
|
||||
public interface IPipe {
|
||||
IPipeTile getTile();
|
||||
IPipeTile getTile();
|
||||
|
||||
IGate getGate(ForgeDirection side);
|
||||
|
||||
boolean hasGate(ForgeDirection side);
|
||||
|
||||
boolean isWired(PipeWire wire);
|
||||
|
||||
boolean isWireActive(PipeWire wire);
|
||||
IGate getGate(EnumFacing side);
|
||||
|
||||
boolean hasGate(EnumFacing side);
|
||||
|
||||
boolean isWired(PipeWire wire);
|
||||
|
||||
boolean isWireActive(PipeWire wire);
|
||||
}
|
||||
@@ -1,29 +1,24 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.transport;
|
||||
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
public interface IPipeConnection {
|
||||
|
||||
enum ConnectOverride {
|
||||
enum ConnectOverride {
|
||||
|
||||
CONNECT, DISCONNECT, DEFAULT
|
||||
}
|
||||
CONNECT,
|
||||
DISCONNECT,
|
||||
DEFAULT
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows you to override pipe connection logic.
|
||||
*
|
||||
* @param type
|
||||
* @param with
|
||||
* @return CONNECT to force a connection, DISCONNECT to force no connection,
|
||||
* and DEFAULT to let the pipe decide.
|
||||
*/
|
||||
ConnectOverride overridePipeConnection(IPipeTile.PipeType type, ForgeDirection with);
|
||||
/** Allows you to override pipe connection logic.
|
||||
*
|
||||
* @param type
|
||||
* @param with
|
||||
* @return CONNECT to force a connection, DISCONNECT to force no connection, and DEFAULT to let the pipe decide. */
|
||||
ConnectOverride overridePipeConnection(IPipeTile.PipeType type, EnumFacing with);
|
||||
}
|
||||
@@ -1,62 +1,51 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.transport;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import buildcraft.api.core.EnumColor;
|
||||
import buildcraft.api.transport.pluggable.PipePluggable;
|
||||
|
||||
public interface IPipeTile extends IInjectable {
|
||||
enum PipeType {
|
||||
ITEM, FLUID, POWER, STRUCTURE
|
||||
}
|
||||
enum PipeType {
|
||||
ITEM,
|
||||
FLUID,
|
||||
POWER,
|
||||
STRUCTURE
|
||||
}
|
||||
|
||||
PipeType getPipeType();
|
||||
PipeType getPipeType();
|
||||
|
||||
World getWorld();
|
||||
World getWorldBC();
|
||||
|
||||
int x();
|
||||
/** True if the pipe is connected to the block/pipe in the specific direction
|
||||
*
|
||||
* @param with
|
||||
* @return true if connect */
|
||||
boolean isPipeConnected(EnumFacing with);
|
||||
|
||||
int y();
|
||||
Block getNeighborBlock(EnumFacing dir);
|
||||
|
||||
int z();
|
||||
TileEntity getNeighborTile(EnumFacing dir);
|
||||
|
||||
/**
|
||||
* True if the pipe is connected to the block/pipe in the specific direction
|
||||
*
|
||||
* @param with
|
||||
* @return true if connect
|
||||
*/
|
||||
boolean isPipeConnected(ForgeDirection with);
|
||||
IPipe getNeighborPipe(EnumFacing dir);
|
||||
|
||||
Block getNeighborBlock(ForgeDirection dir);
|
||||
TileEntity getNeighborTile(ForgeDirection dir);
|
||||
IPipe getNeighborPipe(ForgeDirection dir);
|
||||
|
||||
IPipe getPipe();
|
||||
int getPipeColor();
|
||||
IPipe getPipe();
|
||||
|
||||
PipePluggable getPipePluggable(ForgeDirection direction); // Now in IPluggableProvider
|
||||
boolean hasPipePluggable(ForgeDirection direction); // Now in IPluggableProvider
|
||||
boolean hasBlockingPluggable(ForgeDirection direction);
|
||||
int getPipeColor();
|
||||
|
||||
void scheduleNeighborChange();
|
||||
void scheduleRenderUpdate();
|
||||
PipePluggable getPipePluggable(EnumFacing direction); // Now in IPluggableProvider
|
||||
|
||||
// For compatibility with BC 6.2.x and below
|
||||
int injectItem(ItemStack stack, boolean doAdd, ForgeDirection from, EnumColor color);
|
||||
boolean hasPipePluggable(EnumFacing direction); // Now in IPluggableProvider
|
||||
|
||||
@Deprecated // Now in IInjectable
|
||||
int injectItem(ItemStack stack, boolean doAdd, ForgeDirection from);
|
||||
boolean hasBlockingPluggable(EnumFacing direction);
|
||||
|
||||
void scheduleNeighborChange();
|
||||
|
||||
void scheduleRenderUpdate();
|
||||
}
|
||||
@@ -1,17 +1,14 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.transport;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
public interface IStripesActivator {
|
||||
void sendItem(ItemStack itemStack, ForgeDirection direction);
|
||||
void dropItem(ItemStack itemStack, ForgeDirection direction);
|
||||
void sendItem(ItemStack itemStack, EnumFacing direction);
|
||||
|
||||
void dropItem(ItemStack itemStack, EnumFacing direction);
|
||||
}
|
||||
@@ -1,28 +1,24 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.transport;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public interface IStripesHandler {
|
||||
enum StripesHandlerType {
|
||||
ITEM_USE,
|
||||
BLOCK_BREAK
|
||||
}
|
||||
|
||||
StripesHandlerType getType();
|
||||
|
||||
boolean shouldHandle(ItemStack stack);
|
||||
|
||||
boolean handle(World world, int x, int y, int z, ForgeDirection direction,
|
||||
ItemStack stack, EntityPlayer player, IStripesActivator activator);
|
||||
enum StripesHandlerType {
|
||||
ITEM_USE,
|
||||
BLOCK_BREAK
|
||||
}
|
||||
|
||||
StripesHandlerType getType();
|
||||
|
||||
boolean shouldHandle(ItemStack stack);
|
||||
|
||||
boolean handle(World world, BlockPos pos, EnumFacing direction, ItemStack stack, EntityPlayer player, IStripesActivator activator);
|
||||
}
|
||||
@@ -1,12 +1,9 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.transport;
|
||||
|
||||
public interface IStripesPipe extends IPipe, IStripesActivator {
|
||||
}
|
||||
import cofh.api.energy.IEnergyHandler;
|
||||
|
||||
public interface IStripesPipe extends IPipe, IStripesActivator, IEnergyHandler {}
|
||||
@@ -0,0 +1,48 @@
|
||||
package buildcraft.api.transport;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/** Use this class to register blocks with custom block sizes so that pipes can connect to them properly. Note that you
|
||||
* do not need to register a custom pipe connection if your block implements ICustomPipeConnection. The registered
|
||||
* version does not override your own implementation. */
|
||||
public final class PipeConnectionAPI {
|
||||
private static final Map<Block, ICustomPipeConnection> connections = Maps.newHashMap();
|
||||
private static final ICustomPipeConnection NOTHING = new ICustomPipeConnection() {
|
||||
@Override
|
||||
public float getExtension(World world, BlockPos pos, EnumFacing face, IBlockState state) {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
/** Register a block with a custom connection. Useful if you don't own the block class or are adding it for some-one
|
||||
*
|
||||
* @param block The block instance
|
||||
* @param connection The connection instance */
|
||||
public static void registerConnection(Block block, ICustomPipeConnection connection) {
|
||||
connections.put(block, connection);
|
||||
}
|
||||
|
||||
public static void registerConnectionAsNothing(Block block) {
|
||||
connections.put(block, NOTHING);
|
||||
}
|
||||
|
||||
/** Gets the current custom connection that the block uses. Will be null if nothing has been set. */
|
||||
public static ICustomPipeConnection getCustomConnection(Block block) {
|
||||
if (block instanceof ICustomPipeConnection) {
|
||||
return (ICustomPipeConnection) block;
|
||||
}
|
||||
ICustomPipeConnection connection = connections.get(block);
|
||||
if (connection != null) {
|
||||
return connection;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.transport;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -15,64 +11,61 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import buildcraft.api.transport.pluggable.PipePluggable;
|
||||
|
||||
public abstract class PipeManager {
|
||||
|
||||
public static List<IStripesHandler> stripesHandlers = new ArrayList<IStripesHandler>();
|
||||
public static ArrayList<Class<? extends PipePluggable>> pipePluggables = new ArrayList<Class<? extends PipePluggable>>();
|
||||
private static Map<String, Class<? extends PipePluggable>> pipePluggableNames =
|
||||
new HashMap<String, Class<? extends PipePluggable>>();
|
||||
private static Map<Class<? extends PipePluggable>, String> pipePluggableByNames =
|
||||
new HashMap<Class<? extends PipePluggable>, String>();
|
||||
private static Map<IStripesHandler, Integer> stripesHandlerPriorities =
|
||||
new HashMap<IStripesHandler, Integer>();
|
||||
public static List<IStripesHandler> stripesHandlers = new ArrayList<IStripesHandler>();
|
||||
public static ArrayList<Class<? extends PipePluggable>> pipePluggables = new ArrayList<Class<? extends PipePluggable>>();
|
||||
private static Map<String, Class<? extends PipePluggable>> pipePluggableNames = new HashMap<String, Class<? extends PipePluggable>>();
|
||||
private static Map<Class<? extends PipePluggable>, String> pipePluggableByNames = new HashMap<Class<? extends PipePluggable>, String>();
|
||||
private static Map<IStripesHandler, Integer> stripesHandlerPriorities = new HashMap<IStripesHandler, Integer>();
|
||||
|
||||
@Deprecated
|
||||
public static boolean canExtractItems(Object extractor, World world, int i, int j, int k) {
|
||||
return true;
|
||||
}
|
||||
@Deprecated
|
||||
public static boolean canExtractItems(Object extractor, World world, BlockPos pos) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static boolean canExtractFluids(Object extractor, World world, int i, int j, int k) {
|
||||
return true;
|
||||
}
|
||||
@Deprecated
|
||||
public static boolean canExtractFluids(Object extractor, World world, BlockPos pos) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static void registerStripesHandler(IStripesHandler handler) {
|
||||
registerStripesHandler(handler, 0);
|
||||
}
|
||||
@Deprecated
|
||||
public static void registerStripesHandler(IStripesHandler handler) {
|
||||
registerStripesHandler(handler, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a Stripes Pipe handler.
|
||||
* @param handler The handler.
|
||||
* @param priority The priority - 0 is normal, higher numbers have higher priority.
|
||||
*/
|
||||
public static void registerStripesHandler(IStripesHandler handler, int priority) {
|
||||
stripesHandlers.add(handler);
|
||||
stripesHandlerPriorities.put(handler, priority);
|
||||
/** Register a Stripes Pipe handler.
|
||||
*
|
||||
* @param handler The handler.
|
||||
* @param priority The priority - 0 is normal, higher numbers have higher priority. */
|
||||
public static void registerStripesHandler(IStripesHandler handler, int priority) {
|
||||
stripesHandlers.add(handler);
|
||||
stripesHandlerPriorities.put(handler, priority);
|
||||
|
||||
Collections.sort(stripesHandlers, new Comparator<IStripesHandler>() {
|
||||
@Override
|
||||
public int compare(IStripesHandler o1, IStripesHandler o2) {
|
||||
return stripesHandlerPriorities.get(o2) - stripesHandlerPriorities.get(o1);
|
||||
}
|
||||
});
|
||||
}
|
||||
Collections.sort(stripesHandlers, new Comparator<IStripesHandler>() {
|
||||
@Override
|
||||
public int compare(IStripesHandler o1, IStripesHandler o2) {
|
||||
return stripesHandlerPriorities.get(o2) - stripesHandlerPriorities.get(o1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static void registerPipePluggable(Class<? extends PipePluggable> pluggable, String name) {
|
||||
pipePluggables.add(pluggable);
|
||||
pipePluggableNames.put(name, pluggable);
|
||||
pipePluggableByNames.put(pluggable, name);
|
||||
}
|
||||
public static void registerPipePluggable(Class<? extends PipePluggable> pluggable, String name) {
|
||||
pipePluggables.add(pluggable);
|
||||
pipePluggableNames.put(name, pluggable);
|
||||
pipePluggableByNames.put(pluggable, name);
|
||||
}
|
||||
|
||||
public static Class<?> getPluggableByName(String pluggableName) {
|
||||
return pipePluggableNames.get(pluggableName);
|
||||
}
|
||||
public static Class<?> getPluggableByName(String pluggableName) {
|
||||
return pipePluggableNames.get(pluggableName);
|
||||
}
|
||||
|
||||
public static String getPluggableName(Class<? extends PipePluggable> aClass) {
|
||||
return pipePluggableByNames.get(aClass);
|
||||
}
|
||||
public static String getPluggableName(Class<? extends PipePluggable> aClass) {
|
||||
return pipePluggableByNames.get(aClass);
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.transport;
|
||||
|
||||
import java.util.Locale;
|
||||
@@ -15,60 +11,63 @@ import net.minecraft.item.ItemStack;
|
||||
|
||||
public enum PipeWire {
|
||||
|
||||
RED, BLUE, GREEN, YELLOW;
|
||||
public static Item item;
|
||||
public static final PipeWire[] VALUES = values();
|
||||
RED,
|
||||
BLUE,
|
||||
GREEN,
|
||||
YELLOW;
|
||||
public static Item item;
|
||||
public static final PipeWire[] VALUES = values();
|
||||
|
||||
public PipeWire reverse() {
|
||||
switch (this) {
|
||||
case RED:
|
||||
return YELLOW;
|
||||
case BLUE:
|
||||
return GREEN;
|
||||
case GREEN:
|
||||
return BLUE;
|
||||
default:
|
||||
return RED;
|
||||
}
|
||||
}
|
||||
public PipeWire reverse() {
|
||||
switch (this) {
|
||||
case RED:
|
||||
return YELLOW;
|
||||
case BLUE:
|
||||
return GREEN;
|
||||
case GREEN:
|
||||
return BLUE;
|
||||
default:
|
||||
return RED;
|
||||
}
|
||||
}
|
||||
|
||||
public String getTag() {
|
||||
return name().toLowerCase(Locale.ENGLISH) + "PipeWire";
|
||||
}
|
||||
public String getTag() {
|
||||
return name().toLowerCase(Locale.ENGLISH) + "PipeWire";
|
||||
}
|
||||
|
||||
public String getColor() {
|
||||
String name = this.toString().toLowerCase(Locale.ENGLISH);
|
||||
char first = Character.toUpperCase(name.charAt(0));
|
||||
return first + name.substring(1);
|
||||
}
|
||||
public String getColor() {
|
||||
String name = this.toString().toLowerCase(Locale.ENGLISH);
|
||||
char first = Character.toUpperCase(name.charAt(0));
|
||||
return first + name.substring(1);
|
||||
}
|
||||
|
||||
public ItemStack getStack() {
|
||||
return getStack(1);
|
||||
}
|
||||
public ItemStack getStack() {
|
||||
return getStack(1);
|
||||
}
|
||||
|
||||
public ItemStack getStack(int qty) {
|
||||
if (item == null) {
|
||||
return null;
|
||||
} else {
|
||||
return new ItemStack(item, qty, ordinal());
|
||||
}
|
||||
}
|
||||
public ItemStack getStack(int qty) {
|
||||
if (item == null) {
|
||||
return null;
|
||||
} else {
|
||||
return new ItemStack(item, qty, ordinal());
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isPipeWire(ItemStack stack) {
|
||||
if (stack == null) {
|
||||
return false;
|
||||
} else if (stack.getItem() != item) {
|
||||
return false;
|
||||
} else {
|
||||
return stack.getItemDamage() == ordinal();
|
||||
}
|
||||
}
|
||||
public boolean isPipeWire(ItemStack stack) {
|
||||
if (stack == null) {
|
||||
return false;
|
||||
} else if (stack.getItem() != item) {
|
||||
return false;
|
||||
} else {
|
||||
return stack.getItemDamage() == ordinal();
|
||||
}
|
||||
}
|
||||
|
||||
public static PipeWire fromOrdinal(int ordinal) {
|
||||
if (ordinal < 0 || ordinal >= VALUES.length) {
|
||||
return RED;
|
||||
} else {
|
||||
return VALUES[ordinal];
|
||||
}
|
||||
}
|
||||
public static PipeWire fromOrdinal(int ordinal) {
|
||||
if (ordinal < 0 || ordinal >= VALUES.length) {
|
||||
return RED;
|
||||
} else {
|
||||
return VALUES[ordinal];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,8 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
@API(apiVersion = "4.1", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|transport")
|
||||
package buildcraft.api.transport;
|
||||
import cpw.mods.fml.common.API;
|
||||
|
||||
import net.minecraftforge.fml.common.API;
|
||||
@@ -0,0 +1,7 @@
|
||||
package buildcraft.api.transport.pluggable;
|
||||
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
public interface IConnectionMatrix {
|
||||
boolean isConnected(EnumFacing face);
|
||||
}
|
||||
@@ -1,13 +1,11 @@
|
||||
package buildcraft.api.transport.pluggable;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
|
||||
public interface IFacadePluggable {
|
||||
Block getCurrentBlock();
|
||||
IBlockState getCurrentState();
|
||||
|
||||
int getCurrentMetadata();
|
||||
boolean isTransparent();
|
||||
|
||||
boolean isTransparent();
|
||||
|
||||
boolean isHollow();
|
||||
boolean isHollow();
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package buildcraft.api.transport.pluggable;
|
||||
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
import buildcraft.api.transport.IPipe;
|
||||
|
||||
public interface IPipePluggableDynamicRenderer {
|
||||
void renderPluggable(IPipe pipe, ForgeDirection side, PipePluggable pipePluggable, double x, double y, double z);
|
||||
void renderDynamicPluggable(IPipe pipe, EnumFacing side, PipePluggable pipePluggable, double x, double y, double z);
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
package buildcraft.api.transport.pluggable;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
import buildcraft.api.transport.IPipe;
|
||||
|
||||
public interface IPipePluggableItem {
|
||||
PipePluggable createPipePluggable(IPipe pipe, ForgeDirection side, ItemStack stack);
|
||||
PipePluggable createPipePluggable(IPipe pipe, EnumFacing side, ItemStack stack);
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
package buildcraft.api.transport.pluggable;
|
||||
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import buildcraft.api.core.render.ITextureStates;
|
||||
import buildcraft.api.transport.IPipe;
|
||||
|
||||
public interface IPipePluggableRenderer {
|
||||
void renderPluggable(RenderBlocks renderblocks, IPipe pipe, ForgeDirection side,
|
||||
PipePluggable pipePluggable, ITextureStates blockStateMachine,
|
||||
int renderPass, int x, int y, int z);
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package buildcraft.api.transport.pluggable;
|
||||
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
public interface IPipePluggableState {
|
||||
IConnectionMatrix getPluggableConnections();
|
||||
|
||||
PipePluggable getPluggable(EnumFacing face);
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package buildcraft.api.transport.pluggable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
import buildcraft.api.transport.IPipe;
|
||||
|
||||
public interface IPipePluggableStaticRenderer {
|
||||
List<BakedQuad> bakeCutout(IPipeRenderState render, IPipePluggableState pluggableState, IPipe pipe, PipePluggable pluggable, EnumFacing face);
|
||||
|
||||
/** Use this if you need to render in the translucent pass. */
|
||||
public interface Translucent extends IPipePluggableStaticRenderer {
|
||||
/** For performance return a list that is as small as possible */
|
||||
List<BakedQuad> bakeTranslucent(IPipeRenderState render, IPipePluggableState pluggableState, IPipe pipe, PipePluggable pluggable,
|
||||
EnumFacing face);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package buildcraft.api.transport.pluggable;
|
||||
|
||||
public interface IPipeRenderState {
|
||||
IConnectionMatrix getPipeConnectionMatrix();
|
||||
}
|
||||
Regular → Executable
+34
-41
@@ -1,67 +1,60 @@
|
||||
/**
|
||||
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
|
||||
* http://www.mod-buildcraft.com
|
||||
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
|
||||
*
|
||||
* The BuildCraft API is distributed under the terms of the MIT License.
|
||||
* Please check the contents of the license, which should be located
|
||||
* as "LICENSE.API" in the BuildCraft source code distribution.
|
||||
*/
|
||||
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
|
||||
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
|
||||
package buildcraft.api.transport.pluggable;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
import buildcraft.api.core.INBTStoreable;
|
||||
import buildcraft.api.core.ISerializable;
|
||||
import buildcraft.api.transport.IPipeTile;
|
||||
|
||||
/**
|
||||
* An IPipePluggable MUST have an empty constructor for client-side
|
||||
* rendering!
|
||||
*/
|
||||
/** An IPipePluggable MUST have an empty constructor for client-side rendering! */
|
||||
public abstract class PipePluggable implements INBTStoreable, ISerializable {
|
||||
public abstract ItemStack[] getDropItems(IPipeTile pipe);
|
||||
public abstract ItemStack[] getDropItems(IPipeTile pipe);
|
||||
|
||||
public void update(IPipeTile pipe, ForgeDirection direction) {
|
||||
public void update(IPipeTile pipe, EnumFacing direction) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void onAttachedPipe(IPipeTile pipe, ForgeDirection direction) {
|
||||
validate(pipe, direction);
|
||||
}
|
||||
public void onAttachedPipe(IPipeTile pipe, EnumFacing direction) {
|
||||
validate(pipe, direction);
|
||||
}
|
||||
|
||||
public void onDetachedPipe(IPipeTile pipe, ForgeDirection direction) {
|
||||
invalidate();
|
||||
}
|
||||
public void onDetachedPipe(IPipeTile pipe, EnumFacing direction) {
|
||||
invalidate();
|
||||
}
|
||||
|
||||
public abstract boolean isBlocking(IPipeTile pipe, ForgeDirection direction);
|
||||
public abstract boolean isBlocking(IPipeTile pipe, EnumFacing direction);
|
||||
|
||||
public void invalidate() {
|
||||
public void invalidate() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void validate(IPipeTile pipe, ForgeDirection direction) {
|
||||
public void validate(IPipeTile pipe, EnumFacing direction) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isSolidOnSide(IPipeTile pipe, ForgeDirection direction) {
|
||||
return false;
|
||||
}
|
||||
public boolean isSolidOnSide(IPipeTile pipe, EnumFacing direction) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public abstract AxisAlignedBB getBoundingBox(ForgeDirection side);
|
||||
public abstract AxisAlignedBB getBoundingBox(EnumFacing side);
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public abstract IPipePluggableRenderer getRenderer();
|
||||
@SideOnly(Side.CLIENT)
|
||||
public abstract IPipePluggableStaticRenderer getRenderer();
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IPipePluggableDynamicRenderer getDynamicRenderer() {
|
||||
return null;
|
||||
}
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IPipePluggableDynamicRenderer getDynamicRenderer() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean requiresRenderUpdate(PipePluggable old) {
|
||||
return true;
|
||||
}
|
||||
public boolean requiresRenderUpdate(PipePluggable old) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package cofh.api.energy;
|
||||
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
/**
|
||||
* Implement this interface on TileEntities which should connect to energy transportation blocks. This is intended for blocks which generate energy but do not
|
||||
* accept it; otherwise just use IEnergyHandler.
|
||||
*
|
||||
* <p>
|
||||
* Note that {@link IEnergyHandler} is an extension of this.
|
||||
*
|
||||
* @author King Lemming
|
||||
@@ -16,6 +16,6 @@ public interface IEnergyConnection {
|
||||
/**
|
||||
* Returns TRUE if the TileEntity can connect on a given side.
|
||||
*/
|
||||
boolean canConnectEnergy(ForgeDirection from);
|
||||
boolean canConnectEnergy(EnumFacing facing);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package cofh.api.energy;
|
||||
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
|
||||
/**
|
||||
* Implement this interface on Tile Entities which should handle energy, generally storing it in one or more internal {@link IEnergyStorage} objects.
|
||||
* <p>
|
||||
* A reference implementation is provided {@link TileEnergyHandler}.
|
||||
*
|
||||
* @author King Lemming
|
||||
*
|
||||
*/
|
||||
public interface IEnergyHandler extends IEnergyProvider, IEnergyReceiver {
|
||||
|
||||
// merely a convenience interface (remove these methods in 1.8; provided here for back-compat via compiler doing things)
|
||||
|
||||
/**
|
||||
* Add energy to an IEnergyReceiver, internal distribution is left entirely to the IEnergyReceiver.
|
||||
*
|
||||
* @param from
|
||||
* Orientation the energy is received from.
|
||||
* @param maxReceive
|
||||
* Maximum amount of energy to receive.
|
||||
* @param simulate
|
||||
* If TRUE, the charge will only be simulated.
|
||||
* @return Amount of energy that was (or would have been, if simulated) received.
|
||||
*/
|
||||
@Override
|
||||
int receiveEnergy(EnumFacing facing, int maxReceive, boolean simulate);
|
||||
|
||||
/**
|
||||
* Remove energy from an IEnergyProvider, internal distribution is left entirely to the IEnergyProvider.
|
||||
*
|
||||
* @param from
|
||||
* Orientation the energy is extracted from.
|
||||
* @param maxExtract
|
||||
* Maximum amount of energy to extract.
|
||||
* @param simulate
|
||||
* If TRUE, the extraction will only be simulated.
|
||||
* @return Amount of energy that was (or would have been, if simulated) extracted.
|
||||
*/
|
||||
@Override
|
||||
int extractEnergy(EnumFacing facing, int maxExtract, boolean simulate);
|
||||
|
||||
|
||||
/**
|
||||
* Returns the amount of energy currently stored.
|
||||
*/
|
||||
@Override
|
||||
int getEnergyStored(EnumFacing facing);
|
||||
|
||||
/**
|
||||
* Returns the maximum amount of energy that can be stored.
|
||||
*/
|
||||
@Override
|
||||
int getMaxEnergyStored(EnumFacing facing);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package cofh.api.energy;
|
||||
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
|
||||
/**
|
||||
* Implement this interface on Tile Entities which should provide energy, generally storing it in one or more internal {@link IEnergyStorage} objects.
|
||||
* <p>
|
||||
* A reference implementation is provided {@link TileEnergyHandler}.
|
||||
*
|
||||
* @author King Lemming
|
||||
*
|
||||
*/
|
||||
public interface IEnergyProvider extends IEnergyConnection {
|
||||
|
||||
/**
|
||||
* Remove energy from an IEnergyProvider, internal distribution is left entirely to the IEnergyProvider.
|
||||
*
|
||||
* @param from
|
||||
* Orientation the energy is extracted from.
|
||||
* @param maxExtract
|
||||
* Maximum amount of energy to extract.
|
||||
* @param simulate
|
||||
* If TRUE, the extraction will only be simulated.
|
||||
* @return Amount of energy that was (or would have been, if simulated) extracted.
|
||||
*/
|
||||
int extractEnergy(EnumFacing facing, int maxExtract, boolean simulate);
|
||||
|
||||
/**
|
||||
* Returns the amount of energy currently stored.
|
||||
*/
|
||||
int getEnergyStored(EnumFacing facing);
|
||||
|
||||
/**
|
||||
* Returns the maximum amount of energy that can be stored.
|
||||
*/
|
||||
int getMaxEnergyStored(EnumFacing facing);
|
||||
|
||||
}
|
||||
@@ -1,38 +1,39 @@
|
||||
package cofh.api.energy;
|
||||
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
/**
|
||||
* Implement this interface on Tile Entities which should receive energy, generally storing it in one or more internal {@link IEnergyStorage} objects.
|
||||
* <p>
|
||||
* A reference implementation is provided {@link TileEnergyHandler}.
|
||||
*
|
||||
* @author King Lemming
|
||||
*
|
||||
*/
|
||||
public interface IEnergyReceiver extends IEnergyConnection {
|
||||
|
||||
/**
|
||||
* Add energy to an IEnergyReceiver, internal distribution is left entirely to the IEnergyReceiver.
|
||||
*
|
||||
* @param from
|
||||
* Orientation the energy is received from.
|
||||
* @param maxReceive
|
||||
* Maximum amount of energy to receive.
|
||||
* @param simulate
|
||||
* If TRUE, the charge will only be simulated.
|
||||
* @return Amount of energy that was (or would have been, if simulated) received.
|
||||
*/
|
||||
int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate);
|
||||
|
||||
/**
|
||||
* Returns the amount of energy currently stored.
|
||||
*/
|
||||
int getEnergyStored(ForgeDirection from);
|
||||
|
||||
/**
|
||||
* Returns the maximum amount of energy that can be stored.
|
||||
*/
|
||||
int getMaxEnergyStored(ForgeDirection from);
|
||||
|
||||
}
|
||||
package cofh.api.energy;
|
||||
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
|
||||
/**
|
||||
* Implement this interface on Tile Entities which should receive energy, generally storing it in one or more internal {@link IEnergyStorage} objects.
|
||||
* <p>
|
||||
* A reference implementation is provided {@link TileEnergyHandler}.
|
||||
*
|
||||
* @author King Lemming
|
||||
*
|
||||
*/
|
||||
public interface IEnergyReceiver extends IEnergyConnection {
|
||||
|
||||
/**
|
||||
* Add energy to an IEnergyReceiver, internal distribution is left entirely to the IEnergyReceiver.
|
||||
*
|
||||
* @param from
|
||||
* Orientation the energy is received from.
|
||||
* @param maxReceive
|
||||
* Maximum amount of energy to receive.
|
||||
* @param simulate
|
||||
* If TRUE, the charge will only be simulated.
|
||||
* @return Amount of energy that was (or would have been, if simulated) received.
|
||||
*/
|
||||
int receiveEnergy(EnumFacing facing, int maxReceive, boolean simulate);
|
||||
|
||||
/**
|
||||
* Returns the amount of energy currently stored.
|
||||
*/
|
||||
int getEnergyStored(EnumFacing facing);
|
||||
|
||||
/**
|
||||
* Returns the maximum amount of energy that can be stored.
|
||||
*/
|
||||
int getMaxEnergyStored(EnumFacing facing);
|
||||
|
||||
}
|
||||
@@ -1,19 +1,20 @@
|
||||
package thaumcraft.api.crafting;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Azanor
|
||||
*
|
||||
* Blocks that implement this interface act as infusion crafting stabilisers like candles and skulls
|
||||
*
|
||||
*/
|
||||
public interface IInfusionStabiliser {
|
||||
|
||||
/**
|
||||
* returns true if the block can stabilise things
|
||||
*/
|
||||
public boolean canStabaliseInfusion(World world, int x, int y, int z);
|
||||
|
||||
}
|
||||
package thaumcraft.api.crafting;
|
||||
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Azanor
|
||||
*
|
||||
* Blocks that implement this interface act as infusion crafting stabilisers like candles and skulls
|
||||
*
|
||||
*/
|
||||
public interface IInfusionStabiliser {
|
||||
|
||||
/**
|
||||
* returns true if the block can stabilise things
|
||||
*/
|
||||
public boolean canStabaliseInfusion(World world, BlockPos pos);
|
||||
|
||||
}
|
||||
+22
-22
@@ -1,22 +1,22 @@
|
||||
package thaumcraft.api;
|
||||
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Azanor
|
||||
*
|
||||
* Equipped head slot items that extend this class will be able to perform most functions that
|
||||
* goggles of revealing can apart from view nodes which is handled by IRevealer.
|
||||
*
|
||||
*/
|
||||
|
||||
public interface IGoggles {
|
||||
|
||||
/*
|
||||
* If this method returns true things like block essentia contents will be shown.
|
||||
*/
|
||||
public boolean showIngamePopups(ItemStack itemstack, EntityLivingBase player);
|
||||
|
||||
}
|
||||
package thaumcraft.api.items;
|
||||
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Azanor
|
||||
*
|
||||
* Equipped or held items that extend this class will be able to perform most functions that
|
||||
* goggles of revealing can apart from view nodes which is handled by IRevealer.
|
||||
*
|
||||
*/
|
||||
|
||||
public interface IGoggles {
|
||||
|
||||
/*
|
||||
* If this method returns true things like block essentia contents will be shown.
|
||||
*/
|
||||
public boolean showIngamePopups(ItemStack itemstack, EntityLivingBase player);
|
||||
|
||||
}
|
||||
+22
-22
@@ -1,22 +1,22 @@
|
||||
package thaumcraft.api.nodes;
|
||||
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Azanor
|
||||
*
|
||||
* Equipped head slot items that extend this class will make nodes visible in world.
|
||||
*
|
||||
*/
|
||||
|
||||
public interface IRevealer {
|
||||
|
||||
/*
|
||||
* If this method returns true the nodes will be visible.
|
||||
*/
|
||||
public boolean showNodes(ItemStack itemstack, EntityLivingBase player);
|
||||
|
||||
|
||||
}
|
||||
package thaumcraft.api.items;
|
||||
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Azanor
|
||||
*
|
||||
* Equipped or held items that extend this class will make nodes or related objects visible in world.
|
||||
*
|
||||
*/
|
||||
|
||||
public interface IRevealer {
|
||||
|
||||
/*
|
||||
* If this method returns true the nodes will be visible.
|
||||
*/
|
||||
public boolean showNodes(ItemStack itemstack, EntityLivingBase player);
|
||||
|
||||
|
||||
}
|
||||
+22
-22
@@ -1,22 +1,22 @@
|
||||
package thaumcraft.api;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Azanor
|
||||
*
|
||||
* Armor or bauble slot items that implement this interface can provide runic shielding.
|
||||
* Recharging, hardening, etc. is handled internally by thaumcraft.
|
||||
*
|
||||
*/
|
||||
|
||||
public interface IRunicArmor {
|
||||
|
||||
/**
|
||||
* returns how much charge this item can provide. This is the base shielding value - any hardening is stored and calculated internally.
|
||||
*/
|
||||
public int getRunicCharge(ItemStack itemstack);
|
||||
|
||||
|
||||
}
|
||||
package thaumcraft.api.items;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Azanor
|
||||
*
|
||||
* Armor or bauble slot items that implement this interface can provide runic shielding.
|
||||
* Recharging, hardening, etc. is handled internally by thaumcraft.
|
||||
*
|
||||
*/
|
||||
|
||||
public interface IRunicArmor {
|
||||
|
||||
/**
|
||||
* returns how much charge this item can provide. This is the base shielding value - any hardening is stored and calculated internally.
|
||||
*/
|
||||
public int getRunicCharge(ItemStack itemstack);
|
||||
|
||||
|
||||
}
|
||||
+14
-14
@@ -1,14 +1,14 @@
|
||||
package thaumcraft.api;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Azanor
|
||||
*
|
||||
* Interface used to identify scribing tool items used in research table
|
||||
*
|
||||
*/
|
||||
|
||||
public interface IScribeTools {
|
||||
|
||||
}
|
||||
package thaumcraft.api.items;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Azanor
|
||||
*
|
||||
* Interface used to identify scribing tool items used in research table
|
||||
*
|
||||
*/
|
||||
|
||||
public interface IScribeTools {
|
||||
|
||||
}
|
||||
@@ -18,9 +18,12 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.*;
|
||||
import net.minecraft.block.properties.PropertyEnum;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.EnumDyeColor;
|
||||
import net.minecraft.item.EnumRarity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.Item.ToolMaterial;
|
||||
@@ -55,7 +58,7 @@ import vazkii.botania.api.wiki.WikiHooks;
|
||||
import com.google.common.collect.BiMap;
|
||||
import com.google.common.collect.HashBiMap;
|
||||
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
|
||||
public final class BotaniaAPI {
|
||||
|
||||
@@ -83,20 +86,22 @@ public final class BotaniaAPI {
|
||||
public static Map<String, Integer> oreWeights = new HashMap<String, Integer>();
|
||||
public static Map<String, Integer> oreWeightsNether = new HashMap<String, Integer>();
|
||||
public static Map<Item, Block> seeds = new HashMap();
|
||||
|
||||
public static Set<Item> looniumBlacklist = new LinkedHashSet<Item>();
|
||||
public static Set<Block> paintableBlocks = new LinkedHashSet<Block>();
|
||||
public static Map<Block, PropertyEnum<EnumDyeColor>> paintableBlocks = new LinkedHashMap<Block, PropertyEnum<EnumDyeColor>>();
|
||||
public static Set<String> magnetBlacklist = new LinkedHashSet<String>();
|
||||
|
||||
public static ArmorMaterial manasteelArmorMaterial = EnumHelper.addArmorMaterial("MANASTEEL", 16, new int[] { 2, 6, 5, 2 }, 18);
|
||||
|
||||
public static ArmorMaterial manasteelArmorMaterial = EnumHelper.addArmorMaterial("MANASTEEL", "manasteel", 16, new int[] { 2, 6, 5, 2 }, 18);
|
||||
public static ToolMaterial manasteelToolMaterial = EnumHelper.addToolMaterial("MANASTEEL", 3, 300, 6.2F, 2F, 20);
|
||||
|
||||
public static ArmorMaterial elementiumArmorMaterial = EnumHelper.addArmorMaterial("B_ELEMENTIUM", 18, new int[] { 2, 6, 5, 2 }, 18);
|
||||
public static ArmorMaterial elementiumArmorMaterial = EnumHelper.addArmorMaterial("B_ELEMENTIUM", "b_elementium", 18, new int[] { 2, 6, 5, 2 }, 18);
|
||||
public static ToolMaterial elementiumToolMaterial = EnumHelper.addToolMaterial("B_ELEMENTIUM", 3, 720, 6.2F, 2F, 20);
|
||||
|
||||
public static ArmorMaterial terrasteelArmorMaterial = EnumHelper.addArmorMaterial("TERRASTEEL", 34, new int[] {3, 8, 6, 3}, 26);
|
||||
public static ArmorMaterial terrasteelArmorMaterial = EnumHelper.addArmorMaterial("TERRASTEEL", "terrasteel", 34, new int[] {3, 8, 6, 3}, 26);
|
||||
public static ToolMaterial terrasteelToolMaterial = EnumHelper.addToolMaterial("TERRASTEEL", 4, 2300, 9F, 3F, 26);
|
||||
|
||||
public static ArmorMaterial manaweaveArmorMaterial = EnumHelper.addArmorMaterial("MANAWEAVE", 5, new int[] { 1, 2, 2, 1 }, 18);
|
||||
public static ArmorMaterial manaweaveArmorMaterial = EnumHelper.addArmorMaterial("MANAWEAVE", "manaweave", 5, new int[] { 1, 2, 2, 1 }, 18);
|
||||
|
||||
public static EnumRarity rarityRelic = EnumHelper.addRarity("RELIC", EnumChatFormatting.GOLD, "Relic");
|
||||
|
||||
@@ -231,11 +236,11 @@ public final class BotaniaAPI {
|
||||
registerModWiki("GanysNether", new SimpleWikiProvider("Gany's Nether Wiki", "http://ganys-nether.wikia.com/wiki/%s"));
|
||||
registerModWiki("GanysEnd", new SimpleWikiProvider("Gany's End Wiki", "http://ganys-end.wikia.com/wiki/%s"));
|
||||
|
||||
registerPaintableBlock(Blocks.stained_glass);
|
||||
registerPaintableBlock(Blocks.stained_glass_pane);
|
||||
registerPaintableBlock(Blocks.stained_hardened_clay);
|
||||
registerPaintableBlock(Blocks.wool);
|
||||
registerPaintableBlock(Blocks.carpet);
|
||||
registerPaintableBlock(Blocks.stained_glass, BlockStainedGlass.COLOR);
|
||||
registerPaintableBlock(Blocks.stained_glass_pane, BlockStainedGlassPane.COLOR);
|
||||
registerPaintableBlock(Blocks.stained_hardened_clay, BlockColored.COLOR);
|
||||
registerPaintableBlock(Blocks.wool, BlockColored.COLOR);
|
||||
registerPaintableBlock(Blocks.carpet, BlockCarpet.COLOR);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -277,9 +282,11 @@ public final class BotaniaAPI {
|
||||
|
||||
/**
|
||||
* Registers a paintableBlock and returns it.
|
||||
* You must also provide the PropertyEnum that this block uses to express its color
|
||||
* The component type of the property must be EnumDyeColor
|
||||
*/
|
||||
public static Block registerPaintableBlock(Block paintable){
|
||||
paintableBlocks.add(paintable);
|
||||
public static Block registerPaintableBlock(Block paintable, PropertyEnum<EnumDyeColor> colorProp){
|
||||
paintableBlocks.put(paintable, colorProp);
|
||||
return paintable;
|
||||
}
|
||||
|
||||
@@ -319,7 +326,11 @@ public final class BotaniaAPI {
|
||||
String key = getMagnetKey(stack);
|
||||
return magnetBlacklist.contains(key);
|
||||
}
|
||||
|
||||
|
||||
public static boolean isBlockBlacklistedFromMagnet(IBlockState state) {
|
||||
return isBlockBlacklistedFromMagnet(state.getBlock(), state.getBlock().getMetaFromState(state));
|
||||
}
|
||||
|
||||
public static boolean isBlockBlacklistedFromMagnet(Block block, int meta) {
|
||||
return isBlockBlacklistedFromMagnet(block, meta, 0);
|
||||
}
|
||||
@@ -354,12 +365,11 @@ public final class BotaniaAPI {
|
||||
/**
|
||||
* Registers a Pure Daisy Recipe.
|
||||
* @param input The block that works as an input for the recipe. Can be a Block or an oredict String.
|
||||
* @param output The block to be placed upon recipe completion.
|
||||
* @param outputMeta The metadata to be placed upon recipe completion.
|
||||
* @param outputState The blockstate to be placed upon recipe completion.
|
||||
* @return The recipe created.
|
||||
*/
|
||||
public static RecipePureDaisy registerPureDaisyRecipe(Object input, Block output, int outputMeta) {
|
||||
RecipePureDaisy recipe = new RecipePureDaisy(input, output, outputMeta);
|
||||
public static RecipePureDaisy registerPureDaisyRecipe(Object input, IBlockState outputState) {
|
||||
RecipePureDaisy recipe = new RecipePureDaisy(input, outputState);
|
||||
pureDaisyRecipes.add(recipe);
|
||||
return recipe;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
package vazkii.botania.api;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import vazkii.botania.api.subtile.SubTileEntity;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Class for API calls that must be made clientside
|
||||
*/
|
||||
@SideOnly(Side.CLIENT)
|
||||
public final class BotaniaAPIClient {
|
||||
|
||||
public static final Map<String, ModelResourceLocation> queuedBlockModels = Maps.newHashMap();
|
||||
public static final Map<String, ModelResourceLocation> queuedItemModels = Maps.newHashMap();
|
||||
|
||||
/**
|
||||
* Register your model for the given subtile class here.
|
||||
* Call this DURING PREINIT. Calling it anytime after blockModels have already baked does not guarantee that your model will work.
|
||||
* Your model json must specify key "tintindex" in all the faces it wants tint applied.
|
||||
* Tint is applied whenever a player recolors the flower using floral dye
|
||||
* todo 1.8.8 move this elsewhere or otherwise make it fit better with the rest of the subtile registration process
|
||||
*
|
||||
* @param subTileName The String ID of the subtile
|
||||
* @param model A path to a blockstate json and variant to be used for this subtile
|
||||
* @param itemModel A path to a blockstate json and variant to be used for this subtile's item form
|
||||
*/
|
||||
public static void registerSubtileModel(String subTileName, ModelResourceLocation model, ModelResourceLocation itemModel) {
|
||||
queuedBlockModels.put(subTileName, model);
|
||||
queuedItemModels.put(subTileName, itemModel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register your model for the given subtile class here.
|
||||
* Call this DURING PREINIT. Calling it anytime after blockModels have already baked does not guarantee that your model will work.
|
||||
* Your model json must specify key "tintindex" in all the faces it wants tint applied.
|
||||
* Tint is applied whenever a player recolors the flower using floral dye
|
||||
* todo 1.8.8 move this elsewhere or otherwise make it fit better with the rest of the subtile registration process
|
||||
*
|
||||
* @param subTileName The String ID of the subtile
|
||||
* @param model A path to a blockstate json and variant to be used the block. The item model will be drawn from the same blockstate json, from variant "inventory"
|
||||
*/
|
||||
public static void registerSubtileModel(String subTileName, ModelResourceLocation model) {
|
||||
registerSubtileModel(subTileName, model, new ModelResourceLocation(model.getResourceDomain() + ":" + model.getResourcePath(), "inventory"));
|
||||
}
|
||||
|
||||
// Convenience overloads for the above two calls
|
||||
public static void registerSubtileModel(Class<? extends SubTileEntity> clazz, ModelResourceLocation model) {
|
||||
registerSubtileModel(BotaniaAPI.getSubTileStringMapping(clazz), model);
|
||||
}
|
||||
|
||||
public static void registerSubtileModel(Class<? extends SubTileEntity> clazz, ModelResourceLocation model, ModelResourceLocation itemModel) {
|
||||
registerSubtileModel(BotaniaAPI.getSubTileStringMapping(clazz), model, itemModel);
|
||||
}
|
||||
|
||||
private BotaniaAPIClient() {}
|
||||
|
||||
}
|
||||
@@ -15,8 +15,8 @@ import java.awt.Rectangle;
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.entity.boss.IBossDisplayData;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
/**
|
||||
* An extension of IBossDisplayData. This counts as a botania boss and as a normal
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
package vazkii.botania.api.boss;
|
||||
|
||||
import vazkii.botania.api.internal.ShaderCallback;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
/**
|
||||
* A Botania boss whose HP bar makes use of shaders. Shaders
|
||||
|
||||
@@ -17,14 +17,17 @@ import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import com.google.common.base.Predicates;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public final class CorporeaHelper {
|
||||
|
||||
@@ -67,7 +70,7 @@ public final class CorporeaHelper {
|
||||
if(network != null)
|
||||
for(ICorporeaSpark otherSpark : network)
|
||||
if(otherSpark != null) {
|
||||
IInventory inv = otherSpark.getInventory();
|
||||
IInventory inv = otherSpark.getSparkInventory();
|
||||
if(inv != null)
|
||||
inventories.add(inv);
|
||||
}
|
||||
@@ -237,31 +240,31 @@ public final class CorporeaHelper {
|
||||
return null;
|
||||
|
||||
TileEntity tile = (TileEntity) inv;
|
||||
return getSparkForBlock(tile.getWorldObj(), tile.xCoord, tile.yCoord, tile.zCoord);
|
||||
return getSparkForBlock(tile.getWorld(), tile.getPos());
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the spark attached to the block in the coords passed in. Note that the coords passed
|
||||
* in are for the block that the spark will be on, not the coords of the spark itself.
|
||||
*/
|
||||
public static ICorporeaSpark getSparkForBlock(World world, int x, int y, int z) {
|
||||
List<ICorporeaSpark> sparks = world.getEntitiesWithinAABB(ICorporeaSpark.class, AxisAlignedBB.getBoundingBox(x, y + 1, z, x + 1, y + 2, z + 1));
|
||||
return sparks.isEmpty() ? null : sparks.get(0);
|
||||
public static ICorporeaSpark getSparkForBlock(World world, BlockPos pos) {
|
||||
List<Entity> sparks = world.getEntitiesWithinAABB(Entity.class, new AxisAlignedBB(pos.up(), pos.add(1, 2, 1)), Predicates.instanceOf(ICorporeaSpark.class));
|
||||
return sparks.isEmpty() ? null : ((ICorporeaSpark) sparks.get(0));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets if the block in the coords passed in has a spark attached. Note that the coords passed
|
||||
* in are for the block that the spark will be on, not the coords of the spark itself.
|
||||
*/
|
||||
public static boolean doesBlockHaveSpark(World world, int x, int y, int z) {
|
||||
return getSparkForBlock(world, x, y, z) != null;
|
||||
public static boolean doesBlockHaveSpark(World world, BlockPos pos) {
|
||||
return getSparkForBlock(world, pos) != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets if the slot passed in can be extracted from by a spark.
|
||||
*/
|
||||
public static boolean isValidSlot(IInventory inv, int slot) {
|
||||
return !(inv instanceof ISidedInventory) || arrayHas(((ISidedInventory) inv).getAccessibleSlotsFromSide(ForgeDirection.UP.ordinal()), slot) && ((ISidedInventory) inv).canExtractItem(slot, inv.getStackInSlot(slot), ForgeDirection.UP.ordinal());
|
||||
return !(inv instanceof ISidedInventory) || arrayHas(((ISidedInventory) inv).getSlotsForFace(EnumFacing.UP), slot) && ((ISidedInventory) inv).canExtractItem(slot, inv.getStackInSlot(slot), EnumFacing.UP);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
*/
|
||||
package vazkii.botania.api.corporea;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.Cancelable;
|
||||
import cpw.mods.fml.common.eventhandler.Event;
|
||||
import net.minecraftforge.fml.common.eventhandler.Cancelable;
|
||||
import net.minecraftforge.fml.common.eventhandler.Event;
|
||||
|
||||
/**
|
||||
* Fired when a corporea request is initiated. Can be cancelled.
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
*/
|
||||
package vazkii.botania.api.corporea;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
/**
|
||||
* An interface for systems which may control if the item auto complete system should be active
|
||||
|
||||
@@ -38,7 +38,7 @@ public interface ICorporeaSpark {
|
||||
/**
|
||||
* Gets the inventory this spark is bound to, generally the one right below it.
|
||||
*/
|
||||
public IInventory getInventory();
|
||||
public IInventory getSparkInventory();
|
||||
|
||||
/**
|
||||
* Gets the list of sparks this spark is connected to, see registerConnections(). This list
|
||||
|
||||
@@ -14,7 +14,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ChunkCoordinates;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import vazkii.botania.api.mana.TileSignature;
|
||||
|
||||
@@ -28,12 +28,12 @@ public class DummyManaNetwork implements IManaNetwork {
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity getClosestPool(ChunkCoordinates pos, World world, int limit) {
|
||||
public TileEntity getClosestPool(BlockPos pos, World world, int limit) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity getClosestCollector(ChunkCoordinates pos, World world, int limit) {
|
||||
public TileEntity getClosestCollector(BlockPos pos, World world, int limit) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,8 @@ package vazkii.botania.api.internal;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.client.renderer.texture.TextureMap;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
@@ -22,7 +23,8 @@ import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.IRecipe;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.world.World;
|
||||
import vazkii.botania.api.boss.IBotaniaBoss;
|
||||
@@ -132,12 +134,12 @@ public class DummyMethodHandler implements IInternalMethodHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIcon getSubTileIconForName(String name) {
|
||||
return Blocks.red_flower.getIcon(0, 0);
|
||||
public TextureAtlasSprite getSubTileIconForName(String name) {
|
||||
return null; //todo 1.8 return Blocks.red_flower.getIcon(0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerBasicSignatureIcons(String name, IIconRegister register) {
|
||||
public void registerBasicSignatureIcons(String name, TextureMap map) {
|
||||
// NO-OP
|
||||
}
|
||||
|
||||
@@ -202,7 +204,7 @@ public class DummyMethodHandler implements IInternalMethodHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void breakOnAllCursors(EntityPlayer player, Item item, ItemStack stack, int x, int y, int z, int side) {
|
||||
public void breakOnAllCursors(EntityPlayer player, Item item, ItemStack stack, BlockPos pos, EnumFacing side) {
|
||||
// NO-OP
|
||||
}
|
||||
|
||||
@@ -217,7 +219,7 @@ public class DummyMethodHandler implements IInternalMethodHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBotaniaFlower(World world, int x, int y, int z) {
|
||||
public boolean isBotaniaFlower(World world, BlockPos pos) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Loaded 100 of 1582 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user