generated from tilera/1710mod
chore: format code
This commit is contained in:
parent
eced15a2f1
commit
2c06c8a55a
|
@ -0,0 +1,130 @@
|
|||
---
|
||||
AccessModifierOffset: 0
|
||||
AlignAfterOpenBracket: BlockIndent
|
||||
AlignArrayOfStructures: None
|
||||
AlignConsecutiveAssignments: None
|
||||
AlignConsecutiveMacros: None
|
||||
AlignConsecutiveBitFields: None
|
||||
AlignConsecutiveDeclarations: None
|
||||
AlignEscapedNewlines: DontAlign
|
||||
AlignOperands: DontAlign
|
||||
AlignTrailingComments: false
|
||||
AllowAllArgumentsOnNextLine: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowShortBlocksOnASingleLine: Empty
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortEnumsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: Empty
|
||||
AllowShortIfStatementsOnASingleLine: Never
|
||||
AllowShortLambdasOnASingleLine: All
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterReturnType: None
|
||||
AlwaysBreakBeforeMultilineStrings: true
|
||||
AlwaysBreakTemplateDeclarations: MultiLine
|
||||
AttributeMacros: []
|
||||
BinPackArguments: false
|
||||
BinPackParameters: false
|
||||
BitFieldColonSpacing: After
|
||||
BraceWrapping:
|
||||
AfterCaseLabel: false
|
||||
AfterClass: false
|
||||
AfterControlStatement: Never
|
||||
AfterEnum: false
|
||||
AfterFunction: false
|
||||
AfterNamespace: false
|
||||
AfterStruct: false
|
||||
AfterUnion: false
|
||||
AfterExternBlock: false
|
||||
BeforeCatch: false
|
||||
BeforeElse: false
|
||||
BeforeLambdaBody: false
|
||||
BeforeWhile: false
|
||||
IndentBraces: false
|
||||
SplitEmptyFunction: false
|
||||
SplitEmptyRecord: false
|
||||
SplitEmptyNamespace: false
|
||||
BreakAfterJavaFieldAnnotations: true
|
||||
#BreakArrays: false
|
||||
BreakBeforeBinaryOperators: All
|
||||
BreakBeforeBraces: Custom
|
||||
BreakBeforeConceptDeclarations: true
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializers: AfterColon
|
||||
BreakInheritanceList: AfterColon
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 90
|
||||
CompactNamespaces: false
|
||||
ConstructorInitializerIndentWidth: 4
|
||||
ContinuationIndentWidth: 4
|
||||
Cpp11BracedListStyle: false
|
||||
DeriveLineEnding: false
|
||||
DerivePointerAlignment: false
|
||||
DisableFormat: false # wtf
|
||||
EmptyLineAfterAccessModifier: Never
|
||||
EmptyLineBeforeAccessModifier: Always
|
||||
ExperimentalAutoDetectBinPacking: false
|
||||
FixNamespaceComments: false
|
||||
ForEachMacros: ["BOOST_FOREACH"]
|
||||
IfMacros: []
|
||||
IncludeBlocks: Regroup
|
||||
IndentAccessModifiers: false
|
||||
IndentCaseBlocks: false
|
||||
IndentCaseLabels: true
|
||||
IndentExternBlock: Indent
|
||||
IndentGotoLabels: true
|
||||
IndentPPDirectives: BeforeHash
|
||||
#IndentRequiresClause: false
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: false
|
||||
#InsertBraces: false
|
||||
InsertTrailingCommas: Wrapped
|
||||
JavaImportGroups: ["java"]
|
||||
JavaScriptQuotes: Double
|
||||
JavaScriptWrapImports: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||
LambdaBodyIndentation: OuterScope
|
||||
MaxEmptyLinesToKeep: 1
|
||||
NamespaceIndentation: All
|
||||
PackConstructorInitializers: NextLine
|
||||
PointerAlignment: Left
|
||||
QualifierAlignment: Left
|
||||
ReferenceAlignment: Left
|
||||
ReflowComments: true
|
||||
#RemoveSemicolon: true
|
||||
#RequiresClausePosition: OwnLine
|
||||
#RequiresExpressionIndentation: OuterScope
|
||||
SeparateDefinitionBlocks: Always
|
||||
SortIncludes: CaseInsensitive
|
||||
SortJavaStaticImport: Before
|
||||
SortUsingDeclarations: true
|
||||
SpaceAfterCStyleCast: true
|
||||
SpaceAfterLogicalNot: false
|
||||
SpaceAfterTemplateKeyword: false
|
||||
SpaceAroundPointerQualifiers: After
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
SpaceBeforeCaseColon: false
|
||||
SpaceBeforeCpp11BracedList: false
|
||||
SpaceBeforeCtorInitializerColon: false
|
||||
SpaceBeforeInheritanceColon: false
|
||||
SpaceBeforeParens: ControlStatementsExceptControlMacros
|
||||
SpaceBeforeRangeBasedForLoopColon: true
|
||||
SpaceBeforeSquareBrackets: false
|
||||
SpaceInEmptyBlock: false
|
||||
SpaceInEmptyParentheses: false
|
||||
SpacesInAngles: Never
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInConditionalStatement: false
|
||||
SpacesInContainerLiterals: false
|
||||
SpacesInLineCommentPrefix:
|
||||
Minimum: 0
|
||||
Maximum: -1
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: c++20
|
||||
StatementAttributeLikeMacros: []
|
||||
StatementMacros: []
|
||||
TabWidth: 4
|
||||
TypenameMacros: []
|
||||
UseCRLF: false # wtf
|
||||
UseTab: Never
|
||||
WhitespaceSensitiveMacros: ["BOOST_PP_STRINGSIZE"]
|
|
@ -4,29 +4,34 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
public class Calclavia {
|
||||
public static final String RESOURCE_DIRECTORY = "/mods/calclavia/";
|
||||
public static final String TEXTURE_DIRECTORY = "/mods/calclavia/textures/";
|
||||
public static final String GUI_DIRECTORY = "/mods/calclavia/textures/gui/";
|
||||
public static final String GUI_COMPONENTS
|
||||
= "/mods/calclavia/textures/gui/gui_components.png";
|
||||
public static final String GUI_BASE_FILE
|
||||
= "/mods/calclavia/textures/gui/gui_base.png";
|
||||
public static final String GUI_EMPTY_FILE
|
||||
= "/mods/calclavia/textures/gui/gui_empty.png";
|
||||
|
||||
public static final String RESOURCE_DIRECTORY = "/mods/calclavia/";
|
||||
public static final String TEXTURE_DIRECTORY = "/mods/calclavia/textures/";
|
||||
public static final String GUI_DIRECTORY = "/mods/calclavia/textures/gui/";
|
||||
public static final String GUI_COMPONENTS = "/mods/calclavia/textures/gui/gui_components.png";
|
||||
public static final String GUI_BASE_FILE = "/mods/calclavia/textures/gui/gui_base.png";
|
||||
public static final String GUI_EMPTY_FILE = "/mods/calclavia/textures/gui/gui_empty.png";
|
||||
public static List<String> splitStringPerWord(String string, int wordsPerLine) {
|
||||
String[] words = string.split(" ");
|
||||
ArrayList<String> lines = new ArrayList<>();
|
||||
|
||||
for (int lineCount = 0; (double) lineCount
|
||||
< Math.ceil((double) ((float) words.length / (float) wordsPerLine));
|
||||
++lineCount) {
|
||||
String stringInLine = "";
|
||||
|
||||
public static List<String> splitStringPerWord(String string, int wordsPerLine) {
|
||||
String[] words = string.split(" ");
|
||||
ArrayList<String> lines = new ArrayList<>();
|
||||
for (int i = lineCount * wordsPerLine;
|
||||
i < Math.min(wordsPerLine + lineCount * wordsPerLine, words.length);
|
||||
++i) {
|
||||
stringInLine = stringInLine + words[i] + " ";
|
||||
}
|
||||
|
||||
for(int lineCount = 0; (double)lineCount < Math.ceil((double)((float)words.length / (float)wordsPerLine)); ++lineCount) {
|
||||
String stringInLine = "";
|
||||
lines.add(stringInLine.trim());
|
||||
}
|
||||
|
||||
for(int i = lineCount * wordsPerLine; i < Math.min(wordsPerLine + lineCount * wordsPerLine, words.length); ++i) {
|
||||
stringInLine = stringInLine + words[i] + " ";
|
||||
}
|
||||
|
||||
lines.add(stringInLine.trim());
|
||||
}
|
||||
|
||||
return lines;
|
||||
}
|
||||
return lines;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package calclavia.lib;
|
|||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
|
@ -10,102 +11,164 @@ import net.minecraft.world.World;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class CalculationHelper {
|
||||
public static void rotateByAngle(Vector3 vector, double yaw) {
|
||||
double yawRadians = Math.toRadians(yaw);
|
||||
double x = vector.x;
|
||||
double z = vector.z;
|
||||
if (yaw != 0.0D) {
|
||||
vector.x = x * Math.cos(yawRadians) - z * Math.sin(yawRadians);
|
||||
vector.z = x * Math.sin(yawRadians) + z * Math.cos(yawRadians);
|
||||
}
|
||||
}
|
||||
|
||||
public static void rotateByAngle(Vector3 vector, double yaw) {
|
||||
double yawRadians = Math.toRadians(yaw);
|
||||
double x = vector.x;
|
||||
double z = vector.z;
|
||||
if(yaw != 0.0D) {
|
||||
vector.x = x * Math.cos(yawRadians) - z * Math.sin(yawRadians);
|
||||
vector.z = x * Math.sin(yawRadians) + z * Math.cos(yawRadians);
|
||||
}
|
||||
public static void rotateByAngle(Vector3 vector, double yaw, double pitch) {
|
||||
rotateByAngle(vector, yaw, pitch, 0.0D);
|
||||
}
|
||||
|
||||
}
|
||||
public static void
|
||||
rotateByAngle(Vector3 vector, double yaw, double pitch, double roll) {
|
||||
double yawRadians = Math.toRadians(yaw);
|
||||
double pitchRadians = Math.toRadians(pitch);
|
||||
double rollRadians = Math.toRadians(roll);
|
||||
double x = vector.x;
|
||||
double y = vector.y;
|
||||
double z = vector.z;
|
||||
vector.x = x * Math.cos(yawRadians) * Math.cos(pitchRadians)
|
||||
+ z
|
||||
* (Math.cos(yawRadians) * Math.sin(pitchRadians) * Math.sin(rollRadians)
|
||||
- Math.sin(yawRadians) * Math.cos(rollRadians))
|
||||
+ y
|
||||
* (Math.cos(yawRadians) * Math.sin(pitchRadians) * Math.cos(rollRadians)
|
||||
+ Math.sin(yawRadians) * Math.sin(rollRadians));
|
||||
vector.z = x * Math.sin(yawRadians) * Math.cos(pitchRadians)
|
||||
+ z
|
||||
* (Math.sin(yawRadians) * Math.sin(pitchRadians) * Math.sin(rollRadians)
|
||||
+ Math.cos(yawRadians) * Math.cos(rollRadians))
|
||||
+ y
|
||||
* (Math.sin(yawRadians) * Math.sin(pitchRadians) * Math.cos(rollRadians)
|
||||
- Math.cos(yawRadians) * Math.sin(rollRadians));
|
||||
vector.y = -x * Math.sin(pitchRadians)
|
||||
+ z * Math.cos(pitchRadians) * Math.sin(rollRadians)
|
||||
+ y * Math.cos(pitchRadians) * Math.cos(rollRadians);
|
||||
}
|
||||
|
||||
public static void rotateByAngle(Vector3 vector, double yaw, double pitch) {
|
||||
rotateByAngle(vector, yaw, pitch, 0.0D);
|
||||
}
|
||||
public static Vector3
|
||||
getDeltaPositionFromRotation(float rotationYaw, float rotationPitch) {
|
||||
rotationYaw += 90.0F;
|
||||
rotationPitch = -rotationPitch;
|
||||
return new Vector3(
|
||||
Math.cos(Math.toRadians((double) rotationYaw)),
|
||||
Math.sin(Math.toRadians((double) rotationPitch)),
|
||||
Math.sin(Math.toRadians((double) rotationYaw))
|
||||
);
|
||||
}
|
||||
|
||||
public static void rotateByAngle(Vector3 vector, double yaw, double pitch, double roll) {
|
||||
double yawRadians = Math.toRadians(yaw);
|
||||
double pitchRadians = Math.toRadians(pitch);
|
||||
double rollRadians = Math.toRadians(roll);
|
||||
double x = vector.x;
|
||||
double y = vector.y;
|
||||
double z = vector.z;
|
||||
vector.x = x * Math.cos(yawRadians) * Math.cos(pitchRadians) + z * (Math.cos(yawRadians) * Math.sin(pitchRadians) * Math.sin(rollRadians) - Math.sin(yawRadians) * Math.cos(rollRadians)) + y * (Math.cos(yawRadians) * Math.sin(pitchRadians) * Math.cos(rollRadians) + Math.sin(yawRadians) * Math.sin(rollRadians));
|
||||
vector.z = x * Math.sin(yawRadians) * Math.cos(pitchRadians) + z * (Math.sin(yawRadians) * Math.sin(pitchRadians) * Math.sin(rollRadians) + Math.cos(yawRadians) * Math.cos(rollRadians)) + y * (Math.sin(yawRadians) * Math.sin(pitchRadians) * Math.cos(rollRadians) - Math.cos(yawRadians) * Math.sin(rollRadians));
|
||||
vector.y = -x * Math.sin(pitchRadians) + z * Math.cos(pitchRadians) * Math.sin(rollRadians) + y * Math.cos(pitchRadians) * Math.cos(rollRadians);
|
||||
}
|
||||
public static MovingObjectPosition raytraceEntities(
|
||||
World world,
|
||||
Vector3 startPosition,
|
||||
float rotationYaw,
|
||||
float rotationPitch,
|
||||
boolean collisionFlag,
|
||||
double reachDistance
|
||||
) {
|
||||
MovingObjectPosition pickedEntity = null;
|
||||
Vec3 startingPosition = startPosition.toVec3();
|
||||
Vec3 look = getDeltaPositionFromRotation(rotationYaw, rotationPitch).toVec3();
|
||||
Vec3 reachPoint = Vec3.createVectorHelper(
|
||||
startingPosition.xCoord + look.xCoord * reachDistance,
|
||||
startingPosition.yCoord + look.yCoord * reachDistance,
|
||||
startingPosition.zCoord + look.zCoord * reachDistance
|
||||
);
|
||||
double playerBorder = 1.1D * reachDistance;
|
||||
AxisAlignedBB boxToScan = AxisAlignedBB.getBoundingBox(
|
||||
-playerBorder,
|
||||
-playerBorder,
|
||||
-playerBorder,
|
||||
playerBorder,
|
||||
playerBorder,
|
||||
playerBorder
|
||||
);
|
||||
List entitiesHit
|
||||
= world.getEntitiesWithinAABBExcludingEntity((Entity) null, boxToScan);
|
||||
double closestEntity = reachDistance;
|
||||
if (entitiesHit != null && !entitiesHit.isEmpty()) {
|
||||
Iterator i$ = entitiesHit.iterator();
|
||||
|
||||
public static Vector3 getDeltaPositionFromRotation(float rotationYaw, float rotationPitch) {
|
||||
rotationYaw += 90.0F;
|
||||
rotationPitch = -rotationPitch;
|
||||
return new Vector3(Math.cos(Math.toRadians((double)rotationYaw)), Math.sin(Math.toRadians((double)rotationPitch)), Math.sin(Math.toRadians((double)rotationYaw)));
|
||||
}
|
||||
|
||||
public static MovingObjectPosition raytraceEntities(World world, Vector3 startPosition, float rotationYaw, float rotationPitch, boolean collisionFlag, double reachDistance) {
|
||||
MovingObjectPosition pickedEntity = null;
|
||||
Vec3 startingPosition = startPosition.toVec3();
|
||||
Vec3 look = getDeltaPositionFromRotation(rotationYaw, rotationPitch).toVec3();
|
||||
Vec3 reachPoint = Vec3.createVectorHelper(startingPosition.xCoord + look.xCoord * reachDistance, startingPosition.yCoord + look.yCoord * reachDistance, startingPosition.zCoord + look.zCoord * reachDistance);
|
||||
double playerBorder = 1.1D * reachDistance;
|
||||
AxisAlignedBB boxToScan = AxisAlignedBB.getBoundingBox(-playerBorder, -playerBorder, -playerBorder, playerBorder, playerBorder, playerBorder);
|
||||
List entitiesHit = world.getEntitiesWithinAABBExcludingEntity((Entity)null, boxToScan);
|
||||
double closestEntity = reachDistance;
|
||||
if(entitiesHit != null && !entitiesHit.isEmpty()) {
|
||||
Iterator i$ = entitiesHit.iterator();
|
||||
|
||||
while(i$.hasNext()) {
|
||||
Entity entityHit = (Entity)i$.next();
|
||||
if(entityHit != null && entityHit.canBeCollidedWith() && entityHit.boundingBox != null) {
|
||||
float border = entityHit.getCollisionBorderSize();
|
||||
AxisAlignedBB aabb = entityHit.boundingBox.expand((double)border, (double)border, (double)border);
|
||||
MovingObjectPosition hitMOP = aabb.calculateIntercept(startingPosition, reachPoint);
|
||||
if(hitMOP != null) {
|
||||
if(aabb.isVecInside(startingPosition)) {
|
||||
if(0.0D < closestEntity || closestEntity == 0.0D) {
|
||||
pickedEntity = new MovingObjectPosition(entityHit);
|
||||
if(pickedEntity != null) {
|
||||
pickedEntity.hitVec = hitMOP.hitVec;
|
||||
closestEntity = 0.0D;
|
||||
while (i$.hasNext()) {
|
||||
Entity entityHit = (Entity) i$.next();
|
||||
if (entityHit != null && entityHit.canBeCollidedWith()
|
||||
&& entityHit.boundingBox != null) {
|
||||
float border = entityHit.getCollisionBorderSize();
|
||||
AxisAlignedBB aabb = entityHit.boundingBox.expand(
|
||||
(double) border, (double) border, (double) border
|
||||
);
|
||||
MovingObjectPosition hitMOP
|
||||
= aabb.calculateIntercept(startingPosition, reachPoint);
|
||||
if (hitMOP != null) {
|
||||
if (aabb.isVecInside(startingPosition)) {
|
||||
if (0.0D < closestEntity || closestEntity == 0.0D) {
|
||||
pickedEntity = new MovingObjectPosition(entityHit);
|
||||
if (pickedEntity != null) {
|
||||
pickedEntity.hitVec = hitMOP.hitVec;
|
||||
closestEntity = 0.0D;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
double distance = startingPosition.distanceTo(hitMOP.hitVec);
|
||||
if (distance < closestEntity || closestEntity == 0.0D) {
|
||||
pickedEntity = new MovingObjectPosition(entityHit);
|
||||
pickedEntity.hitVec = hitMOP.hitVec;
|
||||
closestEntity = distance;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
double distance = startingPosition.distanceTo(hitMOP.hitVec);
|
||||
if(distance < closestEntity || closestEntity == 0.0D) {
|
||||
pickedEntity = new MovingObjectPosition(entityHit);
|
||||
pickedEntity.hitVec = hitMOP.hitVec;
|
||||
closestEntity = distance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return pickedEntity;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return pickedEntity;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static MovingObjectPosition raytraceBlocks(World world, Vector3 startPosition, float rotationYaw, float rotationPitch, boolean collisionFlag, double reachDistance) {
|
||||
Vector3 lookVector = getDeltaPositionFromRotation(rotationYaw, rotationPitch);
|
||||
Vector3 reachPoint = Vector3.add(startPosition, Vector3.multiply(lookVector, reachDistance));
|
||||
return world.rayTraceBlocks(startPosition.toVec3(), reachPoint.toVec3(), collisionFlag);
|
||||
}
|
||||
public static MovingObjectPosition raytraceBlocks(
|
||||
World world,
|
||||
Vector3 startPosition,
|
||||
float rotationYaw,
|
||||
float rotationPitch,
|
||||
boolean collisionFlag,
|
||||
double reachDistance
|
||||
) {
|
||||
Vector3 lookVector = getDeltaPositionFromRotation(rotationYaw, rotationPitch);
|
||||
Vector3 reachPoint
|
||||
= Vector3.add(startPosition, Vector3.multiply(lookVector, reachDistance));
|
||||
return world.rayTraceBlocks(
|
||||
startPosition.toVec3(), reachPoint.toVec3(), collisionFlag
|
||||
);
|
||||
}
|
||||
|
||||
public static MovingObjectPosition doCustomRayTrace(World world, Vector3 startPosition, float rotationYaw, float rotationPitch, boolean collisionFlag, double reachDistance) {
|
||||
MovingObjectPosition pickedBlock = raytraceBlocks(world, startPosition, rotationYaw, rotationPitch, collisionFlag, reachDistance);
|
||||
MovingObjectPosition pickedEntity = raytraceEntities(world, startPosition, rotationYaw, rotationPitch, collisionFlag, reachDistance);
|
||||
if(pickedBlock == null) {
|
||||
return pickedEntity;
|
||||
} else if(pickedEntity == null) {
|
||||
return pickedBlock;
|
||||
} else {
|
||||
double dBlock = startPosition.distanceTo(new Vector3(pickedBlock.hitVec));
|
||||
double dEntity = startPosition.distanceTo(new Vector3(pickedEntity.hitVec));
|
||||
return dEntity < dBlock?pickedEntity:pickedBlock;
|
||||
}
|
||||
}
|
||||
public static MovingObjectPosition doCustomRayTrace(
|
||||
World world,
|
||||
Vector3 startPosition,
|
||||
float rotationYaw,
|
||||
float rotationPitch,
|
||||
boolean collisionFlag,
|
||||
double reachDistance
|
||||
) {
|
||||
MovingObjectPosition pickedBlock = raytraceBlocks(
|
||||
world, startPosition, rotationYaw, rotationPitch, collisionFlag, reachDistance
|
||||
);
|
||||
MovingObjectPosition pickedEntity = raytraceEntities(
|
||||
world, startPosition, rotationYaw, rotationPitch, collisionFlag, reachDistance
|
||||
);
|
||||
if (pickedBlock == null) {
|
||||
return pickedEntity;
|
||||
} else if (pickedEntity == null) {
|
||||
return pickedBlock;
|
||||
} else {
|
||||
double dBlock = startPosition.distanceTo(new Vector3(pickedBlock.hitVec));
|
||||
double dEntity = startPosition.distanceTo(new Vector3(pickedEntity.hitVec));
|
||||
return dEntity < dBlock ? pickedEntity : pickedBlock;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,5 @@ package calclavia.lib;
|
|||
import java.util.HashSet;
|
||||
|
||||
public interface IPlayerUsing {
|
||||
|
||||
HashSet getPlayersUsing();
|
||||
HashSet getPlayersUsing();
|
||||
}
|
||||
|
|
|
@ -3,5 +3,4 @@ package calclavia.lib;
|
|||
import universalelectricity.core.block.IConnector;
|
||||
import universalelectricity.core.block.IVoltage;
|
||||
|
||||
public interface IUniversalEnergyTile extends IConnector, IVoltage {
|
||||
}
|
||||
public interface IUniversalEnergyTile extends IConnector, IVoltage {}
|
||||
|
|
|
@ -7,19 +7,18 @@ import universalelectricity.prefab.implement.IRotatable;
|
|||
import universalelectricity.prefab.tile.TileEntityElectrical;
|
||||
|
||||
public class TileEntityUniversalProducer extends TileEntityElectrical {
|
||||
public ElectricityPack produce(double watts) {
|
||||
ElectricityPack pack =
|
||||
new ElectricityPack(watts / this.getVoltage(), this.getVoltage());
|
||||
ElectricityPack remaining =
|
||||
ElectricityNetworkHelper.produceFromMultipleSides(this, pack);
|
||||
public ElectricityPack produce(double watts) {
|
||||
ElectricityPack pack
|
||||
= new ElectricityPack(watts / this.getVoltage(), this.getVoltage());
|
||||
ElectricityPack remaining
|
||||
= ElectricityNetworkHelper.produceFromMultipleSides(this, pack);
|
||||
|
||||
return remaining;
|
||||
}
|
||||
return remaining;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnect(ForgeDirection direction) {
|
||||
return this instanceof IRotatable
|
||||
? direction.ordinal() == this.getBlockMetadata()
|
||||
: true;
|
||||
}
|
||||
@Override
|
||||
public boolean canConnect(ForgeDirection direction) {
|
||||
return this instanceof IRotatable ? direction.ordinal() == this.getBlockMetadata()
|
||||
: true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,22 +7,22 @@ import universalelectricity.prefab.implement.IRotatable;
|
|||
import universalelectricity.prefab.tile.TileEntityElectricityRunnable;
|
||||
|
||||
public abstract class TileEntityUniversalRunnable
|
||||
extends TileEntityElectricityRunnable implements IUniversalEnergyTile {
|
||||
extends TileEntityElectricityRunnable implements IUniversalEnergyTile {
|
||||
@Override
|
||||
public boolean canConnect(ForgeDirection direction) {
|
||||
return this instanceof IRotatable
|
||||
? direction == ForgeDirection.getOrientation(this.getBlockMetadata())
|
||||
.getOpposite()
|
||||
: true;
|
||||
return this instanceof IRotatable ? direction
|
||||
== ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite()
|
||||
: true;
|
||||
}
|
||||
|
||||
public ForgeDirection getDirection(IBlockAccess world, int x, int y, int z) {
|
||||
return ForgeDirection.getOrientation(this.getBlockMetadata());
|
||||
}
|
||||
|
||||
public void setDirection(World world, int x, int y, int z,
|
||||
ForgeDirection facingDirection) {
|
||||
public void
|
||||
setDirection(World world, int x, int y, int z, ForgeDirection facingDirection) {
|
||||
this.worldObj.setBlockMetadataWithNotify(
|
||||
this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 2);
|
||||
this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 2
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,21 +8,21 @@ import universalelectricity.prefab.tile.TileEntityElectricityStorage;
|
|||
|
||||
public abstract class TileEntityUniversalStorable
|
||||
extends TileEntityElectricityStorage implements IUniversalEnergyTile {
|
||||
@Override
|
||||
public boolean canConnect(ForgeDirection direction) {
|
||||
return this instanceof IRotatable
|
||||
? direction == ForgeDirection.getOrientation(this.getBlockMetadata())
|
||||
.getOpposite()
|
||||
: true;
|
||||
}
|
||||
@Override
|
||||
public boolean canConnect(ForgeDirection direction) {
|
||||
return this instanceof IRotatable ? direction
|
||||
== ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite()
|
||||
: true;
|
||||
}
|
||||
|
||||
public ForgeDirection getDirection(IBlockAccess world, int x, int y, int z) {
|
||||
return ForgeDirection.getOrientation(this.getBlockMetadata());
|
||||
}
|
||||
public ForgeDirection getDirection(IBlockAccess world, int x, int y, int z) {
|
||||
return ForgeDirection.getOrientation(this.getBlockMetadata());
|
||||
}
|
||||
|
||||
public void setDirection(World world, int x, int y, int z,
|
||||
ForgeDirection facingDirection) {
|
||||
this.worldObj.setBlockMetadataWithNotify(
|
||||
this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 2);
|
||||
}
|
||||
public void
|
||||
setDirection(World world, int x, int y, int z, ForgeDirection facingDirection) {
|
||||
this.worldObj.setBlockMetadataWithNotify(
|
||||
this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 2
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,102 +1,104 @@
|
|||
package calclavia.lib;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
public class UniversalRecipes {
|
||||
public static final String PRIMARY_METAL = "ingotSteel";
|
||||
public static final String PRIMARY_PLATE = "plateSteel";
|
||||
public static final String SECONDARY_METAL = "ingotBronze";
|
||||
public static final String SECONDARY_PLATE = "plateBronze";
|
||||
public static final String CIRCUIT_T1 = "calclavia:CIRCUIT_T1";
|
||||
public static final String CIRCUIT_T2 = "calclavia:CIRCUIT_T2";
|
||||
public static final String CIRCUIT_T3 = "calclavia:CIRCUIT_T3";
|
||||
public static String ADVANCED_BATTERY = "calclavia:ADVANCED_BATTERY";
|
||||
public static String BATTERY = "calclavia:BATTERY";
|
||||
public static String BATTERY_BOX = "calclavia:BATTERY_BOX";
|
||||
public static final String WRENCH = "calclavia:WRENCH";
|
||||
public static final String WIRE = "calclavia:WIRE";
|
||||
public static final String MOTOR = "calclavia:MOTOR";
|
||||
public static boolean isInit = false;
|
||||
public static final String PRIMARY_METAL = "ingotSteel";
|
||||
public static final String PRIMARY_PLATE = "plateSteel";
|
||||
public static final String SECONDARY_METAL = "ingotBronze";
|
||||
public static final String SECONDARY_PLATE = "plateBronze";
|
||||
public static final String CIRCUIT_T1 = "calclavia:CIRCUIT_T1";
|
||||
public static final String CIRCUIT_T2 = "calclavia:CIRCUIT_T2";
|
||||
public static final String CIRCUIT_T3 = "calclavia:CIRCUIT_T3";
|
||||
public static String ADVANCED_BATTERY = "calclavia:ADVANCED_BATTERY";
|
||||
public static String BATTERY = "calclavia:BATTERY";
|
||||
public static String BATTERY_BOX = "calclavia:BATTERY_BOX";
|
||||
public static final String WRENCH = "calclavia:WRENCH";
|
||||
public static final String WIRE = "calclavia:WIRE";
|
||||
public static final String MOTOR = "calclavia:MOTOR";
|
||||
public static boolean isInit = false;
|
||||
|
||||
public static void init() {
|
||||
if (!isInit) {
|
||||
// TODO: WTF
|
||||
// register("calclavia:CIRCUIT_T1", new Object[]{"circuitBasic",
|
||||
// Items.getItem("electronicCircuit"), new
|
||||
// ItemStack(Blocks.redstone_torch)}); register("calclavia:CIRCUIT_T2",
|
||||
// new Object[]{"circuitAdvanced", Items.getItem("advancedCircuit"), new
|
||||
// ItemStack(Items.repeater)}); register("calclavia:CIRCUIT_T3", new
|
||||
// Object[]{"circuitElite", Items.getItem("iridiumPlate"), new
|
||||
// ItemStack(Block.field_94346_cn)}); register(ADVANCED_BATTERY, new
|
||||
// Object[]{"advancedBattery", Items.getItem("energyCrystal"), "battery",
|
||||
// new ItemStack(Items.repeater)}); register(BATTERY, new
|
||||
// Object[]{"battery", Items.getItem("reBattery"), new
|
||||
// ItemStack(Items.repeater)});
|
||||
// register(BATTERY_BOX, new Object[]{"batteryBox",
|
||||
// Items.getItem("batBox"), new ItemStack(Block.field_72105_ah)});
|
||||
// register("calclavia:WRENCH", new Object[]{"wrench",
|
||||
// Items.getItem("wrench"), new ItemStack(Item.field_77708_h)});
|
||||
// register("calclavia:WIRE", new Object[]{"copperWire",
|
||||
// "copperCableBlock", new ItemStack(Item.field_77767_aC)});
|
||||
// register("calclavia:MOTOR", new Object[]{"motor",
|
||||
// Items.getItem("generator"), new ItemStack(Block.field_71963_Z)});
|
||||
isInit = true;
|
||||
}
|
||||
}
|
||||
|
||||
public static void register(String name, Object... possiblities) {
|
||||
Object[] arr$ = possiblities;
|
||||
int len$ = possiblities.length;
|
||||
|
||||
for (int i$ = 0; i$ < len$; ++i$) {
|
||||
Object possiblity = arr$[i$];
|
||||
if (possiblity instanceof ItemStack) {
|
||||
if (registerItemStacksToDictionary(
|
||||
name, new ItemStack[] {(ItemStack)possiblity})) {
|
||||
break;
|
||||
public static void init() {
|
||||
if (!isInit) {
|
||||
// TODO: WTF
|
||||
// register("calclavia:CIRCUIT_T1", new Object[]{"circuitBasic",
|
||||
// Items.getItem("electronicCircuit"), new
|
||||
// ItemStack(Blocks.redstone_torch)}); register("calclavia:CIRCUIT_T2",
|
||||
// new Object[]{"circuitAdvanced", Items.getItem("advancedCircuit"), new
|
||||
// ItemStack(Items.repeater)}); register("calclavia:CIRCUIT_T3", new
|
||||
// Object[]{"circuitElite", Items.getItem("iridiumPlate"), new
|
||||
// ItemStack(Block.field_94346_cn)}); register(ADVANCED_BATTERY, new
|
||||
// Object[]{"advancedBattery", Items.getItem("energyCrystal"), "battery",
|
||||
// new ItemStack(Items.repeater)}); register(BATTERY, new
|
||||
// Object[]{"battery", Items.getItem("reBattery"), new
|
||||
// ItemStack(Items.repeater)});
|
||||
// register(BATTERY_BOX, new Object[]{"batteryBox",
|
||||
// Items.getItem("batBox"), new ItemStack(Block.field_72105_ah)});
|
||||
// register("calclavia:WRENCH", new Object[]{"wrench",
|
||||
// Items.getItem("wrench"), new ItemStack(Item.field_77708_h)});
|
||||
// register("calclavia:WIRE", new Object[]{"copperWire",
|
||||
// "copperCableBlock", new ItemStack(Item.field_77767_aC)});
|
||||
// register("calclavia:MOTOR", new Object[]{"motor",
|
||||
// Items.getItem("generator"), new ItemStack(Block.field_71963_Z)});
|
||||
isInit = true;
|
||||
}
|
||||
} else if (possiblity instanceof String) {
|
||||
if (registerItemStacksToDictionary(name, (String)possiblity)) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
FMLLog.severe("Universal Recipes: Error Registering " + name,
|
||||
new Object[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean registerItemStacksToDictionary(String name,
|
||||
List itemStacks) {
|
||||
boolean returnValue = false;
|
||||
if (itemStacks != null && itemStacks.size() > 0) {
|
||||
Iterator i$ = itemStacks.iterator();
|
||||
|
||||
while (i$.hasNext()) {
|
||||
ItemStack stack = (ItemStack)i$.next();
|
||||
if (stack != null) {
|
||||
OreDictionary.registerOre(name, stack);
|
||||
returnValue = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
public static void register(String name, Object... possiblities) {
|
||||
Object[] arr$ = possiblities;
|
||||
int len$ = possiblities.length;
|
||||
|
||||
public static boolean
|
||||
registerItemStacksToDictionary(String name, ItemStack... itemStacks) {
|
||||
return registerItemStacksToDictionary(name, Arrays.asList(itemStacks));
|
||||
}
|
||||
for (int i$ = 0; i$ < len$; ++i$) {
|
||||
Object possiblity = arr$[i$];
|
||||
if (possiblity instanceof ItemStack) {
|
||||
if (registerItemStacksToDictionary(
|
||||
name, new ItemStack[] { (ItemStack) possiblity }
|
||||
)) {
|
||||
break;
|
||||
}
|
||||
} else if (possiblity instanceof String) {
|
||||
if (registerItemStacksToDictionary(name, (String) possiblity)) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
FMLLog.severe(
|
||||
"Universal Recipes: Error Registering " + name, new Object[0]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean registerItemStacksToDictionary(String name,
|
||||
String stackName) {
|
||||
return registerItemStacksToDictionary(
|
||||
name, (List)OreDictionary.getOres(stackName));
|
||||
}
|
||||
public static boolean registerItemStacksToDictionary(String name, List itemStacks) {
|
||||
boolean returnValue = false;
|
||||
if (itemStacks != null && itemStacks.size() > 0) {
|
||||
Iterator i$ = itemStacks.iterator();
|
||||
|
||||
while (i$.hasNext()) {
|
||||
ItemStack stack = (ItemStack) i$.next();
|
||||
if (stack != null) {
|
||||
OreDictionary.registerOre(name, stack);
|
||||
returnValue = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
public static boolean
|
||||
registerItemStacksToDictionary(String name, ItemStack... itemStacks) {
|
||||
return registerItemStacksToDictionary(name, Arrays.asList(itemStacks));
|
||||
}
|
||||
|
||||
public static boolean registerItemStacksToDictionary(String name, String stackName) {
|
||||
return registerItemStacksToDictionary(
|
||||
name, (List) OreDictionary.getOres(stackName)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,89 +8,91 @@ import net.minecraft.inventory.Slot;
|
|||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerBase extends Container {
|
||||
protected int slotCount = 0;
|
||||
private IInventory inventory;
|
||||
|
||||
protected int slotCount = 0;
|
||||
private IInventory inventory;
|
||||
public ContainerBase(IInventory inventory) {
|
||||
this.inventory = inventory;
|
||||
this.slotCount = inventory.getSizeInventory();
|
||||
}
|
||||
|
||||
public void onContainerClosed(EntityPlayer player) {
|
||||
if (this.inventory instanceof IPlayerUsing) {
|
||||
((IPlayerUsing) this.inventory).getPlayersUsing().remove(player);
|
||||
}
|
||||
}
|
||||
|
||||
public ContainerBase(IInventory inventory) {
|
||||
this.inventory = inventory;
|
||||
this.slotCount = inventory.getSizeInventory();
|
||||
}
|
||||
public void addPlayerInventory(EntityPlayer player) {
|
||||
if (this.inventory instanceof IPlayerUsing) {
|
||||
((IPlayerUsing) this.inventory).getPlayersUsing().add(player);
|
||||
}
|
||||
|
||||
public void onContainerClosed(EntityPlayer player) {
|
||||
if(this.inventory instanceof IPlayerUsing) {
|
||||
((IPlayerUsing)this.inventory).getPlayersUsing().remove(player);
|
||||
}
|
||||
int var3;
|
||||
for (var3 = 0; var3 < 3; ++var3) {
|
||||
for (int var4 = 0; var4 < 9; ++var4) {
|
||||
this.addSlotToContainer(new Slot(
|
||||
player.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 135 + var3 * 18
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
for (var3 = 0; var3 < 9; ++var3) {
|
||||
this.addSlotToContainer(new Slot(player.inventory, var3, 8 + var3 * 18, 193));
|
||||
}
|
||||
}
|
||||
|
||||
public void addPlayerInventory(EntityPlayer player) {
|
||||
if(this.inventory instanceof IPlayerUsing) {
|
||||
((IPlayerUsing)this.inventory).getPlayersUsing().add(player);
|
||||
}
|
||||
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int slotID) {
|
||||
ItemStack var2 = null;
|
||||
Slot var3 = (Slot) super.inventorySlots.get(slotID);
|
||||
if (var3 != null && var3.getHasStack()) {
|
||||
ItemStack itemStack = var3.getStack();
|
||||
var2 = itemStack.copy();
|
||||
if (slotID >= this.slotCount) {
|
||||
boolean didTry = false;
|
||||
|
||||
int var3;
|
||||
for(var3 = 0; var3 < 3; ++var3) {
|
||||
for(int var4 = 0; var4 < 9; ++var4) {
|
||||
this.addSlotToContainer(new Slot(player.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 135 + var3 * 18));
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < this.slotCount; ++i) {
|
||||
if (this.getSlot(i).isItemValid(itemStack)) {
|
||||
didTry = true;
|
||||
if (this.mergeItemStack(itemStack, i, i + 1, false)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(var3 = 0; var3 < 9; ++var3) {
|
||||
this.addSlotToContainer(new Slot(player.inventory, var3, 8 + var3 * 18, 193));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int slotID) {
|
||||
ItemStack var2 = null;
|
||||
Slot var3 = (Slot)super.inventorySlots.get(slotID);
|
||||
if(var3 != null && var3.getHasStack()) {
|
||||
ItemStack itemStack = var3.getStack();
|
||||
var2 = itemStack.copy();
|
||||
if(slotID >= this.slotCount) {
|
||||
boolean didTry = false;
|
||||
|
||||
for(int i = 0; i < this.slotCount; ++i) {
|
||||
if(this.getSlot(i).isItemValid(itemStack)) {
|
||||
didTry = true;
|
||||
if(this.mergeItemStack(itemStack, i, i + 1, false)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!didTry) {
|
||||
if (slotID < 27 + this.slotCount) {
|
||||
if (!this.mergeItemStack(
|
||||
itemStack, 27 + this.slotCount, 36 + this.slotCount, false
|
||||
)) {
|
||||
return null;
|
||||
}
|
||||
} else if (slotID >= 27 + this.slotCount && slotID < 36 + this.slotCount && !this.mergeItemStack(itemStack, this.slotCount, 27 + this.slotCount, false)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
} else if (!this.mergeItemStack(
|
||||
itemStack, this.slotCount, 36 + this.slotCount, false
|
||||
)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if(!didTry) {
|
||||
if(slotID < 27 + this.slotCount) {
|
||||
if(!this.mergeItemStack(itemStack, 27 + this.slotCount, 36 + this.slotCount, false)) {
|
||||
return null;
|
||||
}
|
||||
} else if(slotID >= 27 + this.slotCount && slotID < 36 + this.slotCount && !this.mergeItemStack(itemStack, this.slotCount, 27 + this.slotCount, false)) {
|
||||
return null;
|
||||
}
|
||||
if (itemStack.stackSize == 0) {
|
||||
var3.putStack((ItemStack) null);
|
||||
} else {
|
||||
var3.onSlotChanged();
|
||||
}
|
||||
} else if(!this.mergeItemStack(itemStack, this.slotCount, 36 + this.slotCount, false)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if(itemStack.stackSize == 0) {
|
||||
var3.putStack((ItemStack)null);
|
||||
} else {
|
||||
var3.onSlotChanged();
|
||||
}
|
||||
if (itemStack.stackSize == var2.stackSize) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if(itemStack.stackSize == var2.stackSize) {
|
||||
return null;
|
||||
}
|
||||
var3.onPickupFromSlot(par1EntityPlayer, itemStack);
|
||||
}
|
||||
|
||||
var3.onPickupFromSlot(par1EntityPlayer, itemStack);
|
||||
}
|
||||
return var2;
|
||||
}
|
||||
|
||||
return var2;
|
||||
}
|
||||
|
||||
public boolean canInteractWith(EntityPlayer entityplayer) {
|
||||
return this.inventory.isUseableByPlayer(entityplayer);
|
||||
}
|
||||
public boolean canInteractWith(EntityPlayer entityplayer) {
|
||||
return this.inventory.isUseableByPlayer(entityplayer);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package calclavia.lib.gui;
|
||||
|
||||
import calclavia.lib.Calclavia;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import calclavia.lib.Calclavia;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.inventory.GuiContainer;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
|
@ -18,279 +19,364 @@ import universalelectricity.prefab.TranslationHelper;
|
|||
import universalelectricity.prefab.vector.Region2;
|
||||
|
||||
public class GuiContainerBase extends GuiContainer {
|
||||
//private static final int METER_X = 54;
|
||||
public static final int METER_HEIGHT = 49;
|
||||
public static final int METER_WIDTH = 14;
|
||||
public static final int METER_END = 68;
|
||||
public String tooltip = "";
|
||||
protected HashMap<Region2, String> tooltips = new HashMap<>();
|
||||
protected int containerWidth;
|
||||
protected int containerHeight;
|
||||
|
||||
//private static final int METER_X = 54;
|
||||
public static final int METER_HEIGHT = 49;
|
||||
public static final int METER_WIDTH = 14;
|
||||
public static final int METER_END = 68;
|
||||
public String tooltip = "";
|
||||
protected HashMap<Region2, String> tooltips = new HashMap<>();
|
||||
protected int containerWidth;
|
||||
protected int containerHeight;
|
||||
|
||||
public GuiContainerBase(Container container) {
|
||||
super(container);
|
||||
this.ySize = 217;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGuiClosed() {
|
||||
Keyboard.enableRepeatEvents(false);
|
||||
super.onGuiClosed();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
||||
for (Entry<Region2, String> entry : this.tooltips.entrySet()) {
|
||||
if (((Region2)entry.getKey())
|
||||
.isIn(new Vector2((double)(mouseX - this.guiLeft),
|
||||
(double)(mouseY - this.guiTop)))) {
|
||||
this.tooltip = (String)entry.getValue();
|
||||
break;
|
||||
}
|
||||
public GuiContainerBase(Container container) {
|
||||
super(container);
|
||||
this.ySize = 217;
|
||||
}
|
||||
|
||||
if (this.tooltip != null && this.tooltip != "") {
|
||||
this.drawTooltip(mouseX - this.guiLeft, mouseY - this.guiTop,
|
||||
(String[])Calclavia.splitStringPerWord(this.tooltip, 5)
|
||||
.toArray(new String[0]));
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
}
|
||||
|
||||
this.tooltip = "";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float var1, int x, int y) {
|
||||
this.containerWidth = (this.width - this.xSize) / 2;
|
||||
this.containerHeight = (this.height - this.ySize) / 2;
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth, this.containerHeight, 0, 0,
|
||||
this.xSize, this.ySize);
|
||||
}
|
||||
|
||||
protected void drawBulb(int x, int y, boolean isOn) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
if (isOn) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 161, 0, 6, 6);
|
||||
} else {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 161, 4, 6, 6);
|
||||
@Override
|
||||
public void onGuiClosed() {
|
||||
Keyboard.enableRepeatEvents(false);
|
||||
super.onGuiClosed();
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y, ItemStack itemStack) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 0, 0, 18, 18);
|
||||
this.drawItemStack(itemStack, this.containerWidth + x,
|
||||
this.containerHeight + y);
|
||||
}
|
||||
|
||||
protected void drawItemStack(ItemStack itemStack, int x, int y) {
|
||||
++x;
|
||||
++y;
|
||||
GL11.glTranslatef(0.0F, 0.0F, 32.0F);
|
||||
itemRender.renderItemAndEffectIntoGUI(
|
||||
this.fontRendererObj, this.mc.renderEngine, itemStack, x, y);
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(String textName, String format, int x,
|
||||
int y, int mouseX, int mouseY) {
|
||||
this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752);
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(String textName, String format, int x,
|
||||
int y, int mouseX, int mouseY, int color) {
|
||||
String name = TranslationHelper.getLocal("gui." + textName + ".name");
|
||||
String text = format.replaceAll("%1", name);
|
||||
this.fontRendererObj.drawString(text, x, y, color);
|
||||
String tooltip = TranslationHelper.getLocal("gui." + textName + ".tooltip");
|
||||
if (tooltip != null && tooltip != "" &&
|
||||
this.func_146978_c(x, y, (int)((double)text.length() * 4.8D), 12,
|
||||
mouseX, mouseY)) {
|
||||
this.tooltip = tooltip;
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(String textName, int x, int y, int mouseX,
|
||||
int mouseY) {
|
||||
this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY);
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y, GuiSlotType type, float r, float g,
|
||||
float b) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_components.png"));
|
||||
GL11.glColor4f(r, g, b, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 0, 0, 18, 18);
|
||||
if (type != GuiSlotType.NONE) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 0,
|
||||
18 * type.ordinal(), 18, 18);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y, GuiSlotType type) {
|
||||
this.drawSlot(x, y, type, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y) {
|
||||
this.drawSlot(x, y, GuiSlotType.NONE);
|
||||
}
|
||||
|
||||
protected void drawBar(int x, int y, float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_components.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 18, 0, 22, 15);
|
||||
if (scale > 0.0F) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 18, 15,
|
||||
22 - (int)(scale * 22.0F), 15);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawForce(int x, int y, float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_components.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 54, 0, 107, 11);
|
||||
if (scale > 0.0F) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 54, 11,
|
||||
(int)(scale * 107.0F), 11);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawElectricity(int x, int y, float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_components.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 54, 0, 107, 11);
|
||||
if (scale > 0.0F) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 54, 22,
|
||||
(int)(scale * 107.0F), 11);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawMeter(int x, int y, float scale, FluidStack liquidStack) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 40, 0, 14, 49);
|
||||
this.displayGauge(this.containerWidth + x, this.containerHeight + y, 0, 0,
|
||||
(int)(48.0F * scale), liquidStack);
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png"));
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 40, 98, 14, 49);
|
||||
}
|
||||
|
||||
public void drawTooltip(int x, int y, String... toolTips) {
|
||||
if (!GuiScreen.isShiftKeyDown()) {
|
||||
GL11.glDisable('\u803a');
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
GL11.glDisable(2896);
|
||||
GL11.glDisable(2929);
|
||||
if (toolTips != null) {
|
||||
int var5 = 0;
|
||||
|
||||
int var6;
|
||||
int var7;
|
||||
for (var6 = 0; var6 < toolTips.length; ++var6) {
|
||||
var7 = this.fontRendererObj.getStringWidth(toolTips[var6]);
|
||||
if (var7 > var5) {
|
||||
var5 = var7;
|
||||
}
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
|
||||
for (Entry<Region2, String> entry : this.tooltips.entrySet()) {
|
||||
if (((Region2) entry.getKey())
|
||||
.isIn(new Vector2(
|
||||
(double) (mouseX - this.guiLeft), (double) (mouseY - this.guiTop)
|
||||
))) {
|
||||
this.tooltip = (String) entry.getValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var6 = x + 12;
|
||||
var7 = y - 12;
|
||||
int var9 = 8;
|
||||
if (toolTips.length > 1) {
|
||||
var9 += 2 + (toolTips.length - 1) * 10;
|
||||
if (this.tooltip != null && this.tooltip != "") {
|
||||
this.drawTooltip(
|
||||
mouseX - this.guiLeft,
|
||||
mouseY - this.guiTop,
|
||||
(String[]) Calclavia.splitStringPerWord(this.tooltip, 5)
|
||||
.toArray(new String[0])
|
||||
);
|
||||
}
|
||||
|
||||
if (this.guiTop + var7 + var9 + 6 > this.height) {
|
||||
var7 = this.height - var9 - this.guiTop - 6;
|
||||
}
|
||||
|
||||
super.zLevel = 300.0F;
|
||||
int var10 = -267386864;
|
||||
this.drawGradientRect(var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3,
|
||||
var10, var10);
|
||||
this.drawGradientRect(var6 - 3, var7 + var9 + 3, var6 + var5 + 3,
|
||||
var7 + var9 + 4, var10, var10);
|
||||
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3,
|
||||
var7 + var9 + 3, var10, var10);
|
||||
this.drawGradientRect(var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3,
|
||||
var10, var10);
|
||||
this.drawGradientRect(var6 + var5 + 3, var7 - 3, var6 + var5 + 4,
|
||||
var7 + var9 + 3, var10, var10);
|
||||
int var11 = 1347420415;
|
||||
int var12 = (var11 & 16711422) >> 1 | var11 & -16777216;
|
||||
this.drawGradientRect(var6 - 3, var7 - 3 + 1, var6 - 3 + 1,
|
||||
var7 + var9 + 3 - 1, var11, var12);
|
||||
this.drawGradientRect(var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3,
|
||||
var7 + var9 + 3 - 1, var11, var12);
|
||||
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1,
|
||||
var11, var11);
|
||||
this.drawGradientRect(var6 - 3, var7 + var9 + 2, var6 + var5 + 3,
|
||||
var7 + var9 + 3, var12, var12);
|
||||
|
||||
for (int var13 = 0; var13 < toolTips.length; ++var13) {
|
||||
String var14 = toolTips[var13];
|
||||
this.fontRendererObj.drawStringWithShadow(var14, var6, var7, -1);
|
||||
var7 += 10;
|
||||
}
|
||||
|
||||
super.zLevel = 0.0F;
|
||||
GL11.glEnable(2929);
|
||||
GL11.glEnable(2896);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable('\u803a');
|
||||
}
|
||||
this.tooltip = "";
|
||||
}
|
||||
}
|
||||
|
||||
protected void displayGauge(int j, int k, int line, int col, int squaled,
|
||||
FluidStack liquid) {
|
||||
if (liquid != null) {
|
||||
int start = 0;
|
||||
IIcon liquidIcon = liquid.getFluid().getIcon();
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float var1, int x, int y) {
|
||||
this.containerWidth = (this.width - this.xSize) / 2;
|
||||
this.containerHeight = (this.height - this.ySize) / 2;
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth, this.containerHeight, 0, 0, this.xSize, this.ySize
|
||||
);
|
||||
}
|
||||
|
||||
int x1;
|
||||
do {
|
||||
if (squaled > 16) {
|
||||
x1 = 16;
|
||||
squaled -= 16;
|
||||
protected void drawBulb(int x, int y, boolean isOn) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
if (isOn) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 161, 0, 6, 6
|
||||
);
|
||||
} else {
|
||||
x1 = squaled;
|
||||
squaled = 0;
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 161, 4, 6, 6
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y, ItemStack itemStack) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 0, 0, 18, 18
|
||||
);
|
||||
this.drawItemStack(itemStack, this.containerWidth + x, this.containerHeight + y);
|
||||
}
|
||||
|
||||
protected void drawItemStack(ItemStack itemStack, int x, int y) {
|
||||
++x;
|
||||
++y;
|
||||
GL11.glTranslatef(0.0F, 0.0F, 32.0F);
|
||||
itemRender.renderItemAndEffectIntoGUI(
|
||||
this.fontRendererObj, this.mc.renderEngine, itemStack, x, y
|
||||
);
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(
|
||||
String textName, String format, int x, int y, int mouseX, int mouseY
|
||||
) {
|
||||
this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752);
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(
|
||||
String textName, String format, int x, int y, int mouseX, int mouseY, int color
|
||||
) {
|
||||
String name = TranslationHelper.getLocal("gui." + textName + ".name");
|
||||
String text = format.replaceAll("%1", name);
|
||||
this.fontRendererObj.drawString(text, x, y, color);
|
||||
String tooltip = TranslationHelper.getLocal("gui." + textName + ".tooltip");
|
||||
if (tooltip != null && tooltip != ""
|
||||
&& this.func_146978_c(
|
||||
x, y, (int) ((double) text.length() * 4.8D), 12, mouseX, mouseY
|
||||
)) {
|
||||
this.tooltip = tooltip;
|
||||
}
|
||||
}
|
||||
|
||||
protected void
|
||||
drawTextWithTooltip(String textName, int x, int y, int mouseX, int mouseY) {
|
||||
this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY);
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y, GuiSlotType type, float r, float g, float b) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_components.png")
|
||||
);
|
||||
GL11.glColor4f(r, g, b, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 0, 0, 18, 18
|
||||
);
|
||||
if (type != GuiSlotType.NONE) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
0,
|
||||
18 * type.ordinal(),
|
||||
18,
|
||||
18
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y, GuiSlotType type) {
|
||||
this.drawSlot(x, y, type, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y) {
|
||||
this.drawSlot(x, y, GuiSlotType.NONE);
|
||||
}
|
||||
|
||||
protected void drawBar(int x, int y, float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_components.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 18, 0, 22, 15
|
||||
);
|
||||
if (scale > 0.0F) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
18,
|
||||
15,
|
||||
22 - (int) (scale * 22.0F),
|
||||
15
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawForce(int x, int y, float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_components.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 54, 0, 107, 11
|
||||
);
|
||||
if (scale > 0.0F) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
54,
|
||||
11,
|
||||
(int) (scale * 107.0F),
|
||||
11
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawElectricity(int x, int y, float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_components.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 54, 0, 107, 11
|
||||
);
|
||||
if (scale > 0.0F) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
54,
|
||||
22,
|
||||
(int) (scale * 107.0F),
|
||||
11
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawMeter(int x, int y, float scale, FluidStack liquidStack) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 40, 0, 14, 49
|
||||
);
|
||||
this.displayGauge(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
0,
|
||||
0,
|
||||
(int) (48.0F * scale),
|
||||
liquidStack
|
||||
);
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png")
|
||||
);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 40, 98, 14, 49
|
||||
);
|
||||
}
|
||||
|
||||
public void drawTooltip(int x, int y, String... toolTips) {
|
||||
if (!GuiScreen.isShiftKeyDown()) {
|
||||
GL11.glDisable('\u803a');
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
GL11.glDisable(2896);
|
||||
GL11.glDisable(2929);
|
||||
if (toolTips != null) {
|
||||
int var5 = 0;
|
||||
|
||||
int var6;
|
||||
int var7;
|
||||
for (var6 = 0; var6 < toolTips.length; ++var6) {
|
||||
var7 = this.fontRendererObj.getStringWidth(toolTips[var6]);
|
||||
if (var7 > var5) {
|
||||
var5 = var7;
|
||||
}
|
||||
}
|
||||
|
||||
var6 = x + 12;
|
||||
var7 = y - 12;
|
||||
int var9 = 8;
|
||||
if (toolTips.length > 1) {
|
||||
var9 += 2 + (toolTips.length - 1) * 10;
|
||||
}
|
||||
|
||||
if (this.guiTop + var7 + var9 + 6 > this.height) {
|
||||
var7 = this.height - var9 - this.guiTop - 6;
|
||||
}
|
||||
|
||||
super.zLevel = 300.0F;
|
||||
int var10 = -267386864;
|
||||
this.drawGradientRect(
|
||||
var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, var10, var10
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 3,
|
||||
var7 + var9 + 3,
|
||||
var6 + var5 + 3,
|
||||
var7 + var9 + 4,
|
||||
var10,
|
||||
var10
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 3, var7 - 3, var6 + var5 + 3, var7 + var9 + 3, var10, var10
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, var10, var10
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 + var5 + 3,
|
||||
var7 - 3,
|
||||
var6 + var5 + 4,
|
||||
var7 + var9 + 3,
|
||||
var10,
|
||||
var10
|
||||
);
|
||||
int var11 = 1347420415;
|
||||
int var12 = (var11 & 16711422) >> 1 | var11 & -16777216;
|
||||
this.drawGradientRect(
|
||||
var6 - 3,
|
||||
var7 - 3 + 1,
|
||||
var6 - 3 + 1,
|
||||
var7 + var9 + 3 - 1,
|
||||
var11,
|
||||
var12
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 + var5 + 2,
|
||||
var7 - 3 + 1,
|
||||
var6 + var5 + 3,
|
||||
var7 + var9 + 3 - 1,
|
||||
var11,
|
||||
var12
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var11, var11
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 3,
|
||||
var7 + var9 + 2,
|
||||
var6 + var5 + 3,
|
||||
var7 + var9 + 3,
|
||||
var12,
|
||||
var12
|
||||
);
|
||||
|
||||
for (int var13 = 0; var13 < toolTips.length; ++var13) {
|
||||
String var14 = toolTips[var13];
|
||||
this.fontRendererObj.drawStringWithShadow(var14, var6, var7, -1);
|
||||
var7 += 10;
|
||||
}
|
||||
|
||||
super.zLevel = 0.0F;
|
||||
GL11.glEnable(2929);
|
||||
GL11.glEnable(2896);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable('\u803a');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void
|
||||
displayGauge(int j, int k, int line, int col, int squaled, FluidStack liquid) {
|
||||
if (liquid != null) {
|
||||
int start = 0;
|
||||
IIcon liquidIcon = liquid.getFluid().getIcon();
|
||||
|
||||
int x1;
|
||||
do {
|
||||
if (squaled > 16) {
|
||||
x1 = 16;
|
||||
squaled -= 16;
|
||||
} else {
|
||||
x1 = squaled;
|
||||
squaled = 0;
|
||||
}
|
||||
|
||||
this.drawTexturedModelRectFromIcon(
|
||||
j + col, k + line + 58 - x1 - start, liquidIcon, 16, 16 - (16 - x1)
|
||||
);
|
||||
start += 16;
|
||||
} while (x1 != 0 && squaled != 0);
|
||||
}
|
||||
|
||||
this.drawTexturedModelRectFromIcon(j + col, k + line + 58 - x1 - start,
|
||||
liquidIcon, 16, 16 - (16 - x1));
|
||||
start += 16;
|
||||
} while (x1 != 0 && squaled != 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package calclavia.lib.gui;
|
||||
|
||||
import calclavia.lib.Calclavia;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import calclavia.lib.Calclavia;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.util.IIcon;
|
||||
|
@ -15,257 +16,342 @@ import universalelectricity.prefab.TranslationHelper;
|
|||
import universalelectricity.prefab.vector.Region2;
|
||||
|
||||
public class GuiScreenBase extends GuiBase {
|
||||
// private static final int METER_X = 54;
|
||||
public static final int METER_HEIGHT = 49;
|
||||
public static final int METER_WIDTH = 14;
|
||||
public static final int METER_END = 68;
|
||||
public String tooltip = "";
|
||||
protected HashMap<Region2, String> tooltips = new HashMap<>();
|
||||
protected int containerWidth;
|
||||
protected int containerHeight;
|
||||
|
||||
// private static final int METER_X = 54;
|
||||
public static final int METER_HEIGHT = 49;
|
||||
public static final int METER_WIDTH = 14;
|
||||
public static final int METER_END = 68;
|
||||
public String tooltip = "";
|
||||
protected HashMap<Region2, String> tooltips = new HashMap<>();
|
||||
protected int containerWidth;
|
||||
protected int containerHeight;
|
||||
|
||||
public GuiScreenBase() { super.ySize = 217; }
|
||||
|
||||
@Override
|
||||
protected void drawForegroundLayer(int mouseX, int mouseY, float var1) {
|
||||
for (Entry<Region2, String> entry : this.tooltips.entrySet()) {
|
||||
if (((Region2)entry.getKey())
|
||||
.isIn(new Vector2((double)(mouseX - this.guiLeft),
|
||||
(double)(mouseY - this.guiTop)))) {
|
||||
this.tooltip = (String)entry.getValue();
|
||||
break;
|
||||
}
|
||||
public GuiScreenBase() {
|
||||
super.ySize = 217;
|
||||
}
|
||||
|
||||
if (this.tooltip != null && this.tooltip != "") {
|
||||
this.drawTooltip(mouseX - this.guiLeft, mouseY - this.guiTop,
|
||||
(String[])Calclavia.splitStringPerWord(this.tooltip, 5)
|
||||
.toArray(new String[0]));
|
||||
}
|
||||
|
||||
this.tooltip = "";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawBackgroundLayer(int x, int y, float var1) {
|
||||
this.containerWidth = (this.width - this.xSize) / 2;
|
||||
this.containerHeight = (this.height - this.ySize) / 2;
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth, this.containerHeight, 0, 0,
|
||||
this.xSize, this.ySize);
|
||||
}
|
||||
|
||||
protected void drawBulb(int x, int y, boolean isOn) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
if (isOn) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 161, 0, 6, 6);
|
||||
} else {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 161, 4, 6, 6);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(String textName, String format, int x,
|
||||
int y, int mouseX, int mouseY) {
|
||||
this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752);
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(String textName, String format, int x,
|
||||
int y, int mouseX, int mouseY, int color) {
|
||||
String name = TranslationHelper.getLocal("gui." + textName + ".name");
|
||||
String text = format.replaceAll("%1", name);
|
||||
this.fontRendererObj.drawString(text, x, y, color);
|
||||
String tooltip = TranslationHelper.getLocal("gui." + textName + ".tooltip");
|
||||
if (tooltip != null && tooltip != "" &&
|
||||
this.isPointInRegion(x, y, (int)((double)text.length() * 4.8D), 12,
|
||||
mouseX, mouseY)) {
|
||||
this.tooltip = tooltip;
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean isPointInRegion(int par1, int par2, int par3, int par4,
|
||||
int par5, int par6) {
|
||||
int k1 = super.guiLeft;
|
||||
int l1 = super.guiTop;
|
||||
par5 -= k1;
|
||||
par6 -= l1;
|
||||
return par5 >= par1 - 1 && par5 < par1 + par3 + 1 && par6 >= par2 - 1 &&
|
||||
par6 < par2 + par4 + 1;
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(String textName, int x, int y, int mouseX,
|
||||
int mouseY) {
|
||||
this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY);
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y, GuiSlotType type, float r, float g,
|
||||
float b) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_empty.png"));
|
||||
GL11.glColor4f(r, g, b, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 0, 0, 18, 18);
|
||||
if (type != GuiSlotType.NONE) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 0,
|
||||
18 * type.ordinal(), 18, 18);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y, GuiSlotType type) {
|
||||
this.drawSlot(x, y, type, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y) {
|
||||
this.drawSlot(x, y, GuiSlotType.NONE);
|
||||
}
|
||||
|
||||
protected void drawBar(int x, int y, float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_empty.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 18, 0, 22, 15);
|
||||
if (scale > 0.0F) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 18, 15,
|
||||
22 - (int)(scale * 22.0F), 15);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawForce(int x, int y, float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_empty.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 54, 0, 107, 11);
|
||||
if (scale > 0.0F) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 54, 11,
|
||||
(int)(scale * 107.0F), 11);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawElectricity(int x, int y, float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_empty.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 54, 0, 107, 11);
|
||||
if (scale > 0.0F) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 54, 22,
|
||||
(int)(scale * 107.0F), 11);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawMeter(int x, int y, float scale, FluidStack liquidStack) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_empty.png"));
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 40, 0, 14, 49);
|
||||
this.displayGauge(this.containerWidth + x, this.containerHeight + y, 0, 0,
|
||||
(int)(48.0F * scale), liquidStack);
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_empty.png"));
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 40, 98, 14, 49);
|
||||
}
|
||||
|
||||
public void drawTooltip(int x, int y, String... toolTips) {
|
||||
if (!GuiScreen.isShiftKeyDown()) {
|
||||
GL11.glDisable('\u803a');
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
GL11.glDisable(2896);
|
||||
GL11.glDisable(2929);
|
||||
if (toolTips != null) {
|
||||
int var5 = 0;
|
||||
|
||||
int var6;
|
||||
int var7;
|
||||
for (var6 = 0; var6 < toolTips.length; ++var6) {
|
||||
var7 = this.fontRendererObj.getStringWidth(toolTips[var6]);
|
||||
if (var7 > var5) {
|
||||
var5 = var7;
|
||||
}
|
||||
@Override
|
||||
protected void drawForegroundLayer(int mouseX, int mouseY, float var1) {
|
||||
for (Entry<Region2, String> entry : this.tooltips.entrySet()) {
|
||||
if (((Region2) entry.getKey())
|
||||
.isIn(new Vector2(
|
||||
(double) (mouseX - this.guiLeft), (double) (mouseY - this.guiTop)
|
||||
))) {
|
||||
this.tooltip = (String) entry.getValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var6 = x + 12;
|
||||
var7 = y - 12;
|
||||
int var9 = 8;
|
||||
if (toolTips.length > 1) {
|
||||
var9 += 2 + (toolTips.length - 1) * 10;
|
||||
if (this.tooltip != null && this.tooltip != "") {
|
||||
this.drawTooltip(
|
||||
mouseX - this.guiLeft,
|
||||
mouseY - this.guiTop,
|
||||
(String[]) Calclavia.splitStringPerWord(this.tooltip, 5)
|
||||
.toArray(new String[0])
|
||||
);
|
||||
}
|
||||
|
||||
if (super.guiTop + var7 + var9 + 6 > this.height) {
|
||||
var7 = this.height - var9 - super.guiTop - 6;
|
||||
}
|
||||
|
||||
super.zLevel = 300.0F;
|
||||
int var10 = -267386864;
|
||||
this.drawGradientRect(var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3,
|
||||
var10, var10);
|
||||
this.drawGradientRect(var6 - 3, var7 + var9 + 3, var6 + var5 + 3,
|
||||
var7 + var9 + 4, var10, var10);
|
||||
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3,
|
||||
var7 + var9 + 3, var10, var10);
|
||||
this.drawGradientRect(var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3,
|
||||
var10, var10);
|
||||
this.drawGradientRect(var6 + var5 + 3, var7 - 3, var6 + var5 + 4,
|
||||
var7 + var9 + 3, var10, var10);
|
||||
int var11 = 1347420415;
|
||||
int var12 = (var11 & 16711422) >> 1 | var11 & -16777216;
|
||||
this.drawGradientRect(var6 - 3, var7 - 3 + 1, var6 - 3 + 1,
|
||||
var7 + var9 + 3 - 1, var11, var12);
|
||||
this.drawGradientRect(var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3,
|
||||
var7 + var9 + 3 - 1, var11, var12);
|
||||
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1,
|
||||
var11, var11);
|
||||
this.drawGradientRect(var6 - 3, var7 + var9 + 2, var6 + var5 + 3,
|
||||
var7 + var9 + 3, var12, var12);
|
||||
|
||||
for (int var13 = 0; var13 < toolTips.length; ++var13) {
|
||||
String var14 = toolTips[var13];
|
||||
this.fontRendererObj.drawStringWithShadow(var14, var6, var7, -1);
|
||||
var7 += 10;
|
||||
}
|
||||
|
||||
super.zLevel = 0.0F;
|
||||
GL11.glEnable(2929);
|
||||
GL11.glEnable(2896);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable('\u803a');
|
||||
}
|
||||
this.tooltip = "";
|
||||
}
|
||||
}
|
||||
|
||||
protected void displayGauge(int j, int k, int line, int col, int squaled,
|
||||
FluidStack liquid) {
|
||||
if (liquid != null) {
|
||||
int start = 0;
|
||||
IIcon liquidIcon = liquid.getFluid().getIcon();
|
||||
@Override
|
||||
protected void drawBackgroundLayer(int x, int y, float var1) {
|
||||
this.containerWidth = (this.width - this.xSize) / 2;
|
||||
this.containerHeight = (this.height - this.ySize) / 2;
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth, this.containerHeight, 0, 0, this.xSize, this.ySize
|
||||
);
|
||||
}
|
||||
|
||||
int x1;
|
||||
do {
|
||||
if (squaled > 16) {
|
||||
x1 = 16;
|
||||
squaled -= 16;
|
||||
protected void drawBulb(int x, int y, boolean isOn) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_base.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
if (isOn) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 161, 0, 6, 6
|
||||
);
|
||||
} else {
|
||||
x1 = squaled;
|
||||
squaled = 0;
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 161, 4, 6, 6
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(
|
||||
String textName, String format, int x, int y, int mouseX, int mouseY
|
||||
) {
|
||||
this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752);
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(
|
||||
String textName, String format, int x, int y, int mouseX, int mouseY, int color
|
||||
) {
|
||||
String name = TranslationHelper.getLocal("gui." + textName + ".name");
|
||||
String text = format.replaceAll("%1", name);
|
||||
this.fontRendererObj.drawString(text, x, y, color);
|
||||
String tooltip = TranslationHelper.getLocal("gui." + textName + ".tooltip");
|
||||
if (tooltip != null && tooltip != ""
|
||||
&& this.isPointInRegion(
|
||||
x, y, (int) ((double) text.length() * 4.8D), 12, mouseX, mouseY
|
||||
)) {
|
||||
this.tooltip = tooltip;
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean
|
||||
isPointInRegion(int par1, int par2, int par3, int par4, int par5, int par6) {
|
||||
int k1 = super.guiLeft;
|
||||
int l1 = super.guiTop;
|
||||
par5 -= k1;
|
||||
par6 -= l1;
|
||||
return par5 >= par1 - 1 && par5 < par1 + par3 + 1 && par6 >= par2 - 1
|
||||
&& par6 < par2 + par4 + 1;
|
||||
}
|
||||
|
||||
protected void
|
||||
drawTextWithTooltip(String textName, int x, int y, int mouseX, int mouseY) {
|
||||
this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY);
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y, GuiSlotType type, float r, float g, float b) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_empty.png")
|
||||
);
|
||||
GL11.glColor4f(r, g, b, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 0, 0, 18, 18
|
||||
);
|
||||
if (type != GuiSlotType.NONE) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
0,
|
||||
18 * type.ordinal(),
|
||||
18,
|
||||
18
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y, GuiSlotType type) {
|
||||
this.drawSlot(x, y, type, 1.0F, 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
protected void drawSlot(int x, int y) {
|
||||
this.drawSlot(x, y, GuiSlotType.NONE);
|
||||
}
|
||||
|
||||
protected void drawBar(int x, int y, float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_empty.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 18, 0, 22, 15
|
||||
);
|
||||
if (scale > 0.0F) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
18,
|
||||
15,
|
||||
22 - (int) (scale * 22.0F),
|
||||
15
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawForce(int x, int y, float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_empty.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 54, 0, 107, 11
|
||||
);
|
||||
if (scale > 0.0F) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
54,
|
||||
11,
|
||||
(int) (scale * 107.0F),
|
||||
11
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawElectricity(int x, int y, float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_empty.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 54, 0, 107, 11
|
||||
);
|
||||
if (scale > 0.0F) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
54,
|
||||
22,
|
||||
(int) (scale * 107.0F),
|
||||
11
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawMeter(int x, int y, float scale, FluidStack liquidStack) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_empty.png")
|
||||
);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 40, 0, 14, 49
|
||||
);
|
||||
this.displayGauge(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
0,
|
||||
0,
|
||||
(int) (48.0F * scale),
|
||||
liquidStack
|
||||
);
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("calclavia", "textures/gui/gui_empty.png")
|
||||
);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 40, 98, 14, 49
|
||||
);
|
||||
}
|
||||
|
||||
public void drawTooltip(int x, int y, String... toolTips) {
|
||||
if (!GuiScreen.isShiftKeyDown()) {
|
||||
GL11.glDisable('\u803a');
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
GL11.glDisable(2896);
|
||||
GL11.glDisable(2929);
|
||||
if (toolTips != null) {
|
||||
int var5 = 0;
|
||||
|
||||
int var6;
|
||||
int var7;
|
||||
for (var6 = 0; var6 < toolTips.length; ++var6) {
|
||||
var7 = this.fontRendererObj.getStringWidth(toolTips[var6]);
|
||||
if (var7 > var5) {
|
||||
var5 = var7;
|
||||
}
|
||||
}
|
||||
|
||||
var6 = x + 12;
|
||||
var7 = y - 12;
|
||||
int var9 = 8;
|
||||
if (toolTips.length > 1) {
|
||||
var9 += 2 + (toolTips.length - 1) * 10;
|
||||
}
|
||||
|
||||
if (super.guiTop + var7 + var9 + 6 > this.height) {
|
||||
var7 = this.height - var9 - super.guiTop - 6;
|
||||
}
|
||||
|
||||
super.zLevel = 300.0F;
|
||||
int var10 = -267386864;
|
||||
this.drawGradientRect(
|
||||
var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, var10, var10
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 3,
|
||||
var7 + var9 + 3,
|
||||
var6 + var5 + 3,
|
||||
var7 + var9 + 4,
|
||||
var10,
|
||||
var10
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 3, var7 - 3, var6 + var5 + 3, var7 + var9 + 3, var10, var10
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, var10, var10
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 + var5 + 3,
|
||||
var7 - 3,
|
||||
var6 + var5 + 4,
|
||||
var7 + var9 + 3,
|
||||
var10,
|
||||
var10
|
||||
);
|
||||
int var11 = 1347420415;
|
||||
int var12 = (var11 & 16711422) >> 1 | var11 & -16777216;
|
||||
this.drawGradientRect(
|
||||
var6 - 3,
|
||||
var7 - 3 + 1,
|
||||
var6 - 3 + 1,
|
||||
var7 + var9 + 3 - 1,
|
||||
var11,
|
||||
var12
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 + var5 + 2,
|
||||
var7 - 3 + 1,
|
||||
var6 + var5 + 3,
|
||||
var7 + var9 + 3 - 1,
|
||||
var11,
|
||||
var12
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var11, var11
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 3,
|
||||
var7 + var9 + 2,
|
||||
var6 + var5 + 3,
|
||||
var7 + var9 + 3,
|
||||
var12,
|
||||
var12
|
||||
);
|
||||
|
||||
for (int var13 = 0; var13 < toolTips.length; ++var13) {
|
||||
String var14 = toolTips[var13];
|
||||
this.fontRendererObj.drawStringWithShadow(var14, var6, var7, -1);
|
||||
var7 += 10;
|
||||
}
|
||||
|
||||
super.zLevel = 0.0F;
|
||||
GL11.glEnable(2929);
|
||||
GL11.glEnable(2896);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable('\u803a');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void
|
||||
displayGauge(int j, int k, int line, int col, int squaled, FluidStack liquid) {
|
||||
if (liquid != null) {
|
||||
int start = 0;
|
||||
IIcon liquidIcon = liquid.getFluid().getIcon();
|
||||
|
||||
int x1;
|
||||
do {
|
||||
if (squaled > 16) {
|
||||
x1 = 16;
|
||||
squaled -= 16;
|
||||
} else {
|
||||
x1 = squaled;
|
||||
squaled = 0;
|
||||
}
|
||||
|
||||
this.drawTexturedModelRectFromIcon(
|
||||
j + col, k + line + 58 - x1 - start, liquidIcon, 16, 16 - (16 - x1)
|
||||
);
|
||||
start += 16;
|
||||
} while (x1 != 0 && squaled != 0);
|
||||
}
|
||||
|
||||
this.drawTexturedModelRectFromIcon(j + col, k + line + 58 - x1 - start,
|
||||
liquidIcon, 16, 16 - (16 - x1));
|
||||
start += 16;
|
||||
} while (x1 != 0 && squaled != 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,23 +1,22 @@
|
|||
package calclavia.lib.gui;
|
||||
|
||||
|
||||
public enum GuiSlotType {
|
||||
NONE("NONE", 0),
|
||||
BATTERY("BATTERY", 1),
|
||||
LIQUID("LIQUID", 2),
|
||||
ARR_UP("ARR_UP", 3),
|
||||
ARR_DOWN("ARR_DOWN", 4),
|
||||
ARR_LEFT("ARR_LEFT", 5),
|
||||
ARR_RIGHT("ARR_RIGHT", 6),
|
||||
ARR_UP_RIGHT("ARR_UP_RIGHT", 7),
|
||||
ARR_UP_LEFT("ARR_UP_LEFT", 8),
|
||||
ARR_DOWN_LEFT("ARR_DOWN_LEFT", 9),
|
||||
ARR_DOWN_RIGHT("ARR_DOWN_RIGHT", 10);
|
||||
// $FF: synthetic field
|
||||
private static final GuiSlotType[] $VALUES
|
||||
= new GuiSlotType[] { NONE, BATTERY, LIQUID, ARR_UP,
|
||||
ARR_DOWN, ARR_LEFT, ARR_RIGHT, ARR_UP_RIGHT,
|
||||
ARR_UP_LEFT, ARR_DOWN_LEFT, ARR_DOWN_RIGHT };
|
||||
|
||||
NONE("NONE", 0),
|
||||
BATTERY("BATTERY", 1),
|
||||
LIQUID("LIQUID", 2),
|
||||
ARR_UP("ARR_UP", 3),
|
||||
ARR_DOWN("ARR_DOWN", 4),
|
||||
ARR_LEFT("ARR_LEFT", 5),
|
||||
ARR_RIGHT("ARR_RIGHT", 6),
|
||||
ARR_UP_RIGHT("ARR_UP_RIGHT", 7),
|
||||
ARR_UP_LEFT("ARR_UP_LEFT", 8),
|
||||
ARR_DOWN_LEFT("ARR_DOWN_LEFT", 9),
|
||||
ARR_DOWN_RIGHT("ARR_DOWN_RIGHT", 10);
|
||||
// $FF: synthetic field
|
||||
private static final GuiSlotType[] $VALUES = new GuiSlotType[]{NONE, BATTERY, LIQUID, ARR_UP, ARR_DOWN, ARR_LEFT, ARR_RIGHT, ARR_UP_RIGHT, ARR_UP_LEFT, ARR_DOWN_LEFT, ARR_DOWN_RIGHT};
|
||||
|
||||
|
||||
private GuiSlotType(String var1, int var2) {}
|
||||
|
||||
private GuiSlotType(String var1, int var2) {}
|
||||
}
|
||||
|
|
|
@ -10,102 +10,147 @@ import net.minecraft.client.renderer.entity.RenderManager;
|
|||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class CalclaviaRenderHelper {
|
||||
public static void enableBlending() {
|
||||
GL11.glShadeModel(7425);
|
||||
GL11.glEnable(3042);
|
||||
GL11.glBlendFunc(770, 771);
|
||||
}
|
||||
|
||||
public static void enableBlending() {
|
||||
GL11.glShadeModel(7425);
|
||||
GL11.glEnable(3042);
|
||||
GL11.glBlendFunc(770, 771);
|
||||
}
|
||||
public static void disableBlending() {
|
||||
GL11.glShadeModel(7424);
|
||||
GL11.glDisable(2848);
|
||||
GL11.glDisable(2881);
|
||||
GL11.glDisable(3042);
|
||||
}
|
||||
|
||||
public static void disableBlending() {
|
||||
GL11.glShadeModel(7424);
|
||||
GL11.glDisable(2848);
|
||||
GL11.glDisable(2881);
|
||||
GL11.glDisable(3042);
|
||||
}
|
||||
public static void enableLighting() {
|
||||
RenderHelper.enableStandardItemLighting();
|
||||
}
|
||||
|
||||
public static void enableLighting() {
|
||||
RenderHelper.enableStandardItemLighting();
|
||||
}
|
||||
public static void disableLighting() {
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
OpenGlHelper.setLightmapTextureCoords(
|
||||
OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F
|
||||
);
|
||||
}
|
||||
|
||||
public static void disableLighting() {
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F);
|
||||
}
|
||||
public static void
|
||||
renderNormalBlockAsItem(Block block, int metadata, RenderBlocks renderer) {
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
block.setBlockBoundsForItemRender();
|
||||
renderer.setRenderBoundsFromBlock(block);
|
||||
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, -1.0F, 0.0F);
|
||||
renderer.renderFaceYNeg(
|
||||
block,
|
||||
0.0D,
|
||||
0.0D,
|
||||
0.0D,
|
||||
renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)
|
||||
);
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 1.0F, 0.0F);
|
||||
renderer.renderFaceYPos(
|
||||
block,
|
||||
0.0D,
|
||||
0.0D,
|
||||
0.0D,
|
||||
renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)
|
||||
);
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, -1.0F);
|
||||
renderer.renderFaceZNeg(
|
||||
block,
|
||||
0.0D,
|
||||
0.0D,
|
||||
0.0D,
|
||||
renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)
|
||||
);
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, 1.0F);
|
||||
renderer.renderFaceZPos(
|
||||
block,
|
||||
0.0D,
|
||||
0.0D,
|
||||
0.0D,
|
||||
renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)
|
||||
);
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(-1.0F, 0.0F, 0.0F);
|
||||
renderer.renderFaceXNeg(
|
||||
block,
|
||||
0.0D,
|
||||
0.0D,
|
||||
0.0D,
|
||||
renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)
|
||||
);
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(1.0F, 0.0F, 0.0F);
|
||||
renderer.renderFaceXPos(
|
||||
block,
|
||||
0.0D,
|
||||
0.0D,
|
||||
0.0D,
|
||||
renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)
|
||||
);
|
||||
tessellator.draw();
|
||||
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
||||
}
|
||||
|
||||
public static void renderNormalBlockAsItem(Block block, int metadata, RenderBlocks renderer) {
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
block.setBlockBoundsForItemRender();
|
||||
renderer.setRenderBoundsFromBlock(block);
|
||||
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, -1.0F, 0.0F);
|
||||
renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 1.0F, 0.0F);
|
||||
renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, -1.0F);
|
||||
renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, 1.0F);
|
||||
renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(-1.0F, 0.0F, 0.0F);
|
||||
renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(1.0F, 0.0F, 0.0F);
|
||||
renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata));
|
||||
tessellator.draw();
|
||||
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
||||
}
|
||||
public static void renderFloatingText(String text, float x, float y, float z) {
|
||||
renderFloatingText(text, x, y, z, 16777215);
|
||||
}
|
||||
|
||||
public static void renderFloatingText(String text, float x, float y, float z) {
|
||||
renderFloatingText(text, x, y, z, 16777215);
|
||||
}
|
||||
|
||||
public static void renderFloatingText(String text, float x, float y, float z, int color) {
|
||||
RenderManager renderManager = RenderManager.instance;
|
||||
FontRenderer fontRenderer = renderManager.getFontRenderer();
|
||||
float scale = 0.027F;
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(x + 0.0F, y + 2.3F, z);
|
||||
GL11.glNormal3f(0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(-renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
|
||||
GL11.glScalef(-scale, -scale, scale);
|
||||
GL11.glDisable(2896);
|
||||
GL11.glDepthMask(false);
|
||||
GL11.glDisable(2929);
|
||||
GL11.glEnable(3042);
|
||||
GL11.glBlendFunc(770, 771);
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
byte yOffset = 0;
|
||||
GL11.glDisable(3553);
|
||||
tessellator.startDrawingQuads();
|
||||
int stringMiddle = fontRenderer.getStringWidth(text) / 2;
|
||||
tessellator.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.5F);
|
||||
tessellator.addVertex((double)(-stringMiddle - 1), (double)(-1 + yOffset), 0.0D);
|
||||
tessellator.addVertex((double)(-stringMiddle - 1), (double)(8 + yOffset), 0.0D);
|
||||
tessellator.addVertex((double)(stringMiddle + 1), (double)(8 + yOffset), 0.0D);
|
||||
tessellator.addVertex((double)(stringMiddle + 1), (double)(-1 + yOffset), 0.0D);
|
||||
tessellator.draw();
|
||||
GL11.glEnable(3553);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);
|
||||
fontRenderer.drawString(text, -fontRenderer.getStringWidth(text) / 2, yOffset, color);
|
||||
GL11.glEnable(2929);
|
||||
GL11.glDepthMask(true);
|
||||
fontRenderer.drawString(text, -fontRenderer.getStringWidth(text) / 2, yOffset, color);
|
||||
GL11.glEnable(2896);
|
||||
GL11.glDisable(3042);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
public static void
|
||||
renderFloatingText(String text, float x, float y, float z, int color) {
|
||||
RenderManager renderManager = RenderManager.instance;
|
||||
FontRenderer fontRenderer = renderManager.getFontRenderer();
|
||||
float scale = 0.027F;
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(x + 0.0F, y + 2.3F, z);
|
||||
GL11.glNormal3f(0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(-renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
|
||||
GL11.glScalef(-scale, -scale, scale);
|
||||
GL11.glDisable(2896);
|
||||
GL11.glDepthMask(false);
|
||||
GL11.glDisable(2929);
|
||||
GL11.glEnable(3042);
|
||||
GL11.glBlendFunc(770, 771);
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
byte yOffset = 0;
|
||||
GL11.glDisable(3553);
|
||||
tessellator.startDrawingQuads();
|
||||
int stringMiddle = fontRenderer.getStringWidth(text) / 2;
|
||||
tessellator.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.5F);
|
||||
tessellator.addVertex(
|
||||
(double) (-stringMiddle - 1), (double) (-1 + yOffset), 0.0D
|
||||
);
|
||||
tessellator.addVertex((double) (-stringMiddle - 1), (double) (8 + yOffset), 0.0D);
|
||||
tessellator.addVertex((double) (stringMiddle + 1), (double) (8 + yOffset), 0.0D);
|
||||
tessellator.addVertex((double) (stringMiddle + 1), (double) (-1 + yOffset), 0.0D);
|
||||
tessellator.draw();
|
||||
GL11.glEnable(3553);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);
|
||||
fontRenderer.drawString(
|
||||
text, -fontRenderer.getStringWidth(text) / 2, yOffset, color
|
||||
);
|
||||
GL11.glEnable(2929);
|
||||
GL11.glDepthMask(true);
|
||||
fontRenderer.drawString(
|
||||
text, -fontRenderer.getStringWidth(text) / 2, yOffset, color
|
||||
);
|
||||
GL11.glEnable(2896);
|
||||
GL11.glDisable(3042);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package calclavia.lib.render;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
||||
public interface ITagRender {
|
||||
|
||||
float addInformation(HashMap var1, EntityPlayer var2);
|
||||
float addInformation(HashMap var1, EntityPlayer var2);
|
||||
}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
package calclavia.lib.render;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.EntityClientPlayerMP;
|
||||
import net.minecraft.client.renderer.entity.RendererLivingEntity;
|
||||
|
@ -16,49 +17,51 @@ import net.minecraft.util.MovingObjectPosition;
|
|||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public abstract class RenderTaggedTile extends TileEntitySpecialRenderer {
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity t, double x, double y, double z,
|
||||
float f) {
|
||||
if (t != null && t instanceof ITagRender &&
|
||||
this.getPlayer().getDistance((double)t.xCoord, (double)t.yCoord,
|
||||
(double)t.zCoord) <=
|
||||
(double)RendererLivingEntity.NAME_TAG_RANGE) {
|
||||
HashMap tags = new HashMap();
|
||||
float height = ((ITagRender)t).addInformation(tags, this.getPlayer());
|
||||
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
if (player.ridingEntity == null) {
|
||||
MovingObjectPosition objectPosition = player.rayTrace(8.0D, 1.0F);
|
||||
if (objectPosition != null) {
|
||||
boolean isLooking = false;
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity t, double x, double y, double z, float f) {
|
||||
if (t != null && t instanceof ITagRender
|
||||
&& this.getPlayer().getDistance(
|
||||
(double) t.xCoord, (double) t.yCoord, (double) t.zCoord
|
||||
) <= (double) RendererLivingEntity.NAME_TAG_RANGE) {
|
||||
HashMap tags = new HashMap();
|
||||
float height = ((ITagRender) t).addInformation(tags, this.getPlayer());
|
||||
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
|
||||
if (player.ridingEntity == null) {
|
||||
MovingObjectPosition objectPosition = player.rayTrace(8.0D, 1.0F);
|
||||
if (objectPosition != null) {
|
||||
boolean isLooking = false;
|
||||
|
||||
for (int it = 0; (float)it < height; ++it) {
|
||||
if (objectPosition.blockX == t.xCoord &&
|
||||
objectPosition.blockY == t.yCoord + it &&
|
||||
objectPosition.blockZ == t.zCoord) {
|
||||
isLooking = true;
|
||||
for (int it = 0; (float) it < height; ++it) {
|
||||
if (objectPosition.blockX == t.xCoord
|
||||
&& objectPosition.blockY == t.yCoord + it
|
||||
&& objectPosition.blockZ == t.zCoord) {
|
||||
isLooking = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (isLooking) {
|
||||
Iterator var17 = tags.entrySet().iterator();
|
||||
|
||||
for (int i = 0; var17.hasNext(); ++i) {
|
||||
Entry entry = (Entry) var17.next();
|
||||
if (entry.getKey() != null) {
|
||||
CalclaviaRenderHelper.renderFloatingText(
|
||||
(String) entry.getKey(),
|
||||
(float) x + 0.5F,
|
||||
(float) y + (float) i * 0.25F - 2.0F + height,
|
||||
(float) z + 0.5F,
|
||||
((Integer) entry.getValue()).intValue()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isLooking) {
|
||||
Iterator var17 = tags.entrySet().iterator();
|
||||
|
||||
for (int i = 0; var17.hasNext(); ++i) {
|
||||
Entry entry = (Entry)var17.next();
|
||||
if (entry.getKey() != null) {
|
||||
CalclaviaRenderHelper.renderFloatingText(
|
||||
(String)entry.getKey(), (float)x + 0.5F,
|
||||
(float)y + (float)i * 0.25F - 2.0F + height,
|
||||
(float)z + 0.5F, ((Integer)entry.getValue()).intValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public EntityPlayer getPlayer() {
|
||||
EntityLivingBase entity = this.field_147501_a.field_147551_g;
|
||||
return entity instanceof EntityPlayer ? (EntityPlayer)entity : null;
|
||||
}
|
||||
public EntityPlayer getPlayer() {
|
||||
EntityLivingBase entity = this.field_147501_a.field_147551_g;
|
||||
return entity instanceof EntityPlayer ? (EntityPlayer) entity : null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,103 +37,135 @@ import net.minecraftforge.client.MinecraftForgeClient;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ClientProxy extends CommonProxy {
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
super.init();
|
||||
RenderingRegistry.registerBlockHandler(
|
||||
(ISimpleBlockRenderingHandler) new RenderBlockHandler());
|
||||
RenderingRegistry.registerBlockHandler(
|
||||
(ISimpleBlockRenderingHandler) new RenderForceField());
|
||||
MinecraftForgeClient.registerItemRenderer(
|
||||
ModularForceFieldSystem.itemCardID, (IItemRenderer) new RenderIDCard());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(
|
||||
TileEntityFortronCapacitor.class,
|
||||
(TileEntitySpecialRenderer) new RenderFortronCapacitor());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(
|
||||
TileEntityCoercionDeriver.class,
|
||||
(TileEntitySpecialRenderer) new RenderCoercionDeriver());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(
|
||||
TileEntityForceManipulator.class,
|
||||
(TileEntitySpecialRenderer) new RenderForceManipulator());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(
|
||||
TileEntityForceFieldProjector.class,
|
||||
(TileEntitySpecialRenderer) new RenderForceFieldProjector());
|
||||
}
|
||||
|
||||
@Override
|
||||
public World getClientWorld() {
|
||||
return (World)FMLClientHandler.instance().getClient().theWorld;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getClientGuiElement(final int ID, final EntityPlayer player,
|
||||
final World world, final int x, final int y,
|
||||
final int z) {
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (tileEntity != null) {
|
||||
if (tileEntity.getClass() == TileEntityFortronCapacitor.class) {
|
||||
return new GuiFortronCapacitor(player,
|
||||
(TileEntityFortronCapacitor)tileEntity);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityForceFieldProjector.class) {
|
||||
return new GuiForceFieldProjector(
|
||||
player, (TileEntityForceFieldProjector)tileEntity);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityCoercionDeriver.class) {
|
||||
return new GuiCoercionDeriver(player,
|
||||
(TileEntityCoercionDeriver)tileEntity);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityBiometricIdentifier.class) {
|
||||
return new GuiBiometricIdentifier(
|
||||
player, (TileEntityBiometricIdentifier)tileEntity);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityInterdictionMatrix.class) {
|
||||
return new GuiInterdictionMatrix(
|
||||
player, (TileEntityInterdictionMatrix)tileEntity);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityForceManipulator.class) {
|
||||
return new GuiForceManipulator(player,
|
||||
(TileEntityForceManipulator)tileEntity);
|
||||
}
|
||||
@Override
|
||||
public void init() {
|
||||
super.init();
|
||||
RenderingRegistry.registerBlockHandler((ISimpleBlockRenderingHandler
|
||||
) new RenderBlockHandler());
|
||||
RenderingRegistry.registerBlockHandler((ISimpleBlockRenderingHandler
|
||||
) new RenderForceField());
|
||||
MinecraftForgeClient.registerItemRenderer(
|
||||
ModularForceFieldSystem.itemCardID, (IItemRenderer) new RenderIDCard()
|
||||
);
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(
|
||||
TileEntityFortronCapacitor.class,
|
||||
(TileEntitySpecialRenderer) new RenderFortronCapacitor()
|
||||
);
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(
|
||||
TileEntityCoercionDeriver.class,
|
||||
(TileEntitySpecialRenderer) new RenderCoercionDeriver()
|
||||
);
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(
|
||||
TileEntityForceManipulator.class,
|
||||
(TileEntitySpecialRenderer) new RenderForceManipulator()
|
||||
);
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(
|
||||
TileEntityForceFieldProjector.class,
|
||||
(TileEntitySpecialRenderer) new RenderForceFieldProjector()
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOp(final String username) {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public World getClientWorld() {
|
||||
return (World) FMLClientHandler.instance().getClient().theWorld;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderBeam(final World world, final Vector3 position,
|
||||
final Vector3 target, final float red,
|
||||
final float green, final float blue, final int age) {
|
||||
FMLClientHandler.instance().getClient().effectRenderer.addEffect(
|
||||
(EntityFX) new FXBeam(world, position, target, red, green, blue, age));
|
||||
}
|
||||
@Override
|
||||
public Object getClientGuiElement(
|
||||
final int ID,
|
||||
final EntityPlayer player,
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z
|
||||
) {
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (tileEntity != null) {
|
||||
if (tileEntity.getClass() == TileEntityFortronCapacitor.class) {
|
||||
return new GuiFortronCapacitor(
|
||||
player, (TileEntityFortronCapacitor) tileEntity
|
||||
);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityForceFieldProjector.class) {
|
||||
return new GuiForceFieldProjector(
|
||||
player, (TileEntityForceFieldProjector) tileEntity
|
||||
);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityCoercionDeriver.class) {
|
||||
return new GuiCoercionDeriver(
|
||||
player, (TileEntityCoercionDeriver) tileEntity
|
||||
);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityBiometricIdentifier.class) {
|
||||
return new GuiBiometricIdentifier(
|
||||
player, (TileEntityBiometricIdentifier) tileEntity
|
||||
);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityInterdictionMatrix.class) {
|
||||
return new GuiInterdictionMatrix(
|
||||
player, (TileEntityInterdictionMatrix) tileEntity
|
||||
);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityForceManipulator.class) {
|
||||
return new GuiForceManipulator(
|
||||
player, (TileEntityForceManipulator) tileEntity
|
||||
);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderHologram(final World world, final Vector3 position,
|
||||
final float red, final float green,
|
||||
final float blue, final int age,
|
||||
final Vector3 targetPosition) {
|
||||
FMLClientHandler.instance().getClient().effectRenderer.addEffect(
|
||||
(EntityFX) new FXHologram(world, position, red, green, blue, age)
|
||||
.setTarget(targetPosition));
|
||||
}
|
||||
@Override
|
||||
public boolean isOp(final String username) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderHologramMoving(final World world, final Vector3 position,
|
||||
final float red, final float green,
|
||||
final float blue, final int age) {
|
||||
FMLClientHandler.instance().getClient().effectRenderer.addEffect((
|
||||
EntityFX) new FXHologramMoving(world, position, red, green, blue, age));
|
||||
}
|
||||
@Override
|
||||
public void renderBeam(
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final Vector3 target,
|
||||
final float red,
|
||||
final float green,
|
||||
final float blue,
|
||||
final int age
|
||||
) {
|
||||
FMLClientHandler.instance().getClient().effectRenderer.addEffect((EntityFX
|
||||
) new FXBeam(world, position, target, red, green, blue, age));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSneaking() {
|
||||
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
|
||||
return player.isSneaking();
|
||||
}
|
||||
@Override
|
||||
public void renderHologram(
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final float red,
|
||||
final float green,
|
||||
final float blue,
|
||||
final int age,
|
||||
final Vector3 targetPosition
|
||||
) {
|
||||
FMLClientHandler.instance().getClient().effectRenderer.addEffect(
|
||||
(EntityFX) new FXHologram(world, position, red, green, blue, age)
|
||||
.setTarget(targetPosition)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderHologramMoving(
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final float red,
|
||||
final float green,
|
||||
final float blue,
|
||||
final int age
|
||||
) {
|
||||
FMLClientHandler.instance().getClient().effectRenderer.addEffect((EntityFX
|
||||
) new FXHologramMoving(world, position, red, green, blue, age));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSneaking() {
|
||||
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
|
||||
return player.isSneaking();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,78 +21,112 @@ import net.minecraft.world.World;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class CommonProxy implements IGuiHandler {
|
||||
public void preInit() {}
|
||||
public void preInit() {}
|
||||
|
||||
public void init() {}
|
||||
public void init() {}
|
||||
|
||||
public Object getClientGuiElement(final int ID, final EntityPlayer player,
|
||||
final World world, final int x, final int y,
|
||||
final int z) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Object getServerGuiElement(final int ID, final EntityPlayer player,
|
||||
final World world, final int x, final int y,
|
||||
final int z) {
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (tileEntity != null) {
|
||||
if (tileEntity.getClass() == TileEntityFortronCapacitor.class) {
|
||||
return new ContainerFortronCapacitor(
|
||||
player, (TileEntityFortronCapacitor)tileEntity);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityForceFieldProjector.class) {
|
||||
return new ContainerForceFieldProjector(
|
||||
player, (TileEntityForceFieldProjector)tileEntity);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityCoercionDeriver.class) {
|
||||
return new ContainerCoercionDeriver(
|
||||
player, (TileEntityCoercionDeriver)tileEntity);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityBiometricIdentifier.class) {
|
||||
return new ContainerBiometricIdentifier(
|
||||
player, (TileEntityBiometricIdentifier)tileEntity);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityInterdictionMatrix.class) {
|
||||
return new ContainerInterdictionMatrix(
|
||||
player, (TileEntityInterdictionMatrix)tileEntity);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityForceManipulator.class) {
|
||||
return new ContainerForceManipulator(
|
||||
player, (TileEntityForceManipulator)tileEntity);
|
||||
}
|
||||
public Object getClientGuiElement(
|
||||
final int ID,
|
||||
final EntityPlayer player,
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z
|
||||
) {
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public World getClientWorld() { return null; }
|
||||
public Object getServerGuiElement(
|
||||
final int ID,
|
||||
final EntityPlayer player,
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z
|
||||
) {
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (tileEntity != null) {
|
||||
if (tileEntity.getClass() == TileEntityFortronCapacitor.class) {
|
||||
return new ContainerFortronCapacitor(
|
||||
player, (TileEntityFortronCapacitor) tileEntity
|
||||
);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityForceFieldProjector.class) {
|
||||
return new ContainerForceFieldProjector(
|
||||
player, (TileEntityForceFieldProjector) tileEntity
|
||||
);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityCoercionDeriver.class) {
|
||||
return new ContainerCoercionDeriver(
|
||||
player, (TileEntityCoercionDeriver) tileEntity
|
||||
);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityBiometricIdentifier.class) {
|
||||
return new ContainerBiometricIdentifier(
|
||||
player, (TileEntityBiometricIdentifier) tileEntity
|
||||
);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityInterdictionMatrix.class) {
|
||||
return new ContainerInterdictionMatrix(
|
||||
player, (TileEntityInterdictionMatrix) tileEntity
|
||||
);
|
||||
}
|
||||
if (tileEntity.getClass() == TileEntityForceManipulator.class) {
|
||||
return new ContainerForceManipulator(
|
||||
player, (TileEntityForceManipulator) tileEntity
|
||||
);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean isOp(final String username) {
|
||||
final MinecraftServer theServer =
|
||||
FMLCommonHandler.instance().getMinecraftServerInstance();
|
||||
if (theServer == null)
|
||||
return false;
|
||||
public World getClientWorld() {
|
||||
return null;
|
||||
}
|
||||
|
||||
for (String op : theServer.getConfigurationManager().func_152606_n())
|
||||
if (username.trim().equalsIgnoreCase(op))
|
||||
return true;
|
||||
public boolean isOp(final String username) {
|
||||
final MinecraftServer theServer
|
||||
= FMLCommonHandler.instance().getMinecraftServerInstance();
|
||||
if (theServer == null)
|
||||
return false;
|
||||
|
||||
return false;
|
||||
}
|
||||
for (String op : theServer.getConfigurationManager().func_152606_n())
|
||||
if (username.trim().equalsIgnoreCase(op))
|
||||
return true;
|
||||
|
||||
public void renderBeam(final World world, final Vector3 position,
|
||||
final Vector3 target, final float red,
|
||||
final float green, final float blue, final int age) {}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void renderHologram(final World world, final Vector3 position,
|
||||
final float red, final float green,
|
||||
final float blue, final int age,
|
||||
final Vector3 targetPosition) {}
|
||||
public void renderBeam(
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final Vector3 target,
|
||||
final float red,
|
||||
final float green,
|
||||
final float blue,
|
||||
final int age
|
||||
) {}
|
||||
|
||||
public void renderHologramMoving(final World world, final Vector3 position,
|
||||
final float red, final float green,
|
||||
final float blue, final int age) {}
|
||||
public void renderHologram(
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final float red,
|
||||
final float green,
|
||||
final float blue,
|
||||
final int age,
|
||||
final Vector3 targetPosition
|
||||
) {}
|
||||
|
||||
public boolean isSneaking() {
|
||||
return false;
|
||||
}
|
||||
public void renderHologramMoving(
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final float red,
|
||||
final float green,
|
||||
final float blue,
|
||||
final int age
|
||||
) {}
|
||||
|
||||
public boolean isSneaking() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ package mffs;
|
|||
import universalelectricity.core.UniversalElectricity;
|
||||
|
||||
public class ConversionHelper {
|
||||
|
||||
public static double toEU(double joules) {
|
||||
return joules / UniversalElectricity.UE_IC2_RATIO;
|
||||
}
|
||||
|
@ -19,5 +18,4 @@ public class ConversionHelper {
|
|||
public static double fromRF(int rf) {
|
||||
return rf * UniversalElectricity.UE_RF_RATIO;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,23 +1,25 @@
|
|||
package mffs;
|
||||
|
||||
public abstract class DelayedEvent {
|
||||
public int ticks;
|
||||
protected IDelayedEventHandler handler;
|
||||
public int ticks;
|
||||
protected IDelayedEventHandler handler;
|
||||
|
||||
public DelayedEvent(final IDelayedEventHandler handler, final int ticks) {
|
||||
this.ticks = 0;
|
||||
this.handler = handler;
|
||||
this.ticks = ticks;
|
||||
}
|
||||
|
||||
protected abstract void onEvent();
|
||||
|
||||
public void update() {
|
||||
--this.ticks;
|
||||
if (this.ticks <= 0) {
|
||||
this.onEvent();
|
||||
public DelayedEvent(final IDelayedEventHandler handler, final int ticks) {
|
||||
this.ticks = 0;
|
||||
this.handler = handler;
|
||||
this.ticks = ticks;
|
||||
}
|
||||
}
|
||||
|
||||
public int getPriority() { return 0; }
|
||||
protected abstract void onEvent();
|
||||
|
||||
public void update() {
|
||||
--this.ticks;
|
||||
if (this.ticks <= 0) {
|
||||
this.onEvent();
|
||||
}
|
||||
}
|
||||
|
||||
public int getPriority() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,9 +2,8 @@ package mffs;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
public interface IDelayedEventHandler
|
||||
{
|
||||
public interface IDelayedEventHandler {
|
||||
List<DelayedEvent> getDelayedEvents();
|
||||
|
||||
|
||||
List<DelayedEvent> getQuedDelayedEvents();
|
||||
}
|
||||
|
|
|
@ -4,20 +4,18 @@ import net.minecraft.creativetab.CreativeTabs;
|
|||
import net.minecraft.item.Item;
|
||||
|
||||
public class MFFSCreativeTab extends CreativeTabs {
|
||||
public static CreativeTabs INSTANCE;
|
||||
public static CreativeTabs INSTANCE;
|
||||
|
||||
public MFFSCreativeTab(final int par1, final String par2Str) {
|
||||
super(par1, par2Str);
|
||||
}
|
||||
public MFFSCreativeTab(final int par1, final String par2Str) {
|
||||
super(par1, par2Str);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getTabIconItem() {
|
||||
return Item.getItemFromBlock(
|
||||
ModularForceFieldSystem.blockForceFieldProjector);
|
||||
}
|
||||
@Override
|
||||
public Item getTabIconItem() {
|
||||
return Item.getItemFromBlock(ModularForceFieldSystem.blockForceFieldProjector);
|
||||
}
|
||||
|
||||
static {
|
||||
MFFSCreativeTab.INSTANCE =
|
||||
new MFFSCreativeTab(CreativeTabs.getNextID(), "MFFS");
|
||||
}
|
||||
static {
|
||||
MFFSCreativeTab.INSTANCE = new MFFSCreativeTab(CreativeTabs.getNextID(), "MFFS");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package mffs;
|
||||
|
||||
import calclavia.lib.CalculationHelper;
|
||||
import icbm.api.IBlockFrequency;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import calclavia.lib.CalculationHelper;
|
||||
import icbm.api.IBlockFrequency;
|
||||
import mffs.api.IProjector;
|
||||
import mffs.api.fortron.IFortronFrequency;
|
||||
import mffs.api.modules.IModuleAcceptor;
|
||||
|
@ -27,344 +28,404 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class MFFSHelper {
|
||||
public static void
|
||||
transferFortron(final IFortronFrequency transferer,
|
||||
final Set<IFortronFrequency> frequencyTiles,
|
||||
final TransferMode transferMode, final int limit) {
|
||||
if (transferer != null && frequencyTiles.size() > 1) {
|
||||
int totalFortron = 0;
|
||||
int totalCapacity = 0;
|
||||
for (final IFortronFrequency machine : frequencyTiles) {
|
||||
if (machine != null) {
|
||||
totalFortron += machine.getFortronEnergy();
|
||||
totalCapacity += machine.getFortronCapacity();
|
||||
}
|
||||
}
|
||||
if (totalFortron > 0 && totalCapacity > 0) {
|
||||
switch (transferMode) {
|
||||
case EQUALIZE: {
|
||||
for (final IFortronFrequency machine : frequencyTiles) {
|
||||
if (machine != null) {
|
||||
final double capacityPercentage =
|
||||
machine.getFortronCapacity() / (double)totalCapacity;
|
||||
final int amountToSet = (int)(totalFortron * capacityPercentage);
|
||||
doTransferFortron(transferer, machine,
|
||||
amountToSet - machine.getFortronEnergy(),
|
||||
limit);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DISTRIBUTE: {
|
||||
final int amountToSet2 = totalFortron / frequencyTiles.size();
|
||||
for (final IFortronFrequency machine2 : frequencyTiles) {
|
||||
if (machine2 != null) {
|
||||
doTransferFortron(transferer, machine2,
|
||||
amountToSet2 - machine2.getFortronEnergy(),
|
||||
limit);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DRAIN: {
|
||||
frequencyTiles.remove(transferer);
|
||||
for (final IFortronFrequency machine : frequencyTiles) {
|
||||
if (machine != null) {
|
||||
final double capacityPercentage =
|
||||
machine.getFortronCapacity() / (double)totalCapacity;
|
||||
final int amountToSet = (int)(totalFortron * capacityPercentage);
|
||||
if (amountToSet - machine.getFortronEnergy() <= 0) {
|
||||
continue;
|
||||
}
|
||||
doTransferFortron(transferer, machine,
|
||||
amountToSet - machine.getFortronEnergy(),
|
||||
limit);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FILL: {
|
||||
if (transferer.getFortronEnergy() < transferer.getFortronCapacity()) {
|
||||
frequencyTiles.remove(transferer);
|
||||
final int requiredFortron =
|
||||
transferer.getFortronCapacity() - transferer.getFortronEnergy();
|
||||
for (final IFortronFrequency machine2 : frequencyTiles) {
|
||||
if (machine2 != null) {
|
||||
final int amountToConsume =
|
||||
Math.min(requiredFortron, machine2.getFortronEnergy());
|
||||
final int amountToSet =
|
||||
-machine2.getFortronEnergy() - amountToConsume;
|
||||
if (amountToConsume <= 0) {
|
||||
continue;
|
||||
public static void transferFortron(
|
||||
final IFortronFrequency transferer,
|
||||
final Set<IFortronFrequency> frequencyTiles,
|
||||
final TransferMode transferMode,
|
||||
final int limit
|
||||
) {
|
||||
if (transferer != null && frequencyTiles.size() > 1) {
|
||||
int totalFortron = 0;
|
||||
int totalCapacity = 0;
|
||||
for (final IFortronFrequency machine : frequencyTiles) {
|
||||
if (machine != null) {
|
||||
totalFortron += machine.getFortronEnergy();
|
||||
totalCapacity += machine.getFortronCapacity();
|
||||
}
|
||||
}
|
||||
if (totalFortron > 0 && totalCapacity > 0) {
|
||||
switch (transferMode) {
|
||||
case EQUALIZE: {
|
||||
for (final IFortronFrequency machine : frequencyTiles) {
|
||||
if (machine != null) {
|
||||
final double capacityPercentage
|
||||
= machine.getFortronCapacity()
|
||||
/ (double) totalCapacity;
|
||||
final int amountToSet
|
||||
= (int) (totalFortron * capacityPercentage);
|
||||
doTransferFortron(
|
||||
transferer,
|
||||
machine,
|
||||
amountToSet - machine.getFortronEnergy(),
|
||||
limit
|
||||
);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DISTRIBUTE: {
|
||||
final int amountToSet2 = totalFortron / frequencyTiles.size();
|
||||
for (final IFortronFrequency machine2 : frequencyTiles) {
|
||||
if (machine2 != null) {
|
||||
doTransferFortron(
|
||||
transferer,
|
||||
machine2,
|
||||
amountToSet2 - machine2.getFortronEnergy(),
|
||||
limit
|
||||
);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case DRAIN: {
|
||||
frequencyTiles.remove(transferer);
|
||||
for (final IFortronFrequency machine : frequencyTiles) {
|
||||
if (machine != null) {
|
||||
final double capacityPercentage
|
||||
= machine.getFortronCapacity()
|
||||
/ (double) totalCapacity;
|
||||
final int amountToSet
|
||||
= (int) (totalFortron * capacityPercentage);
|
||||
if (amountToSet - machine.getFortronEnergy() <= 0) {
|
||||
continue;
|
||||
}
|
||||
doTransferFortron(
|
||||
transferer,
|
||||
machine,
|
||||
amountToSet - machine.getFortronEnergy(),
|
||||
limit
|
||||
);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case FILL: {
|
||||
if (transferer.getFortronEnergy()
|
||||
< transferer.getFortronCapacity()) {
|
||||
frequencyTiles.remove(transferer);
|
||||
final int requiredFortron = transferer.getFortronCapacity()
|
||||
- transferer.getFortronEnergy();
|
||||
for (final IFortronFrequency machine2 : frequencyTiles) {
|
||||
if (machine2 != null) {
|
||||
final int amountToConsume = Math.min(
|
||||
requiredFortron, machine2.getFortronEnergy()
|
||||
);
|
||||
final int amountToSet
|
||||
= -machine2.getFortronEnergy() - amountToConsume;
|
||||
if (amountToConsume <= 0) {
|
||||
continue;
|
||||
}
|
||||
doTransferFortron(
|
||||
transferer,
|
||||
machine2,
|
||||
amountToSet - machine2.getFortronEnergy(),
|
||||
limit
|
||||
);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
doTransferFortron(transferer, machine2,
|
||||
amountToSet - machine2.getFortronEnergy(),
|
||||
limit);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void doTransferFortron(final IFortronFrequency transferer,
|
||||
final IFortronFrequency receiver,
|
||||
int joules, final int limit) {
|
||||
if (transferer != null && receiver != null) {
|
||||
final TileEntity tileEntity = (TileEntity)transferer;
|
||||
final World world = tileEntity.getWorldObj();
|
||||
boolean isCamo = false;
|
||||
if (transferer instanceof IModuleAcceptor) {
|
||||
isCamo =
|
||||
(((IModuleAcceptor)transferer)
|
||||
.getModuleCount(ModularForceFieldSystem.itemModuleCamouflage,
|
||||
new int[0]) > 0);
|
||||
}
|
||||
if (joules > 0) {
|
||||
joules = Math.min(joules, limit);
|
||||
int toBeInjected = receiver.provideFortron(
|
||||
transferer.requestFortron(joules, false), false);
|
||||
toBeInjected = transferer.requestFortron(
|
||||
receiver.provideFortron(toBeInjected, true), true);
|
||||
if (world.isRemote && toBeInjected > 0 && !isCamo) {
|
||||
ModularForceFieldSystem.proxy.renderBeam(
|
||||
world, Vector3.add(new Vector3(tileEntity), 0.5),
|
||||
Vector3.add(new Vector3((TileEntity)receiver), 0.5), 0.6f, 0.6f,
|
||||
1.0f, 20);
|
||||
public static void doTransferFortron(
|
||||
final IFortronFrequency transferer,
|
||||
final IFortronFrequency receiver,
|
||||
int joules,
|
||||
final int limit
|
||||
) {
|
||||
if (transferer != null && receiver != null) {
|
||||
final TileEntity tileEntity = (TileEntity) transferer;
|
||||
final World world = tileEntity.getWorldObj();
|
||||
boolean isCamo = false;
|
||||
if (transferer instanceof IModuleAcceptor) {
|
||||
isCamo
|
||||
= (((IModuleAcceptor) transferer)
|
||||
.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleCamouflage, new int[0]
|
||||
)
|
||||
> 0);
|
||||
}
|
||||
if (joules > 0) {
|
||||
joules = Math.min(joules, limit);
|
||||
int toBeInjected = receiver.provideFortron(
|
||||
transferer.requestFortron(joules, false), false
|
||||
);
|
||||
toBeInjected = transferer.requestFortron(
|
||||
receiver.provideFortron(toBeInjected, true), true
|
||||
);
|
||||
if (world.isRemote && toBeInjected > 0 && !isCamo) {
|
||||
ModularForceFieldSystem.proxy.renderBeam(
|
||||
world,
|
||||
Vector3.add(new Vector3(tileEntity), 0.5),
|
||||
Vector3.add(new Vector3((TileEntity) receiver), 0.5),
|
||||
0.6f,
|
||||
0.6f,
|
||||
1.0f,
|
||||
20
|
||||
);
|
||||
}
|
||||
} else {
|
||||
joules = Math.min(Math.abs(joules), limit);
|
||||
int toBeEjected = transferer.provideFortron(
|
||||
receiver.requestFortron(joules, false), false
|
||||
);
|
||||
toBeEjected = receiver.requestFortron(
|
||||
transferer.provideFortron(toBeEjected, true), true
|
||||
);
|
||||
if (world.isRemote && toBeEjected > 0 && !isCamo) {
|
||||
ModularForceFieldSystem.proxy.renderBeam(
|
||||
world,
|
||||
Vector3.add(new Vector3((TileEntity) receiver), 0.5),
|
||||
Vector3.add(new Vector3(tileEntity), 0.5),
|
||||
0.6f,
|
||||
0.6f,
|
||||
1.0f,
|
||||
20
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
joules = Math.min(Math.abs(joules), limit);
|
||||
int toBeEjected = transferer.provideFortron(
|
||||
receiver.requestFortron(joules, false), false);
|
||||
toBeEjected = receiver.requestFortron(
|
||||
transferer.provideFortron(toBeEjected, true), true);
|
||||
if (world.isRemote && toBeEjected > 0 && !isCamo) {
|
||||
ModularForceFieldSystem.proxy.renderBeam(
|
||||
world, Vector3.add(new Vector3((TileEntity)receiver), 0.5),
|
||||
Vector3.add(new Vector3(tileEntity), 0.5), 0.6f, 0.6f, 1.0f, 20);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static IInterdictionMatrix
|
||||
getNearestInterdictionMatrix(final World world, final Vector3 position) {
|
||||
for (final IBlockFrequency frequencyTile : FrequencyGrid.instance().get()) {
|
||||
if (((TileEntity)frequencyTile).getWorldObj() == world &&
|
||||
frequencyTile instanceof IInterdictionMatrix) {
|
||||
final IInterdictionMatrix interdictionMatrix =
|
||||
(IInterdictionMatrix)frequencyTile;
|
||||
if (interdictionMatrix.isActive() &&
|
||||
position.distanceTo(new Vector3((TileEntity)interdictionMatrix)) <=
|
||||
interdictionMatrix.getActionRange()) {
|
||||
return interdictionMatrix;
|
||||
public static IInterdictionMatrix
|
||||
getNearestInterdictionMatrix(final World world, final Vector3 position) {
|
||||
for (final IBlockFrequency frequencyTile : FrequencyGrid.instance().get()) {
|
||||
if (((TileEntity) frequencyTile).getWorldObj() == world
|
||||
&& frequencyTile instanceof IInterdictionMatrix) {
|
||||
final IInterdictionMatrix interdictionMatrix
|
||||
= (IInterdictionMatrix) frequencyTile;
|
||||
if (interdictionMatrix.isActive()
|
||||
&& position.distanceTo(new Vector3((TileEntity) interdictionMatrix))
|
||||
<= interdictionMatrix.getActionRange()) {
|
||||
return interdictionMatrix;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean
|
||||
isPermittedByInterdictionMatrix(final IInterdictionMatrix interdictionMatrix,
|
||||
final String username,
|
||||
final Permission... permissions) {
|
||||
if (interdictionMatrix != null && interdictionMatrix.isActive() &&
|
||||
interdictionMatrix.getBiometricIdentifier() != null) {
|
||||
for (final Permission permission : permissions) {
|
||||
if (!interdictionMatrix.getBiometricIdentifier().isAccessGranted(
|
||||
username, permission)) {
|
||||
return interdictionMatrix.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleInvert, new int[0]) > 0;
|
||||
public static boolean isPermittedByInterdictionMatrix(
|
||||
final IInterdictionMatrix interdictionMatrix,
|
||||
final String username,
|
||||
final Permission... permissions
|
||||
) {
|
||||
if (interdictionMatrix != null && interdictionMatrix.isActive()
|
||||
&& interdictionMatrix.getBiometricIdentifier() != null) {
|
||||
for (final Permission permission : permissions) {
|
||||
if (!interdictionMatrix.getBiometricIdentifier().isAccessGranted(
|
||||
username, permission
|
||||
)) {
|
||||
return interdictionMatrix.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleInvert, new int[0]
|
||||
)
|
||||
> 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return interdictionMatrix.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleInvert, new int[0]
|
||||
)
|
||||
<= 0;
|
||||
}
|
||||
return interdictionMatrix.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleInvert, new int[0]) <= 0;
|
||||
}
|
||||
|
||||
public static List<String> splitStringPerWord(final String string,
|
||||
final int wordsPerLine) {
|
||||
final String[] words = string.split(" ");
|
||||
final List<String> lines = new ArrayList<>();
|
||||
for (int lineCount = 0;
|
||||
lineCount < Math.ceil(words.length / (float)wordsPerLine);
|
||||
++lineCount) {
|
||||
String stringInLine = "";
|
||||
for (int i = lineCount * wordsPerLine;
|
||||
i < Math.min(wordsPerLine + lineCount * wordsPerLine, words.length);
|
||||
++i) {
|
||||
stringInLine = stringInLine + words[i] + " ";
|
||||
}
|
||||
lines.add(stringInLine.trim());
|
||||
}
|
||||
return lines;
|
||||
}
|
||||
|
||||
public static ItemStack getFirstItemBlock(final TileEntity tileEntity,
|
||||
final ItemStack itemStack) {
|
||||
return getFirstItemBlock(tileEntity, itemStack, true);
|
||||
}
|
||||
|
||||
public static ItemStack getFirstItemBlock(final TileEntity tileEntity,
|
||||
final ItemStack itemStack,
|
||||
final boolean recur) {
|
||||
if (tileEntity instanceof IProjector) {
|
||||
for (final int i : ((IProjector)tileEntity).getModuleSlots()) {
|
||||
final ItemStack checkStack =
|
||||
getFirstItemBlock(i, (IInventory)tileEntity, itemStack);
|
||||
if (checkStack != null) {
|
||||
return checkStack;
|
||||
public static List<String>
|
||||
splitStringPerWord(final String string, final int wordsPerLine) {
|
||||
final String[] words = string.split(" ");
|
||||
final List<String> lines = new ArrayList<>();
|
||||
for (int lineCount = 0;
|
||||
lineCount < Math.ceil(words.length / (float) wordsPerLine);
|
||||
++lineCount) {
|
||||
String stringInLine = "";
|
||||
for (int i = lineCount * wordsPerLine;
|
||||
i < Math.min(wordsPerLine + lineCount * wordsPerLine, words.length);
|
||||
++i) {
|
||||
stringInLine = stringInLine + words[i] + " ";
|
||||
}
|
||||
lines.add(stringInLine.trim());
|
||||
}
|
||||
}
|
||||
} else if (tileEntity instanceof IInventory) {
|
||||
final IInventory inventory = (IInventory)tileEntity;
|
||||
for (int j = 0; j < inventory.getSizeInventory(); ++j) {
|
||||
final ItemStack checkStack2 =
|
||||
getFirstItemBlock(j, inventory, itemStack);
|
||||
if (checkStack2 != null) {
|
||||
return checkStack2;
|
||||
}
|
||||
}
|
||||
return lines;
|
||||
}
|
||||
if (recur) {
|
||||
for (int k = 0; k < 6; ++k) {
|
||||
final ForgeDirection direction = ForgeDirection.getOrientation(k);
|
||||
final Vector3 vector = new Vector3(tileEntity);
|
||||
vector.modifyPositionFromSide(direction);
|
||||
final TileEntity checkTile =
|
||||
vector.getTileEntity((IBlockAccess)tileEntity.getWorldObj());
|
||||
if (checkTile != null) {
|
||||
final ItemStack checkStack =
|
||||
getFirstItemBlock(checkTile, itemStack, false);
|
||||
if (checkStack != null) {
|
||||
|
||||
public static ItemStack
|
||||
getFirstItemBlock(final TileEntity tileEntity, final ItemStack itemStack) {
|
||||
return getFirstItemBlock(tileEntity, itemStack, true);
|
||||
}
|
||||
|
||||
public static ItemStack getFirstItemBlock(
|
||||
final TileEntity tileEntity, final ItemStack itemStack, final boolean recur
|
||||
) {
|
||||
if (tileEntity instanceof IProjector) {
|
||||
for (final int i : ((IProjector) tileEntity).getModuleSlots()) {
|
||||
final ItemStack checkStack
|
||||
= getFirstItemBlock(i, (IInventory) tileEntity, itemStack);
|
||||
if (checkStack != null) {
|
||||
return checkStack;
|
||||
}
|
||||
}
|
||||
} else if (tileEntity instanceof IInventory) {
|
||||
final IInventory inventory = (IInventory) tileEntity;
|
||||
for (int j = 0; j < inventory.getSizeInventory(); ++j) {
|
||||
final ItemStack checkStack2 = getFirstItemBlock(j, inventory, itemStack);
|
||||
if (checkStack2 != null) {
|
||||
return checkStack2;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (recur) {
|
||||
for (int k = 0; k < 6; ++k) {
|
||||
final ForgeDirection direction = ForgeDirection.getOrientation(k);
|
||||
final Vector3 vector = new Vector3(tileEntity);
|
||||
vector.modifyPositionFromSide(direction);
|
||||
final TileEntity checkTile
|
||||
= vector.getTileEntity((IBlockAccess) tileEntity.getWorldObj());
|
||||
if (checkTile != null) {
|
||||
final ItemStack checkStack
|
||||
= getFirstItemBlock(checkTile, itemStack, false);
|
||||
if (checkStack != null) {
|
||||
return checkStack;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ItemStack getFirstItemBlock(
|
||||
final int i, final IInventory inventory, final ItemStack itemStack
|
||||
) {
|
||||
final ItemStack checkStack = inventory.getStackInSlot(i);
|
||||
if (checkStack != null && checkStack.getItem() instanceof ItemBlock
|
||||
&& (itemStack == null || checkStack.isItemEqual(itemStack))) {
|
||||
return checkStack;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ItemStack getFirstItemBlock(final int i,
|
||||
final IInventory inventory,
|
||||
final ItemStack itemStack) {
|
||||
final ItemStack checkStack = inventory.getStackInSlot(i);
|
||||
if (checkStack != null && checkStack.getItem() instanceof ItemBlock &&
|
||||
(itemStack == null || checkStack.isItemEqual(itemStack))) {
|
||||
return checkStack;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Block getFilterBlock(final ItemStack itemStack) {
|
||||
if (itemStack != null && itemStack.getItem() instanceof ItemBlock) {
|
||||
final Block block = Block.getBlockFromItem(itemStack.getItem());
|
||||
if (block.renderAsNormalBlock()) {
|
||||
return block;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ItemStack getCamoBlock(final IProjector projector,
|
||||
final Vector3 position) {
|
||||
if (projector != null && !((TileEntity)projector).getWorldObj().isRemote &&
|
||||
projector != null &&
|
||||
projector.getModuleCount(ModularForceFieldSystem.itemModuleCamouflage,
|
||||
new int[0]) > 0) {
|
||||
if (projector.getMode() instanceof ItemModeCustom) {
|
||||
final HashMap<Vector3, int[]> fieldMap =
|
||||
((ItemModeCustom)projector.getMode())
|
||||
.getFieldBlockMap(projector, projector.getModeStack());
|
||||
if (fieldMap != null) {
|
||||
final Vector3 fieldCenter = new Vector3((TileEntity)projector)
|
||||
.add(projector.getTranslation());
|
||||
final Vector3 relativePosition =
|
||||
position.clone().subtract(fieldCenter);
|
||||
CalculationHelper.rotateByAngle(relativePosition,
|
||||
-projector.getRotationYaw(),
|
||||
-projector.getRotationPitch());
|
||||
final int[] blockInfo = fieldMap.get(relativePosition.round());
|
||||
if (blockInfo != null && blockInfo[0] > 0) {
|
||||
return new ItemStack(Block.getBlockById(blockInfo[0]), 1,
|
||||
blockInfo[1]);
|
||||
}
|
||||
public static Block getFilterBlock(final ItemStack itemStack) {
|
||||
if (itemStack != null && itemStack.getItem() instanceof ItemBlock) {
|
||||
final Block block = Block.getBlockFromItem(itemStack.getItem());
|
||||
if (block.renderAsNormalBlock()) {
|
||||
return block;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (final int i : projector.getModuleSlots()) {
|
||||
final ItemStack checkStack = projector.getStackInSlot(i);
|
||||
final Block block = getFilterBlock(checkStack);
|
||||
if (block != null) {
|
||||
return checkStack;
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ItemStack
|
||||
getCamoBlock(final IProjector projector, final Vector3 position) {
|
||||
if (projector != null && !((TileEntity) projector).getWorldObj().isRemote
|
||||
&& projector != null
|
||||
&& projector.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleCamouflage, new int[0]
|
||||
) > 0) {
|
||||
if (projector.getMode() instanceof ItemModeCustom) {
|
||||
final HashMap<Vector3, int[]> fieldMap
|
||||
= ((ItemModeCustom) projector.getMode())
|
||||
.getFieldBlockMap(projector, projector.getModeStack());
|
||||
if (fieldMap != null) {
|
||||
final Vector3 fieldCenter = new Vector3((TileEntity) projector)
|
||||
.add(projector.getTranslation());
|
||||
final Vector3 relativePosition
|
||||
= position.clone().subtract(fieldCenter);
|
||||
CalculationHelper.rotateByAngle(
|
||||
relativePosition,
|
||||
-projector.getRotationYaw(),
|
||||
-projector.getRotationPitch()
|
||||
);
|
||||
final int[] blockInfo = fieldMap.get(relativePosition.round());
|
||||
if (blockInfo != null && blockInfo[0] > 0) {
|
||||
return new ItemStack(
|
||||
Block.getBlockById(blockInfo[0]), 1, blockInfo[1]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (final int i : projector.getModuleSlots()) {
|
||||
final ItemStack checkStack = projector.getStackInSlot(i);
|
||||
final Block block = getFilterBlock(checkStack);
|
||||
if (block != null) {
|
||||
return checkStack;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static NBTTagCompound getNBTTagCompound(final ItemStack itemStack) {
|
||||
if (itemStack != null) {
|
||||
if (itemStack.getTagCompound() == null) {
|
||||
itemStack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
return itemStack.getTagCompound();
|
||||
public static NBTTagCompound getNBTTagCompound(final ItemStack itemStack) {
|
||||
if (itemStack != null) {
|
||||
if (itemStack.getTagCompound() == null) {
|
||||
itemStack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
return itemStack.getTagCompound();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean hasPermission(final World world, final Vector3 position,
|
||||
final Permission permission,
|
||||
final EntityPlayer player) {
|
||||
final IInterdictionMatrix interdictionMatrix =
|
||||
getNearestInterdictionMatrix(world, position);
|
||||
return interdictionMatrix == null ||
|
||||
isPermittedByInterdictionMatrix(interdictionMatrix,
|
||||
player.getDisplayName(), permission);
|
||||
}
|
||||
|
||||
public static boolean hasPermission(final World world, final Vector3 position,
|
||||
final PlayerInteractEvent.Action action,
|
||||
final EntityPlayer player) {
|
||||
final IInterdictionMatrix interdictionMatrix =
|
||||
getNearestInterdictionMatrix(world, position);
|
||||
return interdictionMatrix == null ||
|
||||
hasPermission(world, position, interdictionMatrix, action, player);
|
||||
}
|
||||
|
||||
public static boolean
|
||||
hasPermission(final World world, final Vector3 position,
|
||||
final IInterdictionMatrix interdictionMatrix,
|
||||
final PlayerInteractEvent.Action action,
|
||||
final EntityPlayer player) {
|
||||
boolean hasPermission = true;
|
||||
if (action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK &&
|
||||
position.getTileEntity((IBlockAccess)world) != null &&
|
||||
interdictionMatrix.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleBlockAccess, new int[0]) > 0) {
|
||||
hasPermission = false;
|
||||
if (isPermittedByInterdictionMatrix(interdictionMatrix,
|
||||
player.getDisplayName(),
|
||||
Permission.BLOCK_ACCESS)) {
|
||||
hasPermission = true;
|
||||
}
|
||||
public static boolean hasPermission(
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final Permission permission,
|
||||
final EntityPlayer player
|
||||
) {
|
||||
final IInterdictionMatrix interdictionMatrix
|
||||
= getNearestInterdictionMatrix(world, position);
|
||||
return interdictionMatrix == null
|
||||
|| isPermittedByInterdictionMatrix(
|
||||
interdictionMatrix, player.getDisplayName(), permission
|
||||
);
|
||||
}
|
||||
if (hasPermission &&
|
||||
interdictionMatrix.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleBlockAlter, new int[0]) > 0 &&
|
||||
(player.getCurrentEquippedItem() != null ||
|
||||
action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK)) {
|
||||
hasPermission = false;
|
||||
if (isPermittedByInterdictionMatrix(interdictionMatrix,
|
||||
player.getDisplayName(),
|
||||
Permission.BLOCK_ALTER)) {
|
||||
hasPermission = true;
|
||||
}
|
||||
|
||||
public static boolean hasPermission(
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final PlayerInteractEvent.Action action,
|
||||
final EntityPlayer player
|
||||
) {
|
||||
final IInterdictionMatrix interdictionMatrix
|
||||
= getNearestInterdictionMatrix(world, position);
|
||||
return interdictionMatrix == null
|
||||
|| hasPermission(world, position, interdictionMatrix, action, player);
|
||||
}
|
||||
|
||||
public static boolean hasPermission(
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final IInterdictionMatrix interdictionMatrix,
|
||||
final PlayerInteractEvent.Action action,
|
||||
final EntityPlayer player
|
||||
) {
|
||||
boolean hasPermission = true;
|
||||
if (action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK
|
||||
&& position.getTileEntity((IBlockAccess) world) != null
|
||||
&& interdictionMatrix.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleBlockAccess, new int[0]
|
||||
) > 0) {
|
||||
hasPermission = false;
|
||||
if (isPermittedByInterdictionMatrix(
|
||||
interdictionMatrix, player.getDisplayName(), Permission.BLOCK_ACCESS
|
||||
)) {
|
||||
hasPermission = true;
|
||||
}
|
||||
}
|
||||
if (hasPermission
|
||||
&& interdictionMatrix.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleBlockAlter, new int[0]
|
||||
) > 0
|
||||
&& (player.getCurrentEquippedItem() != null
|
||||
|| action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK)) {
|
||||
hasPermission = false;
|
||||
if (isPermittedByInterdictionMatrix(
|
||||
interdictionMatrix, player.getDisplayName(), Permission.BLOCK_ALTER
|
||||
)) {
|
||||
hasPermission = true;
|
||||
}
|
||||
}
|
||||
return hasPermission;
|
||||
}
|
||||
return hasPermission;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,60 +8,71 @@ import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ManipulatorHelper {
|
||||
public static void setBlockSneaky(final World world, final Vector3 position,
|
||||
final Block id, final int metadata,
|
||||
final TileEntity tileEntity) {
|
||||
final Chunk chunk = world.getChunkFromChunkCoords(position.intX() >> 4,
|
||||
position.intZ() >> 4);
|
||||
final Vector3 chunkPosition = new Vector3(
|
||||
position.intX() & 0xF, position.intY() & 0xF, position.intZ() & 0xF);
|
||||
final int heightMapIndex = chunkPosition.intZ() << 4 | chunkPosition.intX();
|
||||
if (position.intY() >= chunk.precipitationHeightMap[heightMapIndex] - 1) {
|
||||
chunk.precipitationHeightMap[heightMapIndex] = -999;
|
||||
}
|
||||
final int heightMapValue = chunk.heightMap[heightMapIndex];
|
||||
world.removeTileEntity(position.intX(), position.intY(), position.intZ());
|
||||
ExtendedBlockStorage extendedBlockStorage =
|
||||
chunk.getBlockStorageArray()[position.intY() >> 4];
|
||||
if (extendedBlockStorage == null) {
|
||||
extendedBlockStorage = new ExtendedBlockStorage(position.intY() >> 4 << 4,
|
||||
!world.provider.hasNoSky);
|
||||
chunk.getBlockStorageArray()[position.intY() >> 4] = extendedBlockStorage;
|
||||
}
|
||||
extendedBlockStorage.func_150818_a(
|
||||
chunkPosition.intX(), chunkPosition.intY(), chunkPosition.intZ(), id);
|
||||
extendedBlockStorage.setExtBlockMetadata(chunkPosition.intX(),
|
||||
chunkPosition.intY(),
|
||||
chunkPosition.intZ(), metadata);
|
||||
if (position.intY() >= heightMapValue) {
|
||||
chunk.generateSkylightMap();
|
||||
} else {
|
||||
if (chunk.func_150808_b(chunkPosition.intX(), position.intY(),
|
||||
chunkPosition.intZ()) > 0) {
|
||||
if (position.intY() >= heightMapValue) {
|
||||
relightBlock(chunk,
|
||||
Vector3.add(chunkPosition, new Vector3(0.0, 1.0, 0.0)));
|
||||
public static void setBlockSneaky(
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final Block id,
|
||||
final int metadata,
|
||||
final TileEntity tileEntity
|
||||
) {
|
||||
final Chunk chunk
|
||||
= world.getChunkFromChunkCoords(position.intX() >> 4, position.intZ() >> 4);
|
||||
final Vector3 chunkPosition = new Vector3(
|
||||
position.intX() & 0xF, position.intY() & 0xF, position.intZ() & 0xF
|
||||
);
|
||||
final int heightMapIndex = chunkPosition.intZ() << 4 | chunkPosition.intX();
|
||||
if (position.intY() >= chunk.precipitationHeightMap[heightMapIndex] - 1) {
|
||||
chunk.precipitationHeightMap[heightMapIndex] = -999;
|
||||
}
|
||||
} else if (position.intY() == heightMapValue - 1) {
|
||||
relightBlock(chunk, chunkPosition);
|
||||
}
|
||||
propagateSkylightOcclusion(chunk, chunkPosition);
|
||||
final int heightMapValue = chunk.heightMap[heightMapIndex];
|
||||
world.removeTileEntity(position.intX(), position.intY(), position.intZ());
|
||||
ExtendedBlockStorage extendedBlockStorage
|
||||
= chunk.getBlockStorageArray()[position.intY() >> 4];
|
||||
if (extendedBlockStorage == null) {
|
||||
extendedBlockStorage = new ExtendedBlockStorage(
|
||||
position.intY() >> 4 << 4, !world.provider.hasNoSky
|
||||
);
|
||||
chunk.getBlockStorageArray()[position.intY() >> 4] = extendedBlockStorage;
|
||||
}
|
||||
extendedBlockStorage.func_150818_a(
|
||||
chunkPosition.intX(), chunkPosition.intY(), chunkPosition.intZ(), id
|
||||
);
|
||||
extendedBlockStorage.setExtBlockMetadata(
|
||||
chunkPosition.intX(), chunkPosition.intY(), chunkPosition.intZ(), metadata
|
||||
);
|
||||
if (position.intY() >= heightMapValue) {
|
||||
chunk.generateSkylightMap();
|
||||
} else {
|
||||
if (chunk.func_150808_b(
|
||||
chunkPosition.intX(), position.intY(), chunkPosition.intZ()
|
||||
)
|
||||
> 0) {
|
||||
if (position.intY() >= heightMapValue) {
|
||||
relightBlock(
|
||||
chunk, Vector3.add(chunkPosition, new Vector3(0.0, 1.0, 0.0))
|
||||
);
|
||||
}
|
||||
} else if (position.intY() == heightMapValue - 1) {
|
||||
relightBlock(chunk, chunkPosition);
|
||||
}
|
||||
propagateSkylightOcclusion(chunk, chunkPosition);
|
||||
}
|
||||
chunk.isModified = true;
|
||||
world.func_147451_t(position.intX(), position.intY(), position.intZ());
|
||||
if (tileEntity != null) {
|
||||
world.setTileEntity(
|
||||
position.intX(), position.intY(), position.intZ(), tileEntity
|
||||
);
|
||||
}
|
||||
world.markBlockForUpdate(position.intX(), position.intY(), position.intZ());
|
||||
}
|
||||
chunk.isModified = true;
|
||||
world.func_147451_t(position.intX(), position.intY(), position.intZ());
|
||||
if (tileEntity != null) {
|
||||
world.setTileEntity(position.intX(), position.intY(), position.intZ(),
|
||||
tileEntity);
|
||||
|
||||
public static void relightBlock(final Chunk chunk, final Vector3 position) {
|
||||
chunk.relightBlock(position.intX(), position.intY(), position.intZ());
|
||||
}
|
||||
world.markBlockForUpdate(position.intX(), position.intY(), position.intZ());
|
||||
}
|
||||
|
||||
public static void relightBlock(final Chunk chunk, final Vector3 position) {
|
||||
chunk.relightBlock(position.intX(), position.intY(), position.intZ());
|
||||
}
|
||||
|
||||
public static void propagateSkylightOcclusion(final Chunk chunk,
|
||||
final Vector3 position) {
|
||||
chunk.propagateSkylightOcclusion(position.intX(), position.intZ());
|
||||
}
|
||||
public static void
|
||||
propagateSkylightOcclusion(final Chunk chunk, final Vector3 position) {
|
||||
chunk.propagateSkylightOcclusion(position.intX(), position.intZ());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
package mffs;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import calclavia.lib.UniversalRecipes;
|
||||
import cpw.mods.fml.common.Mod;
|
||||
import cpw.mods.fml.common.Mod.EventHandler;
|
||||
|
@ -14,8 +17,6 @@ import cpw.mods.fml.common.network.NetworkRegistry;
|
|||
import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import java.util.Arrays;
|
||||
import java.util.logging.Logger;
|
||||
import mffs.base.BlockBase;
|
||||
import mffs.base.BlockMachine;
|
||||
import mffs.base.ItemBase;
|
||||
|
@ -74,279 +75,290 @@ import net.minecraftforge.fluids.FluidRegistry;
|
|||
import universalelectricity.prefab.CustomDamageSource;
|
||||
import universalelectricity.prefab.TranslationHelper;
|
||||
|
||||
@Mod(modid = "MFFS", name = "Modular Force Field System", version = ModularForceFieldSystem.VERSION,
|
||||
useMetadata = true, dependencies = "required-after:basiccomponents;after:IC2")
|
||||
@Mod(
|
||||
modid = "MFFS",
|
||||
name = "Modular Force Field System",
|
||||
version = ModularForceFieldSystem.VERSION,
|
||||
useMetadata = true,
|
||||
dependencies = "required-after:basiccomponents;after:IC2"
|
||||
)
|
||||
public class ModularForceFieldSystem {
|
||||
public static final String CHANNEL = "MFFS";
|
||||
public static final String ID = "MFFS";
|
||||
public static final String NAME = "Modular Force Field System";
|
||||
public static final String PREFIX = "mffs:";
|
||||
public static final String VERSION = "{VERSION}";
|
||||
@Mod.Instance("MFFS") public static ModularForceFieldSystem instance;
|
||||
@Mod.Metadata("MFFS") public static ModMetadata metadata;
|
||||
@SidedProxy(clientSide = "mffs.ClientProxy", serverSide = "mffs.CommonProxy")
|
||||
public static CommonProxy proxy;
|
||||
public static final Logger LOGGER;
|
||||
public static final String RESOURCE_DIRECTORY = "/mods/mffs/";
|
||||
public static final String LANGUAGE_DIRECTORY = "/mods/mffs/languages/";
|
||||
public static final String TEXTURE_DIRECTORY = "/mods/mffs/textures/";
|
||||
public static final String BLOCK_DIRECTORY = "/mods/mffs/textures/blocks/";
|
||||
public static final String ITEM_DIRECTORY = "/mods/mffs/textures/items/";
|
||||
public static final String MODEL_DIRECTORY = "/mods/mffs/textures/models/";
|
||||
public static final String GUI_DIRECTORY = "/mods/mffs/textures/gui/";
|
||||
public static final String GUI_BASE_DIRECTORY =
|
||||
"/mods/mffs/textures/gui/gui_base.png";
|
||||
public static final String GUI_COMPONENTS =
|
||||
"/mods/mffs/textures/gui/gui_components.png";
|
||||
public static final String GUI_BUTTON =
|
||||
"/mods/mffs/textures/gui/gui_button.png";
|
||||
public static BlockMachine blockCoercionDeriver;
|
||||
public static BlockMachine blockFortronCapacitor;
|
||||
public static BlockMachine blockForceFieldProjector;
|
||||
public static BlockMachine blockBiometricIdentifier;
|
||||
public static BlockMachine blockInterdictionMatrix;
|
||||
public static BlockMachine blockForceManipulator;
|
||||
public static BlockBase blockForceField;
|
||||
public static Item itemRemoteController;
|
||||
public static Item itemFocusMatrix;
|
||||
public static ItemCard itemCardBlank;
|
||||
public static ItemCard itemCardInfinite;
|
||||
public static ItemCard itemCardFrequency;
|
||||
public static ItemCard itemCardID;
|
||||
public static ItemCard itemCardLink;
|
||||
public static ItemMode itemModeCube;
|
||||
public static ItemMode itemModeSphere;
|
||||
public static ItemMode itemModeTube;
|
||||
public static ItemMode itemModeCylinder;
|
||||
public static ItemMode itemModePyramid;
|
||||
public static ItemMode itemModeCustom;
|
||||
public static ItemModule itemModuleSpeed;
|
||||
public static ItemModule itemModuleCapacity;
|
||||
public static ItemModule itemModuleTranslate;
|
||||
public static ItemModule itemModuleScale;
|
||||
public static ItemModule itemModuleRotate;
|
||||
public static ItemModule itemModuleCollection;
|
||||
public static ItemModule itemModuleInvert;
|
||||
public static ItemModule itemModuleSilence;
|
||||
public static ItemModule itemModuleFusion;
|
||||
public static ItemModule itemModuleManipulator;
|
||||
public static ItemModule itemModuleCamouflage;
|
||||
public static ItemModule itemModuleDisintegration;
|
||||
public static ItemModule itemModuleShock;
|
||||
public static ItemModule itemModuleGlow;
|
||||
public static ItemModule itemModuleSponge;
|
||||
public static ItemModule itemModuleStablize;
|
||||
public static ItemModule itemModuleAntiHostile;
|
||||
public static ItemModule itemModuleAntiFriendly;
|
||||
public static ItemModule itemModuleAntiPersonnel;
|
||||
public static ItemModule itemModuleConfiscate;
|
||||
public static ItemModule itemModuleWarn;
|
||||
public static ItemModule itemModuleBlockAccess;
|
||||
public static ItemModule itemModuleBlockAlter;
|
||||
public static ItemModule itemModuleAntiSpawn;
|
||||
public static DamageSource damagefieldShock;
|
||||
public static final String CHANNEL = "MFFS";
|
||||
public static final String ID = "MFFS";
|
||||
public static final String NAME = "Modular Force Field System";
|
||||
public static final String PREFIX = "mffs:";
|
||||
public static final String VERSION = "{VERSION}";
|
||||
@Mod.Instance("MFFS")
|
||||
public static ModularForceFieldSystem instance;
|
||||
@Mod.Metadata("MFFS")
|
||||
public static ModMetadata metadata;
|
||||
@SidedProxy(clientSide = "mffs.ClientProxy", serverSide = "mffs.CommonProxy")
|
||||
public static CommonProxy proxy;
|
||||
public static final Logger LOGGER;
|
||||
public static final String RESOURCE_DIRECTORY = "/mods/mffs/";
|
||||
public static final String LANGUAGE_DIRECTORY = "/mods/mffs/languages/";
|
||||
public static final String TEXTURE_DIRECTORY = "/mods/mffs/textures/";
|
||||
public static final String BLOCK_DIRECTORY = "/mods/mffs/textures/blocks/";
|
||||
public static final String ITEM_DIRECTORY = "/mods/mffs/textures/items/";
|
||||
public static final String MODEL_DIRECTORY = "/mods/mffs/textures/models/";
|
||||
public static final String GUI_DIRECTORY = "/mods/mffs/textures/gui/";
|
||||
public static final String GUI_BASE_DIRECTORY
|
||||
= "/mods/mffs/textures/gui/gui_base.png";
|
||||
public static final String GUI_COMPONENTS
|
||||
= "/mods/mffs/textures/gui/gui_components.png";
|
||||
public static final String GUI_BUTTON = "/mods/mffs/textures/gui/gui_button.png";
|
||||
public static BlockMachine blockCoercionDeriver;
|
||||
public static BlockMachine blockFortronCapacitor;
|
||||
public static BlockMachine blockForceFieldProjector;
|
||||
public static BlockMachine blockBiometricIdentifier;
|
||||
public static BlockMachine blockInterdictionMatrix;
|
||||
public static BlockMachine blockForceManipulator;
|
||||
public static BlockBase blockForceField;
|
||||
public static Item itemRemoteController;
|
||||
public static Item itemFocusMatrix;
|
||||
public static ItemCard itemCardBlank;
|
||||
public static ItemCard itemCardInfinite;
|
||||
public static ItemCard itemCardFrequency;
|
||||
public static ItemCard itemCardID;
|
||||
public static ItemCard itemCardLink;
|
||||
public static ItemMode itemModeCube;
|
||||
public static ItemMode itemModeSphere;
|
||||
public static ItemMode itemModeTube;
|
||||
public static ItemMode itemModeCylinder;
|
||||
public static ItemMode itemModePyramid;
|
||||
public static ItemMode itemModeCustom;
|
||||
public static ItemModule itemModuleSpeed;
|
||||
public static ItemModule itemModuleCapacity;
|
||||
public static ItemModule itemModuleTranslate;
|
||||
public static ItemModule itemModuleScale;
|
||||
public static ItemModule itemModuleRotate;
|
||||
public static ItemModule itemModuleCollection;
|
||||
public static ItemModule itemModuleInvert;
|
||||
public static ItemModule itemModuleSilence;
|
||||
public static ItemModule itemModuleFusion;
|
||||
public static ItemModule itemModuleManipulator;
|
||||
public static ItemModule itemModuleCamouflage;
|
||||
public static ItemModule itemModuleDisintegration;
|
||||
public static ItemModule itemModuleShock;
|
||||
public static ItemModule itemModuleGlow;
|
||||
public static ItemModule itemModuleSponge;
|
||||
public static ItemModule itemModuleStablize;
|
||||
public static ItemModule itemModuleAntiHostile;
|
||||
public static ItemModule itemModuleAntiFriendly;
|
||||
public static ItemModule itemModuleAntiPersonnel;
|
||||
public static ItemModule itemModuleConfiscate;
|
||||
public static ItemModule itemModuleWarn;
|
||||
public static ItemModule itemModuleBlockAccess;
|
||||
public static ItemModule itemModuleBlockAlter;
|
||||
public static ItemModule itemModuleAntiSpawn;
|
||||
public static DamageSource damagefieldShock;
|
||||
|
||||
public static SimpleNetworkWrapper channel;
|
||||
public static SimpleNetworkWrapper channel;
|
||||
|
||||
@EventHandler
|
||||
public void preInit(final FMLPreInitializationEvent event) {
|
||||
NetworkRegistry.INSTANCE.registerGuiHandler(
|
||||
(Object)this, (IGuiHandler)ModularForceFieldSystem.proxy);
|
||||
MinecraftForge.EVENT_BUS.register((Object) new SubscribeEventHandler());
|
||||
Settings.load();
|
||||
Settings.CONFIGURATION.load();
|
||||
ModularForceFieldSystem.blockForceField = new BlockForceField();
|
||||
ModularForceFieldSystem.blockCoercionDeriver = new BlockCoercionDeriver();
|
||||
ModularForceFieldSystem.blockFortronCapacitor = new BlockFortronCapacitor();
|
||||
ModularForceFieldSystem.blockForceFieldProjector =
|
||||
new BlockForceFieldProjector();
|
||||
ModularForceFieldSystem.blockBiometricIdentifier =
|
||||
new BlockBiometricIdentifier();
|
||||
ModularForceFieldSystem.blockInterdictionMatrix =
|
||||
new BlockInterdictionMatrix();
|
||||
ModularForceFieldSystem.blockForceManipulator = new BlockForceManipulator();
|
||||
ModularForceFieldSystem.itemRemoteController = new ItemRemoteController();
|
||||
ModularForceFieldSystem.itemFocusMatrix = new ItemBase("focusMatrix");
|
||||
ModularForceFieldSystem.itemModeCube =
|
||||
new ItemModeCube(Settings.getNextItemID());
|
||||
ModularForceFieldSystem.itemModeSphere =
|
||||
new ItemModeSphere(Settings.getNextItemID());
|
||||
ModularForceFieldSystem.itemModeTube = new ItemModeTube();
|
||||
ModularForceFieldSystem.itemModePyramid = new ItemModePyramid();
|
||||
ModularForceFieldSystem.itemModeCylinder = new ItemModeCylinder();
|
||||
ModularForceFieldSystem.itemModeCustom = new ItemModeCustom();
|
||||
ModularForceFieldSystem.itemModuleTranslate =
|
||||
new ItemModule("moduleTranslate").setCost(1.6f);
|
||||
ModularForceFieldSystem.itemModuleScale =
|
||||
new ItemModule("moduleScale").setCost(1.2f);
|
||||
ModularForceFieldSystem.itemModuleRotate =
|
||||
new ItemModule("moduleRotate").setCost(0.1f);
|
||||
ModularForceFieldSystem.itemModuleSpeed =
|
||||
new ItemModule("moduleSpeed").setCost(1.0f);
|
||||
ModularForceFieldSystem.itemModuleCapacity =
|
||||
new ItemModule("moduleCapacity").setCost(0.5f);
|
||||
ModularForceFieldSystem.itemModuleFusion = new ItemModuleFusion();
|
||||
ModularForceFieldSystem.itemModuleManipulator = new ItemModuleManipulator();
|
||||
ModularForceFieldSystem.itemModuleCamouflage =
|
||||
new ItemModule("moduleCamouflage").setCost(1.5f).setMaxStackSize(1);
|
||||
ModularForceFieldSystem.itemModuleDisintegration =
|
||||
new ItemModuleDisintegration();
|
||||
ModularForceFieldSystem.itemModuleShock = new ItemModuleShock();
|
||||
ModularForceFieldSystem.itemModuleGlow = new ItemModule("moduleGlow");
|
||||
ModularForceFieldSystem.itemModuleSponge = new ItemModuleSponge();
|
||||
ModularForceFieldSystem.itemModuleStablize = new ItemModuleStablize();
|
||||
ModularForceFieldSystem.itemModuleAntiFriendly =
|
||||
new ItemModuleAntiFriendly();
|
||||
ModularForceFieldSystem.itemModuleAntiHostile = new ItemModuleAntiHostile();
|
||||
ModularForceFieldSystem.itemModuleAntiPersonnel =
|
||||
new ItemModuleAntiPersonnel();
|
||||
ModularForceFieldSystem.itemModuleConfiscate = new ItemModuleConfiscate();
|
||||
ModularForceFieldSystem.itemModuleWarn = new ItemModuleWarn();
|
||||
ModularForceFieldSystem.itemModuleBlockAccess =
|
||||
new ItemModuleInterdictionMatrix("moduleBlockAccess").setCost(10.0f);
|
||||
ModularForceFieldSystem.itemModuleBlockAlter =
|
||||
new ItemModuleInterdictionMatrix("moduleBlockAlter").setCost(15.0f);
|
||||
ModularForceFieldSystem.itemModuleAntiSpawn =
|
||||
new ItemModuleInterdictionMatrix("moduleAntiSpawn").setCost(10.0f);
|
||||
ModularForceFieldSystem.itemCardBlank = new ItemCard("cardBlank");
|
||||
ModularForceFieldSystem.itemCardFrequency = new ItemCardFrequency();
|
||||
ModularForceFieldSystem.itemCardLink = new ItemCardLink();
|
||||
ModularForceFieldSystem.itemCardID = new ItemCardID();
|
||||
ModularForceFieldSystem.itemCardInfinite = new ItemCardInfinite();
|
||||
FortronHelper.FLUID_FORTRON = new Fluid("fortron");
|
||||
ModularForceFieldSystem.itemModuleCollection =
|
||||
new ItemModule("moduleCollection").setMaxStackSize(1).setCost(15.0f);
|
||||
ModularForceFieldSystem.itemModuleInvert =
|
||||
new ItemModule("moduleInvert").setMaxStackSize(1).setCost(15.0f);
|
||||
ModularForceFieldSystem.itemModuleSilence =
|
||||
new ItemModule("moduleSilence").setMaxStackSize(1).setCost(1.0f);
|
||||
Settings.CONFIGURATION.save();
|
||||
GameRegistry.registerBlock((Block)ModularForceFieldSystem.blockForceField,
|
||||
"blockForceField");
|
||||
GameRegistry.registerBlock(
|
||||
(Block)ModularForceFieldSystem.blockCoercionDeriver,
|
||||
@EventHandler
|
||||
public void preInit(final FMLPreInitializationEvent event) {
|
||||
NetworkRegistry.INSTANCE.registerGuiHandler(
|
||||
(Object) this, (IGuiHandler) ModularForceFieldSystem.proxy
|
||||
);
|
||||
MinecraftForge.EVENT_BUS.register((Object) new SubscribeEventHandler());
|
||||
Settings.load();
|
||||
Settings.CONFIGURATION.load();
|
||||
ModularForceFieldSystem.blockForceField = new BlockForceField();
|
||||
ModularForceFieldSystem.blockCoercionDeriver = new BlockCoercionDeriver();
|
||||
ModularForceFieldSystem.blockFortronCapacitor = new BlockFortronCapacitor();
|
||||
ModularForceFieldSystem.blockForceFieldProjector = new BlockForceFieldProjector();
|
||||
ModularForceFieldSystem.blockBiometricIdentifier = new BlockBiometricIdentifier();
|
||||
ModularForceFieldSystem.blockInterdictionMatrix = new BlockInterdictionMatrix();
|
||||
ModularForceFieldSystem.blockForceManipulator = new BlockForceManipulator();
|
||||
ModularForceFieldSystem.itemRemoteController = new ItemRemoteController();
|
||||
ModularForceFieldSystem.itemFocusMatrix = new ItemBase("focusMatrix");
|
||||
ModularForceFieldSystem.itemModeCube = new ItemModeCube(Settings.getNextItemID());
|
||||
ModularForceFieldSystem.itemModeSphere
|
||||
= new ItemModeSphere(Settings.getNextItemID());
|
||||
ModularForceFieldSystem.itemModeTube = new ItemModeTube();
|
||||
ModularForceFieldSystem.itemModePyramid = new ItemModePyramid();
|
||||
ModularForceFieldSystem.itemModeCylinder = new ItemModeCylinder();
|
||||
ModularForceFieldSystem.itemModeCustom = new ItemModeCustom();
|
||||
ModularForceFieldSystem.itemModuleTranslate
|
||||
= new ItemModule("moduleTranslate").setCost(1.6f);
|
||||
ModularForceFieldSystem.itemModuleScale
|
||||
= new ItemModule("moduleScale").setCost(1.2f);
|
||||
ModularForceFieldSystem.itemModuleRotate
|
||||
= new ItemModule("moduleRotate").setCost(0.1f);
|
||||
ModularForceFieldSystem.itemModuleSpeed
|
||||
= new ItemModule("moduleSpeed").setCost(1.0f);
|
||||
ModularForceFieldSystem.itemModuleCapacity
|
||||
= new ItemModule("moduleCapacity").setCost(0.5f);
|
||||
ModularForceFieldSystem.itemModuleFusion = new ItemModuleFusion();
|
||||
ModularForceFieldSystem.itemModuleManipulator = new ItemModuleManipulator();
|
||||
ModularForceFieldSystem.itemModuleCamouflage
|
||||
= new ItemModule("moduleCamouflage").setCost(1.5f).setMaxStackSize(1);
|
||||
ModularForceFieldSystem.itemModuleDisintegration = new ItemModuleDisintegration();
|
||||
ModularForceFieldSystem.itemModuleShock = new ItemModuleShock();
|
||||
ModularForceFieldSystem.itemModuleGlow = new ItemModule("moduleGlow");
|
||||
ModularForceFieldSystem.itemModuleSponge = new ItemModuleSponge();
|
||||
ModularForceFieldSystem.itemModuleStablize = new ItemModuleStablize();
|
||||
ModularForceFieldSystem.itemModuleAntiFriendly = new ItemModuleAntiFriendly();
|
||||
ModularForceFieldSystem.itemModuleAntiHostile = new ItemModuleAntiHostile();
|
||||
ModularForceFieldSystem.itemModuleAntiPersonnel = new ItemModuleAntiPersonnel();
|
||||
ModularForceFieldSystem.itemModuleConfiscate = new ItemModuleConfiscate();
|
||||
ModularForceFieldSystem.itemModuleWarn = new ItemModuleWarn();
|
||||
ModularForceFieldSystem.itemModuleBlockAccess
|
||||
= new ItemModuleInterdictionMatrix("moduleBlockAccess").setCost(10.0f);
|
||||
ModularForceFieldSystem.itemModuleBlockAlter
|
||||
= new ItemModuleInterdictionMatrix("moduleBlockAlter").setCost(15.0f);
|
||||
ModularForceFieldSystem.itemModuleAntiSpawn
|
||||
= new ItemModuleInterdictionMatrix("moduleAntiSpawn").setCost(10.0f);
|
||||
ModularForceFieldSystem.itemCardBlank = new ItemCard("cardBlank");
|
||||
ModularForceFieldSystem.itemCardFrequency = new ItemCardFrequency();
|
||||
ModularForceFieldSystem.itemCardLink = new ItemCardLink();
|
||||
ModularForceFieldSystem.itemCardID = new ItemCardID();
|
||||
ModularForceFieldSystem.itemCardInfinite = new ItemCardInfinite();
|
||||
FortronHelper.FLUID_FORTRON = new Fluid("fortron");
|
||||
ModularForceFieldSystem.itemModuleCollection
|
||||
= new ItemModule("moduleCollection").setMaxStackSize(1).setCost(15.0f);
|
||||
ModularForceFieldSystem.itemModuleInvert
|
||||
= new ItemModule("moduleInvert").setMaxStackSize(1).setCost(15.0f);
|
||||
ModularForceFieldSystem.itemModuleSilence
|
||||
= new ItemModule("moduleSilence").setMaxStackSize(1).setCost(1.0f);
|
||||
Settings.CONFIGURATION.save();
|
||||
GameRegistry.registerBlock(
|
||||
(Block) ModularForceFieldSystem.blockForceField, "blockForceField"
|
||||
);
|
||||
GameRegistry.registerBlock(
|
||||
(Block) ModularForceFieldSystem.blockCoercionDeriver,
|
||||
|
||||
"blockCoercionDeriver");
|
||||
GameRegistry.registerBlock(
|
||||
(Block)ModularForceFieldSystem.blockFortronCapacitor,
|
||||
"blockFortronCapacitor");
|
||||
GameRegistry.registerBlock(
|
||||
(Block)ModularForceFieldSystem.blockForceFieldProjector,
|
||||
"blockForceFieldProjector");
|
||||
GameRegistry.registerBlock(
|
||||
(Block)ModularForceFieldSystem.blockBiometricIdentifier,
|
||||
"blockBiometricIdentifier");
|
||||
GameRegistry.registerBlock(
|
||||
(Block)ModularForceFieldSystem.blockInterdictionMatrix,
|
||||
"blockInterdictionMatrix");
|
||||
GameRegistry.registerBlock(
|
||||
(Block)ModularForceFieldSystem.blockForceManipulator,
|
||||
"blockForceManipulator"
|
||||
"blockCoercionDeriver"
|
||||
);
|
||||
GameRegistry.registerBlock(
|
||||
(Block) ModularForceFieldSystem.blockFortronCapacitor, "blockFortronCapacitor"
|
||||
);
|
||||
GameRegistry.registerBlock(
|
||||
(Block) ModularForceFieldSystem.blockForceFieldProjector,
|
||||
"blockForceFieldProjector"
|
||||
);
|
||||
GameRegistry.registerBlock(
|
||||
(Block) ModularForceFieldSystem.blockBiometricIdentifier,
|
||||
"blockBiometricIdentifier"
|
||||
);
|
||||
GameRegistry.registerBlock(
|
||||
(Block) ModularForceFieldSystem.blockInterdictionMatrix,
|
||||
"blockInterdictionMatrix"
|
||||
);
|
||||
GameRegistry.registerBlock(
|
||||
(Block) ModularForceFieldSystem.blockForceManipulator, "blockForceManipulator"
|
||||
|
||||
);
|
||||
GameRegistry.registerTileEntity(TileEntityForceField.class,
|
||||
"tileForceField");
|
||||
GameRegistry.registerTileEntity(TileEntityCoercionDeriver.class,
|
||||
"tileCoercionDeriver");
|
||||
GameRegistry.registerTileEntity(TileEntityFortronCapacitor.class,
|
||||
"tileFortronCapacitor");
|
||||
GameRegistry.registerTileEntity(TileEntityForceFieldProjector.class,
|
||||
"tileForceFieldProjector");
|
||||
GameRegistry.registerTileEntity(TileEntityBiometricIdentifier.class,
|
||||
"tileBiometricIdentifier");
|
||||
GameRegistry.registerTileEntity(TileEntityInterdictionMatrix.class,
|
||||
"tileInterdictionMatrix");
|
||||
GameRegistry.registerTileEntity(TileEntityForceManipulator.class,
|
||||
"tileForceManipulator");
|
||||
);
|
||||
GameRegistry.registerTileEntity(TileEntityForceField.class, "tileForceField");
|
||||
GameRegistry.registerTileEntity(
|
||||
TileEntityCoercionDeriver.class, "tileCoercionDeriver"
|
||||
);
|
||||
GameRegistry.registerTileEntity(
|
||||
TileEntityFortronCapacitor.class, "tileFortronCapacitor"
|
||||
);
|
||||
GameRegistry.registerTileEntity(
|
||||
TileEntityForceFieldProjector.class, "tileForceFieldProjector"
|
||||
);
|
||||
GameRegistry.registerTileEntity(
|
||||
TileEntityBiometricIdentifier.class, "tileBiometricIdentifier"
|
||||
);
|
||||
GameRegistry.registerTileEntity(
|
||||
TileEntityInterdictionMatrix.class, "tileInterdictionMatrix"
|
||||
);
|
||||
GameRegistry.registerTileEntity(
|
||||
TileEntityForceManipulator.class, "tileForceManipulator"
|
||||
);
|
||||
|
||||
ModularForceFieldSystem.proxy.preInit();
|
||||
ModularForceFieldSystem.proxy.preInit();
|
||||
|
||||
FluidRegistry.registerFluid(FortronHelper.FLUID_FORTRON);
|
||||
FluidRegistry.registerFluid(FortronHelper.FLUID_FORTRON);
|
||||
|
||||
GameRegistry.registerItem(itemRemoteController, "itemRemoteController");
|
||||
GameRegistry.registerItem(itemFocusMatrix, "itemFocusMatix");
|
||||
GameRegistry.registerItem(itemCardBlank, "itemCardBlank");
|
||||
GameRegistry.registerItem(itemCardInfinite, "itemCardInfinite");
|
||||
GameRegistry.registerItem(itemCardFrequency, "itemCardFrequency");
|
||||
GameRegistry.registerItem(itemCardID, "itemCardID");
|
||||
GameRegistry.registerItem(itemCardLink, "itemCardLink");
|
||||
GameRegistry.registerItem(itemModeCube, "itemModeCube");
|
||||
GameRegistry.registerItem(itemModeSphere, "itemModeSphere");
|
||||
GameRegistry.registerItem(itemModeTube, "itemModeTube");
|
||||
GameRegistry.registerItem(itemModeCylinder, "itemModeCylinder");
|
||||
GameRegistry.registerItem(itemModePyramid, "itemModePyramid");
|
||||
GameRegistry.registerItem(itemModeCustom, "itemModeCustom");
|
||||
GameRegistry.registerItem(itemModuleSpeed, "itemModuleSpeed");
|
||||
GameRegistry.registerItem(itemModuleCapacity, "itemModuleCapacity");
|
||||
GameRegistry.registerItem(itemModuleTranslate, "itemModuleTranslate");
|
||||
GameRegistry.registerItem(itemModuleScale, "itemModuleScale");
|
||||
GameRegistry.registerItem(itemModuleRotate, "itemModuleRotate");
|
||||
GameRegistry.registerItem(itemModuleCollection, "itemModuleCollection");
|
||||
GameRegistry.registerItem(itemModuleInvert, "itemModuleInvert");
|
||||
GameRegistry.registerItem(itemModuleSilence, "itemModuleSilence");
|
||||
GameRegistry.registerItem(itemModuleFusion, "itemModuleFusion");
|
||||
GameRegistry.registerItem(itemModuleManipulator, "itemModuleManipulator");
|
||||
GameRegistry.registerItem(itemModuleCamouflage, "itemModuleCamouflage");
|
||||
GameRegistry.registerItem(itemModuleDisintegration,
|
||||
"itemModuleDisintegration");
|
||||
GameRegistry.registerItem(itemModuleShock, "itemModuleShock");
|
||||
GameRegistry.registerItem(itemModuleGlow, "itemModuleGlow");
|
||||
GameRegistry.registerItem(itemModuleSponge, "itemModuleSponge");
|
||||
GameRegistry.registerItem(itemModuleStablize, "itemModuleStablize");
|
||||
GameRegistry.registerItem(itemModuleAntiHostile, "itemModuleAntiHostile");
|
||||
GameRegistry.registerItem(itemModuleAntiFriendly, "itemModuleAntiFriendly");
|
||||
GameRegistry.registerItem(itemModuleAntiPersonnel,
|
||||
"itemModuleAntiPersonnel");
|
||||
GameRegistry.registerItem(itemModuleConfiscate, "itemModuleConfiscate");
|
||||
GameRegistry.registerItem(itemModuleWarn, "itemModuleWarn");
|
||||
GameRegistry.registerItem(itemModuleBlockAccess, "itemModuleBlockAccess");
|
||||
GameRegistry.registerItem(itemModuleBlockAlter, "itemModuleBlockAlter");
|
||||
GameRegistry.registerItem(itemModuleAntiSpawn, "itemModuleAntiSpawn");
|
||||
GameRegistry.registerItem(itemRemoteController, "itemRemoteController");
|
||||
GameRegistry.registerItem(itemFocusMatrix, "itemFocusMatix");
|
||||
GameRegistry.registerItem(itemCardBlank, "itemCardBlank");
|
||||
GameRegistry.registerItem(itemCardInfinite, "itemCardInfinite");
|
||||
GameRegistry.registerItem(itemCardFrequency, "itemCardFrequency");
|
||||
GameRegistry.registerItem(itemCardID, "itemCardID");
|
||||
GameRegistry.registerItem(itemCardLink, "itemCardLink");
|
||||
GameRegistry.registerItem(itemModeCube, "itemModeCube");
|
||||
GameRegistry.registerItem(itemModeSphere, "itemModeSphere");
|
||||
GameRegistry.registerItem(itemModeTube, "itemModeTube");
|
||||
GameRegistry.registerItem(itemModeCylinder, "itemModeCylinder");
|
||||
GameRegistry.registerItem(itemModePyramid, "itemModePyramid");
|
||||
GameRegistry.registerItem(itemModeCustom, "itemModeCustom");
|
||||
GameRegistry.registerItem(itemModuleSpeed, "itemModuleSpeed");
|
||||
GameRegistry.registerItem(itemModuleCapacity, "itemModuleCapacity");
|
||||
GameRegistry.registerItem(itemModuleTranslate, "itemModuleTranslate");
|
||||
GameRegistry.registerItem(itemModuleScale, "itemModuleScale");
|
||||
GameRegistry.registerItem(itemModuleRotate, "itemModuleRotate");
|
||||
GameRegistry.registerItem(itemModuleCollection, "itemModuleCollection");
|
||||
GameRegistry.registerItem(itemModuleInvert, "itemModuleInvert");
|
||||
GameRegistry.registerItem(itemModuleSilence, "itemModuleSilence");
|
||||
GameRegistry.registerItem(itemModuleFusion, "itemModuleFusion");
|
||||
GameRegistry.registerItem(itemModuleManipulator, "itemModuleManipulator");
|
||||
GameRegistry.registerItem(itemModuleCamouflage, "itemModuleCamouflage");
|
||||
GameRegistry.registerItem(itemModuleDisintegration, "itemModuleDisintegration");
|
||||
GameRegistry.registerItem(itemModuleShock, "itemModuleShock");
|
||||
GameRegistry.registerItem(itemModuleGlow, "itemModuleGlow");
|
||||
GameRegistry.registerItem(itemModuleSponge, "itemModuleSponge");
|
||||
GameRegistry.registerItem(itemModuleStablize, "itemModuleStablize");
|
||||
GameRegistry.registerItem(itemModuleAntiHostile, "itemModuleAntiHostile");
|
||||
GameRegistry.registerItem(itemModuleAntiFriendly, "itemModuleAntiFriendly");
|
||||
GameRegistry.registerItem(itemModuleAntiPersonnel, "itemModuleAntiPersonnel");
|
||||
GameRegistry.registerItem(itemModuleConfiscate, "itemModuleConfiscate");
|
||||
GameRegistry.registerItem(itemModuleWarn, "itemModuleWarn");
|
||||
GameRegistry.registerItem(itemModuleBlockAccess, "itemModuleBlockAccess");
|
||||
GameRegistry.registerItem(itemModuleBlockAlter, "itemModuleBlockAlter");
|
||||
GameRegistry.registerItem(itemModuleAntiSpawn, "itemModuleAntiSpawn");
|
||||
|
||||
channel =
|
||||
NetworkRegistry.INSTANCE.newSimpleChannel("mffs");
|
||||
|
||||
int pkgDiscriminator = 0;
|
||||
channel.registerMessage(PacketTileHandler.class, PacketTile.class,
|
||||
pkgDiscriminator++, Side.SERVER);
|
||||
channel.registerMessage(PacketFxsHandler.class, PacketFxs.class,
|
||||
pkgDiscriminator++, Side.CLIENT);
|
||||
}
|
||||
channel = NetworkRegistry.INSTANCE.newSimpleChannel("mffs");
|
||||
|
||||
@EventHandler
|
||||
public void load(final FMLInitializationEvent evt) {
|
||||
ModularForceFieldSystem.LOGGER.fine(
|
||||
"Language(s) Loaded: " +
|
||||
TranslationHelper.loadLanguages(
|
||||
"/assets/mffs/lang/", new String[] {"en_US", "zh_CN", "de_DE"}));
|
||||
ModularForceFieldSystem.metadata.modId = "MFFS";
|
||||
ModularForceFieldSystem.metadata.name = "Modular Force Field System";
|
||||
ModularForceFieldSystem.metadata.description =
|
||||
"Modular Force Field System is a mod that adds force fields, high tech machinery and defensive measures to Minecraft.";
|
||||
ModularForceFieldSystem.metadata.url =
|
||||
"http://www.universalelectricity.com/mffs/";
|
||||
ModularForceFieldSystem.metadata.logoFile = "mffs_logo.png";
|
||||
ModularForceFieldSystem.metadata.version = VERSION;
|
||||
ModularForceFieldSystem.metadata.authorList = Arrays.asList("Calclavia", "LordMZTE", "tilera");
|
||||
ModularForceFieldSystem.metadata.credits = "Please visit the website.";
|
||||
ModularForceFieldSystem.metadata.autogenerated = false;
|
||||
}
|
||||
int pkgDiscriminator = 0;
|
||||
channel.registerMessage(
|
||||
PacketTileHandler.class, PacketTile.class, pkgDiscriminator++, Side.SERVER
|
||||
);
|
||||
channel.registerMessage(
|
||||
PacketFxsHandler.class, PacketFxs.class, pkgDiscriminator++, Side.CLIENT
|
||||
);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void postInit(final FMLPostInitializationEvent evt) {
|
||||
UniversalRecipes.init();
|
||||
Recipes.registerRecipes();
|
||||
ModularForceFieldSystem.proxy.init();
|
||||
}
|
||||
@EventHandler
|
||||
public void load(final FMLInitializationEvent evt) {
|
||||
ModularForceFieldSystem.LOGGER.fine(
|
||||
"Language(s) Loaded: "
|
||||
+ TranslationHelper.loadLanguages(
|
||||
"/assets/mffs/lang/", new String[] { "en_US", "zh_CN", "de_DE" }
|
||||
)
|
||||
);
|
||||
ModularForceFieldSystem.metadata.modId = "MFFS";
|
||||
ModularForceFieldSystem.metadata.name = "Modular Force Field System";
|
||||
ModularForceFieldSystem.metadata.description
|
||||
= "Modular Force Field System is a mod that adds force fields, high tech machinery and defensive measures to Minecraft.";
|
||||
ModularForceFieldSystem.metadata.url
|
||||
= "http://www.universalelectricity.com/mffs/";
|
||||
ModularForceFieldSystem.metadata.logoFile = "mffs_logo.png";
|
||||
ModularForceFieldSystem.metadata.version = VERSION;
|
||||
ModularForceFieldSystem.metadata.authorList
|
||||
= Arrays.asList("Calclavia", "LordMZTE", "tilera");
|
||||
ModularForceFieldSystem.metadata.credits = "Please visit the website.";
|
||||
ModularForceFieldSystem.metadata.autogenerated = false;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void serverStarting(final FMLServerStartingEvent evt) {
|
||||
FrequencyGrid.reinitiate();
|
||||
}
|
||||
@EventHandler
|
||||
public void postInit(final FMLPostInitializationEvent evt) {
|
||||
UniversalRecipes.init();
|
||||
Recipes.registerRecipes();
|
||||
ModularForceFieldSystem.proxy.init();
|
||||
}
|
||||
|
||||
static {
|
||||
LOGGER = Logger.getLogger("Modular Force Field System");
|
||||
ModularForceFieldSystem.damagefieldShock =
|
||||
new CustomDamageSource("fieldShock").setDamageBypassesArmor();
|
||||
}
|
||||
@EventHandler
|
||||
public void serverStarting(final FMLServerStartingEvent evt) {
|
||||
FrequencyGrid.reinitiate();
|
||||
}
|
||||
|
||||
static {
|
||||
LOGGER = Logger.getLogger("Modular Force Field System");
|
||||
ModularForceFieldSystem.damagefieldShock
|
||||
= new CustomDamageSource("fieldShock").setDamageBypassesArmor();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,323 +9,324 @@ import net.minecraft.init.Items;
|
|||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class Recipes {
|
||||
public static void registerRecipes() {
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemFocusMatrix, 9)
|
||||
.pattern("RMR", "MDM", "RMR")
|
||||
.ingredient('M', "ingotSteel")
|
||||
.ingredient('D', Items.diamond)
|
||||
.ingredient('R', Items.redstone)
|
||||
.register();
|
||||
public static void registerRecipes() {
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemFocusMatrix, 9)
|
||||
.pattern("RMR", "MDM", "RMR")
|
||||
.ingredient('M', "ingotSteel")
|
||||
.ingredient('D', Items.diamond)
|
||||
.ingredient('R', Items.redstone)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemRemoteController)
|
||||
.pattern("WWW", "MCM", "MCM")
|
||||
.ingredient('W', BasicComponents.blockCopperWire)
|
||||
.ingredient('M', "ingotSteel")
|
||||
.ingredient('C', BasicComponents.itemBattery)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemRemoteController)
|
||||
.pattern("WWW", "MCM", "MCM")
|
||||
.ingredient('W', BasicComponents.blockCopperWire)
|
||||
.ingredient('M', "ingotSteel")
|
||||
.ingredient('C', BasicComponents.itemBattery)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.blockCoercionDeriver)
|
||||
.pattern("M M", "MFM", "MCM")
|
||||
.ingredient('C', BasicComponents.itemBattery)
|
||||
.ingredient('M', "ingotSteel")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.blockCoercionDeriver)
|
||||
.pattern("M M", "MFM", "MCM")
|
||||
.ingredient('C', BasicComponents.itemBattery)
|
||||
.ingredient('M', "ingotSteel")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.blockFortronCapacitor)
|
||||
.pattern("MFM", "FCF", "MFM")
|
||||
.ingredient('C', BasicComponents.itemBattery)
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('M', "ingotSteel")
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.blockFortronCapacitor)
|
||||
.pattern("MFM", "FCF", "MFM")
|
||||
.ingredient('C', BasicComponents.itemBattery)
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('M', "ingotSteel")
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.blockForceFieldProjector)
|
||||
.pattern(" D ", "FFF", "MCM")
|
||||
.ingredient('D', Items.diamond)
|
||||
.ingredient('C', BasicComponents.itemBattery)
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('M', "ingotSteel")
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.blockForceFieldProjector)
|
||||
.pattern(" D ", "FFF", "MCM")
|
||||
.ingredient('D', Items.diamond)
|
||||
.ingredient('C', BasicComponents.itemBattery)
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('M', "ingotSteel")
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.blockBiometricIdentifier)
|
||||
.pattern("FMF", "MCM", "FMF")
|
||||
.ingredient('C', ModularForceFieldSystem.itemCardBlank)
|
||||
.ingredient('M', "ingotSteel")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.blockBiometricIdentifier)
|
||||
.pattern("FMF", "MCM", "FMF")
|
||||
.ingredient('C', ModularForceFieldSystem.itemCardBlank)
|
||||
.ingredient('M', "ingotSteel")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.blockInterdictionMatrix)
|
||||
.pattern("SSS", "FFF", "FEF")
|
||||
.ingredient('S', ModularForceFieldSystem.itemModuleShock)
|
||||
.ingredient('E', Blocks.ender_chest)
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.blockInterdictionMatrix)
|
||||
.pattern("SSS", "FFF", "FEF")
|
||||
.ingredient('S', ModularForceFieldSystem.itemModuleShock)
|
||||
.ingredient('E', Blocks.ender_chest)
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.blockForceManipulator)
|
||||
.pattern("F F", "FMF", "F F")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('M', BasicComponents.itemMotor)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.blockForceManipulator)
|
||||
.pattern("F F", "FMF", "F F")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('M', BasicComponents.itemMotor)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemCardBlank)
|
||||
.pattern("PPP", "PMP", "PPP")
|
||||
.ingredient('M', "ingotSteel")
|
||||
.ingredient('P', Items.paper)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemCardBlank)
|
||||
.pattern("PPP", "PMP", "PPP")
|
||||
.ingredient('M', "ingotSteel")
|
||||
.ingredient('P', Items.paper)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemCardLink)
|
||||
.pattern("BWB")
|
||||
.ingredient('B', ModularForceFieldSystem.itemCardBlank)
|
||||
.ingredient('W', BasicComponents.blockCopperWire)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemCardLink)
|
||||
.pattern("BWB")
|
||||
.ingredient('B', ModularForceFieldSystem.itemCardBlank)
|
||||
.ingredient('W', BasicComponents.blockCopperWire)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemCardLink)
|
||||
.pattern("WBW")
|
||||
.ingredient('B', ModularForceFieldSystem.itemCardFrequency)
|
||||
.ingredient('W', BasicComponents.blockCopperWire)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemCardLink)
|
||||
.pattern("WBW")
|
||||
.ingredient('B', ModularForceFieldSystem.itemCardFrequency)
|
||||
.ingredient('W', BasicComponents.blockCopperWire)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemCardID)
|
||||
.pattern("RBR")
|
||||
.ingredient('B', ModularForceFieldSystem.itemCardBlank)
|
||||
.ingredient('R', Items.redstone)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemCardID)
|
||||
.pattern("RBR")
|
||||
.ingredient('B', ModularForceFieldSystem.itemCardBlank)
|
||||
.ingredient('R', Items.redstone)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModeSphere)
|
||||
.pattern(" F ", "FFF", " F ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModeSphere)
|
||||
.pattern(" F ", "FFF", " F ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModeCube)
|
||||
.pattern("FFF", "FFF", "FFF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModeCube)
|
||||
.pattern("FFF", "FFF", "FFF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModeTube)
|
||||
.pattern("FFF", " ", "FFF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModeTube)
|
||||
.pattern("FFF", " ", "FFF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModePyramid)
|
||||
.pattern("F ", "FF ", "FFF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModePyramid)
|
||||
.pattern("F ", "FF ", "FFF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModeCylinder)
|
||||
.pattern("S", "S", "S")
|
||||
.ingredient('S', ModularForceFieldSystem.itemModeSphere)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModeCylinder)
|
||||
.pattern("S", "S", "S")
|
||||
.ingredient('S', ModularForceFieldSystem.itemModeSphere)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModeCustom)
|
||||
.pattern(" C ", "TFP", " S ")
|
||||
.ingredient('S', ModularForceFieldSystem.itemModeSphere)
|
||||
.ingredient('C', ModularForceFieldSystem.itemModeCube)
|
||||
.ingredient('T', ModularForceFieldSystem.itemModeTube)
|
||||
.ingredient('P', ModularForceFieldSystem.itemModePyramid)
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModeCustom)
|
||||
.pattern(" C ", "TFP", " S ")
|
||||
.ingredient('S', ModularForceFieldSystem.itemModeSphere)
|
||||
.ingredient('C', ModularForceFieldSystem.itemModeCube)
|
||||
.ingredient('T', ModularForceFieldSystem.itemModeTube)
|
||||
.ingredient('P', ModularForceFieldSystem.itemModePyramid)
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapelessOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModeCustom)
|
||||
.ingredient(ModularForceFieldSystem.itemModeCustom)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapelessOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModeCustom)
|
||||
.ingredient(ModularForceFieldSystem.itemModeCustom)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleSpeed)
|
||||
.pattern("FFF", "RRR", "FFF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('R', Items.redstone)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleSpeed)
|
||||
.pattern("FFF", "RRR", "FFF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('R', Items.redstone)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleCapacity)
|
||||
.pattern("FCF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('C', BasicComponents.itemBattery)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleCapacity)
|
||||
.pattern("FCF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('C', BasicComponents.itemBattery)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleShock)
|
||||
.pattern("FWF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('W', BasicComponents.blockCopperWire)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleShock)
|
||||
.pattern("FWF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('W', BasicComponents.blockCopperWire)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleSponge)
|
||||
.pattern("BBB", "BFB", "BBB")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('B', Items.water_bucket)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleSponge)
|
||||
.pattern("BBB", "BFB", "BBB")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('B', Items.water_bucket)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleDisintegration)
|
||||
.pattern(" W ", "FBF", " W ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('W', BasicComponents.blockCopperWire)
|
||||
.ingredient('B', BasicComponents.itemBattery)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleDisintegration)
|
||||
.pattern(" W ", "FBF", " W ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('W', BasicComponents.blockCopperWire)
|
||||
.ingredient('B', BasicComponents.itemBattery)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleManipulator)
|
||||
.pattern("F", " ", "F")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleManipulator)
|
||||
.pattern("F", " ", "F")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleCamouflage)
|
||||
.pattern("WFW", "FWF", "WFW")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('W', new ItemStack(Blocks.wool, 1, 32767))
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleCamouflage)
|
||||
.pattern("WFW", "FWF", "WFW")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('W', new ItemStack(Blocks.wool, 1, 32767))
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleFusion)
|
||||
.pattern("FJF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('J', ModularForceFieldSystem.itemModuleShock)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleFusion)
|
||||
.pattern("FJF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('J', ModularForceFieldSystem.itemModuleShock)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleScale, 2)
|
||||
.pattern("FRF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient(
|
||||
'R',
|
||||
Items.redstone) // this is a guess, R isnt defined in the original
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleScale, 2)
|
||||
.pattern("FRF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient(
|
||||
'R',
|
||||
Items.redstone
|
||||
) // this is a guess, R isnt defined in the original
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleTranslate, 2)
|
||||
.pattern("FSF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('S', ModularForceFieldSystem.itemModuleScale)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleTranslate, 2)
|
||||
.pattern("FSF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('S', ModularForceFieldSystem.itemModuleScale)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleRotate)
|
||||
.pattern("F ", " F ", " F")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleRotate)
|
||||
.pattern("F ", " F ", " F")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleGlow)
|
||||
.pattern("GGG", "GFG", "GGG")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('G', Blocks.glowstone)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleGlow)
|
||||
.pattern("GGG", "GFG", "GGG")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('G', Blocks.glowstone)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleStablize)
|
||||
.pattern("FDF", "PSA", "FDF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('P', Items.diamond_pickaxe)
|
||||
.ingredient('S', Items.diamond_shovel)
|
||||
.ingredient('A', Items.diamond_axe)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleStablize)
|
||||
.pattern("FDF", "PSA", "FDF")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('P', Items.diamond_pickaxe)
|
||||
.ingredient('S', Items.diamond_shovel)
|
||||
.ingredient('A', Items.diamond_axe)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleCollection)
|
||||
.pattern("F F", " H ", "F F")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('H', Blocks.hopper)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleCollection)
|
||||
.pattern("F F", " H ", "F F")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('H', Blocks.hopper)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleInvert)
|
||||
.pattern("L", "F", "L")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('L', Blocks.lapis_block)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleInvert)
|
||||
.pattern("L", "F", "L")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('L', Blocks.lapis_block)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleSilence)
|
||||
.pattern(" N ", "NFN", " N ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('N', Blocks.noteblock)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleSilence)
|
||||
.pattern(" N ", "NFN", " N ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('N', Blocks.noteblock)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleAntiHostile)
|
||||
.pattern(" R ", "GFB", " S ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('G', Items.gunpowder)
|
||||
.ingredient('R', Items.rotten_flesh)
|
||||
.ingredient('B', Items.bone)
|
||||
.ingredient('S', Items.ghast_tear)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleAntiHostile)
|
||||
.pattern(" R ", "GFB", " S ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('G', Items.gunpowder)
|
||||
.ingredient('R', Items.rotten_flesh)
|
||||
.ingredient('B', Items.bone)
|
||||
.ingredient('S', Items.ghast_tear)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleAntiFriendly)
|
||||
.pattern(" R ", "GFB", " S ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('G', Items.cooked_porkchop)
|
||||
.ingredient('R', new ItemStack(Blocks.wool, 1, 32767))
|
||||
.ingredient('B', Items.leather)
|
||||
.ingredient('S', Items.slime_ball)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleAntiFriendly)
|
||||
.pattern(" R ", "GFB", " S ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('G', Items.cooked_porkchop)
|
||||
.ingredient('R', new ItemStack(Blocks.wool, 1, 32767))
|
||||
.ingredient('B', Items.leather)
|
||||
.ingredient('S', Items.slime_ball)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleAntiPersonnel)
|
||||
.pattern("BFG")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('B', ModularForceFieldSystem.itemModuleAntiHostile)
|
||||
.ingredient('G', ModularForceFieldSystem.itemModuleAntiFriendly)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleAntiPersonnel)
|
||||
.pattern("BFG")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('B', ModularForceFieldSystem.itemModuleAntiHostile)
|
||||
.ingredient('G', ModularForceFieldSystem.itemModuleAntiFriendly)
|
||||
.register();
|
||||
|
||||
// TODO: config option for confiscate module
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleConfiscate)
|
||||
.pattern("PEP", "EFE", "PEP")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('E', Items.ender_eye)
|
||||
.ingredient('P', Items.ender_pearl)
|
||||
.register();
|
||||
// TODO: config option for confiscate module
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleConfiscate)
|
||||
.pattern("PEP", "EFE", "PEP")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('E', Items.ender_eye)
|
||||
.ingredient('P', Items.ender_pearl)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleWarn)
|
||||
.pattern("NFN")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('N', Blocks.noteblock)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleWarn)
|
||||
.pattern("NFN")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('N', Blocks.noteblock)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleBlockAccess)
|
||||
.pattern(" C ", "BFB", " C ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('B', Blocks.iron_block)
|
||||
.ingredient('C', Blocks.chest)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleBlockAccess)
|
||||
.pattern(" C ", "BFB", " C ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('B', Blocks.iron_block)
|
||||
.ingredient('C', Blocks.chest)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleBlockAlter)
|
||||
.pattern(" G ", "GFG", " G ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('G', Blocks.gold_block)
|
||||
.register();
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleBlockAlter)
|
||||
.pattern(" G ", "GFG", " G ")
|
||||
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
|
||||
.ingredient('G', Blocks.gold_block)
|
||||
.register();
|
||||
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleAntiSpawn)
|
||||
.pattern(" H ", "G G", " H ")
|
||||
.ingredient('H', ModularForceFieldSystem.itemModuleAntiHostile)
|
||||
.ingredient('G', ModularForceFieldSystem.itemModuleAntiFriendly)
|
||||
.register();
|
||||
}
|
||||
new RecipeBuilder(new ShapedOreRecipeAdapter())
|
||||
.output(ModularForceFieldSystem.itemModuleAntiSpawn)
|
||||
.pattern(" H ", "G G", " H ")
|
||||
.ingredient('H', ModularForceFieldSystem.itemModuleAntiHostile)
|
||||
.ingredient('G', ModularForceFieldSystem.itemModuleAntiFriendly)
|
||||
.register();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
package mffs;
|
||||
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import java.io.File;
|
||||
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import mffs.api.Blacklist;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.init.Blocks;
|
||||
|
@ -9,168 +10,179 @@ import net.minecraftforge.common.config.Configuration;
|
|||
import net.minecraftforge.common.config.Property;
|
||||
|
||||
public class Settings {
|
||||
public static final Configuration CONFIGURATION;
|
||||
public static final int BLOCK_ID_PREFIX = 1680;
|
||||
public static final int ITEM_ID_PREFIX = 11130;
|
||||
private static int NEXT_BLOCK_ID;
|
||||
private static int NEXT_ITEM_ID;
|
||||
public static int MAX_FORCE_FIELDS_PER_TICK;
|
||||
public static int MAX_FORCE_FIELD_SCALE;
|
||||
public static boolean INTERACT_CREATIVE;
|
||||
public static boolean LOAD_CHUNKS;
|
||||
public static boolean OP_OVERRIDE;
|
||||
public static boolean USE_CACHE;
|
||||
public static boolean ENABLE_ELECTRICITY;
|
||||
public static boolean CONSERVE_PACKETS;
|
||||
public static boolean HIGH_GRAPHICS;
|
||||
public static int INTERDICTION_MURDER_ENERGY;
|
||||
public static final int MAX_FREQUENCY_DIGITS = 6;
|
||||
public static boolean ENABLE_MANIPULATOR;
|
||||
public static final Configuration CONFIGURATION;
|
||||
public static final int BLOCK_ID_PREFIX = 1680;
|
||||
public static final int ITEM_ID_PREFIX = 11130;
|
||||
private static int NEXT_BLOCK_ID;
|
||||
private static int NEXT_ITEM_ID;
|
||||
public static int MAX_FORCE_FIELDS_PER_TICK;
|
||||
public static int MAX_FORCE_FIELD_SCALE;
|
||||
public static boolean INTERACT_CREATIVE;
|
||||
public static boolean LOAD_CHUNKS;
|
||||
public static boolean OP_OVERRIDE;
|
||||
public static boolean USE_CACHE;
|
||||
public static boolean ENABLE_ELECTRICITY;
|
||||
public static boolean CONSERVE_PACKETS;
|
||||
public static boolean HIGH_GRAPHICS;
|
||||
public static int INTERDICTION_MURDER_ENERGY;
|
||||
public static final int MAX_FREQUENCY_DIGITS = 6;
|
||||
public static boolean ENABLE_MANIPULATOR;
|
||||
|
||||
public static int getNextBlockID() { return ++Settings.NEXT_BLOCK_ID; }
|
||||
|
||||
public static int getNextItemID() { return ++Settings.NEXT_ITEM_ID; }
|
||||
|
||||
public static void load() {
|
||||
Settings.CONFIGURATION.load();
|
||||
Settings.ENABLE_MANIPULATOR =
|
||||
Settings.CONFIGURATION
|
||||
.get("general", "Enable Force Manipulator",
|
||||
Settings.ENABLE_MANIPULATOR)
|
||||
.getBoolean(Settings.ENABLE_MANIPULATOR);
|
||||
final Property propFieldScale = Settings.CONFIGURATION.get(
|
||||
"general", "Max Force Field Scale", Settings.MAX_FORCE_FIELD_SCALE);
|
||||
Settings.MAX_FORCE_FIELD_SCALE =
|
||||
propFieldScale.getInt(Settings.MAX_FORCE_FIELD_SCALE);
|
||||
final Property propInterdiction = Settings.CONFIGURATION.get(
|
||||
"general", "Interdiction Murder Fortron Consumption",
|
||||
Settings.INTERDICTION_MURDER_ENERGY);
|
||||
Settings.INTERDICTION_MURDER_ENERGY =
|
||||
propInterdiction.getInt(Settings.INTERDICTION_MURDER_ENERGY);
|
||||
final Property propCreative = Settings.CONFIGURATION.get(
|
||||
"general", "Effect Creative Players", Settings.INTERACT_CREATIVE);
|
||||
propCreative.comment =
|
||||
"Should the interdiction matrix interact with creative players?.";
|
||||
Settings.INTERACT_CREATIVE =
|
||||
propCreative.getBoolean(Settings.INTERACT_CREATIVE);
|
||||
final Property propChunkLoading = Settings.CONFIGURATION.get(
|
||||
"general", "Load Chunks", Settings.LOAD_CHUNKS);
|
||||
propChunkLoading.comment =
|
||||
"Set this to false to turn off the MFFS Chunkloading capabilities.";
|
||||
Settings.LOAD_CHUNKS = propChunkLoading.getBoolean(Settings.LOAD_CHUNKS);
|
||||
final Property propOpOverride = Settings.CONFIGURATION.get(
|
||||
"general", "Op Override", Settings.OP_OVERRIDE);
|
||||
propOpOverride.comment =
|
||||
"Allow the operator(s) to override security measures created by MFFS?";
|
||||
Settings.OP_OVERRIDE = propOpOverride.getBoolean(Settings.OP_OVERRIDE);
|
||||
final Property propUseCache =
|
||||
Settings.CONFIGURATION.get("general", "Use Cache", Settings.USE_CACHE);
|
||||
propUseCache.comment =
|
||||
"Cache allows temporary data saving to decrease calculations required.";
|
||||
Settings.USE_CACHE = propUseCache.getBoolean(Settings.USE_CACHE);
|
||||
final Property maxFFGenPerTick =
|
||||
Settings.CONFIGURATION.get("general", "Field Calculation Per Tick",
|
||||
Settings.MAX_FORCE_FIELDS_PER_TICK);
|
||||
maxFFGenPerTick.comment =
|
||||
"How many force field blocks can be generated per tick? Less reduces lag.";
|
||||
Settings.MAX_FORCE_FIELDS_PER_TICK =
|
||||
maxFFGenPerTick.getInt(Settings.MAX_FORCE_FIELDS_PER_TICK);
|
||||
final Property useElectricity = Settings.CONFIGURATION.get(
|
||||
"general", "Require Electricity?", Settings.ENABLE_ELECTRICITY);
|
||||
useElectricity.comment =
|
||||
"Turning this to false will make MFFS run without electricity or energy systems required. Great for vanilla!";
|
||||
Settings.ENABLE_ELECTRICITY =
|
||||
useElectricity.getBoolean(Settings.ENABLE_ELECTRICITY);
|
||||
final Property conservePackets = Settings.CONFIGURATION.get(
|
||||
"general", "Conserve Packets?", Settings.CONSERVE_PACKETS);
|
||||
conservePackets.comment =
|
||||
"Turning this to false will enable better client side packet and updates but in the cost of more packets sent.";
|
||||
Settings.CONSERVE_PACKETS =
|
||||
conservePackets.getBoolean(Settings.CONSERVE_PACKETS);
|
||||
final Property highGraphics = Settings.CONFIGURATION.get(
|
||||
"general", "High Graphics", Settings.HIGH_GRAPHICS);
|
||||
highGraphics.comment =
|
||||
"Turning this to false will reduce rendering and client side packet graphical packets.";
|
||||
Settings.CONSERVE_PACKETS = highGraphics.getBoolean(Settings.HIGH_GRAPHICS);
|
||||
final Property forceManipulatorBlacklist = Settings.CONFIGURATION.get(
|
||||
"general", "Force Manipulator Blacklist", "");
|
||||
highGraphics.comment =
|
||||
"Put a list of block IDs to be not-moved by the force manipulator. Separate by commas, no space.";
|
||||
final String blackListString = forceManipulatorBlacklist.getString();
|
||||
if (blackListString != null) {
|
||||
for (final String blockIDString : blackListString.split(",")) {
|
||||
Block b = Block.getBlockFromName(blockIDString);
|
||||
if (b == null) {
|
||||
ModularForceFieldSystem.LOGGER.severe(
|
||||
"Invalid block blacklist ID \'" + blockIDString + "\'!");
|
||||
continue;
|
||||
}
|
||||
|
||||
Blacklist.forceManipulationBlacklist.add(b);
|
||||
}
|
||||
public static int getNextBlockID() {
|
||||
return ++Settings.NEXT_BLOCK_ID;
|
||||
}
|
||||
|
||||
final Property blacklist1 =
|
||||
Settings.CONFIGURATION.get("general", "Stabilization Blacklist", "");
|
||||
final String blackListString2 = blacklist1.getString();
|
||||
if (blackListString2 != null) {
|
||||
for (final String blockIDString2 : blackListString2.split(",")) {
|
||||
Block b = Block.getBlockFromName(blockIDString2);
|
||||
if (b == null) {
|
||||
ModularForceFieldSystem.LOGGER.severe(
|
||||
"Invalid block blacklist ID \'" + blockIDString2 + "\'!");
|
||||
continue;
|
||||
public static int getNextItemID() {
|
||||
return ++Settings.NEXT_ITEM_ID;
|
||||
}
|
||||
|
||||
public static void load() {
|
||||
Settings.CONFIGURATION.load();
|
||||
Settings.ENABLE_MANIPULATOR
|
||||
= Settings.CONFIGURATION
|
||||
.get("general", "Enable Force Manipulator", Settings.ENABLE_MANIPULATOR)
|
||||
.getBoolean(Settings.ENABLE_MANIPULATOR);
|
||||
final Property propFieldScale = Settings.CONFIGURATION.get(
|
||||
"general", "Max Force Field Scale", Settings.MAX_FORCE_FIELD_SCALE
|
||||
);
|
||||
Settings.MAX_FORCE_FIELD_SCALE
|
||||
= propFieldScale.getInt(Settings.MAX_FORCE_FIELD_SCALE);
|
||||
final Property propInterdiction = Settings.CONFIGURATION.get(
|
||||
"general",
|
||||
"Interdiction Murder Fortron Consumption",
|
||||
Settings.INTERDICTION_MURDER_ENERGY
|
||||
);
|
||||
Settings.INTERDICTION_MURDER_ENERGY
|
||||
= propInterdiction.getInt(Settings.INTERDICTION_MURDER_ENERGY);
|
||||
final Property propCreative = Settings.CONFIGURATION.get(
|
||||
"general", "Effect Creative Players", Settings.INTERACT_CREATIVE
|
||||
);
|
||||
propCreative.comment
|
||||
= "Should the interdiction matrix interact with creative players?.";
|
||||
Settings.INTERACT_CREATIVE = propCreative.getBoolean(Settings.INTERACT_CREATIVE);
|
||||
final Property propChunkLoading
|
||||
= Settings.CONFIGURATION.get("general", "Load Chunks", Settings.LOAD_CHUNKS);
|
||||
propChunkLoading.comment
|
||||
= "Set this to false to turn off the MFFS Chunkloading capabilities.";
|
||||
Settings.LOAD_CHUNKS = propChunkLoading.getBoolean(Settings.LOAD_CHUNKS);
|
||||
final Property propOpOverride
|
||||
= Settings.CONFIGURATION.get("general", "Op Override", Settings.OP_OVERRIDE);
|
||||
propOpOverride.comment
|
||||
= "Allow the operator(s) to override security measures created by MFFS?";
|
||||
Settings.OP_OVERRIDE = propOpOverride.getBoolean(Settings.OP_OVERRIDE);
|
||||
final Property propUseCache
|
||||
= Settings.CONFIGURATION.get("general", "Use Cache", Settings.USE_CACHE);
|
||||
propUseCache.comment
|
||||
= "Cache allows temporary data saving to decrease calculations required.";
|
||||
Settings.USE_CACHE = propUseCache.getBoolean(Settings.USE_CACHE);
|
||||
final Property maxFFGenPerTick = Settings.CONFIGURATION.get(
|
||||
"general", "Field Calculation Per Tick", Settings.MAX_FORCE_FIELDS_PER_TICK
|
||||
);
|
||||
maxFFGenPerTick.comment
|
||||
= "How many force field blocks can be generated per tick? Less reduces lag.";
|
||||
Settings.MAX_FORCE_FIELDS_PER_TICK
|
||||
= maxFFGenPerTick.getInt(Settings.MAX_FORCE_FIELDS_PER_TICK);
|
||||
final Property useElectricity = Settings.CONFIGURATION.get(
|
||||
"general", "Require Electricity?", Settings.ENABLE_ELECTRICITY
|
||||
);
|
||||
useElectricity.comment
|
||||
= "Turning this to false will make MFFS run without electricity or energy systems required. Great for vanilla!";
|
||||
Settings.ENABLE_ELECTRICITY
|
||||
= useElectricity.getBoolean(Settings.ENABLE_ELECTRICITY);
|
||||
final Property conservePackets = Settings.CONFIGURATION.get(
|
||||
"general", "Conserve Packets?", Settings.CONSERVE_PACKETS
|
||||
);
|
||||
conservePackets.comment
|
||||
= "Turning this to false will enable better client side packet and updates but in the cost of more packets sent.";
|
||||
Settings.CONSERVE_PACKETS = conservePackets.getBoolean(Settings.CONSERVE_PACKETS);
|
||||
final Property highGraphics = Settings.CONFIGURATION.get(
|
||||
"general", "High Graphics", Settings.HIGH_GRAPHICS
|
||||
);
|
||||
highGraphics.comment
|
||||
= "Turning this to false will reduce rendering and client side packet graphical packets.";
|
||||
Settings.CONSERVE_PACKETS = highGraphics.getBoolean(Settings.HIGH_GRAPHICS);
|
||||
final Property forceManipulatorBlacklist
|
||||
= Settings.CONFIGURATION.get("general", "Force Manipulator Blacklist", "");
|
||||
highGraphics.comment
|
||||
= "Put a list of block IDs to be not-moved by the force manipulator. Separate by commas, no space.";
|
||||
final String blackListString = forceManipulatorBlacklist.getString();
|
||||
if (blackListString != null) {
|
||||
for (final String blockIDString : blackListString.split(",")) {
|
||||
Block b = Block.getBlockFromName(blockIDString);
|
||||
if (b == null) {
|
||||
ModularForceFieldSystem.LOGGER.severe(
|
||||
"Invalid block blacklist ID \'" + blockIDString + "\'!"
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
Blacklist.forceManipulationBlacklist.add(b);
|
||||
}
|
||||
}
|
||||
|
||||
Blacklist.stabilizationBlacklist.add(b);
|
||||
}
|
||||
}
|
||||
final Property blacklist2 =
|
||||
Settings.CONFIGURATION.get("general", "Disintegration Blacklist", "");
|
||||
final String blackListString3 = blacklist2.getString();
|
||||
if (blackListString3 != null) {
|
||||
for (final String blockIDString3 : blackListString3.split(",")) {
|
||||
if (blockIDString3 != null && !blockIDString3.isEmpty()) {
|
||||
Block b = Block.getBlockFromName(blockIDString3);
|
||||
if (b == null) {
|
||||
ModularForceFieldSystem.LOGGER.severe(
|
||||
"Invalid block blacklist ID \'" + blockIDString3 + "\'!");
|
||||
continue;
|
||||
}
|
||||
final Property blacklist1
|
||||
= Settings.CONFIGURATION.get("general", "Stabilization Blacklist", "");
|
||||
final String blackListString2 = blacklist1.getString();
|
||||
if (blackListString2 != null) {
|
||||
for (final String blockIDString2 : blackListString2.split(",")) {
|
||||
Block b = Block.getBlockFromName(blockIDString2);
|
||||
if (b == null) {
|
||||
ModularForceFieldSystem.LOGGER.severe(
|
||||
"Invalid block blacklist ID \'" + blockIDString2 + "\'!"
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
Blacklist.disintegrationBlacklist.add(b);
|
||||
Blacklist.stabilizationBlacklist.add(b);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Blacklist.stabilizationBlacklist.add(Blocks.water);
|
||||
Blacklist.stabilizationBlacklist.add(Blocks.flowing_water);
|
||||
Blacklist.stabilizationBlacklist.add(Blocks.lava);
|
||||
Blacklist.stabilizationBlacklist.add(Blocks.flowing_lava);
|
||||
Blacklist.disintegrationBlacklist.add(Blocks.water);
|
||||
Blacklist.disintegrationBlacklist.add(Blocks.flowing_water);
|
||||
Blacklist.disintegrationBlacklist.add(Blocks.lava);
|
||||
Blacklist.stabilizationBlacklist.add(Blocks.flowing_lava);
|
||||
Blacklist.forceManipulationBlacklist.add(Blocks.bedrock);
|
||||
Blacklist.forceManipulationBlacklist.add(
|
||||
ModularForceFieldSystem.blockForceField);
|
||||
Settings.CONFIGURATION.save();
|
||||
}
|
||||
final Property blacklist2
|
||||
= Settings.CONFIGURATION.get("general", "Disintegration Blacklist", "");
|
||||
final String blackListString3 = blacklist2.getString();
|
||||
if (blackListString3 != null) {
|
||||
for (final String blockIDString3 : blackListString3.split(",")) {
|
||||
if (blockIDString3 != null && !blockIDString3.isEmpty()) {
|
||||
Block b = Block.getBlockFromName(blockIDString3);
|
||||
if (b == null) {
|
||||
ModularForceFieldSystem.LOGGER.severe(
|
||||
"Invalid block blacklist ID \'" + blockIDString3 + "\'!"
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
static {
|
||||
CONFIGURATION = new Configuration(new File(
|
||||
Loader.instance().getConfigDir(), "Modular Force Field System.cfg"));
|
||||
Settings.NEXT_BLOCK_ID = 1680;
|
||||
Settings.NEXT_ITEM_ID = 11130;
|
||||
Settings.MAX_FORCE_FIELDS_PER_TICK = 1000;
|
||||
Settings.MAX_FORCE_FIELD_SCALE = 200;
|
||||
Settings.INTERACT_CREATIVE = true;
|
||||
Settings.LOAD_CHUNKS = true;
|
||||
Settings.OP_OVERRIDE = true;
|
||||
Settings.USE_CACHE = true;
|
||||
Settings.ENABLE_ELECTRICITY = true;
|
||||
Settings.CONSERVE_PACKETS = true;
|
||||
Settings.HIGH_GRAPHICS = true;
|
||||
Settings.INTERDICTION_MURDER_ENERGY = 0;
|
||||
Settings.ENABLE_MANIPULATOR = true;
|
||||
}
|
||||
Blacklist.disintegrationBlacklist.add(b);
|
||||
}
|
||||
}
|
||||
}
|
||||
Blacklist.stabilizationBlacklist.add(Blocks.water);
|
||||
Blacklist.stabilizationBlacklist.add(Blocks.flowing_water);
|
||||
Blacklist.stabilizationBlacklist.add(Blocks.lava);
|
||||
Blacklist.stabilizationBlacklist.add(Blocks.flowing_lava);
|
||||
Blacklist.disintegrationBlacklist.add(Blocks.water);
|
||||
Blacklist.disintegrationBlacklist.add(Blocks.flowing_water);
|
||||
Blacklist.disintegrationBlacklist.add(Blocks.lava);
|
||||
Blacklist.stabilizationBlacklist.add(Blocks.flowing_lava);
|
||||
Blacklist.forceManipulationBlacklist.add(Blocks.bedrock);
|
||||
Blacklist.forceManipulationBlacklist.add(ModularForceFieldSystem.blockForceField);
|
||||
Settings.CONFIGURATION.save();
|
||||
}
|
||||
|
||||
static {
|
||||
CONFIGURATION = new Configuration(
|
||||
new File(Loader.instance().getConfigDir(), "Modular Force Field System.cfg")
|
||||
);
|
||||
Settings.NEXT_BLOCK_ID = 1680;
|
||||
Settings.NEXT_ITEM_ID = 11130;
|
||||
Settings.MAX_FORCE_FIELDS_PER_TICK = 1000;
|
||||
Settings.MAX_FORCE_FIELD_SCALE = 200;
|
||||
Settings.INTERACT_CREATIVE = true;
|
||||
Settings.LOAD_CHUNKS = true;
|
||||
Settings.OP_OVERRIDE = true;
|
||||
Settings.USE_CACHE = true;
|
||||
Settings.ENABLE_ELECTRICITY = true;
|
||||
Settings.CONSERVE_PACKETS = true;
|
||||
Settings.HIGH_GRAPHICS = true;
|
||||
Settings.INTERDICTION_MURDER_ENERGY = 0;
|
||||
Settings.ENABLE_MANIPULATOR = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,69 +18,79 @@ import net.minecraftforge.fluids.FluidRegistry;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class SubscribeEventHandler {
|
||||
@SubscribeEvent
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void textureHook(final TextureStitchEvent.Pre event) {
|
||||
if (event.map.getTextureType() == 1) {
|
||||
FluidRegistry.getFluid("fortron").setIcons(
|
||||
event.map.registerIcon("mffs:fortron"));
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void playerInteractEvent(final PlayerInteractEvent evt) {
|
||||
if (evt.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK ||
|
||||
evt.action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK) {
|
||||
if (evt.action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK &&
|
||||
((Entity)((PlayerEvent)evt).entityPlayer)
|
||||
.worldObj.getBlock(evt.x, evt.y, evt.z) ==
|
||||
ModularForceFieldSystem.blockForceField) {
|
||||
evt.setCanceled(true);
|
||||
return;
|
||||
}
|
||||
if (((PlayerEvent)evt).entityPlayer.capabilities.isCreativeMode) {
|
||||
return;
|
||||
}
|
||||
final Vector3 position = new Vector3(evt.x, evt.y, evt.z);
|
||||
final IInterdictionMatrix interdictionMatrix =
|
||||
MFFSHelper.getNearestInterdictionMatrix(
|
||||
((Entity)((PlayerEvent)evt).entityPlayer).worldObj, position);
|
||||
if (interdictionMatrix != null) {
|
||||
final Block block = position.getBlock(
|
||||
(IBlockAccess)((Entity)((PlayerEvent)evt).entityPlayer).worldObj);
|
||||
if (ModularForceFieldSystem.blockBiometricIdentifier == block &&
|
||||
MFFSHelper.isPermittedByInterdictionMatrix(
|
||||
interdictionMatrix,
|
||||
((PlayerEvent)evt).entityPlayer.getDisplayName(),
|
||||
Permission.SECURITY_CENTER_CONFIGURE)) {
|
||||
return;
|
||||
@SubscribeEvent
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void textureHook(final TextureStitchEvent.Pre event) {
|
||||
if (event.map.getTextureType() == 1) {
|
||||
FluidRegistry.getFluid("fortron").setIcons(
|
||||
event.map.registerIcon("mffs:fortron")
|
||||
);
|
||||
}
|
||||
final boolean hasPermission = MFFSHelper.hasPermission(
|
||||
((Entity)((PlayerEvent)evt).entityPlayer).worldObj,
|
||||
new Vector3(evt.x, evt.y, evt.z), interdictionMatrix, evt.action,
|
||||
((PlayerEvent)evt).entityPlayer);
|
||||
if (!hasPermission) {
|
||||
((PlayerEvent)evt)
|
||||
.entityPlayer.addChatMessage(new ChatComponentText(
|
||||
"[" +
|
||||
ModularForceFieldSystem.blockInterdictionMatrix
|
||||
.getLocalizedName() +
|
||||
"] You have no permission to do that!"));
|
||||
evt.setCanceled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void livingSpawnEvent(final LivingSpawnEvent evt) {
|
||||
final IInterdictionMatrix interdictionMatrix =
|
||||
MFFSHelper.getNearestInterdictionMatrix(
|
||||
evt.world, new Vector3((Entity)evt.entityLiving));
|
||||
if (interdictionMatrix != null &&
|
||||
interdictionMatrix.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleAntiSpawn, new int[0]) > 0) {
|
||||
evt.setResult(Result.DENY);
|
||||
@SubscribeEvent
|
||||
public void playerInteractEvent(final PlayerInteractEvent evt) {
|
||||
if (evt.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK
|
||||
|| evt.action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK) {
|
||||
if (evt.action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK
|
||||
&& ((Entity) ((PlayerEvent) evt).entityPlayer)
|
||||
.worldObj.getBlock(evt.x, evt.y, evt.z)
|
||||
== ModularForceFieldSystem.blockForceField) {
|
||||
evt.setCanceled(true);
|
||||
return;
|
||||
}
|
||||
if (((PlayerEvent) evt).entityPlayer.capabilities.isCreativeMode) {
|
||||
return;
|
||||
}
|
||||
final Vector3 position = new Vector3(evt.x, evt.y, evt.z);
|
||||
final IInterdictionMatrix interdictionMatrix
|
||||
= MFFSHelper.getNearestInterdictionMatrix(
|
||||
((Entity) ((PlayerEvent) evt).entityPlayer).worldObj, position
|
||||
);
|
||||
if (interdictionMatrix != null) {
|
||||
final Block block = position.getBlock(
|
||||
(IBlockAccess) ((Entity) ((PlayerEvent) evt).entityPlayer).worldObj
|
||||
);
|
||||
if (ModularForceFieldSystem.blockBiometricIdentifier == block
|
||||
&& MFFSHelper.isPermittedByInterdictionMatrix(
|
||||
interdictionMatrix,
|
||||
((PlayerEvent) evt).entityPlayer.getDisplayName(),
|
||||
Permission.SECURITY_CENTER_CONFIGURE
|
||||
)) {
|
||||
return;
|
||||
}
|
||||
final boolean hasPermission = MFFSHelper.hasPermission(
|
||||
((Entity) ((PlayerEvent) evt).entityPlayer).worldObj,
|
||||
new Vector3(evt.x, evt.y, evt.z),
|
||||
interdictionMatrix,
|
||||
evt.action,
|
||||
((PlayerEvent) evt).entityPlayer
|
||||
);
|
||||
if (!hasPermission) {
|
||||
((PlayerEvent) evt)
|
||||
.entityPlayer.addChatMessage(new ChatComponentText(
|
||||
"["
|
||||
+ ModularForceFieldSystem.blockInterdictionMatrix
|
||||
.getLocalizedName()
|
||||
+ "] You have no permission to do that!"
|
||||
));
|
||||
evt.setCanceled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void livingSpawnEvent(final LivingSpawnEvent evt) {
|
||||
final IInterdictionMatrix interdictionMatrix
|
||||
= MFFSHelper.getNearestInterdictionMatrix(
|
||||
evt.world, new Vector3((Entity) evt.entityLiving)
|
||||
);
|
||||
if (interdictionMatrix != null
|
||||
&& interdictionMatrix.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleAntiSpawn, new int[0]
|
||||
) > 0) {
|
||||
evt.setResult(Result.DENY);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
package mffs;
|
||||
|
||||
public enum TransferMode {
|
||||
EQUALIZE,
|
||||
DISTRIBUTE,
|
||||
DRAIN,
|
||||
FILL;
|
||||
EQUALIZE,
|
||||
DISTRIBUTE,
|
||||
DRAIN,
|
||||
FILL;
|
||||
|
||||
public TransferMode toggle() {
|
||||
int newOrdinal = this.ordinal() + 1;
|
||||
if (newOrdinal >= values().length) {
|
||||
newOrdinal = 0;
|
||||
public TransferMode toggle() {
|
||||
int newOrdinal = this.ordinal() + 1;
|
||||
if (newOrdinal >= values().length) {
|
||||
newOrdinal = 0;
|
||||
}
|
||||
|
||||
return values()[newOrdinal];
|
||||
}
|
||||
return values()[newOrdinal];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,8 +20,7 @@ import universalelectricity.core.UniversalElectricity;
|
|||
import universalelectricity.prefab.block.BlockRotatable;
|
||||
import universalelectricity.prefab.implement.IRedstoneReceptor;
|
||||
|
||||
public abstract class BlockMachine
|
||||
extends BlockRotatable implements ICamouflageMaterial {
|
||||
public abstract class BlockMachine extends BlockRotatable implements ICamouflageMaterial {
|
||||
public BlockMachine(final String name) {
|
||||
super(UniversalElectricity.machine);
|
||||
this.setBlockName("mffs:" + name);
|
||||
|
@ -32,68 +31,95 @@ public abstract class BlockMachine
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean onMachineActivated(final World world, final int x, final int y, final int z,
|
||||
final EntityPlayer entityPlayer, final int side,
|
||||
final float hitX, final float hitY, final float hitZ) {
|
||||
public boolean onMachineActivated(
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final EntityPlayer entityPlayer,
|
||||
final int side,
|
||||
final float hitX,
|
||||
final float hitY,
|
||||
final float hitZ
|
||||
) {
|
||||
if (!world.isRemote) {
|
||||
if (entityPlayer.getCurrentEquippedItem() != null &&
|
||||
entityPlayer.getCurrentEquippedItem().getItem() instanceof ItemCardLink) {
|
||||
if (entityPlayer.getCurrentEquippedItem() != null
|
||||
&& entityPlayer.getCurrentEquippedItem().getItem()
|
||||
instanceof ItemCardLink) {
|
||||
return false;
|
||||
}
|
||||
entityPlayer.openGui((Object) ModularForceFieldSystem.instance, 0, world,
|
||||
x, y, z);
|
||||
entityPlayer.openGui(
|
||||
(Object) ModularForceFieldSystem.instance, 0, world, x, y, z
|
||||
);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSneakMachineActivated(final World world, final int x,
|
||||
final int y, final int z,
|
||||
final EntityPlayer entityPlayer,
|
||||
final int side, final float hitX,
|
||||
final float hitY, final float hitZ) {
|
||||
return this.onUseWrench(world, x, y, z, entityPlayer, side, hitX, hitY,
|
||||
hitZ);
|
||||
public boolean onSneakMachineActivated(
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final EntityPlayer entityPlayer,
|
||||
final int side,
|
||||
final float hitX,
|
||||
final float hitY,
|
||||
final float hitZ
|
||||
) {
|
||||
return this.onUseWrench(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSneakUseWrench(final World world, final int x, final int y,
|
||||
final int z, final EntityPlayer entityPlayer,
|
||||
final int side, final float hitX,
|
||||
final float hitY, final float hitZ) {
|
||||
public boolean onSneakUseWrench(
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final EntityPlayer entityPlayer,
|
||||
final int side,
|
||||
final float hitX,
|
||||
final float hitY,
|
||||
final float hitZ
|
||||
) {
|
||||
if (!world.isRemote) {
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof IBiometricIdentifierLink) {
|
||||
if (((IBiometricIdentifierLink) tileEntity).getBiometricIdentifier() == null) {
|
||||
this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z),
|
||||
0);
|
||||
if (((IBiometricIdentifierLink) tileEntity).getBiometricIdentifier()
|
||||
== null) {
|
||||
this.dropBlockAsItem(
|
||||
world, x, y, z, world.getBlockMetadata(x, y, z), 0
|
||||
);
|
||||
world.setBlockToAir(x, y, z);
|
||||
return true;
|
||||
}
|
||||
if (((IBiometricIdentifierLink) tileEntity)
|
||||
.getBiometricIdentifier()
|
||||
.isAccessGranted(entityPlayer.getDisplayName(),
|
||||
Permission.SECURITY_CENTER_CONFIGURE)) {
|
||||
this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z),
|
||||
0);
|
||||
.isAccessGranted(
|
||||
entityPlayer.getDisplayName(),
|
||||
Permission.SECURITY_CENTER_CONFIGURE
|
||||
)) {
|
||||
this.dropBlockAsItem(
|
||||
world, x, y, z, world.getBlockMetadata(x, y, z), 0
|
||||
);
|
||||
world.setBlockToAir(x, y, z);
|
||||
return true;
|
||||
}
|
||||
entityPlayer.addChatMessage(new ChatComponentText(
|
||||
"[" +
|
||||
ModularForceFieldSystem.blockBiometricIdentifier
|
||||
.getLocalizedName()
|
||||
+
|
||||
"]"
|
||||
+ " Cannot remove machine! Access denied!"));
|
||||
"["
|
||||
+ ModularForceFieldSystem.blockBiometricIdentifier.getLocalizedName()
|
||||
+ "]"
|
||||
+ " Cannot remove machine! Access denied!"
|
||||
));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNeighborBlockChange(final World world, final int x, final int y,
|
||||
final int z, final Block block) {
|
||||
public void onNeighborBlockChange(
|
||||
final World world, final int x, final int y, final int z, final Block block
|
||||
) {
|
||||
if (!world.isRemote) {
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof IRedstoneReceptor) {
|
||||
|
@ -107,10 +133,16 @@ public abstract class BlockMachine
|
|||
}
|
||||
|
||||
@Override
|
||||
public float getExplosionResistance(final Entity entity, final World world,
|
||||
final int i, final int j, final int k,
|
||||
final double d, final double d1,
|
||||
final double d2) {
|
||||
public float getExplosionResistance(
|
||||
final Entity entity,
|
||||
final World world,
|
||||
final int i,
|
||||
final int j,
|
||||
final int k,
|
||||
final double d,
|
||||
final double d1,
|
||||
final double d2
|
||||
) {
|
||||
return 100.0f;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,89 +7,92 @@ import net.minecraft.inventory.Slot;
|
|||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerBase extends Container {
|
||||
protected int slotCount;
|
||||
private IInventory inventory;
|
||||
protected int slotCount;
|
||||
private IInventory inventory;
|
||||
|
||||
public ContainerBase(final IInventory inventory) {
|
||||
this.slotCount = 0;
|
||||
this.inventory = inventory;
|
||||
this.slotCount = inventory.getSizeInventory();
|
||||
}
|
||||
public ContainerBase(final IInventory inventory) {
|
||||
this.slotCount = 0;
|
||||
this.inventory = inventory;
|
||||
this.slotCount = inventory.getSizeInventory();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onContainerClosed(final EntityPlayer player) {
|
||||
if (this.inventory instanceof TileEntityBase) {
|
||||
((TileEntityBase)this.inventory).playersUsing.remove(player);
|
||||
}
|
||||
}
|
||||
|
||||
public void addPlayerInventory(final EntityPlayer player) {
|
||||
if (this.inventory instanceof TileEntityBase) {
|
||||
((TileEntityBase)this.inventory).playersUsing.add(player);
|
||||
}
|
||||
for (int var3 = 0; var3 < 3; ++var3) {
|
||||
for (int var4 = 0; var4 < 9; ++var4) {
|
||||
this.addSlotToContainer(new Slot((IInventory)player.inventory,
|
||||
var4 + var3 * 9 + 9, 8 + var4 * 18,
|
||||
135 + var3 * 18));
|
||||
}
|
||||
}
|
||||
for (int var3 = 0; var3 < 9; ++var3) {
|
||||
this.addSlotToContainer(
|
||||
new Slot((IInventory)player.inventory, var3, 8 + var3 * 18, 193));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(final EntityPlayer par1EntityPlayer,
|
||||
final int slotID) {
|
||||
ItemStack var2 = null;
|
||||
final Slot var3 = (Slot)super.inventorySlots.get(slotID);
|
||||
if (var3 != null && var3.getHasStack()) {
|
||||
final ItemStack itemStack = var3.getStack();
|
||||
var2 = itemStack.copy();
|
||||
if (slotID >= this.slotCount) {
|
||||
boolean didTry = false;
|
||||
for (int i = 0; i < this.slotCount; ++i) {
|
||||
if (this.getSlot(i).isItemValid(itemStack)) {
|
||||
didTry = true;
|
||||
if (this.mergeItemStack(itemStack, i, i + 1, false)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onContainerClosed(final EntityPlayer player) {
|
||||
if (this.inventory instanceof TileEntityBase) {
|
||||
((TileEntityBase) this.inventory).playersUsing.remove(player);
|
||||
}
|
||||
if (!didTry) {
|
||||
if (slotID < 27 + this.slotCount) {
|
||||
if (!this.mergeItemStack(itemStack, 27 + this.slotCount,
|
||||
36 + this.slotCount, false)) {
|
||||
return null;
|
||||
}
|
||||
} else if (slotID >= 27 + this.slotCount &&
|
||||
slotID < 36 + this.slotCount &&
|
||||
!this.mergeItemStack(itemStack, this.slotCount,
|
||||
27 + this.slotCount, false)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
} else if (!this.mergeItemStack(itemStack, this.slotCount,
|
||||
36 + this.slotCount, false)) {
|
||||
return null;
|
||||
}
|
||||
if (itemStack.stackSize == 0) {
|
||||
var3.putStack((ItemStack)null);
|
||||
} else {
|
||||
var3.onSlotChanged();
|
||||
}
|
||||
if (itemStack.stackSize == var2.stackSize) {
|
||||
return null;
|
||||
}
|
||||
var3.onPickupFromSlot(par1EntityPlayer, itemStack);
|
||||
}
|
||||
return var2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(final EntityPlayer entityplayer) {
|
||||
return this.inventory.isUseableByPlayer(entityplayer);
|
||||
}
|
||||
public void addPlayerInventory(final EntityPlayer player) {
|
||||
if (this.inventory instanceof TileEntityBase) {
|
||||
((TileEntityBase) this.inventory).playersUsing.add(player);
|
||||
}
|
||||
for (int var3 = 0; var3 < 3; ++var3) {
|
||||
for (int var4 = 0; var4 < 9; ++var4) {
|
||||
this.addSlotToContainer(new Slot(
|
||||
(IInventory) player.inventory,
|
||||
var4 + var3 * 9 + 9,
|
||||
8 + var4 * 18,
|
||||
135 + var3 * 18
|
||||
));
|
||||
}
|
||||
}
|
||||
for (int var3 = 0; var3 < 9; ++var3) {
|
||||
this.addSlotToContainer(
|
||||
new Slot((IInventory) player.inventory, var3, 8 + var3 * 18, 193)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack
|
||||
transferStackInSlot(final EntityPlayer par1EntityPlayer, final int slotID) {
|
||||
ItemStack var2 = null;
|
||||
final Slot var3 = (Slot) super.inventorySlots.get(slotID);
|
||||
if (var3 != null && var3.getHasStack()) {
|
||||
final ItemStack itemStack = var3.getStack();
|
||||
var2 = itemStack.copy();
|
||||
if (slotID >= this.slotCount) {
|
||||
boolean didTry = false;
|
||||
for (int i = 0; i < this.slotCount; ++i) {
|
||||
if (this.getSlot(i).isItemValid(itemStack)) {
|
||||
didTry = true;
|
||||
if (this.mergeItemStack(itemStack, i, i + 1, false)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!didTry) {
|
||||
if (slotID < 27 + this.slotCount) {
|
||||
if (!this.mergeItemStack(
|
||||
itemStack, 27 + this.slotCount, 36 + this.slotCount, false
|
||||
)) {
|
||||
return null;
|
||||
}
|
||||
} else if (slotID >= 27 + this.slotCount && slotID < 36 + this.slotCount && !this.mergeItemStack(itemStack, this.slotCount, 27 + this.slotCount, false)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
} else if (!this.mergeItemStack(
|
||||
itemStack, this.slotCount, 36 + this.slotCount, false
|
||||
)) {
|
||||
return null;
|
||||
}
|
||||
if (itemStack.stackSize == 0) {
|
||||
var3.putStack((ItemStack) null);
|
||||
} else {
|
||||
var3.onSlotChanged();
|
||||
}
|
||||
if (itemStack.stackSize == var2.stackSize) {
|
||||
return null;
|
||||
}
|
||||
var3.onPickupFromSlot(par1EntityPlayer, itemStack);
|
||||
}
|
||||
return var2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(final EntityPlayer entityplayer) {
|
||||
return this.inventory.isUseableByPlayer(entityplayer);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package mffs.base;
|
||||
|
||||
import icbm.api.IBlockFrequency;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import icbm.api.IBlockFrequency;
|
||||
import mffs.MFFSHelper;
|
||||
import mffs.ModularForceFieldSystem;
|
||||
import mffs.api.IBiometricIdentifierLink;
|
||||
|
@ -26,337 +27,447 @@ import universalelectricity.prefab.TranslationHelper;
|
|||
import universalelectricity.prefab.vector.Region2;
|
||||
|
||||
public class GuiBase extends GuiContainer {
|
||||
public static final int METER_HEIGHT = 49;
|
||||
public static final int METER_WIDTH = 14;
|
||||
public static final int METER_END = 68;
|
||||
protected GuiTextField textFieldFrequency;
|
||||
protected Vector2 textFieldPos;
|
||||
public String tooltip;
|
||||
protected int containerWidth;
|
||||
protected int containerHeight;
|
||||
protected IBlockFrequency frequencyTile;
|
||||
protected HashMap<Region2, String> tooltips;
|
||||
public static final int METER_HEIGHT = 49;
|
||||
public static final int METER_WIDTH = 14;
|
||||
public static final int METER_END = 68;
|
||||
protected GuiTextField textFieldFrequency;
|
||||
protected Vector2 textFieldPos;
|
||||
public String tooltip;
|
||||
protected int containerWidth;
|
||||
protected int containerHeight;
|
||||
protected IBlockFrequency frequencyTile;
|
||||
protected HashMap<Region2, String> tooltips;
|
||||
|
||||
public GuiBase(final Container container) {
|
||||
super(container);
|
||||
this.textFieldPos = new Vector2();
|
||||
this.tooltip = "";
|
||||
this.tooltips = new HashMap<>();
|
||||
this.ySize = 217;
|
||||
}
|
||||
|
||||
public GuiBase(final Container container,
|
||||
final IBlockFrequency frequencyTile) {
|
||||
this(container);
|
||||
this.frequencyTile = frequencyTile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
this.buttonList.clear();
|
||||
this.buttonList.add(new GuiIcon(
|
||||
0, this.width / 2 - 82, this.height / 2 - 104,
|
||||
new ItemStack(Blocks.torch), new ItemStack(Blocks.redstone_torch)));
|
||||
Keyboard.enableRepeatEvents(true);
|
||||
if (this.frequencyTile != null) {
|
||||
(this.textFieldFrequency =
|
||||
new GuiTextField(this.fontRendererObj, this.textFieldPos.intX(),
|
||||
this.textFieldPos.intY(), 50, 12))
|
||||
.setMaxStringLength(6);
|
||||
this.textFieldFrequency.setText(this.frequencyTile.getFrequency() + "");
|
||||
public GuiBase(final Container container) {
|
||||
super(container);
|
||||
this.textFieldPos = new Vector2();
|
||||
this.tooltip = "";
|
||||
this.tooltips = new HashMap<>();
|
||||
this.ySize = 217;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onGuiClosed() {
|
||||
Keyboard.enableRepeatEvents(false);
|
||||
super.onGuiClosed();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void keyTyped(final char par1, final int par2) {
|
||||
super.keyTyped(par1, par2);
|
||||
if (this.textFieldFrequency != null) {
|
||||
this.textFieldFrequency.textboxKeyTyped(par1, par2);
|
||||
try {
|
||||
final int newFrequency =
|
||||
Math.max(0, Integer.parseInt(this.textFieldFrequency.getText()));
|
||||
this.frequencyTile.setFrequency(newFrequency);
|
||||
this.textFieldFrequency.setText(this.frequencyTile.getFrequency() + "");
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
nbt.setInteger("frequency", this.frequencyTile.getFrequency());
|
||||
ModularForceFieldSystem.channel.sendToServer(
|
||||
new PacketTile(PacketTile.Type.FREQUENCY,
|
||||
new Vector3((TileEntity)this.frequencyTile), nbt));
|
||||
} catch (final NumberFormatException ex) {
|
||||
}
|
||||
public GuiBase(final Container container, final IBlockFrequency frequencyTile) {
|
||||
this(container);
|
||||
this.frequencyTile = frequencyTile;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(final GuiButton guiButton) {
|
||||
super.actionPerformed(guiButton);
|
||||
if (this.frequencyTile != null && guiButton.id == 0) {
|
||||
ModularForceFieldSystem.channel.sendToServer(new PacketTile(
|
||||
PacketTile.Type.TOGGLE_ACTIVATION,
|
||||
new Vector3((TileEntity)this.frequencyTile), new NBTTagCompound()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateScreen() {
|
||||
super.updateScreen();
|
||||
if (this.textFieldFrequency != null &&
|
||||
!this.textFieldFrequency.isFocused()) {
|
||||
this.textFieldFrequency.setText(this.frequencyTile.getFrequency() + "");
|
||||
}
|
||||
if (this.frequencyTile instanceof TileEntityBase &&
|
||||
this.buttonList.size() > 0 && this.buttonList.get(0) != null) {
|
||||
((GuiIcon)this.buttonList.get(0))
|
||||
.setIndex(((TileEntityBase)this.frequencyTile).isActive() ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(final int x, final int y, final int par3) {
|
||||
super.mouseClicked(x, y, par3);
|
||||
if (this.textFieldFrequency != null) {
|
||||
this.textFieldFrequency.mouseClicked(x - this.containerWidth,
|
||||
y - this.containerHeight, par3);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(final int mouseX,
|
||||
final int mouseY) {
|
||||
if (this.textFieldFrequency != null &&
|
||||
this.func_146978_c(this.textFieldPos.intX(), this.textFieldPos.intY(),
|
||||
this.textFieldFrequency.getWidth(), 12, mouseX,
|
||||
mouseY)) {
|
||||
this.tooltip = TranslationHelper.getLocal("gui.frequency.tooltip");
|
||||
}
|
||||
for (final Map.Entry<Region2, String> entry : this.tooltips.entrySet()) {
|
||||
if (entry.getKey().isIn(
|
||||
new Vector2(mouseX - this.guiLeft, mouseY - this.guiTop))) {
|
||||
this.tooltip = entry.getValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (this.tooltip != null && this.tooltip != "") {
|
||||
this.drawTooltip(mouseX - this.guiLeft, mouseY - this.guiTop,
|
||||
MFFSHelper.splitStringPerWord(this.tooltip, 5)
|
||||
.toArray(new String[] {}));
|
||||
}
|
||||
this.tooltip = "";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(final float var1, final int x,
|
||||
final int y) {
|
||||
this.containerWidth = (this.width - this.xSize) / 2;
|
||||
this.containerHeight = (this.height - this.ySize) / 2;
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_base.png"));
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
this.drawTexturedModalRect(this.containerWidth, this.containerHeight, 0, 0,
|
||||
this.xSize, this.ySize);
|
||||
if (this.frequencyTile instanceof IBiometricIdentifierLink) {
|
||||
this.drawBulb(167, 4,
|
||||
((IBiometricIdentifierLink)this.frequencyTile)
|
||||
.getBiometricIdentifier() != null);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawBulb(final int x, final int y, final boolean isOn) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_components.png"));
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
if (isOn) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 161, 0, 6, 6);
|
||||
} else {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 161, 4, 6, 6);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawSlot(final int x, final int y, final ItemStack itemStack) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_components.png"));
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 0, 0, 18, 18);
|
||||
this.drawItemStack(itemStack, this.containerWidth + x,
|
||||
this.containerHeight + y);
|
||||
}
|
||||
|
||||
protected void drawItemStack(final ItemStack itemStack, int x, int y) {
|
||||
++x;
|
||||
++y;
|
||||
GL11.glTranslatef(0.0f, 0.0f, 32.0f);
|
||||
GuiBase.itemRender.renderItemAndEffectIntoGUI(
|
||||
this.fontRendererObj, this.mc.renderEngine, itemStack, x, y);
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(final String textName, final String format,
|
||||
final int x, final int y, final int mouseX,
|
||||
final int mouseY) {
|
||||
this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752);
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(final String textName, final String format,
|
||||
final int x, final int y, final int mouseX,
|
||||
final int mouseY, final int color) {
|
||||
final String name = TranslationHelper.getLocal("gui." + textName + ".name");
|
||||
final String text = format.replaceAll("%1", name);
|
||||
this.fontRendererObj.drawString(text, x, y, color);
|
||||
final String tooltip =
|
||||
TranslationHelper.getLocal("gui." + textName + ".tooltip");
|
||||
if (tooltip != null && tooltip != "" &&
|
||||
this.func_146978_c(x, y, (int)(text.length() * 4.8), 12, mouseX,
|
||||
mouseY)) {
|
||||
this.tooltip = tooltip;
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(final String textName, final int x,
|
||||
final int y, final int mouseX,
|
||||
final int mouseY) {
|
||||
this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY);
|
||||
}
|
||||
|
||||
protected void drawSlot(final int x, final int y, final SlotType type,
|
||||
final float r, final float g, final float b) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_components.png"));
|
||||
GL11.glColor4f(r, g, b, 1.0f);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 0, 0, 18, 18);
|
||||
if (type != SlotType.NONE) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 0,
|
||||
18 * type.ordinal(), 18, 18);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawSlot(final int x, final int y, final SlotType type) {
|
||||
this.drawSlot(x, y, type, 1.0f, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
protected void drawSlot(final int x, final int y) {
|
||||
this.drawSlot(x, y, SlotType.NONE);
|
||||
}
|
||||
|
||||
protected void drawBar(final int x, final int y, final float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_components.png"));
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 18, 0, 22, 15);
|
||||
if (scale > 0.0f) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 18, 15,
|
||||
22 - (int)(scale * 22.0f), 15);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawForce(final int x, final int y, final float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_components.png"));
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 54, 0, 107, 11);
|
||||
if (scale > 0.0f) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 54, 11,
|
||||
(int)(scale * 107.0f), 11);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawElectricity(final int x, final int y, final float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_components.png"));
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 54, 0, 107, 11);
|
||||
if (scale > 0.0f) {
|
||||
this.drawTexturedModalRect(this.containerWidth + x,
|
||||
this.containerHeight + y, 54, 22,
|
||||
(int)(scale * 107.0f), 11);
|
||||
}
|
||||
}
|
||||
|
||||
public void drawTooltip(final int x, final int y, final String... toolTips) {
|
||||
if (!GuiScreen.isShiftKeyDown()) {
|
||||
GL11.glDisable(32826);
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
GL11.glDisable(2896);
|
||||
GL11.glDisable(2929);
|
||||
if (toolTips != null) {
|
||||
int var5 = 0;
|
||||
for (int var6 = 0; var6 < toolTips.length; ++var6) {
|
||||
final int var7 = this.fontRendererObj.getStringWidth(toolTips[var6]);
|
||||
if (var7 > var5) {
|
||||
var5 = var7;
|
||||
}
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
this.buttonList.clear();
|
||||
this.buttonList.add(new GuiIcon(
|
||||
0,
|
||||
this.width / 2 - 82,
|
||||
this.height / 2 - 104,
|
||||
new ItemStack(Blocks.torch),
|
||||
new ItemStack(Blocks.redstone_torch)
|
||||
));
|
||||
Keyboard.enableRepeatEvents(true);
|
||||
if (this.frequencyTile != null) {
|
||||
(this.textFieldFrequency = new GuiTextField(
|
||||
this.fontRendererObj,
|
||||
this.textFieldPos.intX(),
|
||||
this.textFieldPos.intY(),
|
||||
50,
|
||||
12
|
||||
))
|
||||
.setMaxStringLength(6);
|
||||
this.textFieldFrequency.setText(this.frequencyTile.getFrequency() + "");
|
||||
}
|
||||
int var6 = x + 12;
|
||||
int var7 = y - 12;
|
||||
int var8 = 8;
|
||||
if (toolTips.length > 1) {
|
||||
var8 += 2 + (toolTips.length - 1) * 10;
|
||||
}
|
||||
if (this.guiTop + var7 + var8 + 6 > this.height) {
|
||||
var7 = this.height - var8 - this.guiTop - 6;
|
||||
}
|
||||
zLevel = 300.0f;
|
||||
final int var9 = -267386864;
|
||||
this.drawGradientRect(var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3,
|
||||
var9, var9);
|
||||
this.drawGradientRect(var6 - 3, var7 + var8 + 3, var6 + var5 + 3,
|
||||
var7 + var8 + 4, var9, var9);
|
||||
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3,
|
||||
var7 + var8 + 3, var9, var9);
|
||||
this.drawGradientRect(var6 - 4, var7 - 3, var6 - 3, var7 + var8 + 3,
|
||||
var9, var9);
|
||||
this.drawGradientRect(var6 + var5 + 3, var7 - 3, var6 + var5 + 4,
|
||||
var7 + var8 + 3, var9, var9);
|
||||
final int var10 = 1347420415;
|
||||
final int var11 = (var10 & 0xFEFEFE) >> 1 | (var10 & 0xFF000000);
|
||||
this.drawGradientRect(var6 - 3, var7 - 3 + 1, var6 - 3 + 1,
|
||||
var7 + var8 + 3 - 1, var10, var11);
|
||||
this.drawGradientRect(var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3,
|
||||
var7 + var8 + 3 - 1, var10, var11);
|
||||
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1,
|
||||
var10, var10);
|
||||
this.drawGradientRect(var6 - 3, var7 + var8 + 2, var6 + var5 + 3,
|
||||
var7 + var8 + 3, var11, var11);
|
||||
for (int var12 = 0; var12 < toolTips.length; ++var12) {
|
||||
final String var13 = toolTips[var12];
|
||||
this.fontRendererObj.drawStringWithShadow(var13, var6, var7, -1);
|
||||
var7 += 10;
|
||||
}
|
||||
this.zLevel = 0.0f;
|
||||
GL11.glEnable(2929);
|
||||
GL11.glEnable(2896);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable(32826);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum SlotType {
|
||||
NONE,
|
||||
BATTERY,
|
||||
LIQUID,
|
||||
ARR_UP,
|
||||
ARR_DOWN,
|
||||
ARR_LEFT,
|
||||
ARR_RIGHT,
|
||||
ARR_UP_RIGHT,
|
||||
ARR_UP_LEFT,
|
||||
ARR_DOWN_LEFT,
|
||||
ARR_DOWN_RIGHT;
|
||||
}
|
||||
@Override
|
||||
public void onGuiClosed() {
|
||||
Keyboard.enableRepeatEvents(false);
|
||||
super.onGuiClosed();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void keyTyped(final char par1, final int par2) {
|
||||
super.keyTyped(par1, par2);
|
||||
if (this.textFieldFrequency != null) {
|
||||
this.textFieldFrequency.textboxKeyTyped(par1, par2);
|
||||
try {
|
||||
final int newFrequency
|
||||
= Math.max(0, Integer.parseInt(this.textFieldFrequency.getText()));
|
||||
this.frequencyTile.setFrequency(newFrequency);
|
||||
this.textFieldFrequency.setText(this.frequencyTile.getFrequency() + "");
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
nbt.setInteger("frequency", this.frequencyTile.getFrequency());
|
||||
ModularForceFieldSystem.channel.sendToServer(new PacketTile(
|
||||
PacketTile.Type.FREQUENCY,
|
||||
new Vector3((TileEntity) this.frequencyTile),
|
||||
nbt
|
||||
));
|
||||
} catch (final NumberFormatException ex) {}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(final GuiButton guiButton) {
|
||||
super.actionPerformed(guiButton);
|
||||
if (this.frequencyTile != null && guiButton.id == 0) {
|
||||
ModularForceFieldSystem.channel.sendToServer(new PacketTile(
|
||||
PacketTile.Type.TOGGLE_ACTIVATION,
|
||||
new Vector3((TileEntity) this.frequencyTile),
|
||||
new NBTTagCompound()
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateScreen() {
|
||||
super.updateScreen();
|
||||
if (this.textFieldFrequency != null && !this.textFieldFrequency.isFocused()) {
|
||||
this.textFieldFrequency.setText(this.frequencyTile.getFrequency() + "");
|
||||
}
|
||||
if (this.frequencyTile instanceof TileEntityBase && this.buttonList.size() > 0
|
||||
&& this.buttonList.get(0) != null) {
|
||||
((GuiIcon) this.buttonList.get(0))
|
||||
.setIndex(((TileEntityBase) this.frequencyTile).isActive() ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(final int x, final int y, final int par3) {
|
||||
super.mouseClicked(x, y, par3);
|
||||
if (this.textFieldFrequency != null) {
|
||||
this.textFieldFrequency.mouseClicked(
|
||||
x - this.containerWidth, y - this.containerHeight, par3
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(final int mouseX, final int mouseY) {
|
||||
if (this.textFieldFrequency != null
|
||||
&& this.func_146978_c(
|
||||
this.textFieldPos.intX(),
|
||||
this.textFieldPos.intY(),
|
||||
this.textFieldFrequency.getWidth(),
|
||||
12,
|
||||
mouseX,
|
||||
mouseY
|
||||
)) {
|
||||
this.tooltip = TranslationHelper.getLocal("gui.frequency.tooltip");
|
||||
}
|
||||
for (final Map.Entry<Region2, String> entry : this.tooltips.entrySet()) {
|
||||
if (entry.getKey().isIn(
|
||||
new Vector2(mouseX - this.guiLeft, mouseY - this.guiTop)
|
||||
)) {
|
||||
this.tooltip = entry.getValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (this.tooltip != null && this.tooltip != "") {
|
||||
this.drawTooltip(
|
||||
mouseX - this.guiLeft,
|
||||
mouseY - this.guiTop,
|
||||
MFFSHelper.splitStringPerWord(this.tooltip, 5).toArray(new String[] {})
|
||||
);
|
||||
}
|
||||
this.tooltip = "";
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void
|
||||
drawGuiContainerBackgroundLayer(final float var1, final int x, final int y) {
|
||||
this.containerWidth = (this.width - this.xSize) / 2;
|
||||
this.containerHeight = (this.height - this.ySize) / 2;
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_base.png")
|
||||
);
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth, this.containerHeight, 0, 0, this.xSize, this.ySize
|
||||
);
|
||||
if (this.frequencyTile instanceof IBiometricIdentifierLink) {
|
||||
this.drawBulb(
|
||||
167,
|
||||
4,
|
||||
((IBiometricIdentifierLink) this.frequencyTile).getBiometricIdentifier()
|
||||
!= null
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawBulb(final int x, final int y, final boolean isOn) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_components.png")
|
||||
);
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
if (isOn) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 161, 0, 6, 6
|
||||
);
|
||||
} else {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 161, 4, 6, 6
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawSlot(final int x, final int y, final ItemStack itemStack) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_components.png")
|
||||
);
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 0, 0, 18, 18
|
||||
);
|
||||
this.drawItemStack(itemStack, this.containerWidth + x, this.containerHeight + y);
|
||||
}
|
||||
|
||||
protected void drawItemStack(final ItemStack itemStack, int x, int y) {
|
||||
++x;
|
||||
++y;
|
||||
GL11.glTranslatef(0.0f, 0.0f, 32.0f);
|
||||
GuiBase.itemRender.renderItemAndEffectIntoGUI(
|
||||
this.fontRendererObj, this.mc.renderEngine, itemStack, x, y
|
||||
);
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(
|
||||
final String textName,
|
||||
final String format,
|
||||
final int x,
|
||||
final int y,
|
||||
final int mouseX,
|
||||
final int mouseY
|
||||
) {
|
||||
this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752);
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(
|
||||
final String textName,
|
||||
final String format,
|
||||
final int x,
|
||||
final int y,
|
||||
final int mouseX,
|
||||
final int mouseY,
|
||||
final int color
|
||||
) {
|
||||
final String name = TranslationHelper.getLocal("gui." + textName + ".name");
|
||||
final String text = format.replaceAll("%1", name);
|
||||
this.fontRendererObj.drawString(text, x, y, color);
|
||||
final String tooltip = TranslationHelper.getLocal("gui." + textName + ".tooltip");
|
||||
if (tooltip != null && tooltip != ""
|
||||
&& this.func_146978_c(
|
||||
x, y, (int) (text.length() * 4.8), 12, mouseX, mouseY
|
||||
)) {
|
||||
this.tooltip = tooltip;
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawTextWithTooltip(
|
||||
final String textName,
|
||||
final int x,
|
||||
final int y,
|
||||
final int mouseX,
|
||||
final int mouseY
|
||||
) {
|
||||
this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY);
|
||||
}
|
||||
|
||||
protected void drawSlot(
|
||||
final int x,
|
||||
final int y,
|
||||
final SlotType type,
|
||||
final float r,
|
||||
final float g,
|
||||
final float b
|
||||
) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_components.png")
|
||||
);
|
||||
GL11.glColor4f(r, g, b, 1.0f);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 0, 0, 18, 18
|
||||
);
|
||||
if (type != SlotType.NONE) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
0,
|
||||
18 * type.ordinal(),
|
||||
18,
|
||||
18
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawSlot(final int x, final int y, final SlotType type) {
|
||||
this.drawSlot(x, y, type, 1.0f, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
protected void drawSlot(final int x, final int y) {
|
||||
this.drawSlot(x, y, SlotType.NONE);
|
||||
}
|
||||
|
||||
protected void drawBar(final int x, final int y, final float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_components.png")
|
||||
);
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 18, 0, 22, 15
|
||||
);
|
||||
if (scale > 0.0f) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
18,
|
||||
15,
|
||||
22 - (int) (scale * 22.0f),
|
||||
15
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawForce(final int x, final int y, final float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_components.png")
|
||||
);
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 54, 0, 107, 11
|
||||
);
|
||||
if (scale > 0.0f) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
54,
|
||||
11,
|
||||
(int) (scale * 107.0f),
|
||||
11
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawElectricity(final int x, final int y, final float scale) {
|
||||
this.mc.renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_components.png")
|
||||
);
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x, this.containerHeight + y, 54, 0, 107, 11
|
||||
);
|
||||
if (scale > 0.0f) {
|
||||
this.drawTexturedModalRect(
|
||||
this.containerWidth + x,
|
||||
this.containerHeight + y,
|
||||
54,
|
||||
22,
|
||||
(int) (scale * 107.0f),
|
||||
11
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public void drawTooltip(final int x, final int y, final String... toolTips) {
|
||||
if (!GuiScreen.isShiftKeyDown()) {
|
||||
GL11.glDisable(32826);
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
GL11.glDisable(2896);
|
||||
GL11.glDisable(2929);
|
||||
if (toolTips != null) {
|
||||
int var5 = 0;
|
||||
for (int var6 = 0; var6 < toolTips.length; ++var6) {
|
||||
final int var7 = this.fontRendererObj.getStringWidth(toolTips[var6]);
|
||||
if (var7 > var5) {
|
||||
var5 = var7;
|
||||
}
|
||||
}
|
||||
int var6 = x + 12;
|
||||
int var7 = y - 12;
|
||||
int var8 = 8;
|
||||
if (toolTips.length > 1) {
|
||||
var8 += 2 + (toolTips.length - 1) * 10;
|
||||
}
|
||||
if (this.guiTop + var7 + var8 + 6 > this.height) {
|
||||
var7 = this.height - var8 - this.guiTop - 6;
|
||||
}
|
||||
zLevel = 300.0f;
|
||||
final int var9 = -267386864;
|
||||
this.drawGradientRect(
|
||||
var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, var9, var9
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 3,
|
||||
var7 + var8 + 3,
|
||||
var6 + var5 + 3,
|
||||
var7 + var8 + 4,
|
||||
var9,
|
||||
var9
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 3, var7 - 3, var6 + var5 + 3, var7 + var8 + 3, var9, var9
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 4, var7 - 3, var6 - 3, var7 + var8 + 3, var9, var9
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 + var5 + 3,
|
||||
var7 - 3,
|
||||
var6 + var5 + 4,
|
||||
var7 + var8 + 3,
|
||||
var9,
|
||||
var9
|
||||
);
|
||||
final int var10 = 1347420415;
|
||||
final int var11 = (var10 & 0xFEFEFE) >> 1 | (var10 & 0xFF000000);
|
||||
this.drawGradientRect(
|
||||
var6 - 3,
|
||||
var7 - 3 + 1,
|
||||
var6 - 3 + 1,
|
||||
var7 + var8 + 3 - 1,
|
||||
var10,
|
||||
var11
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 + var5 + 2,
|
||||
var7 - 3 + 1,
|
||||
var6 + var5 + 3,
|
||||
var7 + var8 + 3 - 1,
|
||||
var10,
|
||||
var11
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var10, var10
|
||||
);
|
||||
this.drawGradientRect(
|
||||
var6 - 3,
|
||||
var7 + var8 + 2,
|
||||
var6 + var5 + 3,
|
||||
var7 + var8 + 3,
|
||||
var11,
|
||||
var11
|
||||
);
|
||||
for (int var12 = 0; var12 < toolTips.length; ++var12) {
|
||||
final String var13 = toolTips[var12];
|
||||
this.fontRendererObj.drawStringWithShadow(var13, var6, var7, -1);
|
||||
var7 += 10;
|
||||
}
|
||||
this.zLevel = 0.0f;
|
||||
GL11.glEnable(2929);
|
||||
GL11.glEnable(2896);
|
||||
RenderHelper.enableGUIStandardItemLighting();
|
||||
GL11.glEnable(32826);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum SlotType {
|
||||
NONE,
|
||||
BATTERY,
|
||||
LIQUID,
|
||||
ARR_UP,
|
||||
ARR_DOWN,
|
||||
ARR_LEFT,
|
||||
ARR_RIGHT,
|
||||
ARR_UP_RIGHT,
|
||||
ARR_UP_LEFT,
|
||||
ARR_DOWN_LEFT,
|
||||
ARR_DOWN_RIGHT;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package mffs.base;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import mffs.MFFSCreativeTab;
|
||||
import mffs.MFFSHelper;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
@ -9,22 +10,25 @@ import net.minecraft.item.ItemStack;
|
|||
import universalelectricity.prefab.TranslationHelper;
|
||||
|
||||
public class ItemBase extends Item {
|
||||
public ItemBase(final String name) {
|
||||
super();
|
||||
this.setUnlocalizedName("mffs:" + name);
|
||||
this.setCreativeTab(MFFSCreativeTab.INSTANCE);
|
||||
this.setNoRepair();
|
||||
this.iconString = "mffs:" + name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(final ItemStack itemStack,
|
||||
final EntityPlayer player, final List info,
|
||||
final boolean b) {
|
||||
final String tooltip =
|
||||
TranslationHelper.getLocal(this.getUnlocalizedName() + ".tooltip");
|
||||
if (tooltip != null && tooltip.length() > 0) {
|
||||
info.addAll(MFFSHelper.splitStringPerWord(tooltip, 5));
|
||||
public ItemBase(final String name) {
|
||||
super();
|
||||
this.setUnlocalizedName("mffs:" + name);
|
||||
this.setCreativeTab(MFFSCreativeTab.INSTANCE);
|
||||
this.setNoRepair();
|
||||
this.iconString = "mffs:" + name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(
|
||||
final ItemStack itemStack,
|
||||
final EntityPlayer player,
|
||||
final List info,
|
||||
final boolean b
|
||||
) {
|
||||
final String tooltip
|
||||
= TranslationHelper.getLocal(this.getUnlocalizedName() + ".tooltip");
|
||||
if (tooltip != null && tooltip.length() > 0) {
|
||||
info.addAll(MFFSHelper.splitStringPerWord(tooltip, 5));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
package mffs.base;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.ByteBufInputStream;
|
||||
import io.netty.buffer.ByteBufOutputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import net.minecraft.nbt.CompressedStreamTools;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
@ -29,7 +30,8 @@ public class PacketFxs implements IMessage {
|
|||
NBTTagCompound nbt = null;
|
||||
try {
|
||||
nbt = CompressedStreamTools.read(
|
||||
new DataInputStream(new ByteBufInputStream(buf)));
|
||||
new DataInputStream(new ByteBufInputStream(buf))
|
||||
);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
@ -47,7 +49,8 @@ public class PacketFxs implements IMessage {
|
|||
|
||||
try {
|
||||
CompressedStreamTools.write(
|
||||
nbt, new DataOutputStream(new ByteBufOutputStream(buf)));
|
||||
nbt, new DataOutputStream(new ByteBufOutputStream(buf))
|
||||
);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@ import net.minecraft.tileentity.TileEntity;
|
|||
import net.minecraft.world.World;
|
||||
|
||||
public class PacketFxsHandler implements IMessageHandler<PacketFxs, IMessage> {
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IMessage onMessage(PacketFxs message, MessageContext ctx) {
|
||||
|
|
|
@ -1,65 +1,68 @@
|
|||
package mffs.base;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
import cpw.mods.fml.common.network.simpleimpl.IMessage;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.buffer.ByteBufInputStream;
|
||||
import io.netty.buffer.ByteBufOutputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import net.minecraft.nbt.CompressedStreamTools;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class PacketTile implements IMessage {
|
||||
Type type;
|
||||
Vector3 pos;
|
||||
NBTTagCompound data;
|
||||
Type type;
|
||||
Vector3 pos;
|
||||
NBTTagCompound data;
|
||||
|
||||
public PacketTile(Type type, Vector3 pos, NBTTagCompound data) {
|
||||
this.type = type;
|
||||
this.pos = pos;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public PacketTile() {}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
try {
|
||||
NBTTagCompound nbt = CompressedStreamTools.read(
|
||||
new DataInputStream(new ByteBufInputStream(buf)));
|
||||
|
||||
this.type = Type.values()[nbt.getInteger("type")];
|
||||
this.pos = Vector3.readFromNBT(nbt);
|
||||
this.data = nbt.getCompoundTag("data");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
public PacketTile(Type type, Vector3 pos, NBTTagCompound data) {
|
||||
this.type = type;
|
||||
this.pos = pos;
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
try {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
public PacketTile() {}
|
||||
|
||||
nbt.setInteger("type", this.type.ordinal());
|
||||
this.pos.writeToNBT(nbt);
|
||||
nbt.setTag("data", this.data);
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
try {
|
||||
NBTTagCompound nbt = CompressedStreamTools.read(
|
||||
new DataInputStream(new ByteBufInputStream(buf))
|
||||
);
|
||||
|
||||
CompressedStreamTools.write(
|
||||
nbt, new DataOutputStream(new ByteBufOutputStream(buf)));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
this.type = Type.values()[nbt.getInteger("type")];
|
||||
this.pos = Vector3.readFromNBT(nbt);
|
||||
this.data = nbt.getCompoundTag("data");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
NONE,
|
||||
FREQUENCY,
|
||||
TOGGLE_ACTIVATION,
|
||||
TOGGLE_MODE,
|
||||
INVENTORY,
|
||||
STRING,
|
||||
}
|
||||
@Override
|
||||
public void toBytes(ByteBuf buf) {
|
||||
try {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
|
||||
nbt.setInteger("type", this.type.ordinal());
|
||||
this.pos.writeToNBT(nbt);
|
||||
nbt.setTag("data", this.data);
|
||||
|
||||
CompressedStreamTools.write(
|
||||
nbt, new DataOutputStream(new ByteBufOutputStream(buf))
|
||||
);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
NONE,
|
||||
FREQUENCY,
|
||||
TOGGLE_ACTIVATION,
|
||||
TOGGLE_MODE,
|
||||
INVENTORY,
|
||||
STRING,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,19 +6,18 @@ import cpw.mods.fml.common.network.simpleimpl.MessageContext;
|
|||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class PacketTileHandler
|
||||
implements IMessageHandler<PacketTile, IMessage> {
|
||||
@Override
|
||||
public IMessage onMessage(PacketTile arg0, MessageContext arg1) {
|
||||
World w = arg1.getServerHandler().playerEntity.worldObj;
|
||||
public class PacketTileHandler implements IMessageHandler<PacketTile, IMessage> {
|
||||
@Override
|
||||
public IMessage onMessage(PacketTile arg0, MessageContext arg1) {
|
||||
World w = arg1.getServerHandler().playerEntity.worldObj;
|
||||
|
||||
TileEntity te = arg0.pos.getTileEntity(w);
|
||||
TileEntity te = arg0.pos.getTileEntity(w);
|
||||
|
||||
if (!(te instanceof TileEntityBase))
|
||||
return null;
|
||||
if (!(te instanceof TileEntityBase))
|
||||
return null;
|
||||
|
||||
((TileEntityBase)te).onReceivePacket(arg0.type, arg0.data);
|
||||
((TileEntityBase) te).onReceivePacket(arg0.type, arg0.data);
|
||||
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
package mffs.base;
|
||||
|
||||
import dan200.computercraft.api.peripheral.IPeripheral;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import dan200.computercraft.api.peripheral.IPeripheral;
|
||||
import mffs.api.IActivatable;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
@ -22,112 +22,118 @@ import universalelectricity.prefab.tile.TileEntityDisableable;
|
|||
|
||||
public abstract class TileEntityBase extends TileEntityDisableable
|
||||
implements IRotatable, IRedstoneReceptor, IActivatable, IPeripheral {
|
||||
public boolean isActive;
|
||||
public boolean isRedstoneActive;
|
||||
public final List<EntityPlayer> playersUsing;
|
||||
public float animation;
|
||||
public boolean isActive;
|
||||
public boolean isRedstoneActive;
|
||||
public final List<EntityPlayer> playersUsing;
|
||||
public float animation;
|
||||
|
||||
public TileEntityBase() {
|
||||
this.isActive = false;
|
||||
this.isRedstoneActive = false;
|
||||
this.playersUsing = new ArrayList<>();
|
||||
this.animation = 0.0f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
if (super.ticks % 4L == 0L && this.playersUsing.size() > 0) {
|
||||
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
|
||||
public TileEntityBase() {
|
||||
this.isActive = false;
|
||||
this.isRedstoneActive = false;
|
||||
this.playersUsing = new ArrayList<>();
|
||||
this.animation = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Packet getDescriptionPacket() {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
|
||||
nbt.setBoolean("isActive", this.isActive);
|
||||
|
||||
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord,
|
||||
this.getBlockMetadata(), nbt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDataPacket(NetworkManager arg0,
|
||||
S35PacketUpdateTileEntity arg1) {
|
||||
NBTTagCompound nbt = arg1.func_148857_g();
|
||||
|
||||
this.isActive = nbt.getBoolean("isActive");
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void onFxsPacket(NBTTagCompound data) {}
|
||||
|
||||
public void onReceivePacket(final PacketTile.Type type,
|
||||
final NBTTagCompound data) {
|
||||
if (type == PacketTile.Type.TOGGLE_ACTIVATION) {
|
||||
this.isRedstoneActive = !this.isRedstoneActive;
|
||||
this.setActive(this.isRedstoneActive);
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
if (super.ticks % 4L == 0L && this.playersUsing.size() > 0) {
|
||||
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isPoweredByRedstone() {
|
||||
return this.worldObj.isBlockIndirectlyGettingPowered(
|
||||
this.xCoord, this.yCoord, this.zCoord);
|
||||
}
|
||||
@Override
|
||||
public Packet getDescriptionPacket() {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
|
||||
@Override
|
||||
public void readFromNBT(final NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
this.isActive = nbt.getBoolean("isActive");
|
||||
this.isRedstoneActive = nbt.getBoolean("isRedstoneActive");
|
||||
}
|
||||
nbt.setBoolean("isActive", this.isActive);
|
||||
|
||||
@Override
|
||||
public void writeToNBT(final NBTTagCompound nbttagcompound) {
|
||||
super.writeToNBT(nbttagcompound);
|
||||
nbttagcompound.setBoolean("isActive", this.isActive);
|
||||
nbttagcompound.setBoolean("isRedstoneActive", this.isRedstoneActive);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
return this.isActive;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setActive(final boolean flag) {
|
||||
this.isActive = flag;
|
||||
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ForgeDirection getDirection(final IBlockAccess world, final int x,
|
||||
final int y, final int z) {
|
||||
return ForgeDirection.getOrientation(this.getBlockMetadata());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDirection(final World world, final int x, final int y,
|
||||
final int z, final ForgeDirection facingDirection) {
|
||||
this.worldObj.setBlockMetadataWithNotify(
|
||||
this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 3);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPowerOn() {
|
||||
this.setActive(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPowerOff() {
|
||||
if (!this.isRedstoneActive && !this.worldObj.isRemote) {
|
||||
this.setActive(false);
|
||||
return new S35PacketUpdateTileEntity(
|
||||
this.xCoord, this.yCoord, this.zCoord, this.getBlockMetadata(), nbt
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(IPeripheral other) {
|
||||
return this == other;
|
||||
}
|
||||
@Override
|
||||
public void onDataPacket(NetworkManager arg0, S35PacketUpdateTileEntity arg1) {
|
||||
NBTTagCompound nbt = arg1.func_148857_g();
|
||||
|
||||
this.isActive = nbt.getBoolean("isActive");
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void onFxsPacket(NBTTagCompound data) {}
|
||||
|
||||
public void onReceivePacket(final PacketTile.Type type, final NBTTagCompound data) {
|
||||
if (type == PacketTile.Type.TOGGLE_ACTIVATION) {
|
||||
this.isRedstoneActive = !this.isRedstoneActive;
|
||||
this.setActive(this.isRedstoneActive);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isPoweredByRedstone() {
|
||||
return this.worldObj.isBlockIndirectlyGettingPowered(
|
||||
this.xCoord, this.yCoord, this.zCoord
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(final NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
this.isActive = nbt.getBoolean("isActive");
|
||||
this.isRedstoneActive = nbt.getBoolean("isRedstoneActive");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(final NBTTagCompound nbttagcompound) {
|
||||
super.writeToNBT(nbttagcompound);
|
||||
nbttagcompound.setBoolean("isActive", this.isActive);
|
||||
nbttagcompound.setBoolean("isRedstoneActive", this.isRedstoneActive);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
return this.isActive;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setActive(final boolean flag) {
|
||||
this.isActive = flag;
|
||||
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ForgeDirection
|
||||
getDirection(final IBlockAccess world, final int x, final int y, final int z) {
|
||||
return ForgeDirection.getOrientation(this.getBlockMetadata());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDirection(
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final ForgeDirection facingDirection
|
||||
) {
|
||||
this.worldObj.setBlockMetadataWithNotify(
|
||||
this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 3
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPowerOn() {
|
||||
this.setActive(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPowerOff() {
|
||||
if (!this.isRedstoneActive && !this.worldObj.isRemote) {
|
||||
this.setActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(IPeripheral other) {
|
||||
return this == other;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,148 +24,155 @@ import universalelectricity.core.vector.Vector3;
|
|||
|
||||
public abstract class TileEntityFortron extends TileEntityFrequency
|
||||
implements IFluidHandler, IFortronFrequency, ISpecialForceManipulation {
|
||||
protected FluidTank fortronTank;
|
||||
private boolean markSendFortron;
|
||||
protected FluidTank fortronTank;
|
||||
private boolean markSendFortron;
|
||||
|
||||
public TileEntityFortron() {
|
||||
this.fortronTank = new FluidTank(FortronHelper.FLUID_FORTRON, 0, 1000);
|
||||
this.markSendFortron = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
if (!Settings.CONSERVE_PACKETS && super.ticks % 60L == 0L) {
|
||||
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
|
||||
public TileEntityFortron() {
|
||||
this.fortronTank = new FluidTank(FortronHelper.FLUID_FORTRON, 0, 1000);
|
||||
this.markSendFortron = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
if (this.markSendFortron) {
|
||||
MFFSHelper.transferFortron(
|
||||
this,
|
||||
FrequencyGrid.instance().getFortronTiles(
|
||||
this.worldObj, new Vector3(this), 100, this.getFrequency()),
|
||||
TransferMode.DRAIN, Integer.MAX_VALUE);
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
if (!Settings.CONSERVE_PACKETS && super.ticks % 60L == 0L) {
|
||||
this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord);
|
||||
}
|
||||
}
|
||||
super.invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Packet getDescriptionPacket() {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
|
||||
nbt.setInteger("fortron", this.fortronTank.getFluidAmount());
|
||||
nbt.setBoolean("isActive", this.isActive());
|
||||
|
||||
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord,
|
||||
this.getBlockMetadata(), nbt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDataPacket(NetworkManager arg0,
|
||||
S35PacketUpdateTileEntity arg1) {
|
||||
NBTTagCompound nbt = arg1.func_148857_g();
|
||||
|
||||
this.fortronTank.setFluid(
|
||||
new FluidStack(FortronHelper.FLUID_FORTRON, nbt.getInteger("fortron")));
|
||||
this.isActive = nbt.getBoolean("isActive");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean preMove(final int x, final int y, final int z) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void move(final int x, final int y, final int z) {
|
||||
this.markSendFortron = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postMove() {}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(final NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
this.fortronTank.setFluid(
|
||||
FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("fortron")));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(final NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
if (this.fortronTank.getFluid() != null) {
|
||||
final NBTTagCompound fortronCompound = new NBTTagCompound();
|
||||
this.fortronTank.getFluid().writeToNBT(fortronCompound);
|
||||
nbt.setTag("fortron", (NBTBase)fortronCompound);
|
||||
@Override
|
||||
public void invalidate() {
|
||||
if (this.markSendFortron) {
|
||||
MFFSHelper.transferFortron(
|
||||
this,
|
||||
FrequencyGrid.instance().getFortronTiles(
|
||||
this.worldObj, new Vector3(this), 100, this.getFrequency()
|
||||
),
|
||||
TransferMode.DRAIN,
|
||||
Integer.MAX_VALUE
|
||||
);
|
||||
}
|
||||
super.invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int fill(final ForgeDirection from, final FluidStack resource,
|
||||
final boolean doFill) {
|
||||
if (resource.getFluid() == FortronHelper.FLUID_FORTRON) {
|
||||
return this.fortronTank.fill(resource, doFill);
|
||||
@Override
|
||||
public Packet getDescriptionPacket() {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
|
||||
nbt.setInteger("fortron", this.fortronTank.getFluidAmount());
|
||||
nbt.setBoolean("isActive", this.isActive());
|
||||
|
||||
return new S35PacketUpdateTileEntity(
|
||||
this.xCoord, this.yCoord, this.zCoord, this.getBlockMetadata(), nbt
|
||||
);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canFill(ForgeDirection arg0, Fluid arg1) {
|
||||
return arg1 == FortronHelper.FLUID_FORTRON &&
|
||||
this.fortronTank.getFluidAmount() < this.fortronTank.getCapacity();
|
||||
}
|
||||
@Override
|
||||
public void onDataPacket(NetworkManager arg0, S35PacketUpdateTileEntity arg1) {
|
||||
NBTTagCompound nbt = arg1.func_148857_g();
|
||||
|
||||
@Override
|
||||
public FluidStack drain(final ForgeDirection from, final int maxDrain,
|
||||
final boolean doDrain) {
|
||||
return this.fortronTank.drain(maxDrain, doDrain);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidStack drain(ForgeDirection arg0, FluidStack arg1, boolean arg2) {
|
||||
if (arg1.getFluid() != FortronHelper.FLUID_FORTRON)
|
||||
return null;
|
||||
|
||||
return this.fortronTank.drain(arg1.amount, arg2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDrain(ForgeDirection arg0, Fluid arg1) {
|
||||
return arg1 == FortronHelper.FLUID_FORTRON &&
|
||||
this.fortronTank.getFluidAmount() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTankInfo[] getTankInfo(ForgeDirection arg0) {
|
||||
return new FluidTankInfo[] {new FluidTankInfo(this.fortronTank)};
|
||||
}
|
||||
|
||||
public void setFortronEnergy(final int joules) {
|
||||
this.fortronTank.setFluid(FortronHelper.getFortron(joules));
|
||||
}
|
||||
|
||||
public int getFortronEnergy() {
|
||||
return FortronHelper.getAmount(this.fortronTank);
|
||||
}
|
||||
|
||||
public int getFortronCapacity() { return this.fortronTank.getCapacity(); }
|
||||
|
||||
public int requestFortron(final int amount, final boolean doUse) {
|
||||
return FortronHelper.getAmount(this.fortronTank.drain(amount, doUse));
|
||||
}
|
||||
|
||||
public int provideFortron(final int joules, final boolean doUse) {
|
||||
return this.fortronTank.fill(FortronHelper.getFortron(joules), doUse);
|
||||
}
|
||||
|
||||
public ItemStack getCard() {
|
||||
final ItemStack itemStack = this.getStackInSlot(0);
|
||||
if (itemStack != null && itemStack.getItem() instanceof ICard) {
|
||||
return itemStack;
|
||||
this.fortronTank.setFluid(
|
||||
new FluidStack(FortronHelper.FLUID_FORTRON, nbt.getInteger("fortron"))
|
||||
);
|
||||
this.isActive = nbt.getBoolean("isActive");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean preMove(final int x, final int y, final int z) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void move(final int x, final int y, final int z) {
|
||||
this.markSendFortron = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postMove() {}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(final NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
this.fortronTank.setFluid(
|
||||
FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("fortron"))
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(final NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
if (this.fortronTank.getFluid() != null) {
|
||||
final NBTTagCompound fortronCompound = new NBTTagCompound();
|
||||
this.fortronTank.getFluid().writeToNBT(fortronCompound);
|
||||
nbt.setTag("fortron", (NBTBase) fortronCompound);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int
|
||||
fill(final ForgeDirection from, final FluidStack resource, final boolean doFill) {
|
||||
if (resource.getFluid() == FortronHelper.FLUID_FORTRON) {
|
||||
return this.fortronTank.fill(resource, doFill);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canFill(ForgeDirection arg0, Fluid arg1) {
|
||||
return arg1 == FortronHelper.FLUID_FORTRON
|
||||
&& this.fortronTank.getFluidAmount() < this.fortronTank.getCapacity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidStack
|
||||
drain(final ForgeDirection from, final int maxDrain, final boolean doDrain) {
|
||||
return this.fortronTank.drain(maxDrain, doDrain);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidStack drain(ForgeDirection arg0, FluidStack arg1, boolean arg2) {
|
||||
if (arg1.getFluid() != FortronHelper.FLUID_FORTRON)
|
||||
return null;
|
||||
|
||||
return this.fortronTank.drain(arg1.amount, arg2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canDrain(ForgeDirection arg0, Fluid arg1) {
|
||||
return arg1 == FortronHelper.FLUID_FORTRON
|
||||
&& this.fortronTank.getFluidAmount() > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidTankInfo[] getTankInfo(ForgeDirection arg0) {
|
||||
return new FluidTankInfo[] { new FluidTankInfo(this.fortronTank) };
|
||||
}
|
||||
|
||||
public void setFortronEnergy(final int joules) {
|
||||
this.fortronTank.setFluid(FortronHelper.getFortron(joules));
|
||||
}
|
||||
|
||||
public int getFortronEnergy() {
|
||||
return FortronHelper.getAmount(this.fortronTank);
|
||||
}
|
||||
|
||||
public int getFortronCapacity() {
|
||||
return this.fortronTank.getCapacity();
|
||||
}
|
||||
|
||||
public int requestFortron(final int amount, final boolean doUse) {
|
||||
return FortronHelper.getAmount(this.fortronTank.drain(amount, doUse));
|
||||
}
|
||||
|
||||
public int provideFortron(final int joules, final boolean doUse) {
|
||||
return this.fortronTank.fill(FortronHelper.getFortron(joules), doUse);
|
||||
}
|
||||
|
||||
public ItemStack getCard() {
|
||||
final ItemStack itemStack = this.getStackInSlot(0);
|
||||
if (itemStack != null && itemStack.getItem() instanceof ICard) {
|
||||
return itemStack;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package mffs.base;
|
||||
|
||||
import icbm.api.IBlockFrequency;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import icbm.api.IBlockFrequency;
|
||||
import mffs.api.IBiometricIdentifierLink;
|
||||
import mffs.api.card.ICardLink;
|
||||
import mffs.api.security.IBiometricIdentifier;
|
||||
|
@ -13,83 +14,82 @@ import net.minecraft.tileentity.TileEntity;
|
|||
import net.minecraft.world.IBlockAccess;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public abstract class TileEntityFrequency extends TileEntityInventory
|
||||
implements IBlockFrequency, IBiometricIdentifierLink {
|
||||
private int frequency;
|
||||
public abstract class TileEntityFrequency
|
||||
extends TileEntityInventory implements IBlockFrequency, IBiometricIdentifierLink {
|
||||
private int frequency;
|
||||
|
||||
@Override
|
||||
public void initiate() {
|
||||
FrequencyGrid.instance().register(this);
|
||||
super.initiate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
FrequencyGrid.instance().unregister(this);
|
||||
super.invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReceivePacket(final PacketTile.Type type,
|
||||
final NBTTagCompound data) {
|
||||
super.onReceivePacket(type, data);
|
||||
if (type == PacketTile.Type.FREQUENCY) {
|
||||
this.setFrequency(data.getInteger("frequency"));
|
||||
@Override
|
||||
public void initiate() {
|
||||
FrequencyGrid.instance().register(this);
|
||||
super.initiate();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(final NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
this.setFrequency(nbt.getInteger("frequency"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(final NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
nbt.setInteger("frequency", this.getFrequency());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFrequency() {
|
||||
return this.frequency;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFrequency(final int frequency) {
|
||||
this.frequency = frequency;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBiometricIdentifier getBiometricIdentifier() {
|
||||
if (this.getBiometricIdentifiers().size() > 0) {
|
||||
return (IBiometricIdentifier)this.getBiometricIdentifiers().toArray()[0];
|
||||
@Override
|
||||
public void invalidate() {
|
||||
FrequencyGrid.instance().unregister(this);
|
||||
super.invalidate();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<IBiometricIdentifier> getBiometricIdentifiers() {
|
||||
final Set<IBiometricIdentifier> list = new HashSet<>();
|
||||
for (final ItemStack itemStack : this.getCards()) {
|
||||
if (itemStack != null && itemStack.getItem() instanceof ICardLink) {
|
||||
final Vector3 linkedPosition =
|
||||
((ICardLink)itemStack.getItem()).getLink(itemStack);
|
||||
final TileEntity tileEntity =
|
||||
linkedPosition.getTileEntity((IBlockAccess)this.worldObj);
|
||||
if (linkedPosition == null ||
|
||||
!(tileEntity instanceof IBiometricIdentifier)) {
|
||||
continue;
|
||||
@Override
|
||||
public void onReceivePacket(final PacketTile.Type type, final NBTTagCompound data) {
|
||||
super.onReceivePacket(type, data);
|
||||
if (type == PacketTile.Type.FREQUENCY) {
|
||||
this.setFrequency(data.getInteger("frequency"));
|
||||
}
|
||||
list.add((IBiometricIdentifier)tileEntity);
|
||||
}
|
||||
}
|
||||
for (final IBlockFrequency tileEntity2 :
|
||||
FrequencyGrid.instance().get(this.getFrequency())) {
|
||||
if (tileEntity2 instanceof IBiometricIdentifier) {
|
||||
list.add((IBiometricIdentifier)tileEntity2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(final NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
this.setFrequency(nbt.getInteger("frequency"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(final NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
nbt.setInteger("frequency", this.getFrequency());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFrequency() {
|
||||
return this.frequency;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFrequency(final int frequency) {
|
||||
this.frequency = frequency;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBiometricIdentifier getBiometricIdentifier() {
|
||||
if (this.getBiometricIdentifiers().size() > 0) {
|
||||
return (IBiometricIdentifier) this.getBiometricIdentifiers().toArray()[0];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<IBiometricIdentifier> getBiometricIdentifiers() {
|
||||
final Set<IBiometricIdentifier> list = new HashSet<>();
|
||||
for (final ItemStack itemStack : this.getCards()) {
|
||||
if (itemStack != null && itemStack.getItem() instanceof ICardLink) {
|
||||
final Vector3 linkedPosition
|
||||
= ((ICardLink) itemStack.getItem()).getLink(itemStack);
|
||||
final TileEntity tileEntity
|
||||
= linkedPosition.getTileEntity((IBlockAccess) this.worldObj);
|
||||
if (linkedPosition == null
|
||||
|| !(tileEntity instanceof IBiometricIdentifier)) {
|
||||
continue;
|
||||
}
|
||||
list.add((IBiometricIdentifier) tileEntity);
|
||||
}
|
||||
}
|
||||
for (final IBlockFrequency tileEntity2 :
|
||||
FrequencyGrid.instance().get(this.getFrequency())) {
|
||||
if (tileEntity2 instanceof IBiometricIdentifier) {
|
||||
list.add((IBiometricIdentifier) tileEntity2);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
package mffs.base;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import dan200.computercraft.api.lua.ILuaContext;
|
||||
import dan200.computercraft.api.lua.LuaException;
|
||||
import dan200.computercraft.api.peripheral.IComputerAccess;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
@ -24,8 +25,7 @@ import net.minecraftforge.common.util.ForgeDirection;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
import universalelectricity.prefab.multiblock.TileEntityMulti;
|
||||
|
||||
public abstract class TileEntityInventory
|
||||
extends TileEntityBase implements IInventory {
|
||||
public abstract class TileEntityInventory extends TileEntityBase implements IInventory {
|
||||
protected ItemStack[] inventory;
|
||||
|
||||
public TileEntityInventory() {
|
||||
|
@ -49,12 +49,13 @@ public abstract class TileEntityInventory
|
|||
|
||||
this.writeToNBT(nbt);
|
||||
|
||||
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, this.getBlockMetadata(), nbt);
|
||||
return new S35PacketUpdateTileEntity(
|
||||
this.xCoord, this.yCoord, this.zCoord, this.getBlockMetadata(), nbt
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDataPacket(NetworkManager arg0,
|
||||
S35PacketUpdateTileEntity arg1) {
|
||||
public void onDataPacket(NetworkManager arg0, S35PacketUpdateTileEntity arg1) {
|
||||
NBTTagCompound nbt = arg1.func_148857_g();
|
||||
|
||||
this.readFromNBT(nbt);
|
||||
|
@ -87,8 +88,7 @@ public abstract class TileEntityInventory
|
|||
@Override
|
||||
public void setInventorySlotContents(final int i, final ItemStack itemstack) {
|
||||
this.inventory[i] = itemstack;
|
||||
if (itemstack != null &&
|
||||
itemstack.stackSize > this.getInventoryStackLimit()) {
|
||||
if (itemstack != null && itemstack.stackSize > this.getInventoryStackLimit()) {
|
||||
itemstack.stackSize = this.getInventoryStackLimit();
|
||||
}
|
||||
}
|
||||
|
@ -111,12 +111,10 @@ public abstract class TileEntityInventory
|
|||
}
|
||||
|
||||
@Override
|
||||
public void openInventory() {
|
||||
}
|
||||
public void openInventory() {}
|
||||
|
||||
@Override
|
||||
public void closeInventory() {
|
||||
}
|
||||
public void closeInventory() {}
|
||||
|
||||
@Override
|
||||
public boolean isUseableByPlayer(final EntityPlayer entityplayer) {
|
||||
|
@ -139,15 +137,14 @@ public abstract class TileEntityInventory
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean isItemValidForSlot(final int slotID,
|
||||
final ItemStack itemStack) {
|
||||
public boolean isItemValidForSlot(final int slotID, final ItemStack itemStack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean canIncreaseStack(final int slotID, final ItemStack itemStack) {
|
||||
return this.getStackInSlot(slotID) == null ||
|
||||
(this.getStackInSlot(slotID).stackSize + 1 <= 64 &&
|
||||
this.getStackInSlot(slotID).isItemEqual(itemStack));
|
||||
return this.getStackInSlot(slotID) == null
|
||||
|| (this.getStackInSlot(slotID).stackSize + 1 <= 64
|
||||
&& this.getStackInSlot(slotID).isItemEqual(itemStack));
|
||||
}
|
||||
|
||||
public void incrStackSize(final int slot, final ItemStack itemStack) {
|
||||
|
@ -165,37 +162,47 @@ public abstract class TileEntityInventory
|
|||
return cards;
|
||||
}
|
||||
|
||||
public ItemStack tryPlaceInPosition(ItemStack itemStack,
|
||||
final Vector3 position,
|
||||
final ForgeDirection dir) {
|
||||
final TileEntity tileEntity = position.getTileEntity((IBlockAccess) this.worldObj);
|
||||
public ItemStack tryPlaceInPosition(
|
||||
ItemStack itemStack, final Vector3 position, final ForgeDirection dir
|
||||
) {
|
||||
final TileEntity tileEntity
|
||||
= position.getTileEntity((IBlockAccess) this.worldObj);
|
||||
final ForgeDirection direction = dir.getOpposite();
|
||||
if (tileEntity != null && itemStack != null) {
|
||||
if (tileEntity instanceof TileEntityMulti) {
|
||||
final Vector3 mainBlockPosition = ((TileEntityMulti) tileEntity).mainBlockPosition;
|
||||
if (mainBlockPosition != null &&
|
||||
!(mainBlockPosition.getTileEntity((IBlockAccess) this.worldObj) instanceof TileEntityMulti)) {
|
||||
return this.tryPlaceInPosition(itemStack, mainBlockPosition,
|
||||
direction);
|
||||
final Vector3 mainBlockPosition
|
||||
= ((TileEntityMulti) tileEntity).mainBlockPosition;
|
||||
if (mainBlockPosition != null
|
||||
&& !(
|
||||
mainBlockPosition.getTileEntity((IBlockAccess) this.worldObj)
|
||||
instanceof TileEntityMulti
|
||||
)) {
|
||||
return this.tryPlaceInPosition(
|
||||
itemStack, mainBlockPosition, direction
|
||||
);
|
||||
}
|
||||
} else if (tileEntity instanceof TileEntityChest) {
|
||||
final TileEntityChest[] chests = { (TileEntityChest) tileEntity, null };
|
||||
for (int i = 2; i < 6; ++i) {
|
||||
final ForgeDirection searchDirection = ForgeDirection.getOrientation(i);
|
||||
final ForgeDirection searchDirection
|
||||
= ForgeDirection.getOrientation(i);
|
||||
final Vector3 searchPosition = position.clone();
|
||||
searchPosition.modifyPositionFromSide(searchDirection);
|
||||
if (searchPosition.getTileEntity((IBlockAccess) this.worldObj) != null &&
|
||||
searchPosition.getTileEntity((IBlockAccess) this.worldObj)
|
||||
.getClass() == chests[0].getClass()) {
|
||||
chests[1] = (TileEntityChest) searchPosition.getTileEntity(
|
||||
(IBlockAccess) this.worldObj);
|
||||
if (searchPosition.getTileEntity((IBlockAccess) this.worldObj) != null
|
||||
&& searchPosition.getTileEntity((IBlockAccess) this.worldObj)
|
||||
.getClass()
|
||||
== chests[0].getClass()) {
|
||||
chests[1] = (TileEntityChest
|
||||
) searchPosition.getTileEntity((IBlockAccess) this.worldObj);
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (final TileEntityChest chest : chests) {
|
||||
if (chest != null) {
|
||||
for (int j = 0; j < chest.getSizeInventory(); ++j) {
|
||||
itemStack = this.addStackToInventory(j, (IInventory) chest, itemStack);
|
||||
itemStack = this.addStackToInventory(
|
||||
j, (IInventory) chest, itemStack
|
||||
);
|
||||
if (itemStack == null) {
|
||||
return null;
|
||||
}
|
||||
|
@ -204,12 +211,15 @@ public abstract class TileEntityInventory
|
|||
}
|
||||
} else if (tileEntity instanceof ISidedInventory) {
|
||||
final ISidedInventory inventory = (ISidedInventory) tileEntity;
|
||||
final int[] slots = inventory.getAccessibleSlotsFromSide(direction.ordinal());
|
||||
final int[] slots
|
||||
= inventory.getAccessibleSlotsFromSide(direction.ordinal());
|
||||
for (int k = 0; k < slots.length; ++k) {
|
||||
if (inventory.canInsertItem(slots[k], itemStack,
|
||||
direction.ordinal())) {
|
||||
if (inventory.canInsertItem(
|
||||
slots[k], itemStack, direction.ordinal()
|
||||
)) {
|
||||
itemStack = this.addStackToInventory(
|
||||
slots[k], (IInventory) inventory, itemStack);
|
||||
slots[k], (IInventory) inventory, itemStack
|
||||
);
|
||||
}
|
||||
if (itemStack == null) {
|
||||
return null;
|
||||
|
@ -231,9 +241,9 @@ public abstract class TileEntityInventory
|
|||
return itemStack;
|
||||
}
|
||||
|
||||
public ItemStack addStackToInventory(final int slotIndex,
|
||||
final IInventory inventory,
|
||||
final ItemStack itemStack) {
|
||||
public ItemStack addStackToInventory(
|
||||
final int slotIndex, final IInventory inventory, final ItemStack itemStack
|
||||
) {
|
||||
if (inventory.getSizeInventory() > slotIndex) {
|
||||
ItemStack stackInInventory = inventory.getStackInSlot(slotIndex);
|
||||
if (stackInInventory == null) {
|
||||
|
@ -242,17 +252,21 @@ public abstract class TileEntityInventory
|
|||
return itemStack;
|
||||
}
|
||||
return null;
|
||||
} else if (stackInInventory.isItemEqual(itemStack) &&
|
||||
stackInInventory.isStackable()) {
|
||||
} else if (stackInInventory.isItemEqual(itemStack) && stackInInventory.isStackable()) {
|
||||
stackInInventory = stackInInventory.copy();
|
||||
final int stackLim = Math.min(inventory.getInventoryStackLimit(),
|
||||
itemStack.getMaxStackSize());
|
||||
final int stackLim = Math.min(
|
||||
inventory.getInventoryStackLimit(), itemStack.getMaxStackSize()
|
||||
);
|
||||
final int rejectedAmount = Math.max(
|
||||
stackInInventory.stackSize + itemStack.stackSize - stackLim, 0);
|
||||
stackInInventory.stackSize = Math.min(Math.max(stackInInventory.stackSize + itemStack.stackSize -
|
||||
rejectedAmount,
|
||||
0),
|
||||
inventory.getInventoryStackLimit());
|
||||
stackInInventory.stackSize + itemStack.stackSize - stackLim, 0
|
||||
);
|
||||
stackInInventory.stackSize = Math.min(
|
||||
Math.max(
|
||||
stackInInventory.stackSize + itemStack.stackSize - rejectedAmount,
|
||||
0
|
||||
),
|
||||
inventory.getInventoryStackLimit()
|
||||
);
|
||||
itemStack.stackSize = rejectedAmount;
|
||||
inventory.setInventorySlotContents(slotIndex, stackInInventory);
|
||||
}
|
||||
|
@ -268,14 +282,20 @@ public abstract class TileEntityInventory
|
|||
for (final ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) {
|
||||
if (itemStack != null) {
|
||||
itemStack = this.tryPlaceInPosition(
|
||||
itemStack, new Vector3(this).modifyPositionFromSide(direction),
|
||||
direction);
|
||||
itemStack,
|
||||
new Vector3(this).modifyPositionFromSide(direction),
|
||||
direction
|
||||
);
|
||||
}
|
||||
}
|
||||
if (itemStack != null) {
|
||||
this.worldObj.spawnEntityInWorld((Entity) new EntityItem(
|
||||
this.worldObj, this.xCoord + 0.5, (double) (this.yCoord + 1),
|
||||
this.zCoord + 0.5, itemStack));
|
||||
this.worldObj,
|
||||
this.xCoord + 0.5,
|
||||
(double) (this.yCoord + 1),
|
||||
this.zCoord + 0.5,
|
||||
itemStack
|
||||
));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
@ -287,7 +307,8 @@ public abstract class TileEntityInventory
|
|||
final NBTTagList nbtTagList = nbttagcompound.getTagList("Items", 10);
|
||||
this.inventory = new ItemStack[this.getSizeInventory()];
|
||||
for (int i = 0; i < nbtTagList.tagCount(); ++i) {
|
||||
final NBTTagCompound nbttagcompound2 = (NBTTagCompound) nbtTagList.getCompoundTagAt(i);
|
||||
final NBTTagCompound nbttagcompound2
|
||||
= (NBTTagCompound) nbtTagList.getCompoundTagAt(i);
|
||||
final byte byte0 = nbttagcompound2.getByte("Slot");
|
||||
if (byte0 >= 0 && byte0 < this.inventory.length) {
|
||||
this.inventory[byte0] = ItemStack.loadItemStackFromNBT(nbttagcompound2);
|
||||
|
@ -321,9 +342,9 @@ public abstract class TileEntityInventory
|
|||
}
|
||||
|
||||
@Override
|
||||
public Object[] callMethod(IComputerAccess computer, ILuaContext context,
|
||||
int method, Object[] arguments)
|
||||
throws LuaException, InterruptedException {
|
||||
public Object[] callMethod(
|
||||
IComputerAccess computer, ILuaContext context, int method, Object[] arguments
|
||||
) throws LuaException, InterruptedException {
|
||||
switch (method) {
|
||||
case 0: {
|
||||
return new Object[] { this.isActive() };
|
||||
|
@ -338,12 +359,9 @@ public abstract class TileEntityInventory
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void attach(final IComputerAccess computer) {}
|
||||
|
||||
@Override
|
||||
public void attach(final IComputerAccess computer) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detach(final IComputerAccess computer) {
|
||||
}
|
||||
public void detach(final IComputerAccess computer) {}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ import net.minecraft.item.Item;
|
|||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public abstract class TileEntityModuleAcceptor
|
||||
extends TileEntityFortron implements IModuleAcceptor, ICache {
|
||||
extends TileEntityFortron implements IModuleAcceptor, ICache {
|
||||
public final HashMap<String, Object> cache;
|
||||
public int startModuleIndex;
|
||||
public int endModuleIndex;
|
||||
|
@ -33,11 +33,11 @@ public abstract class TileEntityModuleAcceptor
|
|||
public void initiate() {
|
||||
super.initiate();
|
||||
super.fortronTank.setCapacity(
|
||||
(this.getModuleCount(ModularForceFieldSystem.itemModuleCapacity,
|
||||
new int[0]) *
|
||||
this.capacityBoost +
|
||||
this.capacityBase) *
|
||||
1000);
|
||||
(this.getModuleCount(ModularForceFieldSystem.itemModuleCapacity, new int[0])
|
||||
* this.capacityBoost
|
||||
+ this.capacityBase)
|
||||
* 1000
|
||||
);
|
||||
}
|
||||
|
||||
public void consumeCost() {
|
||||
|
@ -49,8 +49,8 @@ public abstract class TileEntityModuleAcceptor
|
|||
@Override
|
||||
public ItemStack getModule(final IModule module) {
|
||||
final String cacheID = "getModule_" + module.hashCode();
|
||||
if (Settings.USE_CACHE && this.cache.containsKey(cacheID) &&
|
||||
this.cache.get(cacheID) instanceof ItemStack) {
|
||||
if (Settings.USE_CACHE && this.cache.containsKey(cacheID)
|
||||
&& this.cache.get(cacheID) instanceof ItemStack) {
|
||||
return (ItemStack) this.cache.get(cacheID);
|
||||
}
|
||||
final ItemStack returnStack = new ItemStack((Item) module, 0);
|
||||
|
@ -74,14 +74,14 @@ public abstract class TileEntityModuleAcceptor
|
|||
if (slots != null) {
|
||||
cacheID = cacheID + "_" + Arrays.hashCode(slots);
|
||||
}
|
||||
if (Settings.USE_CACHE && this.cache.containsKey(cacheID) &&
|
||||
this.cache.get(cacheID) instanceof Integer) {
|
||||
if (Settings.USE_CACHE && this.cache.containsKey(cacheID)
|
||||
&& this.cache.get(cacheID) instanceof Integer) {
|
||||
return (int) this.cache.get(cacheID);
|
||||
}
|
||||
if (slots != null && slots.length > 0) {
|
||||
for (final int slotID : slots) {
|
||||
if (this.getStackInSlot(slotID) != null &&
|
||||
this.getStackInSlot(slotID).getItem() == module) {
|
||||
if (this.getStackInSlot(slotID) != null
|
||||
&& this.getStackInSlot(slotID).getItem() == module) {
|
||||
count += this.getStackInSlot(slotID).stackSize;
|
||||
}
|
||||
}
|
||||
|
@ -105,13 +105,14 @@ public abstract class TileEntityModuleAcceptor
|
|||
if (slots != null) {
|
||||
cacheID += Arrays.hashCode(slots);
|
||||
}
|
||||
if (Settings.USE_CACHE && this.cache.containsKey(cacheID) &&
|
||||
this.cache.get(cacheID) instanceof Set<?>) {
|
||||
if (Settings.USE_CACHE && this.cache.containsKey(cacheID)
|
||||
&& this.cache.get(cacheID) instanceof Set<?>) {
|
||||
return (Set<ItemStack>) this.cache.get(cacheID);
|
||||
}
|
||||
final Set<ItemStack> modules = new HashSet<>();
|
||||
if (slots == null || slots.length <= 0) {
|
||||
for (int slotID = this.startModuleIndex; slotID <= this.endModuleIndex; ++slotID) {
|
||||
for (int slotID = this.startModuleIndex; slotID <= this.endModuleIndex;
|
||||
++slotID) {
|
||||
final ItemStack itemStack = this.getStackInSlot(slotID);
|
||||
if (itemStack != null && itemStack.getItem() instanceof IModule) {
|
||||
modules.add(itemStack);
|
||||
|
@ -137,13 +138,14 @@ public abstract class TileEntityModuleAcceptor
|
|||
if (slots != null) {
|
||||
cacheID += Arrays.hashCode(slots);
|
||||
}
|
||||
if (Settings.USE_CACHE && this.cache.containsKey(cacheID) &&
|
||||
this.cache.get(cacheID) instanceof Set) {
|
||||
if (Settings.USE_CACHE && this.cache.containsKey(cacheID)
|
||||
&& this.cache.get(cacheID) instanceof Set) {
|
||||
return (Set<IModule>) this.cache.get(cacheID);
|
||||
}
|
||||
final Set<IModule> modules = new HashSet<>();
|
||||
if (slots == null || slots.length <= 0) {
|
||||
for (int slotID = this.startModuleIndex; slotID <= this.endModuleIndex; ++slotID) {
|
||||
for (int slotID = this.startModuleIndex; slotID <= this.endModuleIndex;
|
||||
++slotID) {
|
||||
final ItemStack itemStack = this.getStackInSlot(slotID);
|
||||
if (itemStack != null && itemStack.getItem() instanceof IModule) {
|
||||
modules.add((IModule) itemStack.getItem());
|
||||
|
@ -166,15 +168,15 @@ public abstract class TileEntityModuleAcceptor
|
|||
@Override
|
||||
public int getFortronCost() {
|
||||
final String cacheID = "getFortronCost";
|
||||
if (Settings.USE_CACHE && this.cache.containsKey(cacheID) &&
|
||||
this.cache.get(cacheID) instanceof Integer) {
|
||||
if (Settings.USE_CACHE && this.cache.containsKey(cacheID)
|
||||
&& this.cache.get(cacheID) instanceof Integer) {
|
||||
return (int) this.cache.get(cacheID);
|
||||
}
|
||||
float cost = 0.0f;
|
||||
for (final ItemStack itemStack : this.getModuleStacks(new int[0])) {
|
||||
if (itemStack != null) {
|
||||
cost += itemStack.stackSize *
|
||||
((IModule) itemStack.getItem()).getFortronCost(this.getAmplifier());
|
||||
cost += itemStack.stackSize
|
||||
* ((IModule) itemStack.getItem()).getFortronCost(this.getAmplifier());
|
||||
}
|
||||
}
|
||||
final int result = Math.round(cost);
|
||||
|
@ -192,11 +194,11 @@ public abstract class TileEntityModuleAcceptor
|
|||
public void markDirty() {
|
||||
super.markDirty();
|
||||
super.fortronTank.setCapacity(
|
||||
(this.getModuleCount(ModularForceFieldSystem.itemModuleCapacity,
|
||||
new int[0]) *
|
||||
this.capacityBoost +
|
||||
this.capacityBase) *
|
||||
1000);
|
||||
(this.getModuleCount(ModularForceFieldSystem.itemModuleCapacity, new int[0])
|
||||
* this.capacityBoost
|
||||
+ this.capacityBase)
|
||||
* 1000
|
||||
);
|
||||
this.clearCache();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,16 +1,15 @@
|
|||
package mffs.base;
|
||||
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import java.util.EnumSet;
|
||||
|
||||
import calclavia.lib.IUniversalEnergyTile;
|
||||
import cofh.api.energy.IEnergyReceiver;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import ic2.api.energy.event.EnergyTileLoadEvent;
|
||||
import ic2.api.energy.event.EnergyTileUnloadEvent;
|
||||
import ic2.api.energy.tile.IEnergySink;
|
||||
import mffs.ConversionHelper;
|
||||
import mffs.tileentity.TileEntityCoercionDeriver;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
@ -20,143 +19,162 @@ import universalelectricity.core.electricity.ElectricityPack;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
@Optional.Interface(modid = "IC2", iface = "ic2.api.energy.tile.IEnergySink")
|
||||
public abstract class TileEntityUniversalEnergy
|
||||
extends TileEntityModuleAcceptor implements IUniversalEnergyTile, IEnergyReceiver, IEnergySink {
|
||||
public double prevWatts;
|
||||
public double wattsReceived;
|
||||
public abstract class TileEntityUniversalEnergy extends TileEntityModuleAcceptor
|
||||
implements IUniversalEnergyTile, IEnergyReceiver, IEnergySink {
|
||||
public double prevWatts;
|
||||
public double wattsReceived;
|
||||
|
||||
public TileEntityUniversalEnergy() { this.wattsReceived = 0.0; }
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public void initiate() {
|
||||
super.initiate();
|
||||
MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this));
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public void invalidate() {
|
||||
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
|
||||
super.invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
this.prevWatts = this.wattsReceived;
|
||||
if (!this.worldObj.isRemote) {
|
||||
if (!this.isDisabled()) {
|
||||
final ElectricityPack electricityPack =
|
||||
ElectricityNetworkHelper.consumeFromMultipleSides(
|
||||
this, this.getConsumingSides(), this.getRequest());
|
||||
this.onReceive(electricityPack);
|
||||
} else {
|
||||
ElectricityNetworkHelper.consumeFromMultipleSides(
|
||||
this, new ElectricityPack());
|
||||
}
|
||||
public TileEntityUniversalEnergy() {
|
||||
this.wattsReceived = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
protected EnumSet<ForgeDirection> getConsumingSides() {
|
||||
return ElectricityNetworkHelper.getDirections(this);
|
||||
}
|
||||
|
||||
public ElectricityPack getRequest() { return new ElectricityPack(); }
|
||||
|
||||
public void onReceive(final ElectricityPack electricityPack) {
|
||||
if (UniversalElectricity.isVoltageSensitive &&
|
||||
electricityPack.voltage > this.getVoltage()) {
|
||||
return;
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public void initiate() {
|
||||
super.initiate();
|
||||
MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this));
|
||||
}
|
||||
this.wattsReceived = Math.min(
|
||||
this.wattsReceived + electricityPack.getWatts(), this.getWattBuffer());
|
||||
}
|
||||
|
||||
public double getWattBuffer() { return this.getRequest().getWatts() * 2.0; }
|
||||
|
||||
@Override
|
||||
public double getVoltage() {
|
||||
return 120.0;
|
||||
}
|
||||
|
||||
public ElectricityPack produce(double watts) {
|
||||
ElectricityPack pack =
|
||||
new ElectricityPack(watts / this.getVoltage(), this.getVoltage());
|
||||
ElectricityPack remaining =
|
||||
ElectricityNetworkHelper.produceFromMultipleSides(this, pack);
|
||||
|
||||
return remaining;
|
||||
}
|
||||
|
||||
public int produceRF(int amount) {
|
||||
int available = amount;
|
||||
for(ForgeDirection dir : ForgeDirection.values()) {
|
||||
TileEntity te = new Vector3(this).modifyPositionFromSide(dir).getTileEntity(this.worldObj);
|
||||
if (te instanceof IEnergyReceiver) {
|
||||
IEnergyReceiver receiver = (IEnergyReceiver) te;
|
||||
if (!receiver.canConnectEnergy(dir.getOpposite())) continue;
|
||||
available -= receiver.receiveEnergy(dir.getOpposite(), (available), false);
|
||||
}
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public void invalidate() {
|
||||
MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
|
||||
super.invalidate();
|
||||
}
|
||||
return amount - available;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectEnergy(ForgeDirection side) {
|
||||
return canConnect(side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int receiveEnergy(ForgeDirection side, int energy, boolean simulate) {
|
||||
if (!canConnect(side)) return 0;
|
||||
double toReceive = ConversionHelper.fromRF(energy);
|
||||
double free = getWattBuffer() - wattsReceived;
|
||||
double toInject = Math.min(toReceive, free);
|
||||
if (!simulate) {
|
||||
wattsReceived += toInject;
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
super.updateEntity();
|
||||
this.prevWatts = this.wattsReceived;
|
||||
if (!this.worldObj.isRemote) {
|
||||
if (!this.isDisabled()) {
|
||||
final ElectricityPack electricityPack
|
||||
= ElectricityNetworkHelper.consumeFromMultipleSides(
|
||||
this, this.getConsumingSides(), this.getRequest()
|
||||
);
|
||||
this.onReceive(electricityPack);
|
||||
} else {
|
||||
ElectricityNetworkHelper.consumeFromMultipleSides(
|
||||
this, new ElectricityPack()
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
return (int) Math.ceil(toInject / UniversalElectricity.UE_RF_RATIO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyStored(ForgeDirection var1) {
|
||||
return ConversionHelper.toRF(getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxEnergyStored(ForgeDirection var1) {
|
||||
return ConversionHelper.toRF(getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO);
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) {
|
||||
return getConsumingSides().contains(direction);
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public double getDemandedEnergy() {
|
||||
return ConversionHelper.toEU(this.getRequest().getWatts());
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public int getSinkTier() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public double injectEnergy(ForgeDirection direction, double i, double voltage) {
|
||||
double givenElectricity = ConversionHelper.fromEU(i);
|
||||
double rejects = 0.0;
|
||||
if (givenElectricity > this.getWattBuffer()) {
|
||||
rejects = givenElectricity - this.getRequest().getWatts();
|
||||
protected EnumSet<ForgeDirection> getConsumingSides() {
|
||||
return ElectricityNetworkHelper.getDirections(this);
|
||||
}
|
||||
this.onReceive(new ElectricityPack(givenElectricity / this.getVoltage(), this.getVoltage()));
|
||||
return ConversionHelper.toEU(rejects);
|
||||
}
|
||||
|
||||
public ElectricityPack getRequest() {
|
||||
return new ElectricityPack();
|
||||
}
|
||||
|
||||
public void onReceive(final ElectricityPack electricityPack) {
|
||||
if (UniversalElectricity.isVoltageSensitive
|
||||
&& electricityPack.voltage > this.getVoltage()) {
|
||||
return;
|
||||
}
|
||||
this.wattsReceived = Math.min(
|
||||
this.wattsReceived + electricityPack.getWatts(), this.getWattBuffer()
|
||||
);
|
||||
}
|
||||
|
||||
public double getWattBuffer() {
|
||||
return this.getRequest().getWatts() * 2.0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getVoltage() {
|
||||
return 120.0;
|
||||
}
|
||||
|
||||
public ElectricityPack produce(double watts) {
|
||||
ElectricityPack pack
|
||||
= new ElectricityPack(watts / this.getVoltage(), this.getVoltage());
|
||||
ElectricityPack remaining
|
||||
= ElectricityNetworkHelper.produceFromMultipleSides(this, pack);
|
||||
|
||||
return remaining;
|
||||
}
|
||||
|
||||
public int produceRF(int amount) {
|
||||
int available = amount;
|
||||
for (ForgeDirection dir : ForgeDirection.values()) {
|
||||
TileEntity te = new Vector3(this).modifyPositionFromSide(dir).getTileEntity(
|
||||
this.worldObj
|
||||
);
|
||||
if (te instanceof IEnergyReceiver) {
|
||||
IEnergyReceiver receiver = (IEnergyReceiver) te;
|
||||
if (!receiver.canConnectEnergy(dir.getOpposite()))
|
||||
continue;
|
||||
available
|
||||
-= receiver.receiveEnergy(dir.getOpposite(), (available), false);
|
||||
}
|
||||
}
|
||||
return amount - available;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnectEnergy(ForgeDirection side) {
|
||||
return canConnect(side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int receiveEnergy(ForgeDirection side, int energy, boolean simulate) {
|
||||
if (!canConnect(side))
|
||||
return 0;
|
||||
double toReceive = ConversionHelper.fromRF(energy);
|
||||
double free = getWattBuffer() - wattsReceived;
|
||||
double toInject = Math.min(toReceive, free);
|
||||
if (!simulate) {
|
||||
wattsReceived += toInject;
|
||||
}
|
||||
return (int) Math.ceil(toInject / UniversalElectricity.UE_RF_RATIO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyStored(ForgeDirection var1) {
|
||||
return ConversionHelper.toRF(
|
||||
getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxEnergyStored(ForgeDirection var1) {
|
||||
return ConversionHelper.toRF(
|
||||
getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO
|
||||
);
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) {
|
||||
return getConsumingSides().contains(direction);
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public double getDemandedEnergy() {
|
||||
return ConversionHelper.toEU(this.getRequest().getWatts());
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public int getSinkTier() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Optional.Method(modid = "IC2")
|
||||
@Override
|
||||
public double injectEnergy(ForgeDirection direction, double i, double voltage) {
|
||||
double givenElectricity = ConversionHelper.fromEU(i);
|
||||
double rejects = 0.0;
|
||||
if (givenElectricity > this.getWattBuffer()) {
|
||||
rejects = givenElectricity - this.getRequest().getWatts();
|
||||
}
|
||||
this.onReceive(
|
||||
new ElectricityPack(givenElectricity / this.getVoltage(), this.getVoltage())
|
||||
);
|
||||
return ConversionHelper.toEU(rejects);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
package mffs.block;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import mffs.ModularForceFieldSystem;
|
||||
import mffs.api.IForceFieldBlock;
|
||||
import mffs.api.IProjector;
|
||||
|
@ -41,289 +42,340 @@ import universalelectricity.prefab.CustomDamageSource;
|
|||
|
||||
public class BlockForceField
|
||||
extends BlockBase implements IForceFieldBlock, IPartialSealableBlock {
|
||||
public BlockForceField() {
|
||||
super("forceField", Material.glass);
|
||||
this.setBlockUnbreakable();
|
||||
this.setResistance(999.0f);
|
||||
this.setCreativeTab((CreativeTabs)null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canSilkHarvest() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int quantityDropped(final Random random) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getRenderBlockPass() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getRenderType() {
|
||||
return RenderForceField.ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean shouldSideBeRendered(final IBlockAccess par1IBlockAccess,
|
||||
final int par2, final int par3,
|
||||
final int par4, final int par5) {
|
||||
final Block i1 = par1IBlockAccess.getBlock(par2, par3, par4);
|
||||
return i1 != this &&
|
||||
super.shouldSideBeRendered(par1IBlockAccess, par2, par3, par4, par5);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockClicked(final World world, final int x, final int y,
|
||||
final int z, final EntityPlayer entityPlayer) {
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceField &&
|
||||
((TileEntityForceField)tileEntity).getProjector() != null) {
|
||||
for (final ItemStack moduleStack :
|
||||
((TileEntityForceField)tileEntity)
|
||||
.getProjector()
|
||||
.getModuleStacks(((TileEntityForceField)tileEntity)
|
||||
.getProjector()
|
||||
.getModuleSlots())) {
|
||||
if (((IModule)moduleStack.getItem())
|
||||
.onCollideWithForceField(world, x, y, z, (Entity)entityPlayer,
|
||||
moduleStack)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
public BlockForceField() {
|
||||
super("forceField", Material.glass);
|
||||
this.setBlockUnbreakable();
|
||||
this.setResistance(999.0f);
|
||||
this.setCreativeTab((CreativeTabs) null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(final World world,
|
||||
final int x, final int y,
|
||||
final int z) {
|
||||
if (world.isRemote) {
|
||||
if (ModularForceFieldSystem.proxy.isSneaking()) {
|
||||
return null;
|
||||
}
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
if (this.getProjector((IBlockAccess)world, x, y, z) != null && !world.isRemote) {
|
||||
final IBiometricIdentifier BiometricIdentifier =
|
||||
this.getProjector((IBlockAccess)world, x, y, z)
|
||||
.getBiometricIdentifier();
|
||||
final List entities = world.getEntitiesWithinAABB(
|
||||
EntityPlayer.class, AxisAlignedBB.getBoundingBox(
|
||||
(double)(x), (double)y, (double)(z),
|
||||
(double)(x + 1), y + 1, (double)(z + 1)));
|
||||
for (final EntityPlayer entityPlayer : (List<EntityPlayer>)entities) {
|
||||
if (entityPlayer != null && entityPlayer.isSneaking()) {
|
||||
if (entityPlayer.capabilities.isCreativeMode) {
|
||||
return null;
|
||||
}
|
||||
if (BiometricIdentifier != null &&
|
||||
BiometricIdentifier.isAccessGranted(
|
||||
entityPlayer.getDisplayName(), Permission.FORCE_FIELD_WARP)) {
|
||||
return null;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
final float f = 0.0625f;
|
||||
return AxisAlignedBB.getBoundingBox(
|
||||
(double)(x + f), (double)(y + f), (double)(z + f), (double)(x + 1 - f),
|
||||
(double)(y + 1 - f), (double)(z + 1 - f));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEntityCollidedWithBlock(final World world, final int x,
|
||||
final int y, final int z,
|
||||
final Entity entity) {
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceField &&
|
||||
this.getProjector((IBlockAccess)world, x, y, z) != null) {
|
||||
for (final ItemStack moduleStack :
|
||||
((TileEntityForceField)tileEntity)
|
||||
.getProjector()
|
||||
.getModuleStacks(((TileEntityForceField)tileEntity)
|
||||
.getProjector()
|
||||
.getModuleSlots())) {
|
||||
if (((IModule)moduleStack.getItem())
|
||||
.onCollideWithForceField(world, x, y, z, entity, moduleStack)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
final IBiometricIdentifier biometricIdentifier =
|
||||
this.getProjector((IBlockAccess)world, x, y, z)
|
||||
.getBiometricIdentifier();
|
||||
if (new Vector3(entity).distanceTo(new Vector3(x, y, z).add(0.4)) < 0.5 &&
|
||||
entity instanceof EntityLiving && !world.isRemote) {
|
||||
((EntityLiving)entity)
|
||||
.addPotionEffect(new PotionEffect(Potion.confusion.id, 80, 3));
|
||||
((EntityLiving)entity)
|
||||
.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 20, 1));
|
||||
boolean hasPermission = false;
|
||||
final List entities = world.getEntitiesWithinAABB(
|
||||
EntityPlayer.class, AxisAlignedBB.getBoundingBox(
|
||||
(double)x, (double)y, (double)z,
|
||||
(double)(x + 1), y + 0.9, (double)(z + 1)));
|
||||
for (final EntityPlayer entityPlayer : (List<EntityPlayer>)entities) {
|
||||
if (entityPlayer != null && entityPlayer.isSneaking()) {
|
||||
if (entityPlayer.capabilities.isCreativeMode) {
|
||||
hasPermission = true;
|
||||
break;
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canSilkHarvest() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int quantityDropped(final Random random) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getRenderBlockPass() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getRenderType() {
|
||||
return RenderForceField.ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean shouldSideBeRendered(
|
||||
final IBlockAccess par1IBlockAccess,
|
||||
final int par2,
|
||||
final int par3,
|
||||
final int par4,
|
||||
final int par5
|
||||
) {
|
||||
final Block i1 = par1IBlockAccess.getBlock(par2, par3, par4);
|
||||
return i1 != this
|
||||
&& super.shouldSideBeRendered(par1IBlockAccess, par2, par3, par4, par5);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockClicked(
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final EntityPlayer entityPlayer
|
||||
) {
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceField
|
||||
&& ((TileEntityForceField) tileEntity).getProjector() != null) {
|
||||
for (final ItemStack moduleStack :
|
||||
((TileEntityForceField) tileEntity)
|
||||
.getProjector()
|
||||
.getModuleStacks(((TileEntityForceField) tileEntity)
|
||||
.getProjector()
|
||||
.getModuleSlots())) {
|
||||
if (((IModule) moduleStack.getItem())
|
||||
.onCollideWithForceField(
|
||||
world, x, y, z, (Entity) entityPlayer, moduleStack
|
||||
)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (biometricIdentifier == null ||
|
||||
!biometricIdentifier.isAccessGranted(
|
||||
entityPlayer.getDisplayName(),
|
||||
Permission.FORCE_FIELD_WARP)) {
|
||||
continue;
|
||||
}
|
||||
hasPermission = true;
|
||||
}
|
||||
}
|
||||
if (!hasPermission) {
|
||||
entity.attackEntityFrom(
|
||||
(DamageSource)CustomDamageSource.electrocution,
|
||||
Integer.MAX_VALUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIcon getIcon(final IBlockAccess iBlockAccess, final int x,
|
||||
final int y, final int z, final int side) {
|
||||
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceField) {
|
||||
final ItemStack checkStack = ((TileEntityForceField)tileEntity).camoStack;
|
||||
if (checkStack != null) {
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(
|
||||
final World world, final int x, final int y, final int z
|
||||
) {
|
||||
if (world.isRemote) {
|
||||
if (ModularForceFieldSystem.proxy.isSneaking()) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
if (this.getProjector((IBlockAccess) world, x, y, z) != null && !world.isRemote) {
|
||||
final IBiometricIdentifier BiometricIdentifier
|
||||
= this.getProjector((IBlockAccess) world, x, y, z)
|
||||
.getBiometricIdentifier();
|
||||
final List entities = world.getEntitiesWithinAABB(
|
||||
EntityPlayer.class,
|
||||
AxisAlignedBB.getBoundingBox(
|
||||
(double) (x),
|
||||
(double) y,
|
||||
(double) (z),
|
||||
(double) (x + 1),
|
||||
y + 1,
|
||||
(double) (z + 1)
|
||||
)
|
||||
);
|
||||
for (final EntityPlayer entityPlayer : (List<EntityPlayer>) entities) {
|
||||
if (entityPlayer != null && entityPlayer.isSneaking()) {
|
||||
if (entityPlayer.capabilities.isCreativeMode) {
|
||||
return null;
|
||||
}
|
||||
if (BiometricIdentifier != null
|
||||
&& BiometricIdentifier.isAccessGranted(
|
||||
entityPlayer.getDisplayName(), Permission.FORCE_FIELD_WARP
|
||||
)) {
|
||||
return null;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
final float f = 0.0625f;
|
||||
return AxisAlignedBB.getBoundingBox(
|
||||
(double) (x + f),
|
||||
(double) (y + f),
|
||||
(double) (z + f),
|
||||
(double) (x + 1 - f),
|
||||
(double) (y + 1 - f),
|
||||
(double) (z + 1 - f)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEntityCollidedWithBlock(
|
||||
final World world, final int x, final int y, final int z, final Entity entity
|
||||
) {
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceField
|
||||
&& this.getProjector((IBlockAccess) world, x, y, z) != null) {
|
||||
for (final ItemStack moduleStack :
|
||||
((TileEntityForceField) tileEntity)
|
||||
.getProjector()
|
||||
.getModuleStacks(((TileEntityForceField) tileEntity)
|
||||
.getProjector()
|
||||
.getModuleSlots())) {
|
||||
if (((IModule) moduleStack.getItem())
|
||||
.onCollideWithForceField(world, x, y, z, entity, moduleStack)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
final IBiometricIdentifier biometricIdentifier
|
||||
= this.getProjector((IBlockAccess) world, x, y, z)
|
||||
.getBiometricIdentifier();
|
||||
if (new Vector3(entity).distanceTo(new Vector3(x, y, z).add(0.4)) < 0.5
|
||||
&& entity instanceof EntityLiving && !world.isRemote) {
|
||||
((EntityLiving) entity)
|
||||
.addPotionEffect(new PotionEffect(Potion.confusion.id, 80, 3));
|
||||
((EntityLiving) entity)
|
||||
.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 20, 1));
|
||||
boolean hasPermission = false;
|
||||
final List entities = world.getEntitiesWithinAABB(
|
||||
EntityPlayer.class,
|
||||
AxisAlignedBB.getBoundingBox(
|
||||
(double) x,
|
||||
(double) y,
|
||||
(double) z,
|
||||
(double) (x + 1),
|
||||
y + 0.9,
|
||||
(double) (z + 1)
|
||||
)
|
||||
);
|
||||
for (final EntityPlayer entityPlayer : (List<EntityPlayer>) entities) {
|
||||
if (entityPlayer != null && entityPlayer.isSneaking()) {
|
||||
if (entityPlayer.capabilities.isCreativeMode) {
|
||||
hasPermission = true;
|
||||
break;
|
||||
}
|
||||
if (biometricIdentifier == null
|
||||
|| !biometricIdentifier.isAccessGranted(
|
||||
entityPlayer.getDisplayName(), Permission.FORCE_FIELD_WARP
|
||||
)) {
|
||||
continue;
|
||||
}
|
||||
hasPermission = true;
|
||||
}
|
||||
}
|
||||
if (!hasPermission) {
|
||||
entity.attackEntityFrom(
|
||||
(DamageSource) CustomDamageSource.electrocution, Integer.MAX_VALUE
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIcon getIcon(
|
||||
final IBlockAccess iBlockAccess,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final int side
|
||||
) {
|
||||
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceField) {
|
||||
final ItemStack checkStack = ((TileEntityForceField) tileEntity).camoStack;
|
||||
if (checkStack != null) {
|
||||
try {
|
||||
final Block block = Block.getBlockFromItem(checkStack.getItem());
|
||||
final Integer[] allowedRenderTypes
|
||||
= { 0, 1, 4, 31, 20, 39, 5, 13, 23,
|
||||
6, 8, 7, 12, 29, 30, 14, 16, 17 };
|
||||
if (Arrays.asList(allowedRenderTypes)
|
||||
.contains(block.getRenderType())) {
|
||||
final IIcon icon
|
||||
= block.getIcon(side, checkStack.getItemDamage());
|
||||
if (icon != null) {
|
||||
return icon;
|
||||
}
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.getIcon(side, iBlockAccess.getBlockMetadata(x, y, z));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int colorMultiplier(
|
||||
final IBlockAccess iBlockAccess, final int x, final int y, final int z
|
||||
) {
|
||||
try {
|
||||
final Block block = Block.getBlockFromItem(checkStack.getItem());
|
||||
final Integer[] allowedRenderTypes = {
|
||||
0, 1, 4, 31, 20, 39, 5, 13, 23, 6, 8, 7, 12, 29, 30, 14, 16, 17};
|
||||
if (Arrays.asList(allowedRenderTypes)
|
||||
.contains(block.getRenderType())) {
|
||||
final IIcon icon = block.getIcon(side, checkStack.getItemDamage());
|
||||
if (icon != null) {
|
||||
return icon;
|
||||
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceField) {
|
||||
final ItemStack checkStack
|
||||
= ((TileEntityForceField) tileEntity).camoStack;
|
||||
if (checkStack != null) {
|
||||
try {
|
||||
return Block.getBlockFromItem(checkStack.getItem())
|
||||
.colorMultiplier(iBlockAccess, x, y, x);
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (final Exception e2) {
|
||||
e2.printStackTrace();
|
||||
}
|
||||
return super.colorMultiplier(iBlockAccess, x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLightValue(
|
||||
final IBlockAccess iBlockAccess, final int x, final int y, final int z
|
||||
) {
|
||||
try {
|
||||
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceField) {
|
||||
final IProjector zhuYao
|
||||
= ((TileEntityForceField) tileEntity).getProjectorSafe();
|
||||
if (zhuYao instanceof IProjector) {
|
||||
return (int
|
||||
) (Math.min(
|
||||
zhuYao.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleGlow, new int[0]
|
||||
),
|
||||
64
|
||||
)
|
||||
/ 64.0f * 15.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.getIcon(side, iBlockAccess.getBlockMetadata(x, y, z));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int colorMultiplier(final IBlockAccess iBlockAccess, final int x,
|
||||
final int y, final int z) {
|
||||
try {
|
||||
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceField) {
|
||||
final ItemStack checkStack =
|
||||
((TileEntityForceField)tileEntity).camoStack;
|
||||
if (checkStack != null) {
|
||||
try {
|
||||
return Block.getBlockFromItem(checkStack.getItem())
|
||||
.colorMultiplier(iBlockAccess, x, y, x);
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (final Exception e2) {
|
||||
e2.printStackTrace();
|
||||
return 0;
|
||||
}
|
||||
return super.colorMultiplier(iBlockAccess, x, y, z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLightValue(final IBlockAccess iBlockAccess, final int x,
|
||||
final int y, final int z) {
|
||||
try {
|
||||
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceField) {
|
||||
final IProjector zhuYao =
|
||||
((TileEntityForceField)tileEntity).getProjectorSafe();
|
||||
if (zhuYao instanceof IProjector) {
|
||||
return (int)(Math.min(zhuYao.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleGlow,
|
||||
new int[0]),
|
||||
64) /
|
||||
64.0f * 15.0f);
|
||||
@Override
|
||||
public float getExplosionResistance(
|
||||
final Entity entity,
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final double d,
|
||||
final double d1,
|
||||
final double d2
|
||||
) {
|
||||
return 2.1474836E9f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(final World world, int meta) {
|
||||
return new TileEntityForceField();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void weakenForceField(
|
||||
final World world, final int x, final int y, final int z, final int joules
|
||||
) {
|
||||
final IProjector projector = this.getProjector((IBlockAccess) world, x, y, z);
|
||||
if (projector != null) {
|
||||
((IFortronStorage) projector).provideFortron(joules, true);
|
||||
}
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
world.setBlock(x, y, z, Blocks.air, 0, 3);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getExplosionResistance(final Entity entity, final World world,
|
||||
final int x, final int y, final int z,
|
||||
final double d, final double d1,
|
||||
final double d2) {
|
||||
return 2.1474836E9f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(final World world, int meta) {
|
||||
return new TileEntityForceField();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void weakenForceField(final World world, final int x, final int y,
|
||||
final int z, final int joules) {
|
||||
final IProjector projector =
|
||||
this.getProjector((IBlockAccess)world, x, y, z);
|
||||
if (projector != null) {
|
||||
((IFortronStorage)projector).provideFortron(joules, true);
|
||||
@Override
|
||||
public ItemStack getPickBlock(
|
||||
final MovingObjectPosition target,
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z
|
||||
) {
|
||||
return null;
|
||||
}
|
||||
world.setBlock(x, y, z, Blocks.air, 0, 3);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getPickBlock(final MovingObjectPosition target,
|
||||
final World world, final int x, final int y,
|
||||
final int z) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IProjector getProjector(final IBlockAccess iBlockAccess, final int x,
|
||||
final int y, final int z) {
|
||||
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceField) {
|
||||
return ((TileEntityForceField)tileEntity).getProjector();
|
||||
@Override
|
||||
public IProjector
|
||||
getProjector(final IBlockAccess iBlockAccess, final int x, final int y, final int z) {
|
||||
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceField) {
|
||||
return ((TileEntityForceField) tileEntity).getProjector();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSealed(World world, int x, int y, int z,
|
||||
ForgeDirection direction) {
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public boolean isSealed(World world, int x, int y, int z, ForgeDirection direction) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerBlockIcons(IIconRegister p_149651_1_) {
|
||||
this.blockIcon = p_149651_1_.registerIcon("mffs:forceField");
|
||||
}
|
||||
@Override
|
||||
public void registerBlockIcons(IIconRegister p_149651_1_) {
|
||||
this.blockIcon = p_149651_1_.registerIcon("mffs:forceField");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,20 +19,31 @@ public class BlockForceFieldProjector extends BlockMachine {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean onMachineActivated(final World world, final int i, final int j, final int k,
|
||||
final EntityPlayer entityplayer, final int par6,
|
||||
final float par7, final float par8, final float par9) {
|
||||
final TileEntityForceFieldProjector tileentity = (TileEntityForceFieldProjector) world.getTileEntity(i, j, k);
|
||||
return !tileentity.isDisabled() &&
|
||||
super.onMachineActivated(world, i, j, k, entityplayer, par6, par7, par8,
|
||||
par9);
|
||||
public boolean onMachineActivated(
|
||||
final World world,
|
||||
final int i,
|
||||
final int j,
|
||||
final int k,
|
||||
final EntityPlayer entityplayer,
|
||||
final int par6,
|
||||
final float par7,
|
||||
final float par8,
|
||||
final float par9
|
||||
) {
|
||||
final TileEntityForceFieldProjector tileentity
|
||||
= (TileEntityForceFieldProjector) world.getTileEntity(i, j, k);
|
||||
return !tileentity.isDisabled()
|
||||
&& super.onMachineActivated(
|
||||
world, i, j, k, entityplayer, par6, par7, par8, par9
|
||||
);
|
||||
}
|
||||
|
||||
public int getLightValue(final IBlockAccess iBlockAccess, final int x,
|
||||
final int y, final int z) {
|
||||
public int getLightValue(
|
||||
final IBlockAccess iBlockAccess, final int x, final int y, final int z
|
||||
) {
|
||||
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityForceFieldProjector &&
|
||||
((TileEntityForceFieldProjector) tileEntity).getMode() != null) {
|
||||
if (tileEntity instanceof TileEntityForceFieldProjector
|
||||
&& ((TileEntityForceFieldProjector) tileEntity).getMode() != null) {
|
||||
return 10;
|
||||
}
|
||||
return super.getLightValue(iBlockAccess, x, y, z);
|
||||
|
|
|
@ -16,12 +16,17 @@ public class BlockForceManipulator extends BlockMachine {
|
|||
super("manipulator");
|
||||
}
|
||||
|
||||
public static int determineOrientation(final World world, final int x,
|
||||
final int y, final int z,
|
||||
final EntityPlayer entityPlayer) {
|
||||
if (MathHelper.abs((float) ((Entity) entityPlayer).posX - x) < 2.0f &&
|
||||
MathHelper.abs((float) ((Entity) entityPlayer).posZ - z) < 2.0f) {
|
||||
final double var5 = ((Entity) entityPlayer).posY + 1.82 - ((Entity) entityPlayer).yOffset;
|
||||
public static int determineOrientation(
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final EntityPlayer entityPlayer
|
||||
) {
|
||||
if (MathHelper.abs((float) ((Entity) entityPlayer).posX - x) < 2.0f
|
||||
&& MathHelper.abs((float) ((Entity) entityPlayer).posZ - z) < 2.0f) {
|
||||
final double var5
|
||||
= ((Entity) entityPlayer).posY + 1.82 - ((Entity) entityPlayer).yOffset;
|
||||
if (var5 - y > 2.0) {
|
||||
return 1;
|
||||
}
|
||||
|
@ -30,36 +35,52 @@ public class BlockForceManipulator extends BlockMachine {
|
|||
}
|
||||
}
|
||||
final int var6 = MathHelper.floor_double(
|
||||
((Entity) entityPlayer).rotationYaw * 4.0f / 360.0f + 0.5) &
|
||||
0x3;
|
||||
((Entity) entityPlayer).rotationYaw * 4.0f / 360.0f + 0.5
|
||||
)
|
||||
& 0x3;
|
||||
return (var6 == 0)
|
||||
? 2
|
||||
: ((var6 == 1) ? 5 : ((var6 == 2) ? 3 : ((var6 == 3) ? 4 : 0)));
|
||||
? 2
|
||||
: ((var6 == 1) ? 5 : ((var6 == 2) ? 3 : ((var6 == 3) ? 4 : 0)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(final World world, final int x, final int y,
|
||||
final int z,
|
||||
final EntityLivingBase par5EntityLiving,
|
||||
final ItemStack stack) {
|
||||
public void onBlockPlacedBy(
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final EntityLivingBase par5EntityLiving,
|
||||
final ItemStack stack
|
||||
) {
|
||||
final int metadata = determineOrientation(
|
||||
world, x, y, z,
|
||||
(EntityPlayer) par5EntityLiving); // TODO: ClassCastException?
|
||||
world,
|
||||
x,
|
||||
y,
|
||||
z,
|
||||
(EntityPlayer) par5EntityLiving
|
||||
); // TODO: ClassCastException?
|
||||
world.setBlockMetadataWithNotify(x, y, z, metadata, 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onUseWrench(final World world, final int x, final int y,
|
||||
final int z, final EntityPlayer par5EntityPlayer,
|
||||
final int side, final float hitX, final float hitY,
|
||||
final float hitZ) {
|
||||
public boolean onUseWrench(
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final EntityPlayer par5EntityPlayer,
|
||||
final int side,
|
||||
final float hitX,
|
||||
final float hitY,
|
||||
final float hitZ
|
||||
) {
|
||||
final int mask = 7;
|
||||
final int rotMeta = world.getBlockMetadata(x, y, z);
|
||||
final int masked = rotMeta & ~mask;
|
||||
final ForgeDirection orientation = ForgeDirection.getOrientation(rotMeta & mask);
|
||||
final ForgeDirection rotated = orientation.getRotation(ForgeDirection.getOrientation(side));
|
||||
world.setBlockMetadataWithNotify(x, y, z,
|
||||
(rotated.ordinal() & mask) | masked, 3);
|
||||
final ForgeDirection rotated
|
||||
= orientation.getRotation(ForgeDirection.getOrientation(side));
|
||||
world.setBlockMetadataWithNotify(x, y, z, (rotated.ordinal() & mask) | masked, 3);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -17,11 +17,16 @@ public abstract class BlockMachineBlock extends BlockMachine {
|
|||
}
|
||||
|
||||
@Override
|
||||
public IIcon getIcon(final IBlockAccess par1IBlockAccess, final int x,
|
||||
final int y, final int z, final int side) {
|
||||
public IIcon getIcon(
|
||||
final IBlockAccess par1IBlockAccess,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final int side
|
||||
) {
|
||||
final TileEntity tileEntity = par1IBlockAccess.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityBase &&
|
||||
((TileEntityBase) tileEntity).isActive()) {
|
||||
if (tileEntity instanceof TileEntityBase
|
||||
&& ((TileEntityBase) tileEntity).isActive()) {
|
||||
if (side == 0 || side == 1) {
|
||||
return this.blockIconTopOn;
|
||||
}
|
||||
|
@ -36,14 +41,14 @@ public abstract class BlockMachineBlock extends BlockMachine {
|
|||
|
||||
@Override
|
||||
public void registerBlockIcons(final IIconRegister reg) {
|
||||
this.blockIcon = reg.registerIcon(
|
||||
this.getUnlocalizedName().replace("tile.", ""));
|
||||
this.blockIconTop = reg.registerIcon(
|
||||
this.getUnlocalizedName().replace("tile.", "") + "_top");
|
||||
this.blockIconOn = reg.registerIcon(
|
||||
this.getUnlocalizedName().replace("tile.", "") + "_on");
|
||||
this.blockIcon = reg.registerIcon(this.getUnlocalizedName().replace("tile.", ""));
|
||||
this.blockIconTop
|
||||
= reg.registerIcon(this.getUnlocalizedName().replace("tile.", "") + "_top");
|
||||
this.blockIconOn
|
||||
= reg.registerIcon(this.getUnlocalizedName().replace("tile.", "") + "_on");
|
||||
this.blockIconTopOn = reg.registerIcon(
|
||||
this.getUnlocalizedName().replace("tile.", "") + "_top_on");
|
||||
this.getUnlocalizedName().replace("tile.", "") + "_top_on"
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -9,15 +9,16 @@ import net.minecraft.inventory.IInventory;
|
|||
import net.minecraft.inventory.Slot;
|
||||
|
||||
public class ContainerBiometricIdentifier extends ContainerBase {
|
||||
public ContainerBiometricIdentifier(final EntityPlayer player,
|
||||
final TileEntityBiometricIdentifier tileentity) {
|
||||
public ContainerBiometricIdentifier(
|
||||
final EntityPlayer player, final TileEntityBiometricIdentifier tileentity
|
||||
) {
|
||||
super((IInventory) tileentity);
|
||||
this.addSlotToContainer((Slot) new SlotActive(tileentity, 0, 88, 91));
|
||||
this.addSlotToContainer((Slot) new SlotBase(tileentity, 1, 8, 46));
|
||||
this.addSlotToContainer((Slot) new SlotActive(tileentity, 2, 8, 91));
|
||||
for (int var4 = 0; var4 < 9; ++var4) {
|
||||
this.addSlotToContainer(
|
||||
(Slot) new SlotActive(tileentity, 3 + var4, 8 + var4 * 18, 111));
|
||||
this.addSlotToContainer((Slot
|
||||
) new SlotActive(tileentity, 3 + var4, 8 + var4 * 18, 111));
|
||||
}
|
||||
this.addSlotToContainer((Slot) new SlotBase(tileentity, 12, 8, 66));
|
||||
this.addPlayerInventory(player);
|
||||
|
|
|
@ -9,8 +9,9 @@ import net.minecraft.inventory.IInventory;
|
|||
import net.minecraft.inventory.Slot;
|
||||
|
||||
public class ContainerCoercionDeriver extends ContainerBase {
|
||||
public ContainerCoercionDeriver(final EntityPlayer player,
|
||||
final TileEntityCoercionDeriver tileEntity) {
|
||||
public ContainerCoercionDeriver(
|
||||
final EntityPlayer player, final TileEntityCoercionDeriver tileEntity
|
||||
) {
|
||||
super((IInventory) tileEntity);
|
||||
this.addSlotToContainer((Slot) new SlotCard(tileEntity, 0, 9, 41));
|
||||
this.addSlotToContainer((Slot) new SlotBase(tileEntity, 1, 9, 83));
|
||||
|
|
|
@ -9,8 +9,9 @@ import net.minecraft.inventory.IInventory;
|
|||
import net.minecraft.inventory.Slot;
|
||||
|
||||
public class ContainerForceFieldProjector extends ContainerBase {
|
||||
public ContainerForceFieldProjector(final EntityPlayer player,
|
||||
final TileEntityForceFieldProjector tileEntity) {
|
||||
public ContainerForceFieldProjector(
|
||||
final EntityPlayer player, final TileEntityForceFieldProjector tileEntity
|
||||
) {
|
||||
super((IInventory) tileEntity);
|
||||
this.addSlotToContainer((Slot) new SlotCard(tileEntity, 0, 10, 89));
|
||||
this.addSlotToContainer((Slot) new SlotCard(tileEntity, 1, 28, 89));
|
||||
|
@ -18,18 +19,18 @@ public class ContainerForceFieldProjector extends ContainerBase {
|
|||
int i = 3;
|
||||
for (int xSlot = 0; xSlot < 4; ++xSlot) {
|
||||
for (int ySlot = 0; ySlot < 4; ++ySlot) {
|
||||
if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2) &&
|
||||
(xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) {
|
||||
this.addSlotToContainer((Slot) new SlotBase(
|
||||
tileEntity, i, 91 + 18 * xSlot, 18 + 18 * ySlot));
|
||||
if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2)
|
||||
&& (xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) {
|
||||
this.addSlotToContainer((Slot
|
||||
) new SlotBase(tileEntity, i, 91 + 18 * xSlot, 18 + 18 * ySlot));
|
||||
++i;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int xSlot = 0; xSlot < 3; ++xSlot) {
|
||||
for (int ySlot = 0; ySlot < 2; ++ySlot) {
|
||||
this.addSlotToContainer((Slot) new SlotBase(
|
||||
tileEntity, i, 19 + 18 * xSlot, 36 + 18 * ySlot));
|
||||
this.addSlotToContainer((Slot
|
||||
) new SlotBase(tileEntity, i, 19 + 18 * xSlot, 36 + 18 * ySlot));
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,8 @@ import net.minecraft.inventory.Slot;
|
|||
|
||||
public class ContainerForceManipulator extends ContainerBase {
|
||||
public ContainerForceManipulator(
|
||||
final EntityPlayer player, final TileEntityForceManipulator tileEntity) {
|
||||
final EntityPlayer player, final TileEntityForceManipulator tileEntity
|
||||
) {
|
||||
super((IInventory) tileEntity);
|
||||
this.addSlotToContainer((Slot) new SlotCard(tileEntity, 0, 73, 91));
|
||||
this.addSlotToContainer((Slot) new SlotCard(tileEntity, 1, 91, 91));
|
||||
|
@ -18,18 +19,18 @@ public class ContainerForceManipulator extends ContainerBase {
|
|||
int i = 3;
|
||||
for (int xSlot = 0; xSlot < 4; ++xSlot) {
|
||||
for (int ySlot = 0; ySlot < 4; ++ySlot) {
|
||||
if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2) &&
|
||||
(xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) {
|
||||
this.addSlotToContainer((Slot) new SlotBase(
|
||||
tileEntity, i, 91 + 18 * xSlot, 18 + 18 * ySlot));
|
||||
if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2)
|
||||
&& (xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) {
|
||||
this.addSlotToContainer((Slot
|
||||
) new SlotBase(tileEntity, i, 91 + 18 * xSlot, 18 + 18 * ySlot));
|
||||
++i;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int xSlot = 0; xSlot < 3; ++xSlot) {
|
||||
for (int ySlot = 0; ySlot < 2; ++ySlot) {
|
||||
this.addSlotToContainer((Slot) new SlotBase(
|
||||
tileEntity, i, 31 + 18 * xSlot, 19 + 18 * ySlot));
|
||||
this.addSlotToContainer((Slot
|
||||
) new SlotBase(tileEntity, i, 31 + 18 * xSlot, 19 + 18 * ySlot));
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,8 @@ public class ContainerFortronCapacitor extends ContainerBase {
|
|||
private TileEntityFortronCapacitor tileEntity;
|
||||
|
||||
public ContainerFortronCapacitor(
|
||||
final EntityPlayer player, final TileEntityFortronCapacitor tileEntity) {
|
||||
final EntityPlayer player, final TileEntityFortronCapacitor tileEntity
|
||||
) {
|
||||
super((IInventory) tileEntity);
|
||||
this.tileEntity = tileEntity;
|
||||
this.addSlotToContainer((Slot) new SlotCard(this.tileEntity, 0, 9, 74));
|
||||
|
|
|
@ -9,20 +9,22 @@ import net.minecraft.inventory.IInventory;
|
|||
import net.minecraft.inventory.Slot;
|
||||
|
||||
public class ContainerInterdictionMatrix extends ContainerBase {
|
||||
public ContainerInterdictionMatrix(final EntityPlayer player,
|
||||
final TileEntityInterdictionMatrix tileEntity) {
|
||||
public ContainerInterdictionMatrix(
|
||||
final EntityPlayer player, final TileEntityInterdictionMatrix tileEntity
|
||||
) {
|
||||
super((IInventory) tileEntity);
|
||||
this.addSlotToContainer((Slot) new SlotCard(tileEntity, 0, 87, 89));
|
||||
this.addSlotToContainer((Slot) new SlotBase(tileEntity, 1, 69, 89));
|
||||
for (int var3 = 0; var3 < 2; ++var3) {
|
||||
for (int var4 = 0; var4 < 4; ++var4) {
|
||||
this.addSlotToContainer((Slot) new SlotBase(
|
||||
tileEntity, var4 + var3 * 4 + 2, 99 + var4 * 18, 31 + var3 * 18));
|
||||
tileEntity, var4 + var3 * 4 + 2, 99 + var4 * 18, 31 + var3 * 18
|
||||
));
|
||||
}
|
||||
}
|
||||
for (int var5 = 0; var5 < 9; ++var5) {
|
||||
this.addSlotToContainer(
|
||||
(Slot) new SlotBase(tileEntity, var5 + 8 + 2, 9 + var5 * 18, 69));
|
||||
this.addSlotToContainer((Slot
|
||||
) new SlotBase(tileEntity, var5 + 8 + 2, 9 + var5 * 18, 69));
|
||||
}
|
||||
this.addPlayerInventory(player);
|
||||
}
|
||||
|
|
|
@ -13,9 +13,13 @@ public class BlockDropDelayedEvent extends DelayedEvent {
|
|||
protected World world;
|
||||
protected Vector3 position;
|
||||
|
||||
public BlockDropDelayedEvent(final IDelayedEventHandler handler,
|
||||
final int ticks, final Block block,
|
||||
final World world, final Vector3 position) {
|
||||
public BlockDropDelayedEvent(
|
||||
final IDelayedEventHandler handler,
|
||||
final int ticks,
|
||||
final Block block,
|
||||
final World world,
|
||||
final Vector3 position
|
||||
) {
|
||||
super(handler, ticks);
|
||||
this.block = block;
|
||||
this.world = world;
|
||||
|
@ -26,9 +30,13 @@ public class BlockDropDelayedEvent extends DelayedEvent {
|
|||
protected void onEvent() {
|
||||
if (this.position.getBlock((IBlockAccess) this.world) == this.block) {
|
||||
this.block.dropBlockAsItem(
|
||||
this.world, this.position.intX(), this.position.intY(),
|
||||
this.position.intZ(),
|
||||
this.position.getBlockMetadata((IBlockAccess) this.world), 0);
|
||||
this.world,
|
||||
this.position.intX(),
|
||||
this.position.intY(),
|
||||
this.position.intZ(),
|
||||
this.position.getBlockMetadata((IBlockAccess) this.world),
|
||||
0
|
||||
);
|
||||
this.position.setBlock(this.world, Blocks.air);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package mffs.event;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import mffs.IDelayedEventHandler;
|
||||
import mffs.base.TileEntityInventory;
|
||||
import net.minecraft.block.Block;
|
||||
|
@ -13,11 +14,14 @@ import universalelectricity.core.vector.Vector3;
|
|||
public class BlockInventoryDropDelayedEvent extends BlockDropDelayedEvent {
|
||||
private TileEntityInventory projector;
|
||||
|
||||
public BlockInventoryDropDelayedEvent(final IDelayedEventHandler handler,
|
||||
final int ticks, final Block block,
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final TileEntityInventory projector) {
|
||||
public BlockInventoryDropDelayedEvent(
|
||||
final IDelayedEventHandler handler,
|
||||
final int ticks,
|
||||
final Block block,
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final TileEntityInventory projector
|
||||
) {
|
||||
super(handler, ticks, block, world, position);
|
||||
this.projector = projector;
|
||||
}
|
||||
|
@ -26,9 +30,13 @@ public class BlockInventoryDropDelayedEvent extends BlockDropDelayedEvent {
|
|||
protected void onEvent() {
|
||||
if (super.position.getBlock((IBlockAccess) super.world) == super.block) {
|
||||
final ArrayList<ItemStack> itemStacks = super.block.getDrops(
|
||||
super.world, super.position.intX(), super.position.intY(),
|
||||
super.position.intZ(),
|
||||
super.position.getBlockMetadata((IBlockAccess) super.world), 0);
|
||||
super.world,
|
||||
super.position.intX(),
|
||||
super.position.intY(),
|
||||
super.position.intZ(),
|
||||
super.position.getBlockMetadata((IBlockAccess) super.world),
|
||||
0
|
||||
);
|
||||
for (final ItemStack itemStack : itemStacks) {
|
||||
this.projector.mergeIntoInventory(itemStack);
|
||||
}
|
||||
|
|
|
@ -14,9 +14,12 @@ public class BlockNotifyDelayedEvent extends DelayedEvent {
|
|||
private World world;
|
||||
private Vector3 position;
|
||||
|
||||
public BlockNotifyDelayedEvent(final IDelayedEventHandler handler,
|
||||
final int ticks, final World world,
|
||||
final Vector3 position) {
|
||||
public BlockNotifyDelayedEvent(
|
||||
final IDelayedEventHandler handler,
|
||||
final int ticks,
|
||||
final World world,
|
||||
final Vector3 position
|
||||
) {
|
||||
super(handler, ticks);
|
||||
this.world = world;
|
||||
this.position = position;
|
||||
|
@ -26,21 +29,29 @@ public class BlockNotifyDelayedEvent extends DelayedEvent {
|
|||
protected void onEvent() {
|
||||
if (!this.world.isRemote) {
|
||||
this.world.notifyBlocksOfNeighborChange(
|
||||
this.position.intX(), this.position.intY(), this.position.intZ(),
|
||||
this.position.getBlock((IBlockAccess) this.world));
|
||||
final TileEntity newTile = this.position.getTileEntity((IBlockAccess) this.world);
|
||||
this.position.intX(),
|
||||
this.position.intY(),
|
||||
this.position.intZ(),
|
||||
this.position.getBlock((IBlockAccess) this.world)
|
||||
);
|
||||
final TileEntity newTile
|
||||
= this.position.getTileEntity((IBlockAccess) this.world);
|
||||
if (newTile != null) {
|
||||
if (newTile instanceof ISpecialForceManipulation) {
|
||||
((ISpecialForceManipulation) newTile).postMove();
|
||||
}
|
||||
if (Loader.isModLoaded("BuildCraft|Factory")) {
|
||||
try {
|
||||
final Class clazz = Class.forName("buildcraft.factory.TileQuarry");
|
||||
final Class clazz
|
||||
= Class.forName("buildcraft.factory.TileQuarry");
|
||||
if (clazz == newTile.getClass()) {
|
||||
// TODO: W T F AAAAAAAAAAAAA
|
||||
ReflectionHelper.setPrivateValue(clazz, (Object) newTile,
|
||||
(Object) true,
|
||||
new String[] { "isAlive" });
|
||||
ReflectionHelper.setPrivateValue(
|
||||
clazz,
|
||||
(Object) newTile,
|
||||
(Object) true,
|
||||
new String[] { "isAlive" }
|
||||
);
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
|
|
|
@ -19,13 +19,17 @@ public class BlockPostMoveDelayedEvent extends DelayedEvent {
|
|||
private TileEntity tileEntity;
|
||||
private NBTTagCompound tileData;
|
||||
|
||||
public BlockPostMoveDelayedEvent(final IDelayedEventHandler handler,
|
||||
final int ticks, final World world,
|
||||
final Vector3 originalPosition,
|
||||
final Vector3 newPosition, final Block blockID,
|
||||
final int blockMetadata,
|
||||
final TileEntity tileEntity,
|
||||
final NBTTagCompound tileData) {
|
||||
public BlockPostMoveDelayedEvent(
|
||||
final IDelayedEventHandler handler,
|
||||
final int ticks,
|
||||
final World world,
|
||||
final Vector3 originalPosition,
|
||||
final Vector3 newPosition,
|
||||
final Block blockID,
|
||||
final int blockMetadata,
|
||||
final TileEntity tileEntity,
|
||||
final NBTTagCompound tileData
|
||||
) {
|
||||
super(handler, ticks);
|
||||
this.blockID = Blocks.air;
|
||||
this.blockMetadata = 0;
|
||||
|
@ -44,17 +48,27 @@ public class BlockPostMoveDelayedEvent extends DelayedEvent {
|
|||
try {
|
||||
if (this.tileEntity != null && this.tileData != null) {
|
||||
ManipulatorHelper.setBlockSneaky(
|
||||
this.world, this.newPosition, this.blockID, this.blockMetadata,
|
||||
TileEntity.createAndLoadEntity(this.tileData));
|
||||
this.world,
|
||||
this.newPosition,
|
||||
this.blockID,
|
||||
this.blockMetadata,
|
||||
TileEntity.createAndLoadEntity(this.tileData)
|
||||
);
|
||||
} else {
|
||||
ManipulatorHelper.setBlockSneaky(this.world, this.newPosition,
|
||||
this.blockID, this.blockMetadata,
|
||||
null);
|
||||
ManipulatorHelper.setBlockSneaky(
|
||||
this.world,
|
||||
this.newPosition,
|
||||
this.blockID,
|
||||
this.blockMetadata,
|
||||
null
|
||||
);
|
||||
}
|
||||
super.handler.getQuedDelayedEvents().add(new BlockNotifyDelayedEvent(
|
||||
super.handler, 0, this.world, this.originalPosition));
|
||||
super.handler, 0, this.world, this.originalPosition
|
||||
));
|
||||
super.handler.getQuedDelayedEvents().add(new BlockNotifyDelayedEvent(
|
||||
super.handler, 0, this.world, this.newPosition));
|
||||
super.handler, 0, this.world, this.newPosition
|
||||
));
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -17,10 +17,13 @@ public class BlockPreMoveDelayedEvent extends DelayedEvent {
|
|||
private Vector3 position;
|
||||
private Vector3 newPosition;
|
||||
|
||||
public BlockPreMoveDelayedEvent(final IDelayedEventHandler handler,
|
||||
final int ticks, final World world,
|
||||
final Vector3 position,
|
||||
final Vector3 newPosition) {
|
||||
public BlockPreMoveDelayedEvent(
|
||||
final IDelayedEventHandler handler,
|
||||
final int ticks,
|
||||
final World world,
|
||||
final Vector3 position,
|
||||
final Vector3 newPosition
|
||||
) {
|
||||
super(handler, ticks);
|
||||
this.world = world;
|
||||
this.position = position;
|
||||
|
@ -30,23 +33,37 @@ public class BlockPreMoveDelayedEvent extends DelayedEvent {
|
|||
@Override
|
||||
protected void onEvent() {
|
||||
if (!this.world.isRemote) {
|
||||
final TileEntity tileEntity = this.position.getTileEntity((IBlockAccess) this.world);
|
||||
final TileEntity tileEntity
|
||||
= this.position.getTileEntity((IBlockAccess) this.world);
|
||||
if (tileEntity instanceof ISpecialForceManipulation) {
|
||||
((ISpecialForceManipulation) tileEntity)
|
||||
.move(this.newPosition.intX(), this.newPosition.intY(),
|
||||
this.newPosition.intZ());
|
||||
.move(
|
||||
this.newPosition.intX(),
|
||||
this.newPosition.intY(),
|
||||
this.newPosition.intZ()
|
||||
);
|
||||
}
|
||||
final Block blockID = this.position.getBlock((IBlockAccess) this.world);
|
||||
final int blockMetadata = this.position.getBlockMetadata((IBlockAccess) this.world);
|
||||
final int blockMetadata
|
||||
= this.position.getBlockMetadata((IBlockAccess) this.world);
|
||||
final NBTTagCompound tileData = new NBTTagCompound();
|
||||
if (tileEntity != null) {
|
||||
tileEntity.writeToNBT(tileData);
|
||||
}
|
||||
ManipulatorHelper.setBlockSneaky(this.world, this.position, Blocks.air, 0,
|
||||
null);
|
||||
ManipulatorHelper.setBlockSneaky(
|
||||
this.world, this.position, Blocks.air, 0, null
|
||||
);
|
||||
super.handler.getQuedDelayedEvents().add(new BlockPostMoveDelayedEvent(
|
||||
super.handler, 0, this.world, this.position, this.newPosition,
|
||||
blockID, blockMetadata, tileEntity, tileData));
|
||||
super.handler,
|
||||
0,
|
||||
this.world,
|
||||
this.position,
|
||||
this.newPosition,
|
||||
blockID,
|
||||
blockMetadata,
|
||||
tileEntity,
|
||||
tileData
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,21 +4,20 @@ import net.minecraftforge.fluids.Fluid;
|
|||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.FluidTank;
|
||||
|
||||
public class FortronHelper
|
||||
{
|
||||
public class FortronHelper {
|
||||
public static Fluid FLUID_FORTRON;
|
||||
|
||||
|
||||
public static FluidStack getFortron(final int amount) {
|
||||
return new FluidStack(FLUID_FORTRON, amount);
|
||||
}
|
||||
|
||||
|
||||
public static int getAmount(final FluidStack fluidStack) {
|
||||
if (fluidStack != null) {
|
||||
return fluidStack.amount;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
public static int getAmount(final FluidTank fortronTank) {
|
||||
if (fortronTank != null) {
|
||||
return fortronTank.getFluidAmount();
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package mffs.fortron;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import icbm.api.IBlockFrequency;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
import mffs.api.fortron.IFortronFrequency;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
@ -31,7 +32,7 @@ public class FrequencyGrid {
|
|||
it.remove();
|
||||
} else {
|
||||
if (!new Vector3((TileEntity) frequency)
|
||||
.equals(new Vector3((TileEntity) tileEntity))) {
|
||||
.equals(new Vector3((TileEntity) tileEntity))) {
|
||||
continue;
|
||||
}
|
||||
it.remove();
|
||||
|
@ -55,8 +56,8 @@ public class FrequencyGrid {
|
|||
public Set<IBlockFrequency> get(final int frequency) {
|
||||
final Set<IBlockFrequency> set = new HashSet<>();
|
||||
for (final IBlockFrequency tile : this.get()) {
|
||||
if (tile != null && !((TileEntity) tile).isInvalid() &&
|
||||
tile.getFrequency() == frequency) {
|
||||
if (tile != null && !((TileEntity) tile).isInvalid()
|
||||
&& tile.getFrequency() == frequency) {
|
||||
set.add(tile);
|
||||
}
|
||||
}
|
||||
|
@ -73,10 +74,14 @@ public class FrequencyGrid {
|
|||
} else if (((TileEntity) frequency).isInvalid()) {
|
||||
it.remove();
|
||||
} else {
|
||||
if (((TileEntity) frequency).getWorldObj().getTileEntity(
|
||||
((TileEntity) frequency).xCoord,
|
||||
((TileEntity) frequency).yCoord,
|
||||
((TileEntity) frequency).zCoord) == (TileEntity) frequency) {
|
||||
if (((TileEntity) frequency)
|
||||
.getWorldObj()
|
||||
.getTileEntity(
|
||||
((TileEntity) frequency).xCoord,
|
||||
((TileEntity) frequency).yCoord,
|
||||
((TileEntity) frequency).zCoord
|
||||
)
|
||||
== (TileEntity) frequency) {
|
||||
continue;
|
||||
}
|
||||
it.remove();
|
||||
|
@ -87,25 +92,29 @@ public class FrequencyGrid {
|
|||
}
|
||||
}
|
||||
|
||||
public Set<IBlockFrequency> get(final World world, final Vector3 position, final int radius,
|
||||
final int frequency) {
|
||||
public Set<IBlockFrequency>
|
||||
get(final World world, final Vector3 position, final int radius, final int frequency
|
||||
) {
|
||||
final Set set = new HashSet();
|
||||
for (final IBlockFrequency tileEntity : this.get(frequency)) {
|
||||
if (((TileEntity) tileEntity).getWorldObj() == world &&
|
||||
Vector3.distance(new Vector3((TileEntity) tileEntity), position) <= radius) {
|
||||
if (((TileEntity) tileEntity).getWorldObj() == world
|
||||
&& Vector3.distance(new Vector3((TileEntity) tileEntity), position)
|
||||
<= radius) {
|
||||
set.add(tileEntity);
|
||||
}
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
public Set<IFortronFrequency> getFortronTiles(final World world, final Vector3 position,
|
||||
final int radius, final int frequency) {
|
||||
public Set<IFortronFrequency> getFortronTiles(
|
||||
final World world, final Vector3 position, final int radius, final int frequency
|
||||
) {
|
||||
final Set set = new HashSet();
|
||||
for (final IBlockFrequency tileEntity : this.get(frequency)) {
|
||||
if (((TileEntity) tileEntity).getWorldObj() == world &&
|
||||
tileEntity instanceof IFortronFrequency &&
|
||||
Vector3.distance(new Vector3((TileEntity) tileEntity), position) <= radius) {
|
||||
if (((TileEntity) tileEntity).getWorldObj() == world
|
||||
&& tileEntity instanceof IFortronFrequency
|
||||
&& Vector3.distance(new Vector3((TileEntity) tileEntity), position)
|
||||
<= radius) {
|
||||
set.add(tileEntity);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,8 +19,9 @@ public class GuiBiometricIdentifier extends GuiBase {
|
|||
private TileEntityBiometricIdentifier tileEntity;
|
||||
private GuiTextField textFieldUsername;
|
||||
|
||||
public GuiBiometricIdentifier(final EntityPlayer player,
|
||||
final TileEntityBiometricIdentifier tileEntity) {
|
||||
public GuiBiometricIdentifier(
|
||||
final EntityPlayer player, final TileEntityBiometricIdentifier tileEntity
|
||||
) {
|
||||
super(new ContainerBiometricIdentifier(player, tileEntity), tileEntity);
|
||||
this.tileEntity = tileEntity;
|
||||
tileEntity.canUpdate();
|
||||
|
@ -31,15 +32,19 @@ public class GuiBiometricIdentifier extends GuiBase {
|
|||
super.textFieldPos = new Vector2(109.0, 92.0);
|
||||
super.initGui();
|
||||
(this.textFieldUsername = new GuiTextField(this.fontRendererObj, 52, 18, 90, 12))
|
||||
.setMaxStringLength(30);
|
||||
.setMaxStringLength(30);
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
for (int i = 0; i < Permission.getPermissions().length; ++i) {
|
||||
++x;
|
||||
this.buttonList.add(new GuiButtonPress(
|
||||
i + 1, this.width / 2 - 50 + 20 * x, this.height / 2 - 75 + 20 * y,
|
||||
new Vector2(18.0, 18 * i), this,
|
||||
Permission.getPermissions()[i].name));
|
||||
i + 1,
|
||||
this.width / 2 - 50 + 20 * x,
|
||||
this.height / 2 - 75 + 20 * y,
|
||||
new Vector2(18.0, 18 * i),
|
||||
this,
|
||||
Permission.getPermissions()[i].name
|
||||
));
|
||||
if (i % 3 == 0 && i != 0) {
|
||||
x = 0;
|
||||
++y;
|
||||
|
@ -50,27 +55,32 @@ public class GuiBiometricIdentifier extends GuiBase {
|
|||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(final int x, final int y) {
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity.getInventoryName(),
|
||||
this.xSize / 2 - this.fontRendererObj.getStringWidth(
|
||||
this.tileEntity.getInventoryName()) /
|
||||
2,
|
||||
6, 4210752);
|
||||
this.tileEntity.getInventoryName(),
|
||||
this.xSize / 2
|
||||
- this.fontRendererObj.getStringWidth(this.tileEntity.getInventoryName())
|
||||
/ 2,
|
||||
6,
|
||||
4210752
|
||||
);
|
||||
this.drawTextWithTooltip("rights", "%1", 8, 32, x, y, 0);
|
||||
try {
|
||||
if (this.tileEntity.getManipulatingCard() != null) {
|
||||
final ICardIdentification idCard = (ICardIdentification) this.tileEntity.getManipulatingCard()
|
||||
.getItem();
|
||||
final ICardIdentification idCard
|
||||
= (ICardIdentification) this.tileEntity.getManipulatingCard().getItem(
|
||||
);
|
||||
this.textFieldUsername.drawTextBox();
|
||||
if (idCard.getUsername(this.tileEntity.getManipulatingCard()) != null) {
|
||||
for (int i = 0; i < this.buttonList.size(); ++i) {
|
||||
if (this.buttonList.get(i) instanceof GuiButtonPress) {
|
||||
final GuiButtonPress button = (GuiButtonPress) this.buttonList.get(i);
|
||||
final GuiButtonPress button
|
||||
= (GuiButtonPress) this.buttonList.get(i);
|
||||
button.visible = true;
|
||||
final int permissionID = i - 1;
|
||||
if (Permission.getPermission(permissionID) != null) {
|
||||
if (idCard.hasPermission(
|
||||
this.tileEntity.getManipulatingCard(),
|
||||
Permission.getPermission(permissionID))) {
|
||||
Permission.getPermission(permissionID)
|
||||
)) {
|
||||
button.stuck = true;
|
||||
} else {
|
||||
button.stuck = false;
|
||||
|
@ -90,27 +100,30 @@ public class GuiBiometricIdentifier extends GuiBase {
|
|||
e.printStackTrace();
|
||||
}
|
||||
super.textFieldFrequency.drawTextBox();
|
||||
this.drawTextWithTooltip("master", 28,
|
||||
90 + this.fontRendererObj.FONT_HEIGHT / 2, x, y);
|
||||
this.drawTextWithTooltip(
|
||||
"master", 28, 90 + this.fontRendererObj.FONT_HEIGHT / 2, x, y
|
||||
);
|
||||
super.drawGuiContainerForegroundLayer(x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateScreen() {
|
||||
super.updateScreen();
|
||||
if (!this.textFieldUsername.isFocused() &&
|
||||
this.tileEntity.getManipulatingCard() != null) {
|
||||
final ICardIdentification idCard = (ICardIdentification) this.tileEntity.getManipulatingCard().getItem();
|
||||
if (!this.textFieldUsername.isFocused()
|
||||
&& this.tileEntity.getManipulatingCard() != null) {
|
||||
final ICardIdentification idCard
|
||||
= (ICardIdentification) this.tileEntity.getManipulatingCard().getItem();
|
||||
if (idCard.getUsername(this.tileEntity.getManipulatingCard()) != null) {
|
||||
this.textFieldUsername.setText(
|
||||
idCard.getUsername(this.tileEntity.getManipulatingCard()));
|
||||
idCard.getUsername(this.tileEntity.getManipulatingCard())
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(final float f, final int x,
|
||||
final int y) {
|
||||
protected void
|
||||
drawGuiContainerBackgroundLayer(final float f, final int x, final int y) {
|
||||
super.drawGuiContainerBackgroundLayer(f, x, y);
|
||||
this.drawSlot(87, 90);
|
||||
this.drawSlot(7, 45);
|
||||
|
@ -129,15 +142,17 @@ public class GuiBiometricIdentifier extends GuiBase {
|
|||
this.textFieldUsername.textboxKeyTyped(par1, par2);
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
nbt.setString("username", this.textFieldUsername.getText());
|
||||
ModularForceFieldSystem.channel.sendToServer(new PacketTile(
|
||||
PacketTile.Type.STRING, new Vector3(this.tileEntity), nbt));
|
||||
ModularForceFieldSystem.channel.sendToServer(
|
||||
new PacketTile(PacketTile.Type.STRING, new Vector3(this.tileEntity), nbt)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(final int x, final int y, final int par3) {
|
||||
super.mouseClicked(x, y, par3);
|
||||
this.textFieldUsername.mouseClicked(x - super.containerWidth,
|
||||
y - super.containerHeight, par3);
|
||||
this.textFieldUsername.mouseClicked(
|
||||
x - super.containerWidth, y - super.containerHeight, par3
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -146,7 +161,9 @@ public class GuiBiometricIdentifier extends GuiBase {
|
|||
if (guiButton.id > 0) {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
nbt.setInteger("buttonId", guiButton.id - 1);
|
||||
ModularForceFieldSystem.channel.sendToServer(new PacketTile(PacketTile.Type.TOGGLE_MODE, new Vector3(this.tileEntity), nbt));
|
||||
ModularForceFieldSystem.channel.sendToServer(new PacketTile(
|
||||
PacketTile.Type.TOGGLE_MODE, new Vector3(this.tileEntity), nbt
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,16 +9,17 @@ import net.minecraft.client.gui.GuiButton;
|
|||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import universalelectricity.core.UniversalElectricity;
|
||||
import universalelectricity.api.energy.UnitDisplay;
|
||||
import universalelectricity.core.UniversalElectricity;
|
||||
import universalelectricity.core.vector.Vector2;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class GuiCoercionDeriver extends GuiBase {
|
||||
private TileEntityCoercionDeriver tileEntity;
|
||||
|
||||
public GuiCoercionDeriver(final EntityPlayer player,
|
||||
final TileEntityCoercionDeriver tileentity) {
|
||||
public GuiCoercionDeriver(
|
||||
final EntityPlayer player, final TileEntityCoercionDeriver tileentity
|
||||
) {
|
||||
super(new ContainerCoercionDeriver(player, tileentity), tileentity);
|
||||
this.tileEntity = tileentity;
|
||||
}
|
||||
|
@ -27,18 +28,21 @@ public class GuiCoercionDeriver extends GuiBase {
|
|||
public void initGui() {
|
||||
super.textFieldPos = new Vector2(30.0, 43.0);
|
||||
super.initGui();
|
||||
this.buttonList.add(new GuiButton(1, this.width / 2 - 10,
|
||||
this.height / 2 - 28, 58, 20, "Derive"));
|
||||
this.buttonList.add(
|
||||
new GuiButton(1, this.width / 2 - 10, this.height / 2 - 28, 58, 20, "Derive")
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(final int x, final int y) {
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity.getInventoryName(),
|
||||
this.xSize / 2 - this.fontRendererObj.getStringWidth(
|
||||
this.tileEntity.getInventoryName()) /
|
||||
2,
|
||||
6, 4210752);
|
||||
this.tileEntity.getInventoryName(),
|
||||
this.xSize / 2
|
||||
- this.fontRendererObj.getStringWidth(this.tileEntity.getInventoryName())
|
||||
/ 2,
|
||||
6,
|
||||
4210752
|
||||
);
|
||||
this.drawTextWithTooltip("frequency", "%1:", 8, 30, x, y);
|
||||
super.textFieldFrequency.drawTextBox();
|
||||
GL11.glPushMatrix();
|
||||
|
@ -53,38 +57,58 @@ public class GuiCoercionDeriver extends GuiBase {
|
|||
}
|
||||
}
|
||||
this.fontRendererObj.drawString(
|
||||
1000.0 * UniversalElectricity.UE_RF_RATIO + " RF/s", 85, 30, 4210752);
|
||||
1000.0 * UniversalElectricity.UE_RF_RATIO + " RF/s", 85, 30, 4210752
|
||||
);
|
||||
this.fontRendererObj.drawString(
|
||||
1000.0 * UniversalElectricity.UE_IC2_RATIO + " EU/s", 85, 40, 4210752);
|
||||
1000.0 * UniversalElectricity.UE_IC2_RATIO + " EU/s", 85, 40, 4210752
|
||||
);
|
||||
this.fontRendererObj.drawString(
|
||||
UnitDisplay.getDisplayShort(
|
||||
1000.0, UnitDisplay.Unit.WATT),
|
||||
85, 50, 4210752);
|
||||
UnitDisplay.getDisplayShort(1000.0, UnitDisplay.Unit.WATT), 85, 50, 4210752
|
||||
);
|
||||
this.fontRendererObj.drawString(
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getVoltage(),
|
||||
UnitDisplay.Unit.VOLTAGE),
|
||||
85, 60, 4210752);
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getVoltage(), UnitDisplay.Unit.VOLTAGE
|
||||
),
|
||||
85,
|
||||
60,
|
||||
4210752
|
||||
);
|
||||
this.drawTextWithTooltip(
|
||||
"progress", "%1: " + (this.tileEntity.isActive() ? "Running" : "Idle"),
|
||||
8, 70, x, y);
|
||||
this.drawTextWithTooltip("fortron",
|
||||
"%1: " +
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES),
|
||||
8, 105, x, y);
|
||||
"progress",
|
||||
"%1: " + (this.tileEntity.isActive() ? "Running" : "Idle"),
|
||||
8,
|
||||
70,
|
||||
x,
|
||||
y
|
||||
);
|
||||
this.drawTextWithTooltip(
|
||||
"fortron",
|
||||
"%1: "
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronEnergy()
|
||||
* TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES
|
||||
),
|
||||
8,
|
||||
105,
|
||||
x,
|
||||
y
|
||||
);
|
||||
this.fontRendererObj.drawString(
|
||||
"§2+" + UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getProductionRate() * 20,
|
||||
UnitDisplay.Unit.JOULES),
|
||||
120, 117, 4210752);
|
||||
"§2+"
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getProductionRate() * 20, UnitDisplay.Unit.JOULES
|
||||
),
|
||||
120,
|
||||
117,
|
||||
4210752
|
||||
);
|
||||
super.drawGuiContainerForegroundLayer(x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(final float f, final int x,
|
||||
final int y) {
|
||||
protected void
|
||||
drawGuiContainerBackgroundLayer(final float f, final int x, final int y) {
|
||||
super.drawGuiContainerBackgroundLayer(f, x, y);
|
||||
this.drawSlot(153, 46);
|
||||
this.drawSlot(153, 66);
|
||||
|
@ -93,18 +117,23 @@ public class GuiCoercionDeriver extends GuiBase {
|
|||
this.drawSlot(8, 82, SlotType.BATTERY);
|
||||
this.drawSlot(28, 82);
|
||||
this.drawBar(50, 84, 1.0f);
|
||||
this.drawForce(8, 115,
|
||||
this.tileEntity.getFortronEnergy() /
|
||||
(float) this.tileEntity.getFortronCapacity());
|
||||
this.drawForce(
|
||||
8,
|
||||
115,
|
||||
this.tileEntity.getFortronEnergy()
|
||||
/ (float) this.tileEntity.getFortronCapacity()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(final GuiButton guibutton) {
|
||||
super.actionPerformed(guibutton);
|
||||
if (guibutton.id == 1) {
|
||||
ModularForceFieldSystem.channel.sendToServer(
|
||||
new PacketTile(PacketTile.Type.TOGGLE_MODE,
|
||||
new Vector3(this.tileEntity), new NBTTagCompound()));
|
||||
ModularForceFieldSystem.channel.sendToServer(new PacketTile(
|
||||
PacketTile.Type.TOGGLE_MODE,
|
||||
new Vector3(this.tileEntity),
|
||||
new NBTTagCompound()
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,140 +12,178 @@ import universalelectricity.core.vector.Vector2;
|
|||
import universalelectricity.prefab.vector.Region2;
|
||||
|
||||
public class GuiForceFieldProjector extends GuiBase {
|
||||
private TileEntityForceFieldProjector tileEntity;
|
||||
private TileEntityForceFieldProjector tileEntity;
|
||||
|
||||
public GuiForceFieldProjector(final EntityPlayer player,
|
||||
final TileEntityForceFieldProjector
|
||||
tileEntity) {
|
||||
super(new ContainerForceFieldProjector(player, tileEntity), tileEntity);
|
||||
this.tileEntity = tileEntity;
|
||||
}
|
||||
public GuiForceFieldProjector(
|
||||
final EntityPlayer player, final TileEntityForceFieldProjector tileEntity
|
||||
) {
|
||||
super(new ContainerForceFieldProjector(player, tileEntity), tileEntity);
|
||||
this.tileEntity = tileEntity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.textFieldPos = new Vector2(48.0, 91.0);
|
||||
super.initGui();
|
||||
super.tooltips.put(new Region2(new Vector2(117.0, 44.0),
|
||||
new Vector2(117.0, 44.0).add(18.0)),
|
||||
"Mode");
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(90.0, 17.0), new Vector2(90.0, 17.0).add(18.0)),
|
||||
"Up");
|
||||
super.tooltips.put(new Region2(new Vector2(144.0, 17.0),
|
||||
new Vector2(144.0, 17.0).add(18.0)),
|
||||
"Up");
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(90.0, 71.0), new Vector2(90.0, 71.0).add(18.0)),
|
||||
"Down");
|
||||
super.tooltips.put(new Region2(new Vector2(144.0, 71.0),
|
||||
new Vector2(144.0, 71.0).add(18.0)),
|
||||
"Down");
|
||||
super.tooltips.put(new Region2(new Vector2(108.0, 17.0),
|
||||
new Vector2(108.0, 17.0).add(18.0)),
|
||||
"Front");
|
||||
super.tooltips.put(new Region2(new Vector2(126.0, 17.0),
|
||||
new Vector2(126.0, 17.0).add(18.0)),
|
||||
"Front");
|
||||
super.tooltips.put(new Region2(new Vector2(108.0, 71.0),
|
||||
new Vector2(108.0, 71.0).add(18.0)),
|
||||
"Back");
|
||||
super.tooltips.put(new Region2(new Vector2(126.0, 71.0),
|
||||
new Vector2(126.0, 71.0).add(18.0)),
|
||||
"Back");
|
||||
super.tooltips.put(new Region2(new Vector2(90.0, 35.0),
|
||||
new Vector2(108.0, 35.0).add(18.0)),
|
||||
"Left");
|
||||
super.tooltips.put(new Region2(new Vector2(90.0, 53.0),
|
||||
new Vector2(108.0, 53.0).add(18.0)),
|
||||
"Left");
|
||||
super.tooltips.put(new Region2(new Vector2(144.0, 35.0),
|
||||
new Vector2(144.0, 35.0).add(18.0)),
|
||||
"Right");
|
||||
super.tooltips.put(new Region2(new Vector2(144.0, 53.0),
|
||||
new Vector2(144.0, 53.0).add(18.0)),
|
||||
"Right");
|
||||
}
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.textFieldPos = new Vector2(48.0, 91.0);
|
||||
super.initGui();
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(117.0, 44.0), new Vector2(117.0, 44.0).add(18.0)),
|
||||
"Mode"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(90.0, 17.0), new Vector2(90.0, 17.0).add(18.0)), "Up"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(144.0, 17.0), new Vector2(144.0, 17.0).add(18.0)),
|
||||
"Up"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(90.0, 71.0), new Vector2(90.0, 71.0).add(18.0)),
|
||||
"Down"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(144.0, 71.0), new Vector2(144.0, 71.0).add(18.0)),
|
||||
"Down"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(108.0, 17.0), new Vector2(108.0, 17.0).add(18.0)),
|
||||
"Front"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(126.0, 17.0), new Vector2(126.0, 17.0).add(18.0)),
|
||||
"Front"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(108.0, 71.0), new Vector2(108.0, 71.0).add(18.0)),
|
||||
"Back"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(126.0, 71.0), new Vector2(126.0, 71.0).add(18.0)),
|
||||
"Back"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(90.0, 35.0), new Vector2(108.0, 35.0).add(18.0)),
|
||||
"Left"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(90.0, 53.0), new Vector2(108.0, 53.0).add(18.0)),
|
||||
"Left"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(144.0, 35.0), new Vector2(144.0, 35.0).add(18.0)),
|
||||
"Right"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(144.0, 53.0), new Vector2(144.0, 53.0).add(18.0)),
|
||||
"Right"
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(final int x, final int y) {
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity.getInventoryName(),
|
||||
this.xSize / 2 - this.fontRendererObj.getStringWidth(
|
||||
this.tileEntity.getInventoryName()) /
|
||||
2,
|
||||
6, 4210752);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity
|
||||
.getDirection((IBlockAccess)this.tileEntity.getWorldObj(),
|
||||
this.tileEntity.xCoord, this.tileEntity.yCoord,
|
||||
this.tileEntity.zCoord)
|
||||
.name(),
|
||||
-63, 8, 4210752);
|
||||
GL11.glPopMatrix();
|
||||
this.drawTextWithTooltip("matrix", 32, 20, x, y);
|
||||
this.drawTextWithTooltip("frequency", "%1:", 8, 76, x, y);
|
||||
super.textFieldFrequency.drawTextBox();
|
||||
this.drawTextWithTooltip("fortron",
|
||||
"%1: " +
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES) +
|
||||
"/" +
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES),
|
||||
8, 110, x, y);
|
||||
this.fontRendererObj.drawString(
|
||||
"§4-" + UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCost() * 20,
|
||||
UnitDisplay.Unit.JOULES),
|
||||
120, 121, 4210752);
|
||||
super.drawGuiContainerForegroundLayer(x, y);
|
||||
}
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(final int x, final int y) {
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity.getInventoryName(),
|
||||
this.xSize / 2
|
||||
- this.fontRendererObj.getStringWidth(this.tileEntity.getInventoryName())
|
||||
/ 2,
|
||||
6,
|
||||
4210752
|
||||
);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity
|
||||
.getDirection(
|
||||
(IBlockAccess) this.tileEntity.getWorldObj(),
|
||||
this.tileEntity.xCoord,
|
||||
this.tileEntity.yCoord,
|
||||
this.tileEntity.zCoord
|
||||
)
|
||||
.name(),
|
||||
-63,
|
||||
8,
|
||||
4210752
|
||||
);
|
||||
GL11.glPopMatrix();
|
||||
this.drawTextWithTooltip("matrix", 32, 20, x, y);
|
||||
this.drawTextWithTooltip("frequency", "%1:", 8, 76, x, y);
|
||||
super.textFieldFrequency.drawTextBox();
|
||||
this.drawTextWithTooltip(
|
||||
"fortron",
|
||||
"%1: "
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronEnergy()
|
||||
* TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES
|
||||
)
|
||||
+ "/"
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCapacity()
|
||||
* TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES
|
||||
),
|
||||
8,
|
||||
110,
|
||||
x,
|
||||
y
|
||||
);
|
||||
this.fontRendererObj.drawString(
|
||||
"§4-"
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCost() * 20, UnitDisplay.Unit.JOULES
|
||||
),
|
||||
120,
|
||||
121,
|
||||
4210752
|
||||
);
|
||||
super.drawGuiContainerForegroundLayer(x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(final float f, final int x,
|
||||
final int y) {
|
||||
super.drawGuiContainerBackgroundLayer(f, x, y);
|
||||
this.drawSlot(9, 88);
|
||||
this.drawSlot(27, 88);
|
||||
this.drawSlot(117, 44, SlotType.NONE, 1.0f, 0.4f, 0.4f);
|
||||
for (int xSlot = 0; xSlot < 4; ++xSlot) {
|
||||
for (int ySlot = 0; ySlot < 4; ++ySlot) {
|
||||
if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2) &&
|
||||
(xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) {
|
||||
SlotType type = SlotType.NONE;
|
||||
if (xSlot == 0 && ySlot == 0) {
|
||||
type = SlotType.ARR_UP_LEFT;
|
||||
} else if (xSlot == 0 && ySlot == 3) {
|
||||
type = SlotType.ARR_DOWN_LEFT;
|
||||
} else if (xSlot == 3 && ySlot == 0) {
|
||||
type = SlotType.ARR_UP_RIGHT;
|
||||
} else if (xSlot == 3 && ySlot == 3) {
|
||||
type = SlotType.ARR_DOWN_RIGHT;
|
||||
} else if (ySlot == 0) {
|
||||
type = SlotType.ARR_UP;
|
||||
} else if (ySlot == 3) {
|
||||
type = SlotType.ARR_DOWN;
|
||||
} else if (xSlot == 0) {
|
||||
type = SlotType.ARR_LEFT;
|
||||
} else if (xSlot == 3) {
|
||||
type = SlotType.ARR_RIGHT;
|
||||
}
|
||||
this.drawSlot(90 + 18 * xSlot, 17 + 18 * ySlot, type);
|
||||
@Override
|
||||
protected void
|
||||
drawGuiContainerBackgroundLayer(final float f, final int x, final int y) {
|
||||
super.drawGuiContainerBackgroundLayer(f, x, y);
|
||||
this.drawSlot(9, 88);
|
||||
this.drawSlot(27, 88);
|
||||
this.drawSlot(117, 44, SlotType.NONE, 1.0f, 0.4f, 0.4f);
|
||||
for (int xSlot = 0; xSlot < 4; ++xSlot) {
|
||||
for (int ySlot = 0; ySlot < 4; ++ySlot) {
|
||||
if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2)
|
||||
&& (xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) {
|
||||
SlotType type = SlotType.NONE;
|
||||
if (xSlot == 0 && ySlot == 0) {
|
||||
type = SlotType.ARR_UP_LEFT;
|
||||
} else if (xSlot == 0 && ySlot == 3) {
|
||||
type = SlotType.ARR_DOWN_LEFT;
|
||||
} else if (xSlot == 3 && ySlot == 0) {
|
||||
type = SlotType.ARR_UP_RIGHT;
|
||||
} else if (xSlot == 3 && ySlot == 3) {
|
||||
type = SlotType.ARR_DOWN_RIGHT;
|
||||
} else if (ySlot == 0) {
|
||||
type = SlotType.ARR_UP;
|
||||
} else if (ySlot == 3) {
|
||||
type = SlotType.ARR_DOWN;
|
||||
} else if (xSlot == 0) {
|
||||
type = SlotType.ARR_LEFT;
|
||||
} else if (xSlot == 3) {
|
||||
type = SlotType.ARR_RIGHT;
|
||||
}
|
||||
this.drawSlot(90 + 18 * xSlot, 17 + 18 * ySlot, type);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int xSlot = 0; xSlot < 3; ++xSlot) {
|
||||
for (int ySlot = 0; ySlot < 2; ++ySlot) {
|
||||
this.drawSlot(18 + 18 * xSlot, 35 + 18 * ySlot);
|
||||
}
|
||||
}
|
||||
this.drawForce(
|
||||
8,
|
||||
120,
|
||||
Math.min(
|
||||
this.tileEntity.getFortronEnergy()
|
||||
/ (float) this.tileEntity.getFortronCapacity(),
|
||||
1.0f
|
||||
)
|
||||
);
|
||||
}
|
||||
for (int xSlot = 0; xSlot < 3; ++xSlot) {
|
||||
for (int ySlot = 0; ySlot < 2; ++ySlot) {
|
||||
this.drawSlot(18 + 18 * xSlot, 35 + 18 * ySlot);
|
||||
}
|
||||
}
|
||||
this.drawForce(8, 120,
|
||||
Math.min(this.tileEntity.getFortronEnergy() /
|
||||
(float)this.tileEntity.getFortronCapacity(),
|
||||
1.0f));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,8 +23,9 @@ import universalelectricity.prefab.vector.Region2;
|
|||
public class GuiForceManipulator extends GuiBase {
|
||||
private TileEntityForceManipulator tileEntity;
|
||||
|
||||
public GuiForceManipulator(final EntityPlayer player,
|
||||
final TileEntityForceManipulator tileEntity) {
|
||||
public GuiForceManipulator(
|
||||
final EntityPlayer player, final TileEntityForceManipulator tileEntity
|
||||
) {
|
||||
super(new ContainerForceManipulator(player, tileEntity), tileEntity);
|
||||
this.tileEntity = tileEntity;
|
||||
}
|
||||
|
@ -33,98 +34,141 @@ public class GuiForceManipulator extends GuiBase {
|
|||
public void initGui() {
|
||||
super.textFieldPos = new Vector2(111.0, 93.0);
|
||||
super.initGui();
|
||||
this.buttonList.add(new GuiButton(1, this.width / 2 - 60,
|
||||
this.height / 2 - 22, 40, 20, "Reset"));
|
||||
this.buttonList.add(
|
||||
new GuiIcon(2, this.width / 2 - 82, this.height / 2 - 82,
|
||||
new ItemStack[] { null, new ItemStack(Items.redstone),
|
||||
new ItemStack(Blocks.redstone_block) }));
|
||||
this.buttonList.add(
|
||||
new GuiIcon(3, this.width / 2 - 82, this.height / 2 - 60,
|
||||
new ItemStack[] { null, new ItemStack(Blocks.anvil) }));
|
||||
super.tooltips.put(new Region2(new Vector2(117.0, 44.0),
|
||||
new Vector2(117.0, 44.0).add(18.0)),
|
||||
"Mode");
|
||||
new GuiButton(1, this.width / 2 - 60, this.height / 2 - 22, 40, 20, "Reset")
|
||||
);
|
||||
this.buttonList.add(new GuiIcon(
|
||||
2,
|
||||
this.width / 2 - 82,
|
||||
this.height / 2 - 82,
|
||||
new ItemStack[] { null,
|
||||
new ItemStack(Items.redstone),
|
||||
new ItemStack(Blocks.redstone_block) }
|
||||
));
|
||||
this.buttonList.add(new GuiIcon(
|
||||
3,
|
||||
this.width / 2 - 82,
|
||||
this.height / 2 - 60,
|
||||
new ItemStack[] { null, new ItemStack(Blocks.anvil) }
|
||||
));
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(90.0, 17.0), new Vector2(90.0, 17.0).add(18.0)),
|
||||
"Up");
|
||||
super.tooltips.put(new Region2(new Vector2(144.0, 17.0),
|
||||
new Vector2(144.0, 17.0).add(18.0)),
|
||||
"Up");
|
||||
new Region2(new Vector2(117.0, 44.0), new Vector2(117.0, 44.0).add(18.0)),
|
||||
"Mode"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(90.0, 71.0), new Vector2(90.0, 71.0).add(18.0)),
|
||||
"Down");
|
||||
super.tooltips.put(new Region2(new Vector2(144.0, 71.0),
|
||||
new Vector2(144.0, 71.0).add(18.0)),
|
||||
"Down");
|
||||
super.tooltips.put(new Region2(new Vector2(108.0, 17.0),
|
||||
new Vector2(108.0, 17.0).add(18.0)),
|
||||
"Front");
|
||||
super.tooltips.put(new Region2(new Vector2(126.0, 17.0),
|
||||
new Vector2(126.0, 17.0).add(18.0)),
|
||||
"Front");
|
||||
super.tooltips.put(new Region2(new Vector2(108.0, 71.0),
|
||||
new Vector2(108.0, 71.0).add(18.0)),
|
||||
"Back");
|
||||
super.tooltips.put(new Region2(new Vector2(126.0, 71.0),
|
||||
new Vector2(126.0, 71.0).add(18.0)),
|
||||
"Back");
|
||||
super.tooltips.put(new Region2(new Vector2(90.0, 35.0),
|
||||
new Vector2(108.0, 35.0).add(18.0)),
|
||||
"Left");
|
||||
super.tooltips.put(new Region2(new Vector2(90.0, 53.0),
|
||||
new Vector2(108.0, 53.0).add(18.0)),
|
||||
"Left");
|
||||
super.tooltips.put(new Region2(new Vector2(144.0, 35.0),
|
||||
new Vector2(144.0, 35.0).add(18.0)),
|
||||
"Right");
|
||||
super.tooltips.put(new Region2(new Vector2(144.0, 53.0),
|
||||
new Vector2(144.0, 53.0).add(18.0)),
|
||||
"Right");
|
||||
new Region2(new Vector2(90.0, 17.0), new Vector2(90.0, 17.0).add(18.0)), "Up"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(144.0, 17.0), new Vector2(144.0, 17.0).add(18.0)),
|
||||
"Up"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(90.0, 71.0), new Vector2(90.0, 71.0).add(18.0)),
|
||||
"Down"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(144.0, 71.0), new Vector2(144.0, 71.0).add(18.0)),
|
||||
"Down"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(108.0, 17.0), new Vector2(108.0, 17.0).add(18.0)),
|
||||
"Front"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(126.0, 17.0), new Vector2(126.0, 17.0).add(18.0)),
|
||||
"Front"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(108.0, 71.0), new Vector2(108.0, 71.0).add(18.0)),
|
||||
"Back"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(126.0, 71.0), new Vector2(126.0, 71.0).add(18.0)),
|
||||
"Back"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(90.0, 35.0), new Vector2(108.0, 35.0).add(18.0)),
|
||||
"Left"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(90.0, 53.0), new Vector2(108.0, 53.0).add(18.0)),
|
||||
"Left"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(144.0, 35.0), new Vector2(144.0, 35.0).add(18.0)),
|
||||
"Right"
|
||||
);
|
||||
super.tooltips.put(
|
||||
new Region2(new Vector2(144.0, 53.0), new Vector2(144.0, 53.0).add(18.0)),
|
||||
"Right"
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(final int x, final int y) {
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity.getInventoryName(),
|
||||
this.xSize / 2 - this.fontRendererObj.getStringWidth(
|
||||
this.tileEntity.getInventoryName()) /
|
||||
2,
|
||||
6, 4210752);
|
||||
this.tileEntity.getInventoryName(),
|
||||
this.xSize / 2
|
||||
- this.fontRendererObj.getStringWidth(this.tileEntity.getInventoryName())
|
||||
/ 2,
|
||||
6,
|
||||
4210752
|
||||
);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity
|
||||
.getDirection((IBlockAccess) this.tileEntity.getWorldObj(),
|
||||
this.tileEntity.xCoord, this.tileEntity.yCoord,
|
||||
this.tileEntity.zCoord)
|
||||
.name(),
|
||||
-100, 10, 4210752);
|
||||
this.tileEntity
|
||||
.getDirection(
|
||||
(IBlockAccess) this.tileEntity.getWorldObj(),
|
||||
this.tileEntity.xCoord,
|
||||
this.tileEntity.yCoord,
|
||||
this.tileEntity.zCoord
|
||||
)
|
||||
.name(),
|
||||
-100,
|
||||
10,
|
||||
4210752
|
||||
);
|
||||
GL11.glPopMatrix();
|
||||
this.fontRendererObj.drawString("Anchor:", 30, 60, 4210752);
|
||||
if (this.tileEntity.anchor != null) {
|
||||
this.fontRendererObj.drawString(this.tileEntity.anchor.intX() + ", " +
|
||||
this.tileEntity.anchor.intY() + ", " +
|
||||
this.tileEntity.anchor.intZ(),
|
||||
30, 72, 4210752);
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity.anchor.intX() + ", " + this.tileEntity.anchor.intY()
|
||||
+ ", " + this.tileEntity.anchor.intZ(),
|
||||
30,
|
||||
72,
|
||||
4210752
|
||||
);
|
||||
}
|
||||
super.textFieldFrequency.drawTextBox();
|
||||
this.drawTextWithTooltip("fortron",
|
||||
"%1: " +
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES)
|
||||
+
|
||||
"/" +
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES),
|
||||
8, 110, x, y);
|
||||
this.drawTextWithTooltip(
|
||||
"fortron",
|
||||
"%1: "
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronEnergy()
|
||||
* TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES
|
||||
)
|
||||
+ "/"
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCapacity()
|
||||
* TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES
|
||||
),
|
||||
8,
|
||||
110,
|
||||
x,
|
||||
y
|
||||
);
|
||||
this.fontRendererObj.drawString(
|
||||
"§4-" + UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCost(),
|
||||
UnitDisplay.Unit.JOULES),
|
||||
120, 121, 4210752);
|
||||
"§4-"
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCost(), UnitDisplay.Unit.JOULES
|
||||
),
|
||||
120,
|
||||
121,
|
||||
4210752
|
||||
);
|
||||
super.drawGuiContainerForegroundLayer(x, y);
|
||||
}
|
||||
|
||||
|
@ -132,21 +176,20 @@ public class GuiForceManipulator extends GuiBase {
|
|||
public void updateScreen() {
|
||||
super.updateScreen();
|
||||
((GuiIcon) this.buttonList.get(2)).setIndex(this.tileEntity.displayMode);
|
||||
((GuiIcon) this.buttonList.get(3))
|
||||
.setIndex(this.tileEntity.doAnchor ? 1 : 0);
|
||||
((GuiIcon) this.buttonList.get(3)).setIndex(this.tileEntity.doAnchor ? 1 : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(final float f, final int x,
|
||||
final int y) {
|
||||
protected void
|
||||
drawGuiContainerBackgroundLayer(final float f, final int x, final int y) {
|
||||
super.drawGuiContainerBackgroundLayer(f, x, y);
|
||||
this.drawSlot(72, 90);
|
||||
this.drawSlot(90, 90);
|
||||
this.drawSlot(117, 44, SlotType.NONE, 1.0f, 0.4f, 0.4f);
|
||||
for (int xSlot = 0; xSlot < 4; ++xSlot) {
|
||||
for (int ySlot = 0; ySlot < 4; ++ySlot) {
|
||||
if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2) &&
|
||||
(xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) {
|
||||
if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2)
|
||||
&& (xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) {
|
||||
SlotType type = SlotType.NONE;
|
||||
if (xSlot == 0 && ySlot == 0) {
|
||||
type = SlotType.ARR_UP_LEFT;
|
||||
|
@ -174,10 +217,15 @@ public class GuiForceManipulator extends GuiBase {
|
|||
this.drawSlot(30 + 18 * xSlot, 18 + 18 * ySlot);
|
||||
}
|
||||
}
|
||||
this.drawForce(8, 120,
|
||||
Math.min(this.tileEntity.getFortronEnergy() /
|
||||
(float) this.tileEntity.getFortronCapacity(),
|
||||
1.0f));
|
||||
this.drawForce(
|
||||
8,
|
||||
120,
|
||||
Math.min(
|
||||
this.tileEntity.getFortronEnergy()
|
||||
/ (float) this.tileEntity.getFortronCapacity(),
|
||||
1.0f
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -189,7 +237,8 @@ public class GuiForceManipulator extends GuiBase {
|
|||
|
||||
if (guiButton.id == 1 || guiButton.id == 2 || guiButton.id == 3) {
|
||||
ModularForceFieldSystem.channel.sendToServer(new PacketTile(
|
||||
PacketTile.Type.TOGGLE_MODE, new Vector3(this.tileEntity), nbt));
|
||||
PacketTile.Type.TOGGLE_MODE, new Vector3(this.tileEntity), nbt
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,82 +16,110 @@ import universalelectricity.core.vector.Vector2;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class GuiFortronCapacitor extends GuiBase {
|
||||
private TileEntityFortronCapacitor tileEntity;
|
||||
private TileEntityFortronCapacitor tileEntity;
|
||||
|
||||
public GuiFortronCapacitor(final EntityPlayer player,
|
||||
final TileEntityFortronCapacitor tileentity) {
|
||||
super(new ContainerFortronCapacitor(player, tileentity), tileentity);
|
||||
this.tileEntity = tileentity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.textFieldPos = new Vector2(50.0, 76.0);
|
||||
super.initGui();
|
||||
this.buttonList.add(new GuiButtonPressTransferMode(
|
||||
1, this.width / 2 + 15, this.height / 2 - 37, this, this.tileEntity));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(final int x, final int y) {
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity.getInventoryName(),
|
||||
this.xSize / 2 - this.fontRendererObj.getStringWidth(
|
||||
this.tileEntity.getInventoryName()) /
|
||||
2,
|
||||
6, 4210752);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);
|
||||
this.drawTextWithTooltip("upgrade", -95, 140, x, y);
|
||||
GL11.glPopMatrix();
|
||||
this.drawTextWithTooltip("linkedDevice",
|
||||
"%1: " + this.tileEntity.getLinkedDevices().size(),
|
||||
8, 28, x, y);
|
||||
this.drawTextWithTooltip("transmissionRate",
|
||||
"%1: " +
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getTransmissionRate(),
|
||||
UnitDisplay.Unit.JOULES),
|
||||
8, 40, x, y);
|
||||
this.drawTextWithTooltip(
|
||||
"range", "%1: " + this.tileEntity.getTransmissionRange(), 8, 52, x, y);
|
||||
this.drawTextWithTooltip("frequency", "%1:", 8, 63, x, y);
|
||||
super.textFieldFrequency.drawTextBox();
|
||||
this.drawTextWithTooltip("fortron", "%1:", 8, 95, x, y);
|
||||
this.fontRendererObj.drawString(
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES) +
|
||||
"/" +
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES),
|
||||
8, 105, 4210752);
|
||||
super.drawGuiContainerForegroundLayer(x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(final float f, final int x,
|
||||
final int y) {
|
||||
super.drawGuiContainerBackgroundLayer(f, x, y);
|
||||
this.drawSlot(153, 46);
|
||||
this.drawSlot(153, 66);
|
||||
this.drawSlot(153, 86);
|
||||
this.drawSlot(8, 73);
|
||||
this.drawSlot(26, 73);
|
||||
this.drawForce(8, 115,
|
||||
Math.min(this.tileEntity.getFortronEnergy() /
|
||||
(float)this.tileEntity.getFortronCapacity(),
|
||||
1.0f));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(final GuiButton guibutton) {
|
||||
super.actionPerformed(guibutton);
|
||||
if (guibutton.id == 1) {
|
||||
ModularForceFieldSystem.channel.sendToServer(
|
||||
new PacketTile(PacketTile.Type.TOGGLE_MODE,
|
||||
new Vector3(this.tileEntity), new NBTTagCompound()));
|
||||
public GuiFortronCapacitor(
|
||||
final EntityPlayer player, final TileEntityFortronCapacitor tileentity
|
||||
) {
|
||||
super(new ContainerFortronCapacitor(player, tileentity), tileentity);
|
||||
this.tileEntity = tileentity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.textFieldPos = new Vector2(50.0, 76.0);
|
||||
super.initGui();
|
||||
this.buttonList.add(new GuiButtonPressTransferMode(
|
||||
1, this.width / 2 + 15, this.height / 2 - 37, this, this.tileEntity
|
||||
));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(final int x, final int y) {
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity.getInventoryName(),
|
||||
this.xSize / 2
|
||||
- this.fontRendererObj.getStringWidth(this.tileEntity.getInventoryName())
|
||||
/ 2,
|
||||
6,
|
||||
4210752
|
||||
);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);
|
||||
this.drawTextWithTooltip("upgrade", -95, 140, x, y);
|
||||
GL11.glPopMatrix();
|
||||
this.drawTextWithTooltip(
|
||||
"linkedDevice",
|
||||
"%1: " + this.tileEntity.getLinkedDevices().size(),
|
||||
8,
|
||||
28,
|
||||
x,
|
||||
y
|
||||
);
|
||||
this.drawTextWithTooltip(
|
||||
"transmissionRate",
|
||||
"%1: "
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getTransmissionRate(), UnitDisplay.Unit.JOULES
|
||||
),
|
||||
8,
|
||||
40,
|
||||
x,
|
||||
y
|
||||
);
|
||||
this.drawTextWithTooltip(
|
||||
"range", "%1: " + this.tileEntity.getTransmissionRange(), 8, 52, x, y
|
||||
);
|
||||
this.drawTextWithTooltip("frequency", "%1:", 8, 63, x, y);
|
||||
super.textFieldFrequency.drawTextBox();
|
||||
this.drawTextWithTooltip("fortron", "%1:", 8, 95, x, y);
|
||||
this.fontRendererObj.drawString(
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronEnergy()
|
||||
* TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES
|
||||
) + "/"
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCapacity()
|
||||
* TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES
|
||||
),
|
||||
8,
|
||||
105,
|
||||
4210752
|
||||
);
|
||||
super.drawGuiContainerForegroundLayer(x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void
|
||||
drawGuiContainerBackgroundLayer(final float f, final int x, final int y) {
|
||||
super.drawGuiContainerBackgroundLayer(f, x, y);
|
||||
this.drawSlot(153, 46);
|
||||
this.drawSlot(153, 66);
|
||||
this.drawSlot(153, 86);
|
||||
this.drawSlot(8, 73);
|
||||
this.drawSlot(26, 73);
|
||||
this.drawForce(
|
||||
8,
|
||||
115,
|
||||
Math.min(
|
||||
this.tileEntity.getFortronEnergy()
|
||||
/ (float) this.tileEntity.getFortronCapacity(),
|
||||
1.0f
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(final GuiButton guibutton) {
|
||||
super.actionPerformed(guibutton);
|
||||
if (guibutton.id == 1) {
|
||||
ModularForceFieldSystem.channel.sendToServer(new PacketTile(
|
||||
PacketTile.Type.TOGGLE_MODE,
|
||||
new Vector3(this.tileEntity),
|
||||
new NBTTagCompound()
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,93 +14,119 @@ import universalelectricity.core.vector.Vector2;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class GuiInterdictionMatrix extends GuiBase {
|
||||
private TileEntityInterdictionMatrix tileEntity;
|
||||
private TileEntityInterdictionMatrix tileEntity;
|
||||
|
||||
public GuiInterdictionMatrix(final EntityPlayer player,
|
||||
final TileEntityInterdictionMatrix tileEntity) {
|
||||
super(new ContainerInterdictionMatrix(player, tileEntity), tileEntity);
|
||||
this.tileEntity = tileEntity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.textFieldPos = new Vector2(110.0, 91.0);
|
||||
super.initGui();
|
||||
this.buttonList.add(new GuiButton(1, this.width / 2 - 80,
|
||||
this.height / 2 - 65, 50, 20, "Banned"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(final GuiButton guiButton) {
|
||||
super.actionPerformed(guiButton);
|
||||
if (guiButton.id == 1) {
|
||||
ModularForceFieldSystem.channel.sendToServer(
|
||||
new PacketTile(PacketTile.Type.TOGGLE_MODE,
|
||||
new Vector3(this.tileEntity), new NBTTagCompound()));
|
||||
public GuiInterdictionMatrix(
|
||||
final EntityPlayer player, final TileEntityInterdictionMatrix tileEntity
|
||||
) {
|
||||
super(new ContainerInterdictionMatrix(player, tileEntity), tileEntity);
|
||||
this.tileEntity = tileEntity;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(final int x, final int y) {
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity.getInventoryName(),
|
||||
this.xSize / 2 - this.fontRendererObj.getStringWidth(
|
||||
this.tileEntity.getInventoryName()) /
|
||||
2,
|
||||
6, 4210752);
|
||||
this.drawTextWithTooltip("warn", "%1: " + this.tileEntity.getWarningRange(),
|
||||
35, 19, x, y);
|
||||
this.drawTextWithTooltip(
|
||||
"action", "%1: " + this.tileEntity.getActionRange(), 100, 19, x, y);
|
||||
this.drawTextWithTooltip("filterMode", "%1:", 9, 32, x, y);
|
||||
if (!this.tileEntity.isBanMode()) {
|
||||
if (this.buttonList.get(1) instanceof GuiButton) {
|
||||
((GuiButton)this.buttonList.get(1)).displayString = "Allowed";
|
||||
}
|
||||
} else if (this.buttonList.get(1) instanceof GuiButton) {
|
||||
((GuiButton)this.buttonList.get(1)).displayString = "Banned";
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.textFieldPos = new Vector2(110.0, 91.0);
|
||||
super.initGui();
|
||||
this.buttonList.add(
|
||||
new GuiButton(1, this.width / 2 - 80, this.height / 2 - 65, 50, 20, "Banned")
|
||||
);
|
||||
}
|
||||
this.drawTextWithTooltip("frequency", "%1:", 8, 93, x, y);
|
||||
super.textFieldFrequency.drawTextBox();
|
||||
this.drawTextWithTooltip("fortron",
|
||||
"%1: " +
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES) +
|
||||
"/" +
|
||||
UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES),
|
||||
8, 110, x, y);
|
||||
this.fontRendererObj.drawString(
|
||||
"§4-" + UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCost() * 20,
|
||||
UnitDisplay.Unit.JOULES),
|
||||
120, 121, 4210752);
|
||||
super.drawGuiContainerForegroundLayer(x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(final float var1, final int x,
|
||||
final int y) {
|
||||
super.drawGuiContainerBackgroundLayer(var1, x, y);
|
||||
for (int var2 = 0; var2 < 2; ++var2) {
|
||||
for (int var3 = 0; var3 < 4; ++var3) {
|
||||
this.drawSlot(98 + var3 * 18, 30 + var2 * 18);
|
||||
}
|
||||
@Override
|
||||
protected void actionPerformed(final GuiButton guiButton) {
|
||||
super.actionPerformed(guiButton);
|
||||
if (guiButton.id == 1) {
|
||||
ModularForceFieldSystem.channel.sendToServer(new PacketTile(
|
||||
PacketTile.Type.TOGGLE_MODE,
|
||||
new Vector3(this.tileEntity),
|
||||
new NBTTagCompound()
|
||||
));
|
||||
}
|
||||
}
|
||||
for (int var4 = 0; var4 < 9; ++var4) {
|
||||
if (this.tileEntity.isBanMode()) {
|
||||
this.drawSlot(8 + var4 * 18, 68, SlotType.NONE, 1.0f, 0.8f, 0.8f);
|
||||
} else {
|
||||
this.drawSlot(8 + var4 * 18, 68, SlotType.NONE, 0.8f, 1.0f, 0.8f);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(final int x, final int y) {
|
||||
this.fontRendererObj.drawString(
|
||||
this.tileEntity.getInventoryName(),
|
||||
this.xSize / 2
|
||||
- this.fontRendererObj.getStringWidth(this.tileEntity.getInventoryName())
|
||||
/ 2,
|
||||
6,
|
||||
4210752
|
||||
);
|
||||
this.drawTextWithTooltip(
|
||||
"warn", "%1: " + this.tileEntity.getWarningRange(), 35, 19, x, y
|
||||
);
|
||||
this.drawTextWithTooltip(
|
||||
"action", "%1: " + this.tileEntity.getActionRange(), 100, 19, x, y
|
||||
);
|
||||
this.drawTextWithTooltip("filterMode", "%1:", 9, 32, x, y);
|
||||
if (!this.tileEntity.isBanMode()) {
|
||||
if (this.buttonList.get(1) instanceof GuiButton) {
|
||||
((GuiButton) this.buttonList.get(1)).displayString = "Allowed";
|
||||
}
|
||||
} else if (this.buttonList.get(1) instanceof GuiButton) {
|
||||
((GuiButton) this.buttonList.get(1)).displayString = "Banned";
|
||||
}
|
||||
this.drawTextWithTooltip("frequency", "%1:", 8, 93, x, y);
|
||||
super.textFieldFrequency.drawTextBox();
|
||||
this.drawTextWithTooltip(
|
||||
"fortron",
|
||||
"%1: "
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronEnergy()
|
||||
* TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES
|
||||
)
|
||||
+ "/"
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCapacity()
|
||||
* TileEntityCoercionDeriver.FORTRON_UE_RATIO,
|
||||
UnitDisplay.Unit.JOULES
|
||||
),
|
||||
8,
|
||||
110,
|
||||
x,
|
||||
y
|
||||
);
|
||||
this.fontRendererObj.drawString(
|
||||
"§4-"
|
||||
+ UnitDisplay.getDisplayShort(
|
||||
this.tileEntity.getFortronCost() * 20, UnitDisplay.Unit.JOULES
|
||||
),
|
||||
120,
|
||||
121,
|
||||
4210752
|
||||
);
|
||||
super.drawGuiContainerForegroundLayer(x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void
|
||||
drawGuiContainerBackgroundLayer(final float var1, final int x, final int y) {
|
||||
super.drawGuiContainerBackgroundLayer(var1, x, y);
|
||||
for (int var2 = 0; var2 < 2; ++var2) {
|
||||
for (int var3 = 0; var3 < 4; ++var3) {
|
||||
this.drawSlot(98 + var3 * 18, 30 + var2 * 18);
|
||||
}
|
||||
}
|
||||
for (int var4 = 0; var4 < 9; ++var4) {
|
||||
if (this.tileEntity.isBanMode()) {
|
||||
this.drawSlot(8 + var4 * 18, 68, SlotType.NONE, 1.0f, 0.8f, 0.8f);
|
||||
} else {
|
||||
this.drawSlot(8 + var4 * 18, 68, SlotType.NONE, 0.8f, 1.0f, 0.8f);
|
||||
}
|
||||
}
|
||||
this.drawSlot(68, 88);
|
||||
this.drawSlot(86, 88);
|
||||
this.drawForce(
|
||||
8,
|
||||
120,
|
||||
Math.min(
|
||||
this.tileEntity.getFortronEnergy()
|
||||
/ (float) this.tileEntity.getFortronCapacity(),
|
||||
1.0f
|
||||
)
|
||||
);
|
||||
}
|
||||
this.drawSlot(68, 88);
|
||||
this.drawSlot(86, 88);
|
||||
this.drawForce(8, 120,
|
||||
Math.min(this.tileEntity.getFortronEnergy() /
|
||||
(float)this.tileEntity.getFortronCapacity(),
|
||||
1.0f));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,9 +17,14 @@ public class GuiButtonPress extends GuiButton {
|
|||
public boolean stuck;
|
||||
private GuiBase mainGui;
|
||||
|
||||
public GuiButtonPress(final int id, final int x, final int y,
|
||||
final Vector2 offset, final GuiBase mainGui,
|
||||
final String name) {
|
||||
public GuiButtonPress(
|
||||
final int id,
|
||||
final int x,
|
||||
final int y,
|
||||
final Vector2 offset,
|
||||
final GuiBase mainGui,
|
||||
final String name
|
||||
) {
|
||||
super(id, x, y, 18, 18, name);
|
||||
this.offset = new Vector2();
|
||||
this.stuck = false;
|
||||
|
@ -27,13 +32,17 @@ public class GuiButtonPress extends GuiButton {
|
|||
this.mainGui = mainGui;
|
||||
}
|
||||
|
||||
public GuiButtonPress(final int id, final int x, final int y,
|
||||
final Vector2 offset, final GuiBase mainGui) {
|
||||
public GuiButtonPress(
|
||||
final int id,
|
||||
final int x,
|
||||
final int y,
|
||||
final Vector2 offset,
|
||||
final GuiBase mainGui
|
||||
) {
|
||||
this(id, x, y, offset, mainGui, "");
|
||||
}
|
||||
|
||||
public GuiButtonPress(final int id, final int x, final int y,
|
||||
final Vector2 offset) {
|
||||
public GuiButtonPress(final int id, final int x, final int y, final Vector2 offset) {
|
||||
this(id, x, y, offset, null, "");
|
||||
}
|
||||
|
||||
|
@ -42,48 +51,62 @@ public class GuiButtonPress extends GuiButton {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void drawButton(final Minecraft minecraft, final int x,
|
||||
final int y) {
|
||||
public void drawButton(final Minecraft minecraft, final int x, final int y) {
|
||||
if (this.visible) {
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/gui/gui_button.png"));
|
||||
new ResourceLocation("mffs", "textures/gui/gui_button.png")
|
||||
);
|
||||
if (this.stuck) {
|
||||
GL11.glColor4f(0.6f, 0.6f, 0.6f, 1.0f);
|
||||
} else if (this.isPointInRegion(this.xPosition, this.yPosition,
|
||||
this.width, this.height, x, y)) {
|
||||
} else if (this.isPointInRegion(
|
||||
this.xPosition, this.yPosition, this.width, this.height, x, y
|
||||
)) {
|
||||
GL11.glColor4f(0.85f, 0.85f, 0.85f, 1.0f);
|
||||
} else {
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
}
|
||||
this.drawTexturedModalRect(this.xPosition, this.yPosition,
|
||||
this.offset.intX(), this.offset.intY(),
|
||||
this.width, this.height);
|
||||
this.drawTexturedModalRect(
|
||||
this.xPosition,
|
||||
this.yPosition,
|
||||
this.offset.intX(),
|
||||
this.offset.intY(),
|
||||
this.width,
|
||||
this.height
|
||||
);
|
||||
this.mouseDragged(minecraft, x, y);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseDragged(final Minecraft minecraft, final int x,
|
||||
final int y) {
|
||||
if (this.mainGui != null && this.displayString != null &&
|
||||
this.displayString.length() > 0 &&
|
||||
this.isPointInRegion(this.xPosition, this.yPosition, this.width,
|
||||
this.height, x, y)) {
|
||||
final String title = TranslationHelper.getLocal("gui." + this.displayString + ".name");
|
||||
this.mainGui.tooltip = TranslationHelper.getLocal("gui." + this.displayString + ".tooltip");
|
||||
protected void mouseDragged(final Minecraft minecraft, final int x, final int y) {
|
||||
if (this.mainGui != null && this.displayString != null
|
||||
&& this.displayString.length() > 0
|
||||
&& this.isPointInRegion(
|
||||
this.xPosition, this.yPosition, this.width, this.height, x, y
|
||||
)) {
|
||||
final String title
|
||||
= TranslationHelper.getLocal("gui." + this.displayString + ".name");
|
||||
this.mainGui.tooltip
|
||||
= TranslationHelper.getLocal("gui." + this.displayString + ".tooltip");
|
||||
if (title != null && title.length() > 0) {
|
||||
this.mainGui.tooltip = title + ": " + this.mainGui.tooltip;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean isPointInRegion(final int x, final int y, final int width,
|
||||
final int height, int checkX, int checkY) {
|
||||
protected boolean isPointInRegion(
|
||||
final int x,
|
||||
final int y,
|
||||
final int width,
|
||||
final int height,
|
||||
int checkX,
|
||||
int checkY
|
||||
) {
|
||||
final int var7 = 0;
|
||||
final int var8 = 0;
|
||||
checkX -= var7;
|
||||
checkY -= var8;
|
||||
return checkX >= x - 1 && checkX < x + width + 1 && checkY >= y - 1 &&
|
||||
checkY < y + height + 1;
|
||||
return checkX >= x - 1 && checkX < x + width + 1 && checkY >= y - 1
|
||||
&& checkY < y + height + 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,23 +1,28 @@
|
|||
//
|
||||
//
|
||||
// Decompiled by Procyon v0.6.0
|
||||
//
|
||||
//
|
||||
|
||||
package mffs.gui.button;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import universalelectricity.core.vector.Vector2;
|
||||
import mffs.base.GuiBase;
|
||||
import mffs.tileentity.TileEntityFortronCapacitor;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import universalelectricity.core.vector.Vector2;
|
||||
|
||||
public class GuiButtonPressTransferMode extends GuiButtonPress
|
||||
{
|
||||
public class GuiButtonPressTransferMode extends GuiButtonPress {
|
||||
private TileEntityFortronCapacitor tileEntity;
|
||||
|
||||
public GuiButtonPressTransferMode(final int id, final int x, final int y, final GuiBase mainGui, final TileEntityFortronCapacitor tileEntity) {
|
||||
|
||||
public GuiButtonPressTransferMode(
|
||||
final int id,
|
||||
final int x,
|
||||
final int y,
|
||||
final GuiBase mainGui,
|
||||
final TileEntityFortronCapacitor tileEntity
|
||||
) {
|
||||
super(id, x, y, new Vector2(), mainGui);
|
||||
this.tileEntity = tileEntity;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void drawButton(final Minecraft minecraft, final int x, final int y) {
|
||||
String transferName = this.tileEntity.getTransferMode().name().toLowerCase();
|
||||
|
|
|
@ -16,8 +16,9 @@ public class GuiIcon extends GuiButton {
|
|||
public ItemStack[] itemStacks;
|
||||
private int index;
|
||||
|
||||
public GuiIcon(final int par1, final int par2, final int par3,
|
||||
final ItemStack... itemStacks) {
|
||||
public GuiIcon(
|
||||
final int par1, final int par2, final int par3, final ItemStack... itemStacks
|
||||
) {
|
||||
super(par1, par2, par3, 20, 20, "");
|
||||
this.index = 0;
|
||||
this.itemStacks = itemStacks;
|
||||
|
@ -30,19 +31,24 @@ public class GuiIcon extends GuiButton {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void drawButton(final Minecraft par1Minecraft, final int par2,
|
||||
final int par3) {
|
||||
public void
|
||||
drawButton(final Minecraft par1Minecraft, final int par2, final int par3) {
|
||||
super.drawButton(par1Minecraft, par2, par3);
|
||||
if (this.visible && this.itemStacks[this.index] != null) {
|
||||
int yDisplacement = 2;
|
||||
if (this.itemStacks[this.index].getItem() == Item.getItemFromBlock(Blocks.torch) ||
|
||||
this.itemStacks[this.index].getItem() == Item.getItemFromBlock(Blocks.redstone_torch)) {
|
||||
if (this.itemStacks[this.index].getItem()
|
||||
== Item.getItemFromBlock(Blocks.torch)
|
||||
|| this.itemStacks[this.index].getItem()
|
||||
== Item.getItemFromBlock(Blocks.redstone_torch)) {
|
||||
yDisplacement = 0;
|
||||
} else if (this.itemStacks[this.index].getItem() instanceof ItemBlock) {
|
||||
yDisplacement = 3;
|
||||
}
|
||||
this.drawItemStack(this.itemStacks[this.index], this.xPosition,
|
||||
this.yPosition + yDisplacement);
|
||||
this.drawItemStack(
|
||||
this.itemStacks[this.index],
|
||||
this.xPosition,
|
||||
this.yPosition + yDisplacement
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -56,9 +62,11 @@ public class GuiIcon extends GuiButton {
|
|||
this.zLevel = 500.0f;
|
||||
GuiIcon.itemRenderer.zLevel = 500.0f;
|
||||
GuiIcon.itemRenderer.renderItemAndEffectIntoGUI(
|
||||
fontRenderer, mc.renderEngine, itemStack, x, y);
|
||||
GuiIcon.itemRenderer.renderItemOverlayIntoGUI(fontRenderer, mc.renderEngine,
|
||||
itemStack, x, y);
|
||||
fontRenderer, mc.renderEngine, itemStack, x, y
|
||||
);
|
||||
GuiIcon.itemRenderer.renderItemOverlayIntoGUI(
|
||||
fontRenderer, mc.renderEngine, itemStack, x, y
|
||||
);
|
||||
this.zLevel = 0.0f;
|
||||
GuiIcon.itemRenderer.zLevel = 0.0f;
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
|
|
|
@ -2,6 +2,7 @@ package mffs.item;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import mffs.MFFSHelper;
|
||||
import mffs.ModularForceFieldSystem;
|
||||
import mffs.api.card.ICardLink;
|
||||
|
@ -23,123 +24,164 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
|||
import universalelectricity.api.energy.UnitDisplay;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ItemRemoteController
|
||||
extends ItemCardFrequency implements ICardLink {
|
||||
public ItemRemoteController() { super("remoteController"); }
|
||||
|
||||
@Override
|
||||
public void addInformation(final ItemStack itemStack,
|
||||
final EntityPlayer player, final List list,
|
||||
final boolean b) {
|
||||
super.addInformation(itemStack, player, list, b);
|
||||
final Vector3 position = this.getLink(itemStack);
|
||||
if (position != null) {
|
||||
final Block blockId = position.getBlock(player.worldObj);
|
||||
if (blockId != null) {
|
||||
list.add("Linked with: " + blockId.getLocalizedName());
|
||||
list.add(position.intX() + ", " + position.intY() + ", " +
|
||||
position.intZ());
|
||||
return;
|
||||
}
|
||||
public class ItemRemoteController extends ItemCardFrequency implements ICardLink {
|
||||
public ItemRemoteController() {
|
||||
super("remoteController");
|
||||
}
|
||||
list.add("Not linked.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemUse(final ItemStack itemStack, final EntityPlayer player,
|
||||
final World world, final int x, final int y,
|
||||
final int z, final int side, final float hitX,
|
||||
final float hitY, final float hitZ) {
|
||||
if (player.isSneaking()) {
|
||||
if (!world.isRemote) {
|
||||
final Vector3 vector = new Vector3(x, y, z);
|
||||
this.setLink(itemStack, vector);
|
||||
if (vector.getBlock((IBlockAccess)world) != null) {
|
||||
player.addChatMessage(new ChatComponentText(
|
||||
"Linked remote to position: " + x + ", " + y + ", " + z +
|
||||
" with block: " + vector.getBlock(world).getLocalizedName()));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack onItemRightClick(final ItemStack itemStack,
|
||||
final World world,
|
||||
final EntityPlayer entityPlayer) {
|
||||
if (!entityPlayer.isSneaking()) {
|
||||
final Vector3 position = this.getLink(itemStack);
|
||||
if (position != null) {
|
||||
final Block blockId = position.getBlock(world);
|
||||
if (blockId != null) {
|
||||
final Chunk chunk =
|
||||
world.getChunkFromBlockCoords(position.intX(), position.intZ());
|
||||
if (chunk != null && chunk.isChunkLoaded &&
|
||||
(MFFSHelper.hasPermission(
|
||||
world, position,
|
||||
PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK,
|
||||
entityPlayer) ||
|
||||
MFFSHelper.hasPermission(
|
||||
world, position, Permission.REMOTE_CONTROL, entityPlayer))) {
|
||||
final double requiredEnergy =
|
||||
Vector3.distance(new Vector3((Entity)entityPlayer), position) *
|
||||
10.0;
|
||||
int receivedEnergy = 0;
|
||||
final Set<IFortronFrequency> fortronTiles =
|
||||
FrequencyGrid.instance().getFortronTiles(
|
||||
world, new Vector3((Entity)entityPlayer), 50,
|
||||
this.getFrequency(itemStack));
|
||||
for (final IFortronFrequency fortronTile : fortronTiles) {
|
||||
final int consumedEnergy = fortronTile.requestFortron(
|
||||
(int)Math.ceil(requiredEnergy / fortronTiles.size()), true);
|
||||
if (consumedEnergy > 0) {
|
||||
if (world.isRemote) {
|
||||
ModularForceFieldSystem.proxy.renderBeam(
|
||||
world,
|
||||
new Vector3((Entity)entityPlayer)
|
||||
.add(new Vector3(
|
||||
0.0, entityPlayer.getEyeHeight() - 0.2, 0.0)),
|
||||
new Vector3((TileEntity)fortronTile).add(0.5), 0.6f, 0.6f,
|
||||
1.0f, 20);
|
||||
}
|
||||
receivedEnergy += consumedEnergy;
|
||||
}
|
||||
if (receivedEnergy >= requiredEnergy) {
|
||||
try {
|
||||
blockId.onBlockActivated(world, position.intX(),
|
||||
position.intY(), position.intZ(),
|
||||
entityPlayer, 0, 0.0f, 0.0f, 0.0f);
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return itemStack;
|
||||
}
|
||||
@Override
|
||||
public void addInformation(
|
||||
final ItemStack itemStack,
|
||||
final EntityPlayer player,
|
||||
final List list,
|
||||
final boolean b
|
||||
) {
|
||||
super.addInformation(itemStack, player, list, b);
|
||||
final Vector3 position = this.getLink(itemStack);
|
||||
if (position != null) {
|
||||
final Block blockId = position.getBlock(player.worldObj);
|
||||
if (blockId != null) {
|
||||
list.add("Linked with: " + blockId.getLocalizedName());
|
||||
list.add(
|
||||
position.intX() + ", " + position.intY() + ", " + position.intZ()
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
list.add("Not linked.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemUse(
|
||||
final ItemStack itemStack,
|
||||
final EntityPlayer player,
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final int side,
|
||||
final float hitX,
|
||||
final float hitY,
|
||||
final float hitZ
|
||||
) {
|
||||
if (player.isSneaking()) {
|
||||
if (!world.isRemote) {
|
||||
entityPlayer.addChatMessage(new ChatComponentText(
|
||||
"Unable to harness " +
|
||||
UnitDisplay.getDisplay(
|
||||
requiredEnergy, UnitDisplay.Unit.JOULES) +
|
||||
" from the Fortron field."));
|
||||
final Vector3 vector = new Vector3(x, y, z);
|
||||
this.setLink(itemStack, vector);
|
||||
if (vector.getBlock((IBlockAccess) world) != null) {
|
||||
player.addChatMessage(new ChatComponentText(
|
||||
"Linked remote to position: " + x + ", " + y + ", " + z
|
||||
+ " with block: " + vector.getBlock(world).getLocalizedName()
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLink(final ItemStack itemStack, final Vector3 position) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
nbt.setTag("position", position.writeToNBT(new NBTTagCompound()));
|
||||
}
|
||||
@Override
|
||||
public ItemStack onItemRightClick(
|
||||
final ItemStack itemStack, final World world, final EntityPlayer entityPlayer
|
||||
) {
|
||||
if (!entityPlayer.isSneaking()) {
|
||||
final Vector3 position = this.getLink(itemStack);
|
||||
if (position != null) {
|
||||
final Block blockId = position.getBlock(world);
|
||||
if (blockId != null) {
|
||||
final Chunk chunk
|
||||
= world.getChunkFromBlockCoords(position.intX(), position.intZ());
|
||||
if (chunk != null && chunk.isChunkLoaded
|
||||
&& (MFFSHelper.hasPermission(
|
||||
world,
|
||||
position,
|
||||
PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK,
|
||||
entityPlayer
|
||||
)
|
||||
|| MFFSHelper.hasPermission(
|
||||
world, position, Permission.REMOTE_CONTROL, entityPlayer
|
||||
))) {
|
||||
final double requiredEnergy
|
||||
= Vector3.distance(
|
||||
new Vector3((Entity) entityPlayer), position
|
||||
)
|
||||
* 10.0;
|
||||
int receivedEnergy = 0;
|
||||
final Set<IFortronFrequency> fortronTiles
|
||||
= FrequencyGrid.instance().getFortronTiles(
|
||||
world,
|
||||
new Vector3((Entity) entityPlayer),
|
||||
50,
|
||||
this.getFrequency(itemStack)
|
||||
);
|
||||
for (final IFortronFrequency fortronTile : fortronTiles) {
|
||||
final int consumedEnergy = fortronTile.requestFortron(
|
||||
(int) Math.ceil(requiredEnergy / fortronTiles.size()),
|
||||
true
|
||||
);
|
||||
if (consumedEnergy > 0) {
|
||||
if (world.isRemote) {
|
||||
ModularForceFieldSystem.proxy.renderBeam(
|
||||
world,
|
||||
new Vector3((Entity) entityPlayer)
|
||||
.add(new Vector3(
|
||||
0.0,
|
||||
entityPlayer.getEyeHeight() - 0.2,
|
||||
0.0
|
||||
)),
|
||||
new Vector3((TileEntity) fortronTile).add(0.5),
|
||||
0.6f,
|
||||
0.6f,
|
||||
1.0f,
|
||||
20
|
||||
);
|
||||
}
|
||||
receivedEnergy += consumedEnergy;
|
||||
}
|
||||
if (receivedEnergy >= requiredEnergy) {
|
||||
try {
|
||||
blockId.onBlockActivated(
|
||||
world,
|
||||
position.intX(),
|
||||
position.intY(),
|
||||
position.intZ(),
|
||||
entityPlayer,
|
||||
0,
|
||||
0.0f,
|
||||
0.0f,
|
||||
0.0f
|
||||
);
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return itemStack;
|
||||
}
|
||||
}
|
||||
if (!world.isRemote) {
|
||||
entityPlayer.addChatMessage(new ChatComponentText(
|
||||
"Unable to harness "
|
||||
+ UnitDisplay.getDisplay(
|
||||
requiredEnergy, UnitDisplay.Unit.JOULES
|
||||
)
|
||||
+ " from the Fortron field."
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector3 getLink(final ItemStack itemStack) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
return Vector3.readFromNBT(nbt.getCompoundTag("position"));
|
||||
}
|
||||
@Override
|
||||
public void setLink(final ItemStack itemStack, final Vector3 position) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
nbt.setTag("position", position.writeToNBT(new NBTTagCompound()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector3 getLink(final ItemStack itemStack) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
return Vector3.readFromNBT(nbt.getCompoundTag("position"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
package mffs.item.card;
|
||||
|
||||
import icbm.api.IItemFrequency;
|
||||
import java.util.List;
|
||||
|
||||
import icbm.api.IItemFrequency;
|
||||
import mffs.base.TileEntityFrequency;
|
||||
import mffs.card.ItemCard;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
@ -12,66 +13,83 @@ import net.minecraft.util.ChatComponentText;
|
|||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemCardFrequency extends ItemCard implements IItemFrequency {
|
||||
public ItemCardFrequency(final String name) { super(name); }
|
||||
|
||||
public ItemCardFrequency() { this("cardFrequency"); }
|
||||
|
||||
@Override
|
||||
public void addInformation(final ItemStack itemStack,
|
||||
final EntityPlayer par2EntityPlayer,
|
||||
final List list, final boolean par4) {
|
||||
list.add("Frequency: " + this.getFrequency(itemStack));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFrequency(final ItemStack itemStack) {
|
||||
if (itemStack != null) {
|
||||
if (itemStack.getTagCompound() == null) {
|
||||
itemStack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
return itemStack.getTagCompound().getInteger("frequency");
|
||||
public ItemCardFrequency(final String name) {
|
||||
super(name);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFrequency(final int frequency, final ItemStack itemStack) {
|
||||
if (itemStack != null) {
|
||||
if (itemStack.getTagCompound() == null) {
|
||||
itemStack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
itemStack.getTagCompound().setInteger("frequency", frequency);
|
||||
public ItemCardFrequency() {
|
||||
this("cardFrequency");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack onItemRightClick(final ItemStack itemStack,
|
||||
final World world,
|
||||
final EntityPlayer player) {
|
||||
if (!world.isRemote && player.isSneaking()) {
|
||||
this.setFrequency(world.rand.nextInt(15), itemStack);
|
||||
player.addChatMessage(new ChatComponentText(
|
||||
"Generated random frequency: " + this.getFrequency(itemStack)));
|
||||
@Override
|
||||
public void addInformation(
|
||||
final ItemStack itemStack,
|
||||
final EntityPlayer par2EntityPlayer,
|
||||
final List list,
|
||||
final boolean par4
|
||||
) {
|
||||
list.add("Frequency: " + this.getFrequency(itemStack));
|
||||
}
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemUse(final ItemStack itemStack, final EntityPlayer player,
|
||||
final World world, final int x, final int y,
|
||||
final int z, final int side, final float hitX,
|
||||
final float hitY, final float hitZ) {
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityFrequency) {
|
||||
if (!world.isRemote) {
|
||||
((TileEntityFrequency)tileEntity)
|
||||
.setFrequency(this.getFrequency(itemStack));
|
||||
world.markBlockForUpdate(x, y, z);
|
||||
player.addChatMessage(new ChatComponentText(
|
||||
"Frequency set to: " + this.getFrequency(itemStack)));
|
||||
}
|
||||
return true;
|
||||
@Override
|
||||
public int getFrequency(final ItemStack itemStack) {
|
||||
if (itemStack != null) {
|
||||
if (itemStack.getTagCompound() == null) {
|
||||
itemStack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
return itemStack.getTagCompound().getInteger("frequency");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFrequency(final int frequency, final ItemStack itemStack) {
|
||||
if (itemStack != null) {
|
||||
if (itemStack.getTagCompound() == null) {
|
||||
itemStack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
itemStack.getTagCompound().setInteger("frequency", frequency);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack onItemRightClick(
|
||||
final ItemStack itemStack, final World world, final EntityPlayer player
|
||||
) {
|
||||
if (!world.isRemote && player.isSneaking()) {
|
||||
this.setFrequency(world.rand.nextInt(15), itemStack);
|
||||
player.addChatMessage(new ChatComponentText(
|
||||
"Generated random frequency: " + this.getFrequency(itemStack)
|
||||
));
|
||||
}
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onItemUse(
|
||||
final ItemStack itemStack,
|
||||
final EntityPlayer player,
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final int side,
|
||||
final float hitX,
|
||||
final float hitY,
|
||||
final float hitZ
|
||||
) {
|
||||
final TileEntity tileEntity = world.getTileEntity(x, y, z);
|
||||
if (tileEntity instanceof TileEntityFrequency) {
|
||||
if (!world.isRemote) {
|
||||
((TileEntityFrequency) tileEntity)
|
||||
.setFrequency(this.getFrequency(itemStack));
|
||||
world.markBlockForUpdate(x, y, z);
|
||||
player.addChatMessage(new ChatComponentText(
|
||||
"Frequency set to: " + this.getFrequency(itemStack)
|
||||
));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package mffs.item.card;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import mffs.MFFSHelper;
|
||||
import mffs.api.card.ICardIdentification;
|
||||
import mffs.api.security.Permission;
|
||||
|
@ -13,94 +14,96 @@ import net.minecraft.world.World;
|
|||
import universalelectricity.prefab.TranslationHelper;
|
||||
|
||||
public class ItemCardID extends ItemCard implements ICardIdentification {
|
||||
|
||||
public ItemCardID() { super("cardIdentification"); }
|
||||
|
||||
public ItemCardID(final String name) { super(name); }
|
||||
|
||||
@Override
|
||||
public boolean hitEntity(final ItemStack itemStack,
|
||||
final EntityLivingBase entityLiving,
|
||||
final EntityLivingBase par3EntityLiving) {
|
||||
if (entityLiving instanceof EntityPlayer) {
|
||||
this.setUsername(itemStack,
|
||||
((EntityPlayer)entityLiving).getDisplayName());
|
||||
public ItemCardID() {
|
||||
super("cardIdentification");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(final ItemStack itemStack,
|
||||
final EntityPlayer player, final List info,
|
||||
final boolean b) {
|
||||
if (this.getUsername(itemStack) != null &&
|
||||
!this.getUsername(itemStack).isEmpty()) {
|
||||
info.add("Username: " + this.getUsername(itemStack));
|
||||
} else {
|
||||
info.add("Unidentified");
|
||||
public ItemCardID(final String name) {
|
||||
super(name);
|
||||
}
|
||||
String tooltip = "";
|
||||
boolean isFirst = true;
|
||||
for (final Permission permission : Permission.getPermissions()) {
|
||||
if (this.hasPermission(itemStack, permission)) {
|
||||
if (!isFirst) {
|
||||
tooltip += ", ";
|
||||
|
||||
@Override
|
||||
public boolean hitEntity(
|
||||
final ItemStack itemStack,
|
||||
final EntityLivingBase entityLiving,
|
||||
final EntityLivingBase par3EntityLiving
|
||||
) {
|
||||
if (entityLiving instanceof EntityPlayer) {
|
||||
this.setUsername(itemStack, ((EntityPlayer) entityLiving).getDisplayName());
|
||||
}
|
||||
isFirst = false;
|
||||
tooltip +=
|
||||
TranslationHelper.getLocal("gui." + permission.name + ".name");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (tooltip != null && tooltip.length() > 0) {
|
||||
info.addAll(MFFSHelper.splitStringPerWord(tooltip, 5));
|
||||
|
||||
@Override
|
||||
public void addInformation(
|
||||
final ItemStack itemStack,
|
||||
final EntityPlayer player,
|
||||
final List info,
|
||||
final boolean b
|
||||
) {
|
||||
if (this.getUsername(itemStack) != null
|
||||
&& !this.getUsername(itemStack).isEmpty()) {
|
||||
info.add("Username: " + this.getUsername(itemStack));
|
||||
} else {
|
||||
info.add("Unidentified");
|
||||
}
|
||||
String tooltip = "";
|
||||
boolean isFirst = true;
|
||||
for (final Permission permission : Permission.getPermissions()) {
|
||||
if (this.hasPermission(itemStack, permission)) {
|
||||
if (!isFirst) {
|
||||
tooltip += ", ";
|
||||
}
|
||||
isFirst = false;
|
||||
tooltip += TranslationHelper.getLocal("gui." + permission.name + ".name");
|
||||
}
|
||||
}
|
||||
if (tooltip != null && tooltip.length() > 0) {
|
||||
info.addAll(MFFSHelper.splitStringPerWord(tooltip, 5));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack onItemRightClick(final ItemStack itemStack,
|
||||
final World par2World,
|
||||
final EntityPlayer entityPlayer) {
|
||||
this.setUsername(itemStack, entityPlayer.getDisplayName());
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setUsername(final ItemStack itemStack, final String username) {
|
||||
final NBTTagCompound nbtTagCompound =
|
||||
MFFSHelper.getNBTTagCompound(itemStack);
|
||||
nbtTagCompound.setString("name", username);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsername(final ItemStack itemStack) {
|
||||
final NBTTagCompound nbtTagCompound =
|
||||
MFFSHelper.getNBTTagCompound(itemStack);
|
||||
if (nbtTagCompound != null && nbtTagCompound.getString("name") != "") {
|
||||
return nbtTagCompound.getString("name");
|
||||
@Override
|
||||
public ItemStack onItemRightClick(
|
||||
final ItemStack itemStack, final World par2World, final EntityPlayer entityPlayer
|
||||
) {
|
||||
this.setUsername(itemStack, entityPlayer.getDisplayName());
|
||||
return itemStack;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPermission(final ItemStack itemStack,
|
||||
final Permission permission) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
return nbt.getBoolean("mffs_permission_" + permission.id);
|
||||
}
|
||||
@Override
|
||||
public void setUsername(final ItemStack itemStack, final String username) {
|
||||
final NBTTagCompound nbtTagCompound = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
nbtTagCompound.setString("name", username);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addPermission(final ItemStack itemStack,
|
||||
final Permission permission) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
nbt.setBoolean("mffs_permission_" + permission.id, true);
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public String getUsername(final ItemStack itemStack) {
|
||||
final NBTTagCompound nbtTagCompound = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
if (nbtTagCompound != null && nbtTagCompound.getString("name") != "") {
|
||||
return nbtTagCompound.getString("name");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removePermission(final ItemStack itemStack,
|
||||
final Permission permission) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
nbt.setBoolean("mffs_permission_" + permission.id, false);
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public boolean hasPermission(final ItemStack itemStack, final Permission permission) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
return nbt.getBoolean("mffs_permission_" + permission.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addPermission(final ItemStack itemStack, final Permission permission) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
nbt.setBoolean("mffs_permission_" + permission.id, true);
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean
|
||||
removePermission(final ItemStack itemStack, final Permission permission) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
nbt.setBoolean("mffs_permission_" + permission.id, false);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,5 +4,7 @@ import mffs.api.card.ICardInfinite;
|
|||
import mffs.card.ItemCard;
|
||||
|
||||
public class ItemCardInfinite extends ItemCard implements ICardInfinite {
|
||||
public ItemCardInfinite() { super("cardInfinite"); }
|
||||
public ItemCardInfinite() {
|
||||
super("cardInfinite");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package mffs.item.card;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import mffs.MFFSHelper;
|
||||
import mffs.api.card.ICardLink;
|
||||
import mffs.card.ItemCard;
|
||||
|
@ -15,52 +16,67 @@ import net.minecraft.world.World;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ItemCardLink extends ItemCard implements ICardLink {
|
||||
public ItemCardLink() { super("cardLink"); }
|
||||
|
||||
@Override
|
||||
public void addInformation(final ItemStack itemStack,
|
||||
final EntityPlayer player, final List list,
|
||||
final boolean b) {
|
||||
final Vector3 position = this.getLink(itemStack);
|
||||
if (position != null) {
|
||||
final Block blockId =
|
||||
position.getBlock((IBlockAccess)((Entity)player).worldObj);
|
||||
if (blockId != null) {
|
||||
list.add("Linked with: " + blockId.getLocalizedName());
|
||||
list.add(position.intX() + ", " + position.intY() + ", " +
|
||||
position.intZ());
|
||||
return;
|
||||
}
|
||||
public ItemCardLink() {
|
||||
super("cardLink");
|
||||
}
|
||||
list.add("Not linked.");
|
||||
}
|
||||
|
||||
public boolean onItemUse(final ItemStack itemStack, final EntityPlayer player,
|
||||
final World world, final int x, final int y,
|
||||
final int z, final int par7, final float par8,
|
||||
final float par9, final float par10) {
|
||||
if (!world.isRemote) {
|
||||
final Vector3 vector = new Vector3(x, y, z);
|
||||
this.setLink(itemStack, vector);
|
||||
Block block = vector.getBlock(world);
|
||||
if (block != null) {
|
||||
player.addChatMessage(new ChatComponentText(
|
||||
"Linked card to position: " + x + ", " + y + ", " + z +
|
||||
" with block: " + block.getLocalizedName()));
|
||||
}
|
||||
@Override
|
||||
public void addInformation(
|
||||
final ItemStack itemStack,
|
||||
final EntityPlayer player,
|
||||
final List list,
|
||||
final boolean b
|
||||
) {
|
||||
final Vector3 position = this.getLink(itemStack);
|
||||
if (position != null) {
|
||||
final Block blockId
|
||||
= position.getBlock((IBlockAccess) ((Entity) player).worldObj);
|
||||
if (blockId != null) {
|
||||
list.add("Linked with: " + blockId.getLocalizedName());
|
||||
list.add(
|
||||
position.intX() + ", " + position.intY() + ", " + position.intZ()
|
||||
);
|
||||
return;
|
||||
}
|
||||
}
|
||||
list.add("Not linked.");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLink(final ItemStack itemStack, final Vector3 position) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
nbt.setTag("position", position.writeToNBT(new NBTTagCompound()));
|
||||
}
|
||||
public boolean onItemUse(
|
||||
final ItemStack itemStack,
|
||||
final EntityPlayer player,
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final int par7,
|
||||
final float par8,
|
||||
final float par9,
|
||||
final float par10
|
||||
) {
|
||||
if (!world.isRemote) {
|
||||
final Vector3 vector = new Vector3(x, y, z);
|
||||
this.setLink(itemStack, vector);
|
||||
Block block = vector.getBlock(world);
|
||||
if (block != null) {
|
||||
player.addChatMessage(new ChatComponentText(
|
||||
"Linked card to position: " + x + ", " + y + ", " + z
|
||||
+ " with block: " + block.getLocalizedName()
|
||||
));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector3 getLink(final ItemStack itemStack) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
return Vector3.readFromNBT(nbt.getCompoundTag("position"));
|
||||
}
|
||||
@Override
|
||||
public void setLink(final ItemStack itemStack, final Vector3 position) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
nbt.setTag("position", position.writeToNBT(new NBTTagCompound()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vector3 getLink(final ItemStack itemStack) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
return Vector3.readFromNBT(nbt.getCompoundTag("position"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,25 +1,30 @@
|
|||
package mffs.item.mode;
|
||||
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
import mffs.api.IFieldInteraction;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import mffs.api.IFieldInteraction;
|
||||
import mffs.api.IProjector;
|
||||
import mffs.api.modules.IProjectorMode;
|
||||
import mffs.base.ItemBase;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public abstract class ItemMode extends ItemBase implements IProjectorMode
|
||||
{
|
||||
public abstract class ItemMode extends ItemBase implements IProjectorMode {
|
||||
public ItemMode(final String name) {
|
||||
super(name);
|
||||
this.setMaxStackSize(1);
|
||||
}
|
||||
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void render(final IProjector projector, final double x, final double y, final double z, final float f, final long ticks) {
|
||||
}
|
||||
|
||||
public void render(
|
||||
final IProjector projector,
|
||||
final double x,
|
||||
final double y,
|
||||
final double z,
|
||||
final float f,
|
||||
final long ticks
|
||||
) {}
|
||||
|
||||
@Override
|
||||
public boolean isInField(final IFieldInteraction projector, final Vector3 position) {
|
||||
return false;
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
package mffs.item.mode;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import calclavia.lib.CalculationHelper;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import mffs.api.IFieldInteraction;
|
||||
import mffs.api.IProjector;
|
||||
import mffs.render.model.ModelCube;
|
||||
|
@ -14,66 +15,75 @@ import universalelectricity.core.vector.Vector3;
|
|||
import universalelectricity.prefab.vector.Region3;
|
||||
|
||||
public class ItemModeCube extends ItemMode {
|
||||
public ItemModeCube(final String name) { super(name); }
|
||||
|
||||
public ItemModeCube(final int i) { this("modeCube"); }
|
||||
|
||||
@Override
|
||||
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
for (float x = (float)(-negScale.intX()); x <= posScale.intX(); x += 0.5f) {
|
||||
for (float z = (float)(-negScale.intZ()); z <= posScale.intZ();
|
||||
z += 0.5f) {
|
||||
for (float y = (float)(-negScale.intY()); y <= posScale.intY();
|
||||
y += 0.5f) {
|
||||
if (y == -negScale.intY() || y == posScale.intY() ||
|
||||
x == -negScale.intX() || x == posScale.intX() ||
|
||||
z == -negScale.intZ() || z == posScale.intZ()) {
|
||||
fieldBlocks.add(new Vector3(x, y, z));
|
||||
}
|
||||
}
|
||||
}
|
||||
public ItemModeCube(final String name) {
|
||||
super(name);
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Vector3> getInteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
for (int x = -negScale.intX(); x <= posScale.intX(); ++x) {
|
||||
for (int z = -negScale.intZ(); z <= posScale.intZ(); ++z) {
|
||||
for (int y = -negScale.intY(); y <= posScale.intY(); ++y) {
|
||||
fieldBlocks.add(new Vector3(x, y, z));
|
||||
}
|
||||
}
|
||||
public ItemModeCube(final int i) {
|
||||
this("modeCube");
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInField(final IFieldInteraction projector,
|
||||
final Vector3 position) {
|
||||
final Vector3 projectorPos = new Vector3((TileEntity)projector);
|
||||
projectorPos.add(projector.getTranslation());
|
||||
final Vector3 relativePosition = position.clone().subtract(projectorPos);
|
||||
CalculationHelper.rotateByAngle(relativePosition,
|
||||
-projector.getRotationYaw(),
|
||||
-projector.getRotationPitch());
|
||||
final Region3 region =
|
||||
new Region3(projector.getNegativeScale().clone().multiply(-1.0),
|
||||
projector.getPositiveScale());
|
||||
return region.isIn(relativePosition);
|
||||
}
|
||||
@Override
|
||||
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
for (float x = (float) (-negScale.intX()); x <= posScale.intX(); x += 0.5f) {
|
||||
for (float z = (float) (-negScale.intZ()); z <= posScale.intZ(); z += 0.5f) {
|
||||
for (float y = (float) (-negScale.intY()); y <= posScale.intY();
|
||||
y += 0.5f) {
|
||||
if (y == -negScale.intY() || y == posScale.intY()
|
||||
|| x == -negScale.intX() || x == posScale.intX()
|
||||
|| z == -negScale.intZ() || z == posScale.intZ()) {
|
||||
fieldBlocks.add(new Vector3(x, y, z));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void render(final IProjector projector, final double x, final double y,
|
||||
final double z, final float f, final long ticks) {
|
||||
GL11.glScalef(0.5f, 0.5f, 0.5f);
|
||||
ModelCube.INSTNACE.render();
|
||||
}
|
||||
@Override
|
||||
public Set<Vector3> getInteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
for (int x = -negScale.intX(); x <= posScale.intX(); ++x) {
|
||||
for (int z = -negScale.intZ(); z <= posScale.intZ(); ++z) {
|
||||
for (int y = -negScale.intY(); y <= posScale.intY(); ++y) {
|
||||
fieldBlocks.add(new Vector3(x, y, z));
|
||||
}
|
||||
}
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInField(final IFieldInteraction projector, final Vector3 position) {
|
||||
final Vector3 projectorPos = new Vector3((TileEntity) projector);
|
||||
projectorPos.add(projector.getTranslation());
|
||||
final Vector3 relativePosition = position.clone().subtract(projectorPos);
|
||||
CalculationHelper.rotateByAngle(
|
||||
relativePosition, -projector.getRotationYaw(), -projector.getRotationPitch()
|
||||
);
|
||||
final Region3 region = new Region3(
|
||||
projector.getNegativeScale().clone().multiply(-1.0),
|
||||
projector.getPositiveScale()
|
||||
);
|
||||
return region.isIn(relativePosition);
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void render(
|
||||
final IProjector projector,
|
||||
final double x,
|
||||
final double y,
|
||||
final double z,
|
||||
final float f,
|
||||
final long ticks
|
||||
) {
|
||||
GL11.glScalef(0.5f, 0.5f, 0.5f);
|
||||
ModelCube.INSTNACE.render();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
package mffs.item.mode;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import mffs.ModularForceFieldSystem;
|
||||
import mffs.api.IFieldInteraction;
|
||||
import mffs.api.IProjector;
|
||||
|
@ -13,86 +14,103 @@ import org.lwjgl.opengl.GL11;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ItemModeSphere extends ItemMode {
|
||||
public ItemModeSphere(final int i) { super("modeSphere"); }
|
||||
|
||||
@Override
|
||||
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final int radius = projector.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleScale, new int[0]);
|
||||
for (int steps = (int)Math.ceil(3.141592653589793 /
|
||||
Math.atan(1.0 / radius / 2.0)),
|
||||
phi_n = 0;
|
||||
phi_n < 2 * steps; ++phi_n) {
|
||||
for (int theta_n = 0; theta_n < steps; ++theta_n) {
|
||||
final double phi = 6.283185307179586 / steps * phi_n;
|
||||
final double theta = 3.141592653589793 / steps * theta_n;
|
||||
final Vector3 point =
|
||||
new Vector3(Math.sin(theta) * Math.cos(phi), Math.cos(theta),
|
||||
Math.sin(theta) * Math.sin(phi))
|
||||
.multiply(radius);
|
||||
fieldBlocks.add(point);
|
||||
}
|
||||
public ItemModeSphere(final int i) {
|
||||
super("modeSphere");
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Vector3> getInteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 translation = projector.getTranslation();
|
||||
for (int radius = projector.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleScale, new int[0]),
|
||||
x = -radius;
|
||||
x <= radius; ++x) {
|
||||
for (int z = -radius; z <= radius; ++z) {
|
||||
for (int y = -radius; y <= radius; ++y) {
|
||||
final Vector3 position = new Vector3(x, y, z);
|
||||
if (this.isInField(
|
||||
projector,
|
||||
Vector3.add(position, new Vector3((TileEntity)projector))
|
||||
.add(translation))) {
|
||||
fieldBlocks.add(position);
|
||||
}
|
||||
@Override
|
||||
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final int radius = projector.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleScale, new int[0]
|
||||
);
|
||||
for (int steps
|
||||
= (int) Math.ceil(3.141592653589793 / Math.atan(1.0 / radius / 2.0)),
|
||||
phi_n = 0;
|
||||
phi_n < 2 * steps;
|
||||
++phi_n) {
|
||||
for (int theta_n = 0; theta_n < steps; ++theta_n) {
|
||||
final double phi = 6.283185307179586 / steps * phi_n;
|
||||
final double theta = 3.141592653589793 / steps * theta_n;
|
||||
final Vector3 point = new Vector3(
|
||||
Math.sin(theta) * Math.cos(phi),
|
||||
Math.cos(theta),
|
||||
Math.sin(theta) * Math.sin(phi)
|
||||
)
|
||||
.multiply(radius);
|
||||
fieldBlocks.add(point);
|
||||
}
|
||||
}
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInField(final IFieldInteraction projector,
|
||||
final Vector3 position) {
|
||||
return new Vector3((TileEntity)projector)
|
||||
.add(projector.getTranslation())
|
||||
.distanceTo(position) <
|
||||
projector.getModuleCount(ModularForceFieldSystem.itemModuleScale,
|
||||
new int[0]);
|
||||
}
|
||||
@Override
|
||||
public Set<Vector3> getInteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 translation = projector.getTranslation();
|
||||
for (int radius = projector.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleScale, new int[0]
|
||||
),
|
||||
x = -radius;
|
||||
x <= radius;
|
||||
++x) {
|
||||
for (int z = -radius; z <= radius; ++z) {
|
||||
for (int y = -radius; y <= radius; ++y) {
|
||||
final Vector3 position = new Vector3(x, y, z);
|
||||
if (this.isInField(
|
||||
projector,
|
||||
Vector3.add(position, new Vector3((TileEntity) projector))
|
||||
.add(translation)
|
||||
)) {
|
||||
fieldBlocks.add(position);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void render(final IProjector projector, final double x1,
|
||||
final double y1, final double z1, final float f,
|
||||
final long ticks) {
|
||||
final float scale = 0.15f;
|
||||
GL11.glScalef(scale, scale, scale);
|
||||
final float radius = 1.5f;
|
||||
for (int steps = (int)Math.ceil(3.141592653589793 /
|
||||
Math.atan(1.0 / radius / 2.0)),
|
||||
@Override
|
||||
public boolean isInField(final IFieldInteraction projector, final Vector3 position) {
|
||||
return new Vector3((TileEntity) projector)
|
||||
.add(projector.getTranslation())
|
||||
.distanceTo(position)
|
||||
< projector.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleScale, new int[0]
|
||||
);
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void render(
|
||||
final IProjector projector,
|
||||
final double x1,
|
||||
final double y1,
|
||||
final double z1,
|
||||
final float f,
|
||||
final long ticks
|
||||
) {
|
||||
final float scale = 0.15f;
|
||||
GL11.glScalef(scale, scale, scale);
|
||||
final float radius = 1.5f;
|
||||
for (int steps
|
||||
= (int) Math.ceil(3.141592653589793 / Math.atan(1.0 / radius / 2.0)),
|
||||
phi_n = 0;
|
||||
phi_n < 2 * steps; ++phi_n) {
|
||||
for (int theta_n = 0; theta_n < steps; ++theta_n) {
|
||||
final double phi = 6.283185307179586 / steps * phi_n;
|
||||
final double theta = 3.141592653589793 / steps * theta_n;
|
||||
final Vector3 vector =
|
||||
new Vector3(Math.sin(theta) * Math.cos(phi), Math.cos(theta),
|
||||
Math.sin(theta) * Math.sin(phi));
|
||||
vector.multiply(radius);
|
||||
GL11.glTranslated(vector.x, vector.y, vector.z);
|
||||
ModelCube.INSTNACE.render();
|
||||
GL11.glTranslated(-vector.x, -vector.y, -vector.z);
|
||||
}
|
||||
phi_n < 2 * steps;
|
||||
++phi_n) {
|
||||
for (int theta_n = 0; theta_n < steps; ++theta_n) {
|
||||
final double phi = 6.283185307179586 / steps * phi_n;
|
||||
final double theta = 3.141592653589793 / steps * theta_n;
|
||||
final Vector3 vector = new Vector3(
|
||||
Math.sin(theta) * Math.cos(phi),
|
||||
Math.cos(theta),
|
||||
Math.sin(theta) * Math.sin(phi)
|
||||
);
|
||||
vector.multiply(radius);
|
||||
GL11.glTranslated(vector.x, vector.y, vector.z);
|
||||
ModelCube.INSTNACE.render();
|
||||
GL11.glTranslated(-vector.x, -vector.y, -vector.z);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,34 +1,41 @@
|
|||
package mffs.item.mode;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import mffs.render.model.ModelPlane;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import mffs.api.IFieldInteraction;
|
||||
import mffs.api.IProjector;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
import mffs.render.model.ModelPlane;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import mffs.api.IFieldInteraction;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ItemModeTube extends ItemModeCube
|
||||
{
|
||||
public class ItemModeTube extends ItemModeCube {
|
||||
public ItemModeTube() {
|
||||
super("modeTube");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final ForgeDirection direction = projector.getDirection((IBlockAccess)((TileEntity)projector).getWorldObj(), ((TileEntity)projector).xCoord, ((TileEntity)projector).yCoord, ((TileEntity)projector).zCoord);
|
||||
final ForgeDirection direction = projector.getDirection(
|
||||
(IBlockAccess) ((TileEntity) projector).getWorldObj(),
|
||||
((TileEntity) projector).xCoord,
|
||||
((TileEntity) projector).yCoord,
|
||||
((TileEntity) projector).zCoord
|
||||
);
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
for (float x = (float)(-negScale.intX()); x <= posScale.intX(); x += 0.5f) {
|
||||
for (float z = (float)(-negScale.intZ()); z <= posScale.intZ(); z += 0.5f) {
|
||||
for (float y = (float)(-negScale.intY()); y <= posScale.intY(); y += 0.5f) {
|
||||
if (direction != ForgeDirection.UP && direction != ForgeDirection.DOWN && (y == -negScale.intY() || y == posScale.intY())) {
|
||||
for (float x = (float) (-negScale.intX()); x <= posScale.intX(); x += 0.5f) {
|
||||
for (float z = (float) (-negScale.intZ()); z <= posScale.intZ(); z += 0.5f) {
|
||||
for (float y = (float) (-negScale.intY()); y <= posScale.intY();
|
||||
y += 0.5f) {
|
||||
if (direction != ForgeDirection.UP && direction != ForgeDirection.DOWN
|
||||
&& (y == -negScale.intY() || y == posScale.intY())) {
|
||||
fieldBlocks.add(new Vector3(x, y, z));
|
||||
}
|
||||
else if (direction != ForgeDirection.NORTH && direction != ForgeDirection.SOUTH && (z == -negScale.intZ() || z == posScale.intZ())) {
|
||||
|
@ -42,10 +49,17 @@ public class ItemModeTube extends ItemModeCube
|
|||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void render(final IProjector projector, final double x, final double y, final double z, final float f, final long ticks) {
|
||||
public void render(
|
||||
final IProjector projector,
|
||||
final double x,
|
||||
final double y,
|
||||
final double z,
|
||||
final float f,
|
||||
final long ticks
|
||||
) {
|
||||
GL11.glScalef(0.5f, 0.5f, 0.5f);
|
||||
GL11.glTranslatef(-0.5f, 0.0f, 0.0f);
|
||||
ModelPlane.INSTNACE.render();
|
||||
|
|
|
@ -2,6 +2,7 @@ package mffs.item.module;
|
|||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import mffs.api.IFieldInteraction;
|
||||
import mffs.api.IProjector;
|
||||
import mffs.api.modules.IModule;
|
||||
|
@ -13,56 +14,62 @@ import net.minecraft.world.World;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ItemModule extends ItemBase implements IModule {
|
||||
private float fortronCost;
|
||||
private float fortronCost;
|
||||
|
||||
public ItemModule(final String name) {
|
||||
super(name);
|
||||
this.fortronCost = 0.5f;
|
||||
}
|
||||
public ItemModule(final String name) {
|
||||
super(name);
|
||||
this.fortronCost = 0.5f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(final ItemStack itemStack,
|
||||
final EntityPlayer player, final List info,
|
||||
final boolean b) {
|
||||
info.add("Fortron: " + this.getFortronCost(1.0f));
|
||||
super.addInformation(itemStack, player, info, b);
|
||||
}
|
||||
@Override
|
||||
public void addInformation(
|
||||
final ItemStack itemStack,
|
||||
final EntityPlayer player,
|
||||
final List info,
|
||||
final boolean b
|
||||
) {
|
||||
info.add("Fortron: " + this.getFortronCost(1.0f));
|
||||
super.addInformation(itemStack, player, info, b);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCalculate(final IFieldInteraction projector,
|
||||
final Set<Vector3> position) {}
|
||||
@Override
|
||||
public void
|
||||
onCalculate(final IFieldInteraction projector, final Set<Vector3> position) {}
|
||||
|
||||
@Override
|
||||
public boolean onProject(final IProjector projector,
|
||||
final Set<Vector3> fields) {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public boolean onProject(final IProjector projector, final Set<Vector3> fields) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int onProject(final IProjector projector, final Vector3 position) {
|
||||
return 0;
|
||||
}
|
||||
@Override
|
||||
public int onProject(final IProjector projector, final Vector3 position) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCollideWithForceField(final World world, final int x,
|
||||
final int y, final int z,
|
||||
final Entity entity,
|
||||
final ItemStack moduleStack) {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public boolean onCollideWithForceField(
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final Entity entity,
|
||||
final ItemStack moduleStack
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public ItemModule setCost(final float cost) {
|
||||
this.fortronCost = cost;
|
||||
return this;
|
||||
}
|
||||
public ItemModule setCost(final float cost) {
|
||||
this.fortronCost = cost;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ItemModule setMaxStackSize(final int par1) {
|
||||
super.setMaxStackSize(par1);
|
||||
return this;
|
||||
}
|
||||
public ItemModule setMaxStackSize(final int par1) {
|
||||
super.setMaxStackSize(par1);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getFortronCost(final float amplifier) {
|
||||
return this.fortronCost * amplifier;
|
||||
}
|
||||
@Override
|
||||
public float getFortronCost(final float amplifier) {
|
||||
return this.fortronCost * amplifier;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,21 +1,24 @@
|
|||
package mffs.item.module.interdiction;
|
||||
|
||||
import mffs.ModularForceFieldSystem;
|
||||
import mffs.api.security.IInterdictionMatrix;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.INpc;
|
||||
import net.minecraft.entity.monster.IMob;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import mffs.api.security.IInterdictionMatrix;
|
||||
|
||||
public class ItemModuleAntiFriendly extends ItemModuleInterdictionMatrix
|
||||
{
|
||||
public class ItemModuleAntiFriendly extends ItemModuleInterdictionMatrix {
|
||||
public ItemModuleAntiFriendly() {
|
||||
super("moduleAntiFriendly");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onDefend(final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving) {
|
||||
public boolean onDefend(
|
||||
final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving
|
||||
) {
|
||||
if (!(entityLiving instanceof IMob) || entityLiving instanceof INpc) {
|
||||
entityLiving.attackEntityFrom(ModularForceFieldSystem.damagefieldShock, Integer.MAX_VALUE);
|
||||
entityLiving.attackEntityFrom(
|
||||
ModularForceFieldSystem.damagefieldShock, Integer.MAX_VALUE
|
||||
);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -1,19 +1,20 @@
|
|||
package mffs.item.module.interdiction;
|
||||
|
||||
import mffs.ModularForceFieldSystem;
|
||||
import mffs.api.security.IInterdictionMatrix;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.INpc;
|
||||
import net.minecraft.entity.monster.IMob;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import mffs.api.security.IInterdictionMatrix;
|
||||
|
||||
public class ItemModuleAntiHostile extends ItemModuleInterdictionMatrix
|
||||
{
|
||||
public class ItemModuleAntiHostile extends ItemModuleInterdictionMatrix {
|
||||
public ItemModuleAntiHostile() {
|
||||
super("moduleAntiHostile");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onDefend(final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving) {
|
||||
public boolean onDefend(
|
||||
final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving
|
||||
) {
|
||||
if (entityLiving instanceof IMob && !(entityLiving instanceof INpc)) {
|
||||
entityLiving.attackEntityFrom(ModularForceFieldSystem.damagefieldShock, 20);
|
||||
}
|
||||
|
|
|
@ -9,31 +9,37 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.util.ChatComponentText;
|
||||
|
||||
public class ItemModuleAntiPersonnel extends ItemModuleInterdictionMatrix {
|
||||
public ItemModuleAntiPersonnel() { super("moduleAntiPersonnel"); }
|
||||
|
||||
@Override
|
||||
public boolean onDefend(final IInterdictionMatrix interdictionMatrix,
|
||||
final EntityLivingBase entityLiving) {
|
||||
final boolean hasPermission = false;
|
||||
if (!hasPermission && entityLiving instanceof EntityPlayer) {
|
||||
final EntityPlayer player = (EntityPlayer)entityLiving;
|
||||
if (!player.capabilities.isCreativeMode &&
|
||||
!player.isEntityInvulnerable()) {
|
||||
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
|
||||
if (player.inventory.getStackInSlot(i) != null) {
|
||||
interdictionMatrix.mergeIntoInventory(
|
||||
player.inventory.getStackInSlot(i));
|
||||
player.inventory.setInventorySlotContents(i, (ItemStack)null);
|
||||
}
|
||||
}
|
||||
player.attackEntityFrom(ModularForceFieldSystem.damagefieldShock,
|
||||
Integer.MAX_VALUE);
|
||||
interdictionMatrix.requestFortron(Settings.INTERDICTION_MURDER_ENERGY,
|
||||
false);
|
||||
player.addChatMessage(new ChatComponentText(
|
||||
"[" + interdictionMatrix.getInventoryName() + "] Fairwell."));
|
||||
}
|
||||
public ItemModuleAntiPersonnel() {
|
||||
super("moduleAntiPersonnel");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onDefend(
|
||||
final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving
|
||||
) {
|
||||
final boolean hasPermission = false;
|
||||
if (!hasPermission && entityLiving instanceof EntityPlayer) {
|
||||
final EntityPlayer player = (EntityPlayer) entityLiving;
|
||||
if (!player.capabilities.isCreativeMode && !player.isEntityInvulnerable()) {
|
||||
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
|
||||
if (player.inventory.getStackInSlot(i) != null) {
|
||||
interdictionMatrix.mergeIntoInventory(
|
||||
player.inventory.getStackInSlot(i)
|
||||
);
|
||||
player.inventory.setInventorySlotContents(i, (ItemStack) null);
|
||||
}
|
||||
}
|
||||
player.attackEntityFrom(
|
||||
ModularForceFieldSystem.damagefieldShock, Integer.MAX_VALUE
|
||||
);
|
||||
interdictionMatrix.requestFortron(
|
||||
Settings.INTERDICTION_MURDER_ENERGY, false
|
||||
);
|
||||
player.addChatMessage(new ChatComponentText(
|
||||
"[" + interdictionMatrix.getInventoryName() + "] Fairwell."
|
||||
));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package mffs.item.module.interdiction;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import mffs.api.security.IBiometricIdentifier;
|
||||
import mffs.api.security.IInterdictionMatrix;
|
||||
import mffs.api.security.Permission;
|
||||
|
@ -11,67 +12,72 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.util.ChatComponentText;
|
||||
|
||||
public class ItemModuleConfiscate extends ItemModuleInterdictionMatrix {
|
||||
public ItemModuleConfiscate() { super("moduleConfiscate"); }
|
||||
public ItemModuleConfiscate() {
|
||||
super("moduleConfiscate");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onDefend(final IInterdictionMatrix interdictionMatrix,
|
||||
final EntityLivingBase entityLiving) {
|
||||
if (entityLiving instanceof EntityPlayer) {
|
||||
final EntityPlayer player = (EntityPlayer)entityLiving;
|
||||
final IBiometricIdentifier biometricIdentifier =
|
||||
interdictionMatrix.getBiometricIdentifier();
|
||||
if (biometricIdentifier != null &&
|
||||
biometricIdentifier.isAccessGranted(
|
||||
player.getDisplayName(),
|
||||
Permission.DEFENSE_STATION_CONFISCATION)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
final Set<ItemStack> controlledStacks =
|
||||
interdictionMatrix.getFilteredItems();
|
||||
int confiscationCount = 0;
|
||||
IInventory inventory = null;
|
||||
if (entityLiving instanceof EntityPlayer) {
|
||||
final IBiometricIdentifier biometricIdentifier2 =
|
||||
interdictionMatrix.getBiometricIdentifier();
|
||||
if (biometricIdentifier2 != null &&
|
||||
biometricIdentifier2.isAccessGranted(
|
||||
((EntityPlayer)entityLiving).getDisplayName(),
|
||||
Permission.BYPASS_INTERDICTION_MATRIX)) {
|
||||
return false;
|
||||
}
|
||||
final EntityPlayer player2 = (EntityPlayer)entityLiving;
|
||||
inventory = (IInventory)player2.inventory;
|
||||
} else if (entityLiving instanceof IInventory) {
|
||||
inventory = (IInventory)entityLiving;
|
||||
}
|
||||
if (inventory != null) {
|
||||
for (int i = 0; i < inventory.getSizeInventory(); ++i) {
|
||||
final ItemStack checkStack = inventory.getStackInSlot(i);
|
||||
if (checkStack != null) {
|
||||
boolean stacksMatch = false;
|
||||
for (final ItemStack itemStack : controlledStacks) {
|
||||
if (itemStack != null && itemStack.isItemEqual(checkStack)) {
|
||||
stacksMatch = true;
|
||||
break;
|
||||
@Override
|
||||
public boolean onDefend(
|
||||
final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving
|
||||
) {
|
||||
if (entityLiving instanceof EntityPlayer) {
|
||||
final EntityPlayer player = (EntityPlayer) entityLiving;
|
||||
final IBiometricIdentifier biometricIdentifier
|
||||
= interdictionMatrix.getBiometricIdentifier();
|
||||
if (biometricIdentifier != null
|
||||
&& biometricIdentifier.isAccessGranted(
|
||||
player.getDisplayName(), Permission.DEFENSE_STATION_CONFISCATION
|
||||
)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if ((interdictionMatrix.getFilterMode() && stacksMatch) ||
|
||||
(!interdictionMatrix.getFilterMode() && !stacksMatch)) {
|
||||
interdictionMatrix.mergeIntoInventory(inventory.getStackInSlot(i));
|
||||
inventory.setInventorySlotContents(i, (ItemStack)null);
|
||||
++confiscationCount;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (confiscationCount > 0 && entityLiving instanceof EntityPlayer) {
|
||||
((EntityPlayer)entityLiving)
|
||||
.addChatMessage(new ChatComponentText(
|
||||
"[" + interdictionMatrix.getInventoryName() + "] " +
|
||||
confiscationCount + " of your item(s) has been confiscated."));
|
||||
}
|
||||
interdictionMatrix.requestFortron(confiscationCount, true);
|
||||
final Set<ItemStack> controlledStacks = interdictionMatrix.getFilteredItems();
|
||||
int confiscationCount = 0;
|
||||
IInventory inventory = null;
|
||||
if (entityLiving instanceof EntityPlayer) {
|
||||
final IBiometricIdentifier biometricIdentifier2
|
||||
= interdictionMatrix.getBiometricIdentifier();
|
||||
if (biometricIdentifier2 != null
|
||||
&& biometricIdentifier2.isAccessGranted(
|
||||
((EntityPlayer) entityLiving).getDisplayName(),
|
||||
Permission.BYPASS_INTERDICTION_MATRIX
|
||||
)) {
|
||||
return false;
|
||||
}
|
||||
final EntityPlayer player2 = (EntityPlayer) entityLiving;
|
||||
inventory = (IInventory) player2.inventory;
|
||||
} else if (entityLiving instanceof IInventory) {
|
||||
inventory = (IInventory) entityLiving;
|
||||
}
|
||||
if (inventory != null) {
|
||||
for (int i = 0; i < inventory.getSizeInventory(); ++i) {
|
||||
final ItemStack checkStack = inventory.getStackInSlot(i);
|
||||
if (checkStack != null) {
|
||||
boolean stacksMatch = false;
|
||||
for (final ItemStack itemStack : controlledStacks) {
|
||||
if (itemStack != null && itemStack.isItemEqual(checkStack)) {
|
||||
stacksMatch = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((interdictionMatrix.getFilterMode() && stacksMatch)
|
||||
|| (!interdictionMatrix.getFilterMode() && !stacksMatch)) {
|
||||
interdictionMatrix.mergeIntoInventory(inventory.getStackInSlot(i)
|
||||
);
|
||||
inventory.setInventorySlotContents(i, (ItemStack) null);
|
||||
++confiscationCount;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (confiscationCount > 0 && entityLiving instanceof EntityPlayer) {
|
||||
((EntityPlayer) entityLiving)
|
||||
.addChatMessage(new ChatComponentText(
|
||||
"[" + interdictionMatrix.getInventoryName() + "] "
|
||||
+ confiscationCount + " of your item(s) has been confiscated."
|
||||
));
|
||||
}
|
||||
interdictionMatrix.requestFortron(confiscationCount, true);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package mffs.item.module.interdiction;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import mffs.api.modules.IInterdictionMatrixModule;
|
||||
import mffs.api.security.IInterdictionMatrix;
|
||||
import mffs.item.module.ItemModule;
|
||||
|
@ -10,19 +11,25 @@ import net.minecraft.item.ItemStack;
|
|||
|
||||
public class ItemModuleInterdictionMatrix
|
||||
extends ItemModule implements IInterdictionMatrixModule {
|
||||
public ItemModuleInterdictionMatrix(final String name) { super(name); }
|
||||
public ItemModuleInterdictionMatrix(final String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(final ItemStack itemStack,
|
||||
final EntityPlayer player, final List info,
|
||||
final boolean b) {
|
||||
info.add("§4Interdiction Matrix");
|
||||
super.addInformation(itemStack, player, info, b);
|
||||
}
|
||||
@Override
|
||||
public void addInformation(
|
||||
final ItemStack itemStack,
|
||||
final EntityPlayer player,
|
||||
final List info,
|
||||
final boolean b
|
||||
) {
|
||||
info.add("§4Interdiction Matrix");
|
||||
super.addInformation(itemStack, player, info, b);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onDefend(final IInterdictionMatrix interdictionMatrix,
|
||||
final EntityLivingBase entityLiving) {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public boolean onDefend(
|
||||
final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,21 +1,26 @@
|
|||
package mffs.item.module.interdiction;
|
||||
|
||||
import mffs.api.security.IInterdictionMatrix;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import mffs.api.security.IInterdictionMatrix;
|
||||
|
||||
public class ItemModuleWarn extends ItemModuleInterdictionMatrix
|
||||
{
|
||||
public class ItemModuleWarn extends ItemModuleInterdictionMatrix {
|
||||
public ItemModuleWarn() {
|
||||
super("moduleWarn");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onDefend(final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving) {
|
||||
public boolean onDefend(
|
||||
final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving
|
||||
) {
|
||||
final boolean hasPermission = false;
|
||||
if (!hasPermission && entityLiving instanceof EntityPlayer) {
|
||||
((EntityPlayer)entityLiving).addChatMessage(new ChatComponentText("[" + interdictionMatrix.getInventoryName() + "] Leave this zone immediately. You have no right to enter."));
|
||||
((EntityPlayer) entityLiving)
|
||||
.addChatMessage(new ChatComponentText(
|
||||
"[" + interdictionMatrix.getInventoryName()
|
||||
+ "] Leave this zone immediately. You have no right to enter."
|
||||
));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package mffs.item.module.projector;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.UncheckedIOException;
|
||||
|
@ -9,6 +7,9 @@ import java.nio.file.Paths;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import mffs.MFFSHelper;
|
||||
import mffs.ModularForceFieldSystem;
|
||||
import mffs.Settings;
|
||||
|
@ -34,306 +35,340 @@ import net.minecraft.world.World;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ItemModeCustom extends ItemMode implements ICache {
|
||||
private final HashMap<String, Object> cache;
|
||||
private final HashMap<String, Object> cache;
|
||||
|
||||
public ItemModeCustom() {
|
||||
super("modeCustom");
|
||||
this.cache = new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(final ItemStack itemStack,
|
||||
final EntityPlayer par2EntityPlayer,
|
||||
final List list, final boolean par4) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
list.add("Mode: " + (nbt.getBoolean("mode") ? "Additive" : "Substraction"));
|
||||
final Vector3 point1 = Vector3.readFromNBT(nbt.getCompoundTag("point1"));
|
||||
list.add("Point 1: " + point1.intX() + ", " + point1.intY() + ", " +
|
||||
point1.intZ());
|
||||
final Vector3 point2 = Vector3.readFromNBT(nbt.getCompoundTag("point2"));
|
||||
list.add("Point 2: " + point2.intX() + ", " + point2.intY() + ", " +
|
||||
point2.intZ());
|
||||
final int modeID = nbt.getInteger("id");
|
||||
if (modeID > 0) {
|
||||
list.add("Mode ID: " + modeID);
|
||||
final int fieldSize = nbt.getInteger("fieldSize");
|
||||
if (fieldSize > 0) {
|
||||
list.add("Field size: " + fieldSize);
|
||||
} else {
|
||||
list.add("Field not saved.");
|
||||
}
|
||||
public ItemModeCustom() {
|
||||
super("modeCustom");
|
||||
this.cache = new HashMap<>();
|
||||
}
|
||||
if (GuiScreen.isShiftKeyDown()) {
|
||||
super.addInformation(itemStack, par2EntityPlayer, list, par4);
|
||||
} else {
|
||||
list.add("Hold shift for more...");
|
||||
}
|
||||
}
|
||||
|
||||
public ItemStack onItemRightClick(final ItemStack itemStack,
|
||||
final World world,
|
||||
final EntityPlayer entityPlayer) {
|
||||
if (!world.isRemote) {
|
||||
if (entityPlayer.isSneaking()) {
|
||||
@Override
|
||||
public void addInformation(
|
||||
final ItemStack itemStack,
|
||||
final EntityPlayer par2EntityPlayer,
|
||||
final List list,
|
||||
final boolean par4
|
||||
) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
if (nbt != null) {
|
||||
final Vector3 point1 =
|
||||
Vector3.readFromNBT(nbt.getCompoundTag("point1"));
|
||||
final Vector3 point2 =
|
||||
Vector3.readFromNBT(nbt.getCompoundTag("point2"));
|
||||
if (nbt.hasKey("point1") && nbt.hasKey("point2") &&
|
||||
!point1.equals(point2) &&
|
||||
point1.distanceTo(point2) < Settings.MAX_FORCE_FIELD_SCALE) {
|
||||
nbt.removeTag("point1");
|
||||
nbt.removeTag("point2");
|
||||
Vector3 midPoint = new Vector3();
|
||||
midPoint.x = (point1.x + point2.x) / 2.0;
|
||||
midPoint.y = (point1.y + point2.y) / 2.0;
|
||||
midPoint.z = (point1.z + point2.z) / 2.0;
|
||||
midPoint = midPoint.floor();
|
||||
point1.subtract(midPoint);
|
||||
point2.subtract(midPoint);
|
||||
final Vector3 minPoint = new Vector3(Math.min(point1.x, point2.x),
|
||||
Math.min(point1.y, point2.y),
|
||||
Math.min(point1.z, point2.z));
|
||||
final Vector3 maxPoint = new Vector3(Math.max(point1.x, point2.x),
|
||||
Math.max(point1.y, point2.y),
|
||||
Math.max(point1.z, point2.z));
|
||||
File saveFile = Paths
|
||||
.get(this.getSaveDirectory().getPath(),
|
||||
"custom_mode_" + this.getModeID(itemStack))
|
||||
.toFile();
|
||||
// TODO: WTF happened to NBTFileLoader?!
|
||||
NBTTagCompound saveNBT = null;
|
||||
try {
|
||||
saveNBT = CompressedStreamTools.read(saveFile);
|
||||
} catch (IOException e1) {
|
||||
throw new UncheckedIOException(e1);
|
||||
}
|
||||
|
||||
// NBTTagCompound saveNBT = NBTFileLoader.loadData(
|
||||
// this.getSaveDirectory(),
|
||||
// "custom_mode_" + this.getModeID(itemStack));
|
||||
|
||||
if (saveNBT == null) {
|
||||
saveNBT = new NBTTagCompound();
|
||||
}
|
||||
NBTTagList list;
|
||||
if (saveNBT.hasKey("fieldPoints")) {
|
||||
list = (NBTTagList)saveNBT.getTag("fieldPoints");
|
||||
list.add("Mode: " + (nbt.getBoolean("mode") ? "Additive" : "Substraction"));
|
||||
final Vector3 point1 = Vector3.readFromNBT(nbt.getCompoundTag("point1"));
|
||||
list.add(
|
||||
"Point 1: " + point1.intX() + ", " + point1.intY() + ", " + point1.intZ()
|
||||
);
|
||||
final Vector3 point2 = Vector3.readFromNBT(nbt.getCompoundTag("point2"));
|
||||
list.add(
|
||||
"Point 2: " + point2.intX() + ", " + point2.intY() + ", " + point2.intZ()
|
||||
);
|
||||
final int modeID = nbt.getInteger("id");
|
||||
if (modeID > 0) {
|
||||
list.add("Mode ID: " + modeID);
|
||||
final int fieldSize = nbt.getInteger("fieldSize");
|
||||
if (fieldSize > 0) {
|
||||
list.add("Field size: " + fieldSize);
|
||||
} else {
|
||||
list = new NBTTagList();
|
||||
list.add("Field not saved.");
|
||||
}
|
||||
for (int x = minPoint.intX(); x <= maxPoint.intX(); ++x) {
|
||||
for (int y = minPoint.intY(); y <= maxPoint.intY(); ++y) {
|
||||
for (int z = minPoint.intZ(); z <= maxPoint.intZ(); ++z) {
|
||||
final Vector3 position = new Vector3(x, y, z);
|
||||
final Vector3 targetCheck = Vector3.add(midPoint, position);
|
||||
final Block blockID = targetCheck.getBlock(world);
|
||||
if (blockID != Blocks.air) {
|
||||
if (nbt.getBoolean("mode")) {
|
||||
final NBTTagCompound vectorTag = new NBTTagCompound();
|
||||
position.writeToNBT(vectorTag);
|
||||
vectorTag.setInteger("blockID",
|
||||
Block.getIdFromBlock(blockID));
|
||||
vectorTag.setInteger(
|
||||
"blockMetadata",
|
||||
targetCheck.getBlockMetadata((IBlockAccess)world));
|
||||
list.appendTag((NBTBase)vectorTag);
|
||||
} else {
|
||||
for (int i = 0; i < list.tagCount(); ++i) {
|
||||
final Vector3 vector = Vector3.readFromNBT(
|
||||
(NBTTagCompound)list.getCompoundTagAt(i));
|
||||
if (vector.equals(position)) {
|
||||
list.removeTag(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
saveNBT.setTag("fieldPoints", (NBTBase)list);
|
||||
nbt.setInteger("fieldSize", list.tagCount());
|
||||
|
||||
try {
|
||||
CompressedStreamTools.write(saveNBT, saveFile);
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
|
||||
// NBTFileLoader.saveData(this.getSaveDirectory(),
|
||||
// "custom_mode_" + this.getModeID(itemStack),
|
||||
// saveNBT);
|
||||
this.clearCache();
|
||||
entityPlayer.addChatMessage(
|
||||
new ChatComponentText("Field structure saved."));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
if (nbt != null) {
|
||||
nbt.setBoolean("mode", !nbt.getBoolean("mode"));
|
||||
entityPlayer.addChatMessage(new ChatComponentText(
|
||||
"Changed selection mode to " +
|
||||
(nbt.getBoolean("mode") ? "additive" : "substraction")));
|
||||
}
|
||||
}
|
||||
}
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
public boolean onItemUse(final ItemStack itemStack,
|
||||
final EntityPlayer entityPlayer, final World world,
|
||||
final int x, final int y, final int z,
|
||||
final int par7, final float par8, final float par9,
|
||||
final float par10) {
|
||||
if (!world.isRemote) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
if (nbt != null) {
|
||||
final Vector3 point1 =
|
||||
Vector3.readFromNBT(nbt.getCompoundTag("point1"));
|
||||
if (!nbt.hasKey("point1") ||
|
||||
point1.equals(new Vector3(0.0, 0.0, 0.0))) {
|
||||
nbt.setTag("point1",
|
||||
new Vector3(x, y, z).writeToNBT(new NBTTagCompound()));
|
||||
entityPlayer.addChatMessage(new ChatComponentText(
|
||||
"Set point 1: " + x + ", " + y + ", " + z + "."));
|
||||
if (GuiScreen.isShiftKeyDown()) {
|
||||
super.addInformation(itemStack, par2EntityPlayer, list, par4);
|
||||
} else {
|
||||
nbt.setTag("point2",
|
||||
new Vector3(x, y, z).writeToNBT(new NBTTagCompound()));
|
||||
entityPlayer.addChatMessage(new ChatComponentText(
|
||||
"Set point 2: " + x + ", " + y + ", " + z + "."));
|
||||
list.add("Hold shift for more...");
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public int getModeID(final ItemStack itemStack) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
int id = nbt.getInteger("id");
|
||||
if (id <= 0) {
|
||||
nbt.setInteger("id", this.getNextAvaliableID());
|
||||
id = nbt.getInteger("id");
|
||||
}
|
||||
return id;
|
||||
}
|
||||
public ItemStack onItemRightClick(
|
||||
final ItemStack itemStack, final World world, final EntityPlayer entityPlayer
|
||||
) {
|
||||
if (!world.isRemote) {
|
||||
if (entityPlayer.isSneaking()) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
if (nbt != null) {
|
||||
final Vector3 point1
|
||||
= Vector3.readFromNBT(nbt.getCompoundTag("point1"));
|
||||
final Vector3 point2
|
||||
= Vector3.readFromNBT(nbt.getCompoundTag("point2"));
|
||||
if (nbt.hasKey("point1") && nbt.hasKey("point2")
|
||||
&& !point1.equals(point2)
|
||||
&& point1.distanceTo(point2) < Settings.MAX_FORCE_FIELD_SCALE) {
|
||||
nbt.removeTag("point1");
|
||||
nbt.removeTag("point2");
|
||||
Vector3 midPoint = new Vector3();
|
||||
midPoint.x = (point1.x + point2.x) / 2.0;
|
||||
midPoint.y = (point1.y + point2.y) / 2.0;
|
||||
midPoint.z = (point1.z + point2.z) / 2.0;
|
||||
midPoint = midPoint.floor();
|
||||
point1.subtract(midPoint);
|
||||
point2.subtract(midPoint);
|
||||
final Vector3 minPoint = new Vector3(
|
||||
Math.min(point1.x, point2.x),
|
||||
Math.min(point1.y, point2.y),
|
||||
Math.min(point1.z, point2.z)
|
||||
);
|
||||
final Vector3 maxPoint = new Vector3(
|
||||
Math.max(point1.x, point2.x),
|
||||
Math.max(point1.y, point2.y),
|
||||
Math.max(point1.z, point2.z)
|
||||
);
|
||||
File saveFile = Paths
|
||||
.get(
|
||||
this.getSaveDirectory().getPath(),
|
||||
"custom_mode_" + this.getModeID(itemStack)
|
||||
)
|
||||
.toFile();
|
||||
// TODO: WTF happened to NBTFileLoader?!
|
||||
NBTTagCompound saveNBT = null;
|
||||
try {
|
||||
saveNBT = CompressedStreamTools.read(saveFile);
|
||||
} catch (IOException e1) {
|
||||
throw new UncheckedIOException(e1);
|
||||
}
|
||||
|
||||
public int getNextAvaliableID() {
|
||||
int i = 1;
|
||||
i += this.getSaveDirectory().list().length;
|
||||
return i;
|
||||
}
|
||||
// NBTTagCompound saveNBT = NBTFileLoader.loadData(
|
||||
// this.getSaveDirectory(),
|
||||
// "custom_mode_" + this.getModeID(itemStack));
|
||||
|
||||
public File getSaveDirectory() {
|
||||
final File saveDirectory =
|
||||
// TODO: might be wrong path?
|
||||
Paths.get(MinecraftServer.getServer().getFolderName(), "saves")
|
||||
.toFile();
|
||||
if (!saveDirectory.exists()) {
|
||||
saveDirectory.mkdir();
|
||||
}
|
||||
final File file = new File(saveDirectory, "mffs");
|
||||
if (!file.exists()) {
|
||||
file.mkdir();
|
||||
}
|
||||
return file;
|
||||
}
|
||||
if (saveNBT == null) {
|
||||
saveNBT = new NBTTagCompound();
|
||||
}
|
||||
NBTTagList list;
|
||||
if (saveNBT.hasKey("fieldPoints")) {
|
||||
list = (NBTTagList) saveNBT.getTag("fieldPoints");
|
||||
} else {
|
||||
list = new NBTTagList();
|
||||
}
|
||||
for (int x = minPoint.intX(); x <= maxPoint.intX(); ++x) {
|
||||
for (int y = minPoint.intY(); y <= maxPoint.intY(); ++y) {
|
||||
for (int z = minPoint.intZ(); z <= maxPoint.intZ(); ++z) {
|
||||
final Vector3 position = new Vector3(x, y, z);
|
||||
final Vector3 targetCheck
|
||||
= Vector3.add(midPoint, position);
|
||||
final Block blockID = targetCheck.getBlock(world);
|
||||
if (blockID != Blocks.air) {
|
||||
if (nbt.getBoolean("mode")) {
|
||||
final NBTTagCompound vectorTag
|
||||
= new NBTTagCompound();
|
||||
position.writeToNBT(vectorTag);
|
||||
vectorTag.setInteger(
|
||||
"blockID", Block.getIdFromBlock(blockID)
|
||||
);
|
||||
vectorTag.setInteger(
|
||||
"blockMetadata",
|
||||
targetCheck.getBlockMetadata((IBlockAccess
|
||||
) world)
|
||||
);
|
||||
list.appendTag((NBTBase) vectorTag);
|
||||
} else {
|
||||
for (int i = 0; i < list.tagCount(); ++i) {
|
||||
final Vector3 vector
|
||||
= Vector3.readFromNBT((NBTTagCompound
|
||||
) list.getCompoundTagAt(i));
|
||||
if (vector.equals(position)) {
|
||||
list.removeTag(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
saveNBT.setTag("fieldPoints", (NBTBase) list);
|
||||
nbt.setInteger("fieldSize", list.tagCount());
|
||||
|
||||
public Set<Vector3> getFieldBlocks(final IFieldInteraction projector,
|
||||
final ItemStack itemStack) {
|
||||
return this.getFieldBlockMap(projector, itemStack).keySet();
|
||||
}
|
||||
try {
|
||||
CompressedStreamTools.write(saveNBT, saveFile);
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
|
||||
public HashMap<Vector3, int[]>
|
||||
getFieldBlockMap(final IFieldInteraction projector,
|
||||
final ItemStack itemStack) {
|
||||
final String cacheID = "itemStack_" + itemStack.hashCode();
|
||||
if (Settings.USE_CACHE && this.cache.containsKey(cacheID) &&
|
||||
this.cache.get(cacheID) instanceof HashMap) {
|
||||
return (HashMap<Vector3, int[]>)this.cache.get(cacheID);
|
||||
}
|
||||
final float scale =
|
||||
projector.getModuleCount(ModularForceFieldSystem.itemModuleScale,
|
||||
new int[0]) /
|
||||
3.0f;
|
||||
final HashMap<Vector3, int[]> fieldBlocks = new HashMap<>();
|
||||
if (this.getSaveDirectory() != null) {
|
||||
NBTTagCompound nbt = null;
|
||||
try {
|
||||
nbt = CompressedStreamTools.read(
|
||||
Paths
|
||||
.get(this.getSaveDirectory().getPath(),
|
||||
"custom_mode_" + this.getModeID(itemStack))
|
||||
.toFile());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
// final NBTTagCompound nbt = NBTFileLoader.loadData(
|
||||
// this.getSaveDirectory(), "custom_mode_" + this.getModeID(itemStack));
|
||||
if (nbt != null) {
|
||||
final NBTTagList nbtTagList = nbt.getTagList("fieldPoints", 10);
|
||||
for (int i = 0; i < nbtTagList.tagCount(); ++i) {
|
||||
final NBTTagCompound vectorTag =
|
||||
(NBTTagCompound)nbtTagList.getCompoundTagAt(i);
|
||||
final Vector3 position = Vector3.readFromNBT(vectorTag);
|
||||
if (scale > 0.0f) {
|
||||
position.multiply(scale);
|
||||
}
|
||||
final int[] blockInfo = {vectorTag.getInteger("blockID"),
|
||||
vectorTag.getInteger("blockMetadata")};
|
||||
if (position != null) {
|
||||
fieldBlocks.put(position, blockInfo);
|
||||
}
|
||||
// NBTFileLoader.saveData(this.getSaveDirectory(),
|
||||
// "custom_mode_" + this.getModeID(itemStack),
|
||||
// saveNBT);
|
||||
this.clearCache();
|
||||
entityPlayer.addChatMessage(
|
||||
new ChatComponentText("Field structure saved.")
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
if (nbt != null) {
|
||||
nbt.setBoolean("mode", !nbt.getBoolean("mode"));
|
||||
entityPlayer.addChatMessage(new ChatComponentText(
|
||||
"Changed selection mode to "
|
||||
+ (nbt.getBoolean("mode") ? "additive" : "substraction")
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Settings.USE_CACHE) {
|
||||
this.cache.put(cacheID, fieldBlocks);
|
||||
}
|
||||
return itemStack;
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getCache(final String cacheID) {
|
||||
return this.cache.get(cacheID);
|
||||
}
|
||||
public boolean onItemUse(
|
||||
final ItemStack itemStack,
|
||||
final EntityPlayer entityPlayer,
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final int par7,
|
||||
final float par8,
|
||||
final float par9,
|
||||
final float par10
|
||||
) {
|
||||
if (!world.isRemote) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
if (nbt != null) {
|
||||
final Vector3 point1 = Vector3.readFromNBT(nbt.getCompoundTag("point1"));
|
||||
if (!nbt.hasKey("point1") || point1.equals(new Vector3(0.0, 0.0, 0.0))) {
|
||||
nbt.setTag(
|
||||
"point1", new Vector3(x, y, z).writeToNBT(new NBTTagCompound())
|
||||
);
|
||||
entityPlayer.addChatMessage(new ChatComponentText(
|
||||
"Set point 1: " + x + ", " + y + ", " + z + "."
|
||||
));
|
||||
} else {
|
||||
nbt.setTag(
|
||||
"point2", new Vector3(x, y, z).writeToNBT(new NBTTagCompound())
|
||||
);
|
||||
entityPlayer.addChatMessage(new ChatComponentText(
|
||||
"Set point 2: " + x + ", " + y + ", " + z + "."
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearCache(final String cacheID) {
|
||||
this.cache.remove(cacheID);
|
||||
}
|
||||
public int getModeID(final ItemStack itemStack) {
|
||||
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
|
||||
int id = nbt.getInteger("id");
|
||||
if (id <= 0) {
|
||||
nbt.setInteger("id", this.getNextAvaliableID());
|
||||
id = nbt.getInteger("id");
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearCache() {
|
||||
this.cache.clear();
|
||||
}
|
||||
public int getNextAvaliableID() {
|
||||
int i = 1;
|
||||
i += this.getSaveDirectory().list().length;
|
||||
return i;
|
||||
}
|
||||
|
||||
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
|
||||
return this.getFieldBlocks(projector, projector.getModeStack());
|
||||
}
|
||||
public File getSaveDirectory() {
|
||||
final File saveDirectory =
|
||||
// TODO: might be wrong path?
|
||||
Paths.get(MinecraftServer.getServer().getFolderName(), "saves").toFile();
|
||||
if (!saveDirectory.exists()) {
|
||||
saveDirectory.mkdir();
|
||||
}
|
||||
final File file = new File(saveDirectory, "mffs");
|
||||
if (!file.exists()) {
|
||||
file.mkdir();
|
||||
}
|
||||
return file;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Vector3> getInteriorPoints(final IFieldInteraction projector) {
|
||||
return this.getExteriorPoints(projector);
|
||||
}
|
||||
public Set<Vector3>
|
||||
getFieldBlocks(final IFieldInteraction projector, final ItemStack itemStack) {
|
||||
return this.getFieldBlockMap(projector, itemStack).keySet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInField(final IFieldInteraction projector,
|
||||
final Vector3 position) {
|
||||
return false;
|
||||
}
|
||||
public HashMap<Vector3, int[]>
|
||||
getFieldBlockMap(final IFieldInteraction projector, final ItemStack itemStack) {
|
||||
final String cacheID = "itemStack_" + itemStack.hashCode();
|
||||
if (Settings.USE_CACHE && this.cache.containsKey(cacheID)
|
||||
&& this.cache.get(cacheID) instanceof HashMap) {
|
||||
return (HashMap<Vector3, int[]>) this.cache.get(cacheID);
|
||||
}
|
||||
final float scale = projector.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleScale, new int[0]
|
||||
)
|
||||
/ 3.0f;
|
||||
final HashMap<Vector3, int[]> fieldBlocks = new HashMap<>();
|
||||
if (this.getSaveDirectory() != null) {
|
||||
NBTTagCompound nbt = null;
|
||||
try {
|
||||
nbt = CompressedStreamTools.read(
|
||||
Paths
|
||||
.get(
|
||||
this.getSaveDirectory().getPath(),
|
||||
"custom_mode_" + this.getModeID(itemStack)
|
||||
)
|
||||
.toFile()
|
||||
);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
// final NBTTagCompound nbt = NBTFileLoader.loadData(
|
||||
// this.getSaveDirectory(), "custom_mode_" + this.getModeID(itemStack));
|
||||
if (nbt != null) {
|
||||
final NBTTagList nbtTagList = nbt.getTagList("fieldPoints", 10);
|
||||
for (int i = 0; i < nbtTagList.tagCount(); ++i) {
|
||||
final NBTTagCompound vectorTag
|
||||
= (NBTTagCompound) nbtTagList.getCompoundTagAt(i);
|
||||
final Vector3 position = Vector3.readFromNBT(vectorTag);
|
||||
if (scale > 0.0f) {
|
||||
position.multiply(scale);
|
||||
}
|
||||
final int[] blockInfo = { vectorTag.getInteger("blockID"),
|
||||
vectorTag.getInteger("blockMetadata") };
|
||||
if (position != null) {
|
||||
fieldBlocks.put(position, blockInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Settings.USE_CACHE) {
|
||||
this.cache.put(cacheID, fieldBlocks);
|
||||
}
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void render(final IProjector projector, final double x, final double y,
|
||||
final double z, final float f, final long ticks) {
|
||||
final IProjectorMode[] modes = {ModularForceFieldSystem.itemModeCube,
|
||||
ModularForceFieldSystem.itemModeSphere,
|
||||
ModularForceFieldSystem.itemModeTube,
|
||||
ModularForceFieldSystem.itemModePyramid};
|
||||
modes[((TileEntity)projector).getWorldObj().rand.nextInt(modes.length - 1)]
|
||||
.render(projector, x, y, z, f, ticks);
|
||||
}
|
||||
@Override
|
||||
public Object getCache(final String cacheID) {
|
||||
return this.cache.get(cacheID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearCache(final String cacheID) {
|
||||
this.cache.remove(cacheID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clearCache() {
|
||||
this.cache.clear();
|
||||
}
|
||||
|
||||
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
|
||||
return this.getFieldBlocks(projector, projector.getModeStack());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Vector3> getInteriorPoints(final IFieldInteraction projector) {
|
||||
return this.getExteriorPoints(projector);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInField(final IFieldInteraction projector, final Vector3 position) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void render(
|
||||
final IProjector projector,
|
||||
final double x,
|
||||
final double y,
|
||||
final double z,
|
||||
final float f,
|
||||
final long ticks
|
||||
) {
|
||||
final IProjectorMode[] modes = { ModularForceFieldSystem.itemModeCube,
|
||||
ModularForceFieldSystem.itemModeSphere,
|
||||
ModularForceFieldSystem.itemModeTube,
|
||||
ModularForceFieldSystem.itemModePyramid };
|
||||
modes[((TileEntity) projector).getWorldObj().rand.nextInt(modes.length - 1)]
|
||||
.render(projector, x, y, z, f, ticks);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
package mffs.item.module.projector;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import calclavia.lib.CalculationHelper;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import mffs.api.IFieldInteraction;
|
||||
import mffs.api.IProjector;
|
||||
import mffs.item.mode.ItemMode;
|
||||
|
@ -14,109 +15,112 @@ import org.lwjgl.opengl.GL11;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ItemModeCylinder extends ItemMode {
|
||||
|
||||
public ItemModeCylinder() { super("modeCylinder"); }
|
||||
|
||||
@Override
|
||||
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
final int radius = (posScale.intX() + negScale.intX() + posScale.intZ() +
|
||||
negScale.intZ()) /
|
||||
2;
|
||||
final int height = posScale.intY() + negScale.intY();
|
||||
for (float x = (float)(-radius); x <= radius; ++x) {
|
||||
for (float z = (float)(-radius); z <= radius; ++z) {
|
||||
for (float y = 0.0f; y < height; ++y) {
|
||||
if ((y == 0.0f || y == height - 1) &&
|
||||
x * x + z * z + 0.0f <= radius * radius) {
|
||||
fieldBlocks.add(new Vector3(x, y, z));
|
||||
}
|
||||
if (x * x + z * z + 0.0f <= radius * radius &&
|
||||
x * x + z * z + 0.0f >= (radius - 1) * (radius - 1)) {
|
||||
fieldBlocks.add(new Vector3(x, y, z));
|
||||
}
|
||||
}
|
||||
}
|
||||
public ItemModeCylinder() {
|
||||
super("modeCylinder");
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Vector3> getInteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 translation = projector.getTranslation();
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
final int radius = (posScale.intX() + negScale.intX() + posScale.intZ() +
|
||||
negScale.intZ()) /
|
||||
2;
|
||||
final int height = posScale.intY() + negScale.intY();
|
||||
for (int x = -radius; x <= radius; ++x) {
|
||||
for (int z = -radius; z <= radius; ++z) {
|
||||
for (int y = 0; y < height; ++y) {
|
||||
final Vector3 position = new Vector3(x, y, z);
|
||||
if (this.isInField(
|
||||
projector,
|
||||
Vector3.add(position, new Vector3((TileEntity)projector))
|
||||
.add(translation))) {
|
||||
fieldBlocks.add(position);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInField(final IFieldInteraction projector,
|
||||
final Vector3 position) {
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
final int radius = (posScale.intX() + negScale.intX() + posScale.intZ() +
|
||||
negScale.intZ()) /
|
||||
2;
|
||||
final Vector3 projectorPos = new Vector3((TileEntity)projector);
|
||||
projectorPos.add(projector.getTranslation());
|
||||
final Vector3 relativePosition = position.clone().subtract(projectorPos);
|
||||
CalculationHelper.rotateByAngle(relativePosition,
|
||||
-projector.getRotationYaw(),
|
||||
-projector.getRotationPitch());
|
||||
return relativePosition.x * relativePosition.x +
|
||||
relativePosition.z * relativePosition.z + 0.0 <=
|
||||
radius * radius;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void render(final IProjector projector, final double x, final double y,
|
||||
final double z, final float f, final long ticks) {
|
||||
final float scale = 0.15f;
|
||||
final float detail = 0.5f;
|
||||
GL11.glScalef(scale, scale, scale);
|
||||
final float radius = 1.5f;
|
||||
int i = 0;
|
||||
for (float renderX = -radius; renderX <= radius; renderX += detail) {
|
||||
for (float renderZ = -radius; renderZ <= radius; renderZ += detail) {
|
||||
for (float renderY = -radius; renderY <= radius; renderY += detail) {
|
||||
if ((renderX * renderX + renderZ * renderZ + 0.0f <=
|
||||
radius * radius &&
|
||||
renderX * renderX + renderZ * renderZ + 0.0f >=
|
||||
(radius - 1.0f) * (radius - 1.0f)) ||
|
||||
((renderY == 0.0f || renderY == radius - 1.0f) &&
|
||||
renderX * renderX + renderZ * renderZ + 0.0f <=
|
||||
radius * radius)) {
|
||||
if (i % 2 == 0) {
|
||||
final Vector3 vector = new Vector3(renderX, renderY, renderZ);
|
||||
GL11.glTranslated(vector.x, vector.y, vector.z);
|
||||
ModelCube.INSTNACE.render();
|
||||
GL11.glTranslated(-vector.x, -vector.y, -vector.z);
|
||||
@Override
|
||||
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
final int radius
|
||||
= (posScale.intX() + negScale.intX() + posScale.intZ() + negScale.intZ()) / 2;
|
||||
final int height = posScale.intY() + negScale.intY();
|
||||
for (float x = (float) (-radius); x <= radius; ++x) {
|
||||
for (float z = (float) (-radius); z <= radius; ++z) {
|
||||
for (float y = 0.0f; y < height; ++y) {
|
||||
if ((y == 0.0f || y == height - 1)
|
||||
&& x * x + z * z + 0.0f <= radius * radius) {
|
||||
fieldBlocks.add(new Vector3(x, y, z));
|
||||
}
|
||||
if (x * x + z * z + 0.0f <= radius * radius
|
||||
&& x * x + z * z + 0.0f >= (radius - 1) * (radius - 1)) {
|
||||
fieldBlocks.add(new Vector3(x, y, z));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Vector3> getInteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 translation = projector.getTranslation();
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
final int radius
|
||||
= (posScale.intX() + negScale.intX() + posScale.intZ() + negScale.intZ()) / 2;
|
||||
final int height = posScale.intY() + negScale.intY();
|
||||
for (int x = -radius; x <= radius; ++x) {
|
||||
for (int z = -radius; z <= radius; ++z) {
|
||||
for (int y = 0; y < height; ++y) {
|
||||
final Vector3 position = new Vector3(x, y, z);
|
||||
if (this.isInField(
|
||||
projector,
|
||||
Vector3.add(position, new Vector3((TileEntity) projector))
|
||||
.add(translation)
|
||||
)) {
|
||||
fieldBlocks.add(position);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInField(final IFieldInteraction projector, final Vector3 position) {
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
final int radius
|
||||
= (posScale.intX() + negScale.intX() + posScale.intZ() + negScale.intZ()) / 2;
|
||||
final Vector3 projectorPos = new Vector3((TileEntity) projector);
|
||||
projectorPos.add(projector.getTranslation());
|
||||
final Vector3 relativePosition = position.clone().subtract(projectorPos);
|
||||
CalculationHelper.rotateByAngle(
|
||||
relativePosition, -projector.getRotationYaw(), -projector.getRotationPitch()
|
||||
);
|
||||
return relativePosition.x * relativePosition.x
|
||||
+ relativePosition.z * relativePosition.z + 0.0
|
||||
<= radius * radius;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void render(
|
||||
final IProjector projector,
|
||||
final double x,
|
||||
final double y,
|
||||
final double z,
|
||||
final float f,
|
||||
final long ticks
|
||||
) {
|
||||
final float scale = 0.15f;
|
||||
final float detail = 0.5f;
|
||||
GL11.glScalef(scale, scale, scale);
|
||||
final float radius = 1.5f;
|
||||
int i = 0;
|
||||
for (float renderX = -radius; renderX <= radius; renderX += detail) {
|
||||
for (float renderZ = -radius; renderZ <= radius; renderZ += detail) {
|
||||
for (float renderY = -radius; renderY <= radius; renderY += detail) {
|
||||
if ((renderX * renderX + renderZ * renderZ + 0.0f <= radius * radius
|
||||
&& renderX * renderX + renderZ * renderZ + 0.0f
|
||||
>= (radius - 1.0f) * (radius - 1.0f))
|
||||
|| ((renderY == 0.0f || renderY == radius - 1.0f)
|
||||
&& renderX * renderX + renderZ * renderZ + 0.0f
|
||||
<= radius * radius)) {
|
||||
if (i % 2 == 0) {
|
||||
final Vector3 vector = new Vector3(renderX, renderY, renderZ);
|
||||
GL11.glTranslated(vector.x, vector.y, vector.z);
|
||||
ModelCube.INSTNACE.render();
|
||||
GL11.glTranslated(-vector.x, -vector.y, -vector.z);
|
||||
}
|
||||
++i;
|
||||
}
|
||||
}
|
||||
}
|
||||
++i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
package mffs.item.module.projector;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import calclavia.lib.CalculationHelper;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import mffs.api.IFieldInteraction;
|
||||
import mffs.api.IProjector;
|
||||
import mffs.item.mode.ItemMode;
|
||||
|
@ -15,123 +16,152 @@ import universalelectricity.core.vector.Vector3;
|
|||
import universalelectricity.prefab.vector.Region3;
|
||||
|
||||
public class ItemModePyramid extends ItemMode {
|
||||
public ItemModePyramid() { super("modePyramid"); }
|
||||
|
||||
@Override
|
||||
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
final int xStretch = posScale.intX() + negScale.intX();
|
||||
final int yStretch = posScale.intY() + negScale.intY();
|
||||
final int zStretch = posScale.intZ() + negScale.intZ();
|
||||
final Vector3 translation = new Vector3(0.0, -negScale.intY(), 0.0);
|
||||
for (float y = 0.0f; y <= yStretch; ++y) {
|
||||
for (float x = (float)(-xStretch); x <= xStretch; ++x) {
|
||||
for (float z = (float)(-zStretch); z <= zStretch; ++z) {
|
||||
final double yTest = y / yStretch * 8.0f;
|
||||
final double xzPositivePlane =
|
||||
(1.0f - x / xStretch - z / zStretch) * 8.0f;
|
||||
final double xzNegativePlane =
|
||||
(1.0f + x / xStretch - z / zStretch) * 8.0f;
|
||||
if (x >= 0.0f && z >= 0.0f &&
|
||||
Math.round(xzPositivePlane) == Math.round(yTest)) {
|
||||
fieldBlocks.add(new Vector3(x, y, z).add(translation));
|
||||
fieldBlocks.add(new Vector3(x, y, -z).add(translation));
|
||||
}
|
||||
if (x <= 0.0f && z >= 0.0f &&
|
||||
Math.round(xzNegativePlane) == Math.round(yTest)) {
|
||||
fieldBlocks.add(new Vector3(x, y, -z).add(translation));
|
||||
fieldBlocks.add(new Vector3(x, y, z).add(translation));
|
||||
}
|
||||
if (y == 0.0f &&
|
||||
Math.abs(x) + Math.abs(z) < (xStretch + yStretch) / 2) {
|
||||
fieldBlocks.add(new Vector3(x, y, z).add(translation));
|
||||
}
|
||||
}
|
||||
}
|
||||
public ItemModePyramid() {
|
||||
super("modePyramid");
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Vector3> getInteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
final int xStretch = posScale.intX() + negScale.intX();
|
||||
final int yStretch = posScale.intY() + negScale.intY();
|
||||
final int zStretch = posScale.intZ() + negScale.intZ();
|
||||
final Vector3 translation = new Vector3(0.0, -0.4, 0.0);
|
||||
for (float x = (float)(-xStretch); x <= xStretch; ++x) {
|
||||
for (float z = (float)(-zStretch); z <= zStretch; ++z) {
|
||||
@Override
|
||||
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
final int xStretch = posScale.intX() + negScale.intX();
|
||||
final int yStretch = posScale.intY() + negScale.intY();
|
||||
final int zStretch = posScale.intZ() + negScale.intZ();
|
||||
final Vector3 translation = new Vector3(0.0, -negScale.intY(), 0.0);
|
||||
for (float y = 0.0f; y <= yStretch; ++y) {
|
||||
final Vector3 position = new Vector3(x, y, z).add(translation);
|
||||
if (this.isInField(
|
||||
projector,
|
||||
Vector3.add(position, new Vector3((TileEntity)projector)))) {
|
||||
fieldBlocks.add(position);
|
||||
}
|
||||
for (float x = (float) (-xStretch); x <= xStretch; ++x) {
|
||||
for (float z = (float) (-zStretch); z <= zStretch; ++z) {
|
||||
final double yTest = y / yStretch * 8.0f;
|
||||
final double xzPositivePlane
|
||||
= (1.0f - x / xStretch - z / zStretch) * 8.0f;
|
||||
final double xzNegativePlane
|
||||
= (1.0f + x / xStretch - z / zStretch) * 8.0f;
|
||||
if (x >= 0.0f && z >= 0.0f
|
||||
&& Math.round(xzPositivePlane) == Math.round(yTest)) {
|
||||
fieldBlocks.add(new Vector3(x, y, z).add(translation));
|
||||
fieldBlocks.add(new Vector3(x, y, -z).add(translation));
|
||||
}
|
||||
if (x <= 0.0f && z >= 0.0f
|
||||
&& Math.round(xzNegativePlane) == Math.round(yTest)) {
|
||||
fieldBlocks.add(new Vector3(x, y, -z).add(translation));
|
||||
fieldBlocks.add(new Vector3(x, y, z).add(translation));
|
||||
}
|
||||
if (y == 0.0f
|
||||
&& Math.abs(x) + Math.abs(z) < (xStretch + yStretch) / 2) {
|
||||
fieldBlocks.add(new Vector3(x, y, z).add(translation));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isInField(final IFieldInteraction projector,
|
||||
final Vector3 position) {
|
||||
final Vector3 posScale = projector.getPositiveScale().clone();
|
||||
final Vector3 negScale = projector.getNegativeScale().clone();
|
||||
final int xStretch = posScale.intX() + negScale.intX();
|
||||
final int yStretch = posScale.intY() + negScale.intY();
|
||||
final int zStretch = posScale.intZ() + negScale.intZ();
|
||||
final Vector3 projectorPos = new Vector3((TileEntity)projector);
|
||||
projectorPos.add(projector.getTranslation());
|
||||
projectorPos.add(new Vector3(0.0, -negScale.intY() + 1, 0.0));
|
||||
final Vector3 relativePosition = position.clone().subtract(projectorPos);
|
||||
CalculationHelper.rotateByAngle(relativePosition,
|
||||
-projector.getRotationYaw(),
|
||||
-projector.getRotationPitch());
|
||||
final Region3 region = new Region3(negScale.multiply(-1.0), posScale);
|
||||
return region.isIn(relativePosition) && relativePosition.y > 0.0 &&
|
||||
1.0 - Math.abs(relativePosition.x) / xStretch -
|
||||
Math.abs(relativePosition.z) / zStretch >
|
||||
relativePosition.y / yStretch;
|
||||
}
|
||||
@Override
|
||||
public Set<Vector3> getInteriorPoints(final IFieldInteraction projector) {
|
||||
final Set<Vector3> fieldBlocks = new HashSet<>();
|
||||
final Vector3 posScale = projector.getPositiveScale();
|
||||
final Vector3 negScale = projector.getNegativeScale();
|
||||
final int xStretch = posScale.intX() + negScale.intX();
|
||||
final int yStretch = posScale.intY() + negScale.intY();
|
||||
final int zStretch = posScale.intZ() + negScale.intZ();
|
||||
final Vector3 translation = new Vector3(0.0, -0.4, 0.0);
|
||||
for (float x = (float) (-xStretch); x <= xStretch; ++x) {
|
||||
for (float z = (float) (-zStretch); z <= zStretch; ++z) {
|
||||
for (float y = 0.0f; y <= yStretch; ++y) {
|
||||
final Vector3 position = new Vector3(x, y, z).add(translation);
|
||||
if (this.isInField(
|
||||
projector,
|
||||
Vector3.add(position, new Vector3((TileEntity) projector))
|
||||
)) {
|
||||
fieldBlocks.add(position);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return fieldBlocks;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void render(final IProjector projector, final double x, final double y,
|
||||
final double z, final float f, final long ticks) {
|
||||
final Tessellator tessellator = Tessellator.instance;
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotatef(180.0f, 0.0f, 0.0f, 1.0f);
|
||||
final float height = 0.5f;
|
||||
final float width = 0.3f;
|
||||
final int uvMaxX = 2;
|
||||
final int uvMaxY = 2;
|
||||
final Vector3 translation = new Vector3(0.0, -0.4, 0.0);
|
||||
tessellator.startDrawing(6);
|
||||
tessellator.setColorRGBA(72, 198, 255, 255);
|
||||
tessellator.addVertexWithUV(0.0 + translation.x, 0.0 + translation.y,
|
||||
0.0 + translation.z, 0.0, 0.0);
|
||||
tessellator.addVertexWithUV(-width + translation.x, height + translation.y,
|
||||
-width + translation.z, (double)(-uvMaxX),
|
||||
(double)(-uvMaxY));
|
||||
tessellator.addVertexWithUV(-width + translation.x, height + translation.y,
|
||||
width + translation.z, (double)(-uvMaxX),
|
||||
(double)uvMaxY);
|
||||
tessellator.addVertexWithUV(width + translation.x, height + translation.y,
|
||||
width + translation.z, (double)uvMaxX,
|
||||
(double)uvMaxY);
|
||||
tessellator.addVertexWithUV(width + translation.x, height + translation.y,
|
||||
-width + translation.z, (double)uvMaxX,
|
||||
(double)(-uvMaxY));
|
||||
tessellator.addVertexWithUV(-width + translation.x, height + translation.y,
|
||||
-width + translation.z, (double)(-uvMaxX),
|
||||
(double)(-uvMaxY));
|
||||
tessellator.draw();
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
@Override
|
||||
public boolean isInField(final IFieldInteraction projector, final Vector3 position) {
|
||||
final Vector3 posScale = projector.getPositiveScale().clone();
|
||||
final Vector3 negScale = projector.getNegativeScale().clone();
|
||||
final int xStretch = posScale.intX() + negScale.intX();
|
||||
final int yStretch = posScale.intY() + negScale.intY();
|
||||
final int zStretch = posScale.intZ() + negScale.intZ();
|
||||
final Vector3 projectorPos = new Vector3((TileEntity) projector);
|
||||
projectorPos.add(projector.getTranslation());
|
||||
projectorPos.add(new Vector3(0.0, -negScale.intY() + 1, 0.0));
|
||||
final Vector3 relativePosition = position.clone().subtract(projectorPos);
|
||||
CalculationHelper.rotateByAngle(
|
||||
relativePosition, -projector.getRotationYaw(), -projector.getRotationPitch()
|
||||
);
|
||||
final Region3 region = new Region3(negScale.multiply(-1.0), posScale);
|
||||
return region.isIn(relativePosition) && relativePosition.y > 0.0
|
||||
&& 1.0 - Math.abs(relativePosition.x) / xStretch
|
||||
- Math.abs(relativePosition.z) / zStretch
|
||||
> relativePosition.y / yStretch;
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@Override
|
||||
public void render(
|
||||
final IProjector projector,
|
||||
final double x,
|
||||
final double y,
|
||||
final double z,
|
||||
final float f,
|
||||
final long ticks
|
||||
) {
|
||||
final Tessellator tessellator = Tessellator.instance;
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotatef(180.0f, 0.0f, 0.0f, 1.0f);
|
||||
final float height = 0.5f;
|
||||
final float width = 0.3f;
|
||||
final int uvMaxX = 2;
|
||||
final int uvMaxY = 2;
|
||||
final Vector3 translation = new Vector3(0.0, -0.4, 0.0);
|
||||
tessellator.startDrawing(6);
|
||||
tessellator.setColorRGBA(72, 198, 255, 255);
|
||||
tessellator.addVertexWithUV(
|
||||
0.0 + translation.x, 0.0 + translation.y, 0.0 + translation.z, 0.0, 0.0
|
||||
);
|
||||
tessellator.addVertexWithUV(
|
||||
-width + translation.x,
|
||||
height + translation.y,
|
||||
-width + translation.z,
|
||||
(double) (-uvMaxX),
|
||||
(double) (-uvMaxY)
|
||||
);
|
||||
tessellator.addVertexWithUV(
|
||||
-width + translation.x,
|
||||
height + translation.y,
|
||||
width + translation.z,
|
||||
(double) (-uvMaxX),
|
||||
(double) uvMaxY
|
||||
);
|
||||
tessellator.addVertexWithUV(
|
||||
width + translation.x,
|
||||
height + translation.y,
|
||||
width + translation.z,
|
||||
(double) uvMaxX,
|
||||
(double) uvMaxY
|
||||
);
|
||||
tessellator.addVertexWithUV(
|
||||
width + translation.x,
|
||||
height + translation.y,
|
||||
-width + translation.z,
|
||||
(double) uvMaxX,
|
||||
(double) (-uvMaxY)
|
||||
);
|
||||
tessellator.addVertexWithUV(
|
||||
-width + translation.x,
|
||||
height + translation.y,
|
||||
-width + translation.z,
|
||||
(double) (-uvMaxX),
|
||||
(double) (-uvMaxY)
|
||||
);
|
||||
tessellator.draw();
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,12 +2,13 @@ package mffs.item.module.projector;
|
|||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import mffs.IDelayedEventHandler;
|
||||
import mffs.MFFSHelper;
|
||||
import mffs.ModularForceFieldSystem;
|
||||
import mffs.base.PacketFxs;
|
||||
import mffs.api.Blacklist;
|
||||
import mffs.api.IProjector;
|
||||
import mffs.base.PacketFxs;
|
||||
import mffs.base.TileEntityInventory;
|
||||
import mffs.event.BlockDropDelayedEvent;
|
||||
import mffs.event.BlockInventoryDropDelayedEvent;
|
||||
|
@ -33,8 +34,7 @@ public class ItemModuleDisintegration extends ItemModule {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean onProject(final IProjector projector,
|
||||
final Set<Vector3> fields) {
|
||||
public boolean onProject(final IProjector projector, final Set<Vector3> fields) {
|
||||
this.blockCount = 0;
|
||||
return false;
|
||||
}
|
||||
|
@ -43,11 +43,15 @@ public class ItemModuleDisintegration extends ItemModule {
|
|||
public int onProject(final IProjector projector, final Vector3 position) {
|
||||
if (projector.getTicks() % 40L == 0L) {
|
||||
final TileEntity tileEntity = (TileEntity) projector;
|
||||
final Block block = position.getBlock((IBlockAccess) tileEntity.getWorldObj());
|
||||
final Block block
|
||||
= position.getBlock((IBlockAccess) tileEntity.getWorldObj());
|
||||
if (block != Blocks.air) {
|
||||
if (projector.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleCamouflage, new int[0]) > 0) {
|
||||
final int blockMetadata = position.getBlockMetadata((IBlockAccess) tileEntity.getWorldObj());
|
||||
ModularForceFieldSystem.itemModuleCamouflage, new int[0]
|
||||
)
|
||||
> 0) {
|
||||
final int blockMetadata = position.getBlockMetadata((IBlockAccess
|
||||
) tileEntity.getWorldObj());
|
||||
final Set<ItemStack> filterStacks = new HashSet<>();
|
||||
for (final int i : projector.getModuleSlots()) {
|
||||
final ItemStack checkStack = projector.getStackInSlot(i);
|
||||
|
@ -58,8 +62,8 @@ public class ItemModuleDisintegration extends ItemModule {
|
|||
}
|
||||
boolean contains = false;
|
||||
for (final ItemStack filterStack : filterStacks) {
|
||||
if (filterStack.isItemEqual(
|
||||
new ItemStack(block, 1, blockMetadata))) {
|
||||
if (filterStack.isItemEqual(new ItemStack(block, 1, blockMetadata)
|
||||
)) {
|
||||
contains = true;
|
||||
break;
|
||||
}
|
||||
|
@ -68,8 +72,8 @@ public class ItemModuleDisintegration extends ItemModule {
|
|||
return 1;
|
||||
}
|
||||
}
|
||||
if (Blacklist.disintegrationBlacklist.contains(block) ||
|
||||
block instanceof IFluidBlock) {
|
||||
if (Blacklist.disintegrationBlacklist.contains(block)
|
||||
|| block instanceof IFluidBlock) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -79,26 +83,38 @@ public class ItemModuleDisintegration extends ItemModule {
|
|||
fxsData.setInteger("type", 2);
|
||||
|
||||
ModularForceFieldSystem.channel.sendToAll(
|
||||
new PacketFxs(new Vector3((TileEntity) projector), fxsData));
|
||||
new PacketFxs(new Vector3((TileEntity) projector), fxsData)
|
||||
);
|
||||
|
||||
if (projector.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleCollection, new int[0]) > 0) {
|
||||
ModularForceFieldSystem.itemModuleCollection, new int[0]
|
||||
)
|
||||
> 0) {
|
||||
((TileEntityForceFieldProjector) projector)
|
||||
.getDelayedEvents()
|
||||
.add(new BlockInventoryDropDelayedEvent(
|
||||
(IDelayedEventHandler) projector, 39, block,
|
||||
tileEntity.getWorldObj(), position,
|
||||
(TileEntityInventory) projector));
|
||||
.getDelayedEvents()
|
||||
.add(new BlockInventoryDropDelayedEvent(
|
||||
(IDelayedEventHandler) projector,
|
||||
39,
|
||||
block,
|
||||
tileEntity.getWorldObj(),
|
||||
position,
|
||||
(TileEntityInventory) projector
|
||||
));
|
||||
} else {
|
||||
((TileEntityForceFieldProjector) projector)
|
||||
.getDelayedEvents()
|
||||
.add(new BlockDropDelayedEvent(
|
||||
(IDelayedEventHandler) projector, 39, block,
|
||||
tileEntity.getWorldObj(), position));
|
||||
.getDelayedEvents()
|
||||
.add(new BlockDropDelayedEvent(
|
||||
(IDelayedEventHandler) projector,
|
||||
39,
|
||||
block,
|
||||
tileEntity.getWorldObj(),
|
||||
position
|
||||
));
|
||||
}
|
||||
if (this.blockCount++ >= projector.getModuleCount(ModularForceFieldSystem.itemModuleSpeed,
|
||||
new int[0]) /
|
||||
3) {
|
||||
if (this.blockCount++
|
||||
>= projector.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleSpeed, new int[0]
|
||||
) / 3) {
|
||||
return 2;
|
||||
}
|
||||
return 1;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
package mffs.item.module.projector;
|
||||
|
||||
import icbm.api.IBlockFrequency;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
|
||||
import icbm.api.IBlockFrequency;
|
||||
import mffs.api.IFieldInteraction;
|
||||
import mffs.api.IProjector;
|
||||
import mffs.api.fortron.IFortronFrequency;
|
||||
|
@ -13,36 +14,36 @@ import net.minecraft.tileentity.TileEntity;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ItemModuleFusion extends ItemModule {
|
||||
public ItemModuleFusion() {
|
||||
super("moduleFusion");
|
||||
this.setMaxStackSize(1);
|
||||
this.setCost(1.0f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onProject(final IProjector projector,
|
||||
final Set<Vector3> fieldBlocks) {
|
||||
final Set<IBlockFrequency> machines = FrequencyGrid.instance().get(
|
||||
((IFortronFrequency)projector).getFrequency());
|
||||
for (final IBlockFrequency compareProjector : machines) {
|
||||
if (compareProjector instanceof IProjector &&
|
||||
compareProjector != projector &&
|
||||
((TileEntity)compareProjector).getWorldObj() ==
|
||||
((TileEntity)projector).getWorldObj() &&
|
||||
((TileEntityBase)compareProjector).isActive() &&
|
||||
((IProjector)compareProjector).getMode() != null) {
|
||||
final Iterator<Vector3> it = fieldBlocks.iterator();
|
||||
while (it.hasNext()) {
|
||||
final Vector3 position = it.next();
|
||||
if (((IProjector)compareProjector)
|
||||
.getMode()
|
||||
.isInField((IFieldInteraction)compareProjector,
|
||||
position.clone())) {
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
public ItemModuleFusion() {
|
||||
super("moduleFusion");
|
||||
this.setMaxStackSize(1);
|
||||
this.setCost(1.0f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onProject(final IProjector projector, final Set<Vector3> fieldBlocks) {
|
||||
final Set<IBlockFrequency> machines
|
||||
= FrequencyGrid.instance().get(((IFortronFrequency) projector).getFrequency()
|
||||
);
|
||||
for (final IBlockFrequency compareProjector : machines) {
|
||||
if (compareProjector instanceof IProjector && compareProjector != projector
|
||||
&& ((TileEntity) compareProjector).getWorldObj()
|
||||
== ((TileEntity) projector).getWorldObj()
|
||||
&& ((TileEntityBase) compareProjector).isActive()
|
||||
&& ((IProjector) compareProjector).getMode() != null) {
|
||||
final Iterator<Vector3> it = fieldBlocks.iterator();
|
||||
while (it.hasNext()) {
|
||||
final Vector3 position = it.next();
|
||||
if (((IProjector) compareProjector)
|
||||
.getMode()
|
||||
.isInField(
|
||||
(IFieldInteraction) compareProjector, position.clone()
|
||||
)) {
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,23 +2,26 @@ package mffs.item.module.projector;
|
|||
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
|
||||
import mffs.api.IFieldInteraction;
|
||||
import mffs.item.module.ItemModule;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ItemModuleManipulator extends ItemModule {
|
||||
public ItemModuleManipulator() { super("moduleManipulator"); }
|
||||
|
||||
@Override
|
||||
public void onCalculate(final IFieldInteraction projector,
|
||||
final Set<Vector3> fieldBlocks) {
|
||||
final Iterator<Vector3> it = fieldBlocks.iterator();
|
||||
while (it.hasNext()) {
|
||||
final Vector3 position = it.next();
|
||||
if (position.y < ((TileEntity)projector).yCoord) {
|
||||
it.remove();
|
||||
}
|
||||
public ItemModuleManipulator() {
|
||||
super("moduleManipulator");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void
|
||||
onCalculate(final IFieldInteraction projector, final Set<Vector3> fieldBlocks) {
|
||||
final Iterator<Vector3> it = fieldBlocks.iterator();
|
||||
while (it.hasNext()) {
|
||||
final Vector3 position = it.next();
|
||||
if (position.y < ((TileEntity) projector).yCoord) {
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,17 +8,24 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemModuleShock extends ItemModule {
|
||||
public ItemModuleShock() { super("moduleShock"); }
|
||||
|
||||
@Override
|
||||
public boolean onCollideWithForceField(final World world, final int x,
|
||||
final int y, final int z,
|
||||
final Entity entity,
|
||||
final ItemStack moduleStack) {
|
||||
if (entity instanceof EntityLiving) {
|
||||
entity.attackEntityFrom(ModularForceFieldSystem.damagefieldShock,
|
||||
moduleStack.stackSize);
|
||||
public ItemModuleShock() {
|
||||
super("moduleShock");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCollideWithForceField(
|
||||
final World world,
|
||||
final int x,
|
||||
final int y,
|
||||
final int z,
|
||||
final Entity entity,
|
||||
final ItemStack moduleStack
|
||||
) {
|
||||
if (entity instanceof EntityLiving) {
|
||||
entity.attackEntityFrom(
|
||||
ModularForceFieldSystem.damagefieldShock, moduleStack.stackSize
|
||||
);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package mffs.item.module.projector;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import mffs.api.IProjector;
|
||||
import mffs.item.module.ItemModule;
|
||||
import net.minecraft.block.BlockLiquid;
|
||||
|
@ -11,22 +12,22 @@ import net.minecraftforge.fluids.IFluidBlock;
|
|||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ItemModuleSponge extends ItemModule {
|
||||
public ItemModuleSponge() {
|
||||
super("moduleSponge");
|
||||
this.setMaxStackSize(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onProject(final IProjector projector,
|
||||
final Set<Vector3> fields) {
|
||||
if (projector.getTicks() % 60L == 0L) {
|
||||
final World world = ((TileEntity)projector).getWorldObj();
|
||||
for (final Vector3 point : projector.getInteriorPoints()) {
|
||||
if (point.getBlock(world) instanceof IFluidBlock || point.getBlock(world) instanceof BlockLiquid) {
|
||||
point.setBlock(world, Blocks.air);
|
||||
}
|
||||
}
|
||||
public ItemModuleSponge() {
|
||||
super("moduleSponge");
|
||||
this.setMaxStackSize(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onProject(final IProjector projector, final Set<Vector3> fields) {
|
||||
if (projector.getTicks() % 60L == 0L) {
|
||||
final World world = ((TileEntity) projector).getWorldObj();
|
||||
for (final Vector3 point : projector.getInteriorPoints()) {
|
||||
if (point.getBlock(world) instanceof IFluidBlock
|
||||
|| point.getBlock(world) instanceof BlockLiquid) {
|
||||
point.setBlock(world, Blocks.air);
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onProject(projector, fields);
|
||||
}
|
||||
return super.onProject(projector, fields);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
package mffs.item.module.projector;
|
||||
|
||||
import calclavia.lib.CalculationHelper;
|
||||
import java.util.HashMap;
|
||||
import java.util.Set;
|
||||
import mffs.base.PacketFxs;
|
||||
|
||||
import calclavia.lib.CalculationHelper;
|
||||
import mffs.ModularForceFieldSystem;
|
||||
import mffs.api.Blacklist;
|
||||
import mffs.api.IProjector;
|
||||
import mffs.base.PacketFxs;
|
||||
import mffs.item.module.ItemModule;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.Entity;
|
||||
|
@ -32,8 +33,7 @@ public class ItemModuleStablize extends ItemModule {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean onProject(final IProjector projector,
|
||||
final Set<Vector3> fields) {
|
||||
public boolean onProject(final IProjector projector, final Set<Vector3> fields) {
|
||||
this.blockCount = 0;
|
||||
return false;
|
||||
}
|
||||
|
@ -43,28 +43,36 @@ public class ItemModuleStablize extends ItemModule {
|
|||
int[] blockInfo = null;
|
||||
if (projector.getTicks() % 40L == 0L) {
|
||||
if (projector.getMode() instanceof ItemModeCustom) {
|
||||
final HashMap<Vector3, int[]> fieldBlocks = ((ItemModeCustom) projector.getMode())
|
||||
.getFieldBlockMap(projector, projector.getModeStack());
|
||||
final Vector3 fieldCenter = new Vector3((TileEntity) projector).add(projector.getTranslation());
|
||||
final HashMap<Vector3, int[]> fieldBlocks
|
||||
= ((ItemModeCustom) projector.getMode())
|
||||
.getFieldBlockMap(projector, projector.getModeStack());
|
||||
final Vector3 fieldCenter
|
||||
= new Vector3((TileEntity) projector).add(projector.getTranslation());
|
||||
final Vector3 relativePosition = position.clone().subtract(fieldCenter);
|
||||
CalculationHelper.rotateByAngle(relativePosition,
|
||||
-projector.getRotationYaw(),
|
||||
-projector.getRotationPitch());
|
||||
CalculationHelper.rotateByAngle(
|
||||
relativePosition,
|
||||
-projector.getRotationYaw(),
|
||||
-projector.getRotationPitch()
|
||||
);
|
||||
blockInfo = fieldBlocks.get(relativePosition.round());
|
||||
}
|
||||
for (int dir = 0; dir < 6; ++dir) {
|
||||
final ForgeDirection direction = ForgeDirection.getOrientation(dir);
|
||||
final TileEntity tileEntity = VectorHelper.getTileEntityFromSide(
|
||||
((TileEntity) projector).getWorldObj(),
|
||||
new Vector3((TileEntity) projector), direction);
|
||||
((TileEntity) projector).getWorldObj(),
|
||||
new Vector3((TileEntity) projector),
|
||||
direction
|
||||
);
|
||||
if (tileEntity instanceof IInventory) {
|
||||
final IInventory inventory = (IInventory) tileEntity;
|
||||
for (int i = 0; i < inventory.getSizeInventory(); ++i) {
|
||||
final ItemStack checkStack = inventory.getStackInSlot(i);
|
||||
if (checkStack != null && checkStack.getItem() instanceof ItemBlock) {
|
||||
if (checkStack != null
|
||||
&& checkStack.getItem() instanceof ItemBlock) {
|
||||
if (blockInfo != null) {
|
||||
if (Block.getBlockById(blockInfo[0]) != Block
|
||||
.getBlockFromItem((ItemBlock) checkStack.getItem())) {
|
||||
if (Block.getBlockById(blockInfo[0])
|
||||
!= Block.getBlockFromItem((ItemBlock
|
||||
) checkStack.getItem())) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -72,28 +80,42 @@ public class ItemModuleStablize extends ItemModule {
|
|||
if (((TileEntity) projector)
|
||||
.getWorldObj()
|
||||
.canPlaceEntityOnSide(
|
||||
Block.getBlockFromItem(
|
||||
(ItemBlock) checkStack.getItem()),
|
||||
position.intX(), position.intY(), position.intZ(),
|
||||
false, 0, (Entity) null, checkStack)) {
|
||||
Block.getBlockFromItem((ItemBlock
|
||||
) checkStack.getItem()),
|
||||
position.intX(),
|
||||
position.intY(),
|
||||
position.intZ(),
|
||||
false,
|
||||
0,
|
||||
(Entity) null,
|
||||
checkStack
|
||||
)) {
|
||||
final int metadata = (blockInfo != null)
|
||||
? blockInfo[1]
|
||||
: (checkStack.getHasSubtypes()
|
||||
? checkStack.getItemDamage()
|
||||
: 0);
|
||||
? blockInfo[1]
|
||||
: (checkStack.getHasSubtypes()
|
||||
? checkStack.getItemDamage()
|
||||
: 0);
|
||||
final Block block = (blockInfo != null)
|
||||
? Block.getBlockById(blockInfo[0])
|
||||
: null;
|
||||
if (Blacklist.stabilizationBlacklist.contains(block) ||
|
||||
block instanceof IFluidBlock) {
|
||||
? Block.getBlockById(blockInfo[0])
|
||||
: null;
|
||||
if (Blacklist.stabilizationBlacklist.contains(block)
|
||||
|| block instanceof IFluidBlock) {
|
||||
return 1;
|
||||
}
|
||||
((ItemBlock) checkStack.getItem())
|
||||
.placeBlockAt(checkStack, (EntityPlayer) null,
|
||||
((TileEntity) projector).getWorldObj(),
|
||||
position.intX(), position.intY(),
|
||||
position.intZ(), 0, 0.0f, 0.0f, 0.0f,
|
||||
metadata);
|
||||
.placeBlockAt(
|
||||
checkStack,
|
||||
(EntityPlayer) null,
|
||||
((TileEntity) projector).getWorldObj(),
|
||||
position.intX(),
|
||||
position.intY(),
|
||||
position.intZ(),
|
||||
0,
|
||||
0.0f,
|
||||
0.0f,
|
||||
0.0f,
|
||||
metadata
|
||||
);
|
||||
inventory.decrStackSize(i, 1);
|
||||
|
||||
NBTTagCompound fxsData = new NBTTagCompound();
|
||||
|
@ -101,12 +123,17 @@ public class ItemModuleStablize extends ItemModule {
|
|||
position.writeToNBT(fxsData);
|
||||
fxsData.setInteger("type", 1);
|
||||
|
||||
ModularForceFieldSystem.channel.sendToAll(new PacketFxs(
|
||||
new Vector3((TileEntity) projector), fxsData));
|
||||
ModularForceFieldSystem.channel.sendToAll(
|
||||
new PacketFxs(
|
||||
new Vector3((TileEntity) projector), fxsData
|
||||
)
|
||||
);
|
||||
|
||||
if (this.blockCount++ >= projector.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleSpeed, new int[0]) /
|
||||
3) {
|
||||
if (this.blockCount++
|
||||
>= projector.getModuleCount(
|
||||
ModularForceFieldSystem.itemModuleSpeed,
|
||||
new int[0]
|
||||
) / 3) {
|
||||
return 2;
|
||||
}
|
||||
return 1;
|
||||
|
|
|
@ -4,11 +4,11 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.item.crafting.IRecipe;
|
||||
|
||||
public interface IRecipeAdapter {
|
||||
public void setOutput(ItemStack item);
|
||||
public void setOutput(ItemStack item);
|
||||
|
||||
public void setPattern(String... pattern);
|
||||
public void setPattern(String... pattern);
|
||||
|
||||
public void addIngredient(Object... ingredients);
|
||||
public void addIngredient(Object... ingredients);
|
||||
|
||||
public IRecipe create();
|
||||
public IRecipe create();
|
||||
}
|
||||
|
|
|
@ -6,44 +6,48 @@ import net.minecraft.item.Item;
|
|||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class RecipeBuilder {
|
||||
IRecipeAdapter adapter;
|
||||
IRecipeAdapter adapter;
|
||||
|
||||
public RecipeBuilder(IRecipeAdapter adapter) { this.adapter = adapter; }
|
||||
public RecipeBuilder(IRecipeAdapter adapter) {
|
||||
this.adapter = adapter;
|
||||
}
|
||||
|
||||
public RecipeBuilder output(ItemStack stack) {
|
||||
this.adapter.setOutput(stack);
|
||||
return this;
|
||||
}
|
||||
public RecipeBuilder output(ItemStack stack) {
|
||||
this.adapter.setOutput(stack);
|
||||
return this;
|
||||
}
|
||||
|
||||
public RecipeBuilder output(Item item) {
|
||||
this.adapter.setOutput(new ItemStack(item));
|
||||
return this;
|
||||
}
|
||||
public RecipeBuilder output(Item item) {
|
||||
this.adapter.setOutput(new ItemStack(item));
|
||||
return this;
|
||||
}
|
||||
|
||||
public RecipeBuilder output(Block block) {
|
||||
this.adapter.setOutput(new ItemStack(block));
|
||||
return this;
|
||||
}
|
||||
public RecipeBuilder output(Block block) {
|
||||
this.adapter.setOutput(new ItemStack(block));
|
||||
return this;
|
||||
}
|
||||
|
||||
public RecipeBuilder output(Block block, int count) {
|
||||
this.adapter.setOutput(new ItemStack(block, count));
|
||||
return this;
|
||||
}
|
||||
public RecipeBuilder output(Block block, int count) {
|
||||
this.adapter.setOutput(new ItemStack(block, count));
|
||||
return this;
|
||||
}
|
||||
|
||||
public RecipeBuilder output(Item item, int count) {
|
||||
this.adapter.setOutput(new ItemStack(item, count));
|
||||
return this;
|
||||
}
|
||||
public RecipeBuilder output(Item item, int count) {
|
||||
this.adapter.setOutput(new ItemStack(item, count));
|
||||
return this;
|
||||
}
|
||||
|
||||
public RecipeBuilder pattern(String... pat) {
|
||||
this.adapter.setPattern(pat);
|
||||
return this;
|
||||
}
|
||||
public RecipeBuilder pattern(String... pat) {
|
||||
this.adapter.setPattern(pat);
|
||||
return this;
|
||||
}
|
||||
|
||||
public RecipeBuilder ingredient(Object... i) {
|
||||
this.adapter.addIngredient(i);
|
||||
return this;
|
||||
}
|
||||
public RecipeBuilder ingredient(Object... i) {
|
||||
this.adapter.addIngredient(i);
|
||||
return this;
|
||||
}
|
||||
|
||||
public void register() { GameRegistry.addRecipe(this.adapter.create()); }
|
||||
public void register() {
|
||||
GameRegistry.addRecipe(this.adapter.create());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,41 +1,42 @@
|
|||
package mffs.recipe;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.IRecipe;
|
||||
import net.minecraftforge.oredict.ShapedOreRecipe;
|
||||
|
||||
public class ShapedOreRecipeAdapter implements IRecipeAdapter {
|
||||
ItemStack output;
|
||||
String[] pattern;
|
||||
ArrayList<Object> ingredients = new ArrayList<>();
|
||||
ItemStack output;
|
||||
String[] pattern;
|
||||
ArrayList<Object> ingredients = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void setOutput(ItemStack item) {
|
||||
this.output = item;
|
||||
}
|
||||
@Override
|
||||
public void setOutput(ItemStack item) {
|
||||
this.output = item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPattern(String... pattern) {
|
||||
this.pattern = pattern;
|
||||
}
|
||||
@Override
|
||||
public void setPattern(String... pattern) {
|
||||
this.pattern = pattern;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addIngredient(Object... ingredients) {
|
||||
this.ingredients.add(ingredients[0]);
|
||||
this.ingredients.add(ingredients[1]);
|
||||
}
|
||||
@Override
|
||||
public void addIngredient(Object... ingredients) {
|
||||
this.ingredients.add(ingredients[0]);
|
||||
this.ingredients.add(ingredients[1]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IRecipe create() {
|
||||
ArrayList<Object> args = new ArrayList<>();
|
||||
@Override
|
||||
public IRecipe create() {
|
||||
ArrayList<Object> args = new ArrayList<>();
|
||||
|
||||
for (String pat : this.pattern)
|
||||
args.add(pat);
|
||||
for (String pat : this.pattern)
|
||||
args.add(pat);
|
||||
|
||||
for (Object ing : this.ingredients)
|
||||
args.add(ing);
|
||||
for (Object ing : this.ingredients)
|
||||
args.add(ing);
|
||||
|
||||
return new ShapedOreRecipe(this.output, args.toArray());
|
||||
}
|
||||
return new ShapedOreRecipe(this.output, args.toArray());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,31 +1,32 @@
|
|||
package mffs.recipe;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.IRecipe;
|
||||
import net.minecraftforge.oredict.ShapelessOreRecipe;
|
||||
|
||||
public class ShapelessOreRecipeAdapter implements IRecipeAdapter {
|
||||
ItemStack output;
|
||||
ArrayList<Object> ingredients = new ArrayList<>();
|
||||
ItemStack output;
|
||||
ArrayList<Object> ingredients = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void setOutput(ItemStack item) {
|
||||
this.output = item;
|
||||
}
|
||||
@Override
|
||||
public void setOutput(ItemStack item) {
|
||||
this.output = item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPattern(String... pattern) {
|
||||
throw new UnsupportedOperationException("Shapeless recipe has no pattern!");
|
||||
}
|
||||
@Override
|
||||
public void setPattern(String... pattern) {
|
||||
throw new UnsupportedOperationException("Shapeless recipe has no pattern!");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addIngredient(Object... ingredients) {
|
||||
this.ingredients.add(ingredients[0]);
|
||||
}
|
||||
@Override
|
||||
public void addIngredient(Object... ingredients) {
|
||||
this.ingredients.add(ingredients[0]);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IRecipe create() {
|
||||
return new ShapelessOreRecipe(this.output, this.ingredients.toArray());
|
||||
}
|
||||
@Override
|
||||
public IRecipe create() {
|
||||
return new ShapelessOreRecipe(this.output, this.ingredients.toArray());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,171 +15,185 @@ import universalelectricity.core.vector.Vector3;
|
|||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class FXBeam extends EntityFX {
|
||||
double movX;
|
||||
double movY;
|
||||
double movZ;
|
||||
private float length;
|
||||
private float rotYaw;
|
||||
private float rotPitch;
|
||||
private float prevYaw;
|
||||
private float prevPitch;
|
||||
private Vector3 target;
|
||||
private float endModifier;
|
||||
private boolean reverse;
|
||||
private boolean pulse;
|
||||
private int rotationSpeed;
|
||||
private float prevSize;
|
||||
double movX;
|
||||
double movY;
|
||||
double movZ;
|
||||
private float length;
|
||||
private float rotYaw;
|
||||
private float rotPitch;
|
||||
private float prevYaw;
|
||||
private float prevPitch;
|
||||
private Vector3 target;
|
||||
private float endModifier;
|
||||
private boolean reverse;
|
||||
private boolean pulse;
|
||||
private int rotationSpeed;
|
||||
private float prevSize;
|
||||
|
||||
public FXBeam(final World par1World, final Vector3 position,
|
||||
final Vector3 target, final float red, final float green,
|
||||
final float blue, final int age) {
|
||||
super(par1World, position.x, position.y, position.z, 0.0, 0.0, 0.0);
|
||||
this.movX = 0.0;
|
||||
this.movY = 0.0;
|
||||
this.movZ = 0.0;
|
||||
this.length = 0.0f;
|
||||
this.rotYaw = 0.0f;
|
||||
this.rotPitch = 0.0f;
|
||||
this.prevYaw = 0.0f;
|
||||
this.prevPitch = 0.0f;
|
||||
this.target = new Vector3();
|
||||
this.endModifier = 1.0f;
|
||||
this.reverse = false;
|
||||
this.pulse = true;
|
||||
this.rotationSpeed = 20;
|
||||
this.prevSize = 0.0f;
|
||||
this.setRGB(red, green, blue);
|
||||
this.setSize(0.02f, 0.02f);
|
||||
((Entity)this).noClip = true;
|
||||
((Entity)this).motionX = 0.0;
|
||||
((Entity)this).motionY = 0.0;
|
||||
((Entity)this).motionZ = 0.0;
|
||||
this.target = target;
|
||||
final float xd = (float)(((Entity)this).posX - this.target.x);
|
||||
final float yd = (float)(((Entity)this).posY - this.target.y);
|
||||
final float zd = (float)(((Entity)this).posZ - this.target.z);
|
||||
this.length = (float)new Vector3((Entity)this).distanceTo(this.target);
|
||||
final double var7 = MathHelper.sqrt_double((double)(xd * xd + zd * zd));
|
||||
this.rotYaw = (float)(Math.atan2(xd, zd) * 180.0 / 3.141592653589793);
|
||||
this.rotPitch = (float)(Math.atan2(yd, var7) * 180.0 / 3.141592653589793);
|
||||
this.prevYaw = this.rotYaw;
|
||||
this.prevPitch = this.rotPitch;
|
||||
super.particleMaxAge = age;
|
||||
final EntityLivingBase renderentity =
|
||||
Minecraft.getMinecraft().renderViewEntity;
|
||||
int visibleDistance = 50;
|
||||
if (!Minecraft.getMinecraft().gameSettings.fancyGraphics) {
|
||||
visibleDistance = 25;
|
||||
public FXBeam(
|
||||
final World par1World,
|
||||
final Vector3 position,
|
||||
final Vector3 target,
|
||||
final float red,
|
||||
final float green,
|
||||
final float blue,
|
||||
final int age
|
||||
) {
|
||||
super(par1World, position.x, position.y, position.z, 0.0, 0.0, 0.0);
|
||||
this.movX = 0.0;
|
||||
this.movY = 0.0;
|
||||
this.movZ = 0.0;
|
||||
this.length = 0.0f;
|
||||
this.rotYaw = 0.0f;
|
||||
this.rotPitch = 0.0f;
|
||||
this.prevYaw = 0.0f;
|
||||
this.prevPitch = 0.0f;
|
||||
this.target = new Vector3();
|
||||
this.endModifier = 1.0f;
|
||||
this.reverse = false;
|
||||
this.pulse = true;
|
||||
this.rotationSpeed = 20;
|
||||
this.prevSize = 0.0f;
|
||||
this.setRGB(red, green, blue);
|
||||
this.setSize(0.02f, 0.02f);
|
||||
((Entity) this).noClip = true;
|
||||
((Entity) this).motionX = 0.0;
|
||||
((Entity) this).motionY = 0.0;
|
||||
((Entity) this).motionZ = 0.0;
|
||||
this.target = target;
|
||||
final float xd = (float) (((Entity) this).posX - this.target.x);
|
||||
final float yd = (float) (((Entity) this).posY - this.target.y);
|
||||
final float zd = (float) (((Entity) this).posZ - this.target.z);
|
||||
this.length = (float) new Vector3((Entity) this).distanceTo(this.target);
|
||||
final double var7 = MathHelper.sqrt_double((double) (xd * xd + zd * zd));
|
||||
this.rotYaw = (float) (Math.atan2(xd, zd) * 180.0 / 3.141592653589793);
|
||||
this.rotPitch = (float) (Math.atan2(yd, var7) * 180.0 / 3.141592653589793);
|
||||
this.prevYaw = this.rotYaw;
|
||||
this.prevPitch = this.rotPitch;
|
||||
super.particleMaxAge = age;
|
||||
final EntityLivingBase renderentity = Minecraft.getMinecraft().renderViewEntity;
|
||||
int visibleDistance = 50;
|
||||
if (!Minecraft.getMinecraft().gameSettings.fancyGraphics) {
|
||||
visibleDistance = 25;
|
||||
}
|
||||
if (renderentity.getDistance(
|
||||
((Entity) this).posX, ((Entity) this).posY, ((Entity) this).posZ
|
||||
)
|
||||
> visibleDistance) {
|
||||
super.particleMaxAge = 0;
|
||||
}
|
||||
}
|
||||
if (renderentity.getDistance(((Entity)this).posX, ((Entity)this).posY,
|
||||
((Entity)this).posZ) > visibleDistance) {
|
||||
super.particleMaxAge = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public void onUpdate() {
|
||||
((Entity)this).prevPosX = ((Entity)this).posX;
|
||||
((Entity)this).prevPosY = ((Entity)this).posY;
|
||||
((Entity)this).prevPosZ = ((Entity)this).posZ;
|
||||
this.prevYaw = this.rotYaw;
|
||||
this.prevPitch = this.rotPitch;
|
||||
final float xd = (float)(((Entity)this).posX - this.target.x);
|
||||
final float yd = (float)(((Entity)this).posY - this.target.y);
|
||||
final float zd = (float)(((Entity)this).posZ - this.target.z);
|
||||
this.length = MathHelper.sqrt_float(xd * xd + yd * yd + zd * zd);
|
||||
final double var7 = MathHelper.sqrt_double((double)(xd * xd + zd * zd));
|
||||
this.rotYaw = (float)(Math.atan2(xd, zd) * 180.0 / 3.141592653589793);
|
||||
this.rotPitch = (float)(Math.atan2(yd, var7) * 180.0 / 3.141592653589793);
|
||||
if (super.particleAge++ >= super.particleMaxAge) {
|
||||
this.setDead();
|
||||
public void onUpdate() {
|
||||
((Entity) this).prevPosX = ((Entity) this).posX;
|
||||
((Entity) this).prevPosY = ((Entity) this).posY;
|
||||
((Entity) this).prevPosZ = ((Entity) this).posZ;
|
||||
this.prevYaw = this.rotYaw;
|
||||
this.prevPitch = this.rotPitch;
|
||||
final float xd = (float) (((Entity) this).posX - this.target.x);
|
||||
final float yd = (float) (((Entity) this).posY - this.target.y);
|
||||
final float zd = (float) (((Entity) this).posZ - this.target.z);
|
||||
this.length = MathHelper.sqrt_float(xd * xd + yd * yd + zd * zd);
|
||||
final double var7 = MathHelper.sqrt_double((double) (xd * xd + zd * zd));
|
||||
this.rotYaw = (float) (Math.atan2(xd, zd) * 180.0 / 3.141592653589793);
|
||||
this.rotPitch = (float) (Math.atan2(yd, var7) * 180.0 / 3.141592653589793);
|
||||
if (super.particleAge++ >= super.particleMaxAge) {
|
||||
this.setDead();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setRGB(final float r, final float g, final float b) {
|
||||
super.particleRed = r;
|
||||
super.particleGreen = g;
|
||||
super.particleBlue = b;
|
||||
}
|
||||
public void setRGB(final float r, final float g, final float b) {
|
||||
super.particleRed = r;
|
||||
super.particleGreen = g;
|
||||
super.particleBlue = b;
|
||||
}
|
||||
|
||||
public void renderParticle(final Tessellator tessellator, final float f,
|
||||
final float f1, final float f2, final float f3,
|
||||
final float f4, final float f5) {
|
||||
tessellator.draw();
|
||||
GL11.glPushMatrix();
|
||||
final float var9 = 1.0f;
|
||||
final float slide = (float)((Entity)this).worldObj.getTotalWorldTime();
|
||||
final float rot = ((Entity)this).worldObj.provider.getWorldTime() %
|
||||
(360 / this.rotationSpeed) * this.rotationSpeed +
|
||||
this.rotationSpeed * f;
|
||||
float size = 1.0f;
|
||||
if (this.pulse) {
|
||||
size = Math.min(super.particleAge / 4.0f, 1.0f);
|
||||
size = this.prevSize + (size - this.prevSize) * f;
|
||||
public void renderParticle(
|
||||
final Tessellator tessellator,
|
||||
final float f,
|
||||
final float f1,
|
||||
final float f2,
|
||||
final float f3,
|
||||
final float f4,
|
||||
final float f5
|
||||
) {
|
||||
tessellator.draw();
|
||||
GL11.glPushMatrix();
|
||||
final float var9 = 1.0f;
|
||||
final float slide = (float) ((Entity) this).worldObj.getTotalWorldTime();
|
||||
final float rot = ((Entity) this).worldObj.provider.getWorldTime()
|
||||
% (360 / this.rotationSpeed) * this.rotationSpeed
|
||||
+ this.rotationSpeed * f;
|
||||
float size = 1.0f;
|
||||
if (this.pulse) {
|
||||
size = Math.min(super.particleAge / 4.0f, 1.0f);
|
||||
size = this.prevSize + (size - this.prevSize) * f;
|
||||
}
|
||||
float op = 0.5f;
|
||||
if (this.pulse && super.particleMaxAge - super.particleAge <= 4) {
|
||||
op = 0.5f - (4 - (super.particleMaxAge - super.particleAge)) * 0.1f;
|
||||
}
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/blocks/fortron.png")
|
||||
);
|
||||
GL11.glTexParameterf(3553, 10242, 10497.0f);
|
||||
GL11.glTexParameterf(3553, 10243, 10497.0f);
|
||||
GL11.glDisable(2884);
|
||||
float var10 = slide + f;
|
||||
if (this.reverse) {
|
||||
var10 *= -1.0f;
|
||||
}
|
||||
final float var11 = -var10 * 0.2f - MathHelper.floor_float(-var10 * 0.1f);
|
||||
GL11.glEnable(3042);
|
||||
GL11.glBlendFunc(770, 1);
|
||||
GL11.glDepthMask(false);
|
||||
final float xx = (float
|
||||
) (((Entity) this).prevPosX
|
||||
+ (((Entity) this).posX - ((Entity) this).prevPosX) * f - EntityFX.interpPosX);
|
||||
final float yy = (float
|
||||
) (((Entity) this).prevPosY
|
||||
+ (((Entity) this).posY - ((Entity) this).prevPosY) * f - EntityFX.interpPosY);
|
||||
final float zz = (float
|
||||
) (((Entity) this).prevPosZ
|
||||
+ (((Entity) this).posZ - ((Entity) this).prevPosZ) * f - EntityFX.interpPosZ);
|
||||
GL11.glTranslated((double) xx, (double) yy, (double) zz);
|
||||
final float ry = this.prevYaw + (this.rotYaw - this.prevYaw) * f;
|
||||
final float rp = this.prevPitch + (this.rotPitch - this.prevPitch) * f;
|
||||
GL11.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
|
||||
GL11.glRotatef(180.0f + ry, 0.0f, 0.0f, -1.0f);
|
||||
GL11.glRotatef(rp, 1.0f, 0.0f, 0.0f);
|
||||
final double var12 = -0.15 * size;
|
||||
final double var13 = 0.15 * size;
|
||||
final double var44b = -0.15 * size * this.endModifier;
|
||||
final double var17b = 0.15 * size * this.endModifier;
|
||||
GL11.glRotatef(rot, 0.0f, 1.0f, 0.0f);
|
||||
for (int t = 0; t < 3; ++t) {
|
||||
final double var14 = this.length * size * var9;
|
||||
final double var15 = 0.0;
|
||||
final double var16 = 1.0;
|
||||
final double var17 = -1.0f + var11 + t / 3.0f;
|
||||
final double var18 = this.length * size * var9 + var17;
|
||||
GL11.glRotatef(60.0f, 0.0f, 1.0f, 0.0f);
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setBrightness(200);
|
||||
tessellator.setColorRGBA_F(
|
||||
super.particleRed, super.particleGreen, super.particleBlue, op
|
||||
);
|
||||
tessellator.addVertexWithUV(var44b, var14, 0.0, var16, var18);
|
||||
tessellator.addVertexWithUV(var12, 0.0, 0.0, var16, var17);
|
||||
tessellator.addVertexWithUV(var13, 0.0, 0.0, var15, var17);
|
||||
tessellator.addVertexWithUV(var17b, var14, 0.0, var15, var18);
|
||||
tessellator.draw();
|
||||
}
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
GL11.glDepthMask(true);
|
||||
GL11.glDisable(3042);
|
||||
GL11.glEnable(2884);
|
||||
GL11.glPopMatrix();
|
||||
tessellator.startDrawingQuads();
|
||||
this.prevSize = size;
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(
|
||||
new ResourceLocation("textures/particle/particles.png")
|
||||
);
|
||||
}
|
||||
float op = 0.5f;
|
||||
if (this.pulse && super.particleMaxAge - super.particleAge <= 4) {
|
||||
op = 0.5f - (4 - (super.particleMaxAge - super.particleAge)) * 0.1f;
|
||||
}
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(
|
||||
new ResourceLocation("mffs", "textures/blocks/fortron.png"));
|
||||
GL11.glTexParameterf(3553, 10242, 10497.0f);
|
||||
GL11.glTexParameterf(3553, 10243, 10497.0f);
|
||||
GL11.glDisable(2884);
|
||||
float var10 = slide + f;
|
||||
if (this.reverse) {
|
||||
var10 *= -1.0f;
|
||||
}
|
||||
final float var11 = -var10 * 0.2f - MathHelper.floor_float(-var10 * 0.1f);
|
||||
GL11.glEnable(3042);
|
||||
GL11.glBlendFunc(770, 1);
|
||||
GL11.glDepthMask(false);
|
||||
final float xx =
|
||||
(float)(((Entity)this).prevPosX +
|
||||
(((Entity)this).posX - ((Entity)this).prevPosX) * f -
|
||||
EntityFX.interpPosX);
|
||||
final float yy =
|
||||
(float)(((Entity)this).prevPosY +
|
||||
(((Entity)this).posY - ((Entity)this).prevPosY) * f -
|
||||
EntityFX.interpPosY);
|
||||
final float zz =
|
||||
(float)(((Entity)this).prevPosZ +
|
||||
(((Entity)this).posZ - ((Entity)this).prevPosZ) * f -
|
||||
EntityFX.interpPosZ);
|
||||
GL11.glTranslated((double)xx, (double)yy, (double)zz);
|
||||
final float ry = this.prevYaw + (this.rotYaw - this.prevYaw) * f;
|
||||
final float rp = this.prevPitch + (this.rotPitch - this.prevPitch) * f;
|
||||
GL11.glRotatef(90.0f, 1.0f, 0.0f, 0.0f);
|
||||
GL11.glRotatef(180.0f + ry, 0.0f, 0.0f, -1.0f);
|
||||
GL11.glRotatef(rp, 1.0f, 0.0f, 0.0f);
|
||||
final double var12 = -0.15 * size;
|
||||
final double var13 = 0.15 * size;
|
||||
final double var44b = -0.15 * size * this.endModifier;
|
||||
final double var17b = 0.15 * size * this.endModifier;
|
||||
GL11.glRotatef(rot, 0.0f, 1.0f, 0.0f);
|
||||
for (int t = 0; t < 3; ++t) {
|
||||
final double var14 = this.length * size * var9;
|
||||
final double var15 = 0.0;
|
||||
final double var16 = 1.0;
|
||||
final double var17 = -1.0f + var11 + t / 3.0f;
|
||||
final double var18 = this.length * size * var9 + var17;
|
||||
GL11.glRotatef(60.0f, 0.0f, 1.0f, 0.0f);
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setBrightness(200);
|
||||
tessellator.setColorRGBA_F(super.particleRed, super.particleGreen,
|
||||
super.particleBlue, op);
|
||||
tessellator.addVertexWithUV(var44b, var14, 0.0, var16, var18);
|
||||
tessellator.addVertexWithUV(var12, 0.0, 0.0, var16, var17);
|
||||
tessellator.addVertexWithUV(var13, 0.0, 0.0, var15, var17);
|
||||
tessellator.addVertexWithUV(var17b, var14, 0.0, var15, var18);
|
||||
tessellator.draw();
|
||||
}
|
||||
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
|
||||
GL11.glDepthMask(true);
|
||||
GL11.glDisable(3042);
|
||||
GL11.glEnable(2884);
|
||||
GL11.glPopMatrix();
|
||||
tessellator.startDrawingQuads();
|
||||
this.prevSize = size;
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("textures/particle/particles.png"));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,76 +18,93 @@ import universalelectricity.core.vector.Vector3;
|
|||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class FXHologram extends EntityFX {
|
||||
private Vector3 targetPosition;
|
||||
private Vector3 targetPosition;
|
||||
|
||||
public FXHologram(final World par1World, final Vector3 position,
|
||||
final float red, final float green, final float blue,
|
||||
final int age) {
|
||||
super(par1World, position.x, position.y, position.z);
|
||||
this.targetPosition = null;
|
||||
this.setRBGColorF(red, green, blue);
|
||||
super.particleMaxAge = age;
|
||||
((Entity)this).noClip = true;
|
||||
}
|
||||
|
||||
public FXHologram setTarget(final Vector3 targetPosition) {
|
||||
this.targetPosition = targetPosition;
|
||||
((Entity)this).motionX =
|
||||
(this.targetPosition.x - ((Entity)this).posX) / super.particleMaxAge;
|
||||
((Entity)this).motionY =
|
||||
(this.targetPosition.y - ((Entity)this).posY) / super.particleMaxAge;
|
||||
((Entity)this).motionZ =
|
||||
(this.targetPosition.z - ((Entity)this).posZ) / super.particleMaxAge;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void onUpdate() {
|
||||
((Entity)this).prevPosX = ((Entity)this).posX;
|
||||
((Entity)this).prevPosY = ((Entity)this).posY;
|
||||
((Entity)this).prevPosZ = ((Entity)this).posZ;
|
||||
if (super.particleAge++ >= super.particleMaxAge) {
|
||||
this.setDead();
|
||||
return;
|
||||
public FXHologram(
|
||||
final World par1World,
|
||||
final Vector3 position,
|
||||
final float red,
|
||||
final float green,
|
||||
final float blue,
|
||||
final int age
|
||||
) {
|
||||
super(par1World, position.x, position.y, position.z);
|
||||
this.targetPosition = null;
|
||||
this.setRBGColorF(red, green, blue);
|
||||
super.particleMaxAge = age;
|
||||
((Entity) this).noClip = true;
|
||||
}
|
||||
if (this.targetPosition != null) {
|
||||
this.moveEntity(((Entity)this).motionX, ((Entity)this).motionY,
|
||||
((Entity)this).motionZ);
|
||||
}
|
||||
}
|
||||
|
||||
public void renderParticle(final Tessellator tessellator, final float f,
|
||||
final float f1, final float f2, final float f3,
|
||||
final float f4, final float f5) {
|
||||
tessellator.draw();
|
||||
GL11.glPushMatrix();
|
||||
final float xx =
|
||||
(float)(((Entity)this).prevPosX +
|
||||
(((Entity)this).posX - ((Entity)this).prevPosX) * f -
|
||||
EntityFX.interpPosX);
|
||||
final float yy =
|
||||
(float)(((Entity)this).prevPosY +
|
||||
(((Entity)this).posY - ((Entity)this).prevPosY) * f -
|
||||
EntityFX.interpPosY);
|
||||
final float zz =
|
||||
(float)(((Entity)this).prevPosZ +
|
||||
(((Entity)this).posZ - ((Entity)this).prevPosZ) * f -
|
||||
EntityFX.interpPosZ);
|
||||
GL11.glTranslated((double)xx, (double)yy, (double)zz);
|
||||
GL11.glScalef(1.01f, 1.01f, 1.01f);
|
||||
float op = 0.5f;
|
||||
if (super.particleMaxAge - super.particleAge <= 4) {
|
||||
op = 0.5f - (5 - (super.particleMaxAge - super.particleAge)) * 0.1f;
|
||||
public FXHologram setTarget(final Vector3 targetPosition) {
|
||||
this.targetPosition = targetPosition;
|
||||
((Entity) this).motionX
|
||||
= (this.targetPosition.x - ((Entity) this).posX) / super.particleMaxAge;
|
||||
((Entity) this).motionY
|
||||
= (this.targetPosition.y - ((Entity) this).posY) / super.particleMaxAge;
|
||||
((Entity) this).motionZ
|
||||
= (this.targetPosition.z - ((Entity) this).posZ) / super.particleMaxAge;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void onUpdate() {
|
||||
((Entity) this).prevPosX = ((Entity) this).posX;
|
||||
((Entity) this).prevPosY = ((Entity) this).posY;
|
||||
((Entity) this).prevPosZ = ((Entity) this).posZ;
|
||||
if (super.particleAge++ >= super.particleMaxAge) {
|
||||
this.setDead();
|
||||
return;
|
||||
}
|
||||
if (this.targetPosition != null) {
|
||||
this.moveEntity(
|
||||
((Entity) this).motionX, ((Entity) this).motionY, ((Entity) this).motionZ
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public void renderParticle(
|
||||
final Tessellator tessellator,
|
||||
final float f,
|
||||
final float f1,
|
||||
final float f2,
|
||||
final float f3,
|
||||
final float f4,
|
||||
final float f5
|
||||
) {
|
||||
tessellator.draw();
|
||||
GL11.glPushMatrix();
|
||||
final float xx = (float
|
||||
) (((Entity) this).prevPosX
|
||||
+ (((Entity) this).posX - ((Entity) this).prevPosX) * f - EntityFX.interpPosX);
|
||||
final float yy = (float
|
||||
) (((Entity) this).prevPosY
|
||||
+ (((Entity) this).posY - ((Entity) this).prevPosY) * f - EntityFX.interpPosY);
|
||||
final float zz = (float
|
||||
) (((Entity) this).prevPosZ
|
||||
+ (((Entity) this).posZ - ((Entity) this).prevPosZ) * f - EntityFX.interpPosZ);
|
||||
GL11.glTranslated((double) xx, (double) yy, (double) zz);
|
||||
GL11.glScalef(1.01f, 1.01f, 1.01f);
|
||||
float op = 0.5f;
|
||||
if (super.particleMaxAge - super.particleAge <= 4) {
|
||||
op = 0.5f - (5 - (super.particleMaxAge - super.particleAge)) * 0.1f;
|
||||
}
|
||||
GL11.glColor4d(
|
||||
(double) super.particleRed,
|
||||
(double) super.particleGreen,
|
||||
(double) super.particleBlue,
|
||||
(double) (op * 2.0f)
|
||||
);
|
||||
CalclaviaRenderHelper.disableLighting();
|
||||
CalclaviaRenderHelper.enableBlending();
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture
|
||||
);
|
||||
CalclaviaRenderHelper.renderNormalBlockAsItem(
|
||||
(Block) ModularForceFieldSystem.blockForceField, 0, new RenderBlocks()
|
||||
);
|
||||
CalclaviaRenderHelper.disableBlending();
|
||||
GL11.glPopMatrix();
|
||||
tessellator.startDrawingQuads();
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(
|
||||
new ResourceLocation("textures/particle/particles.png")
|
||||
);
|
||||
}
|
||||
GL11.glColor4d((double)super.particleRed, (double)super.particleGreen,
|
||||
(double)super.particleBlue, (double)(op * 2.0f));
|
||||
CalclaviaRenderHelper.disableLighting();
|
||||
CalclaviaRenderHelper.enableBlending();
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture);
|
||||
CalclaviaRenderHelper.renderNormalBlockAsItem(
|
||||
(Block)ModularForceFieldSystem.blockForceField, 0, new RenderBlocks());
|
||||
CalclaviaRenderHelper.disableBlending();
|
||||
GL11.glPopMatrix();
|
||||
tessellator.startDrawingQuads();
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("textures/particle/particles.png"));
|
||||
}
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue