chore: format code

This commit is contained in:
LordMZTE 2023-01-08 16:58:21 +01:00
parent eced15a2f1
commit 2c06c8a55a
Signed by: LordMZTE
GPG key ID: B64802DC33A64FF6
129 changed files with 9947 additions and 8148 deletions

130
.clang-format Normal file
View file

@ -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"]

View file

@ -4,23 +4,28 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class Calclavia { public class Calclavia {
public static final String RESOURCE_DIRECTORY = "/mods/calclavia/"; public static final String RESOURCE_DIRECTORY = "/mods/calclavia/";
public static final String TEXTURE_DIRECTORY = "/mods/calclavia/textures/"; public static final String TEXTURE_DIRECTORY = "/mods/calclavia/textures/";
public static final String GUI_DIRECTORY = "/mods/calclavia/textures/gui/"; 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_COMPONENTS
public static final String GUI_BASE_FILE = "/mods/calclavia/textures/gui/gui_base.png"; = "/mods/calclavia/textures/gui/gui_components.png";
public static final String GUI_EMPTY_FILE = "/mods/calclavia/textures/gui/gui_empty.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) { public static List<String> splitStringPerWord(String string, int wordsPerLine) {
String[] words = string.split(" "); String[] words = string.split(" ");
ArrayList<String> lines = new ArrayList<>(); ArrayList<String> lines = new ArrayList<>();
for(int lineCount = 0; (double)lineCount < Math.ceil((double)((float)words.length / (float)wordsPerLine)); ++lineCount) { for (int lineCount = 0; (double) lineCount
< Math.ceil((double) ((float) words.length / (float) wordsPerLine));
++lineCount) {
String stringInLine = ""; String stringInLine = "";
for(int i = lineCount * wordsPerLine; i < Math.min(wordsPerLine + lineCount * wordsPerLine, words.length); ++i) { for (int i = lineCount * wordsPerLine;
i < Math.min(wordsPerLine + lineCount * wordsPerLine, words.length);
++i) {
stringInLine = stringInLine + words[i] + " "; stringInLine = stringInLine + words[i] + " ";
} }

View file

@ -2,6 +2,7 @@ package calclavia.lib;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.MovingObjectPosition;
@ -10,7 +11,6 @@ import net.minecraft.world.World;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
public class CalculationHelper { public class CalculationHelper {
public static void rotateByAngle(Vector3 vector, double yaw) { public static void rotateByAngle(Vector3 vector, double yaw) {
double yawRadians = Math.toRadians(yaw); double yawRadians = Math.toRadians(yaw);
double x = vector.x; double x = vector.x;
@ -19,49 +19,91 @@ public class CalculationHelper {
vector.x = x * Math.cos(yawRadians) - z * Math.sin(yawRadians); vector.x = x * Math.cos(yawRadians) - z * Math.sin(yawRadians);
vector.z = x * Math.sin(yawRadians) + z * Math.cos(yawRadians); vector.z = x * Math.sin(yawRadians) + z * Math.cos(yawRadians);
} }
} }
public static void rotateByAngle(Vector3 vector, double yaw, double pitch) { public static void rotateByAngle(Vector3 vector, double yaw, double pitch) {
rotateByAngle(vector, yaw, pitch, 0.0D); rotateByAngle(vector, yaw, pitch, 0.0D);
} }
public static void rotateByAngle(Vector3 vector, double yaw, double pitch, double roll) { public static void
rotateByAngle(Vector3 vector, double yaw, double pitch, double roll) {
double yawRadians = Math.toRadians(yaw); double yawRadians = Math.toRadians(yaw);
double pitchRadians = Math.toRadians(pitch); double pitchRadians = Math.toRadians(pitch);
double rollRadians = Math.toRadians(roll); double rollRadians = Math.toRadians(roll);
double x = vector.x; double x = vector.x;
double y = vector.y; double y = vector.y;
double z = vector.z; 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.x = x * Math.cos(yawRadians) * Math.cos(pitchRadians)
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)); + z
vector.y = -x * Math.sin(pitchRadians) + z * Math.cos(pitchRadians) * Math.sin(rollRadians) + y * Math.cos(pitchRadians) * Math.cos(rollRadians); * (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 Vector3 getDeltaPositionFromRotation(float rotationYaw, float rotationPitch) { public static Vector3
getDeltaPositionFromRotation(float rotationYaw, float rotationPitch) {
rotationYaw += 90.0F; rotationYaw += 90.0F;
rotationPitch = -rotationPitch; rotationPitch = -rotationPitch;
return new Vector3(Math.cos(Math.toRadians((double)rotationYaw)), Math.sin(Math.toRadians((double)rotationPitch)), Math.sin(Math.toRadians((double)rotationYaw))); 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) { public static MovingObjectPosition raytraceEntities(
World world,
Vector3 startPosition,
float rotationYaw,
float rotationPitch,
boolean collisionFlag,
double reachDistance
) {
MovingObjectPosition pickedEntity = null; MovingObjectPosition pickedEntity = null;
Vec3 startingPosition = startPosition.toVec3(); Vec3 startingPosition = startPosition.toVec3();
Vec3 look = getDeltaPositionFromRotation(rotationYaw, rotationPitch).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); Vec3 reachPoint = Vec3.createVectorHelper(
startingPosition.xCoord + look.xCoord * reachDistance,
startingPosition.yCoord + look.yCoord * reachDistance,
startingPosition.zCoord + look.zCoord * reachDistance
);
double playerBorder = 1.1D * reachDistance; double playerBorder = 1.1D * reachDistance;
AxisAlignedBB boxToScan = AxisAlignedBB.getBoundingBox(-playerBorder, -playerBorder, -playerBorder, playerBorder, playerBorder, playerBorder); AxisAlignedBB boxToScan = AxisAlignedBB.getBoundingBox(
List entitiesHit = world.getEntitiesWithinAABBExcludingEntity((Entity)null, boxToScan); -playerBorder,
-playerBorder,
-playerBorder,
playerBorder,
playerBorder,
playerBorder
);
List entitiesHit
= world.getEntitiesWithinAABBExcludingEntity((Entity) null, boxToScan);
double closestEntity = reachDistance; double closestEntity = reachDistance;
if (entitiesHit != null && !entitiesHit.isEmpty()) { if (entitiesHit != null && !entitiesHit.isEmpty()) {
Iterator i$ = entitiesHit.iterator(); Iterator i$ = entitiesHit.iterator();
while (i$.hasNext()) { while (i$.hasNext()) {
Entity entityHit = (Entity) i$.next(); Entity entityHit = (Entity) i$.next();
if(entityHit != null && entityHit.canBeCollidedWith() && entityHit.boundingBox != null) { if (entityHit != null && entityHit.canBeCollidedWith()
&& entityHit.boundingBox != null) {
float border = entityHit.getCollisionBorderSize(); float border = entityHit.getCollisionBorderSize();
AxisAlignedBB aabb = entityHit.boundingBox.expand((double)border, (double)border, (double)border); AxisAlignedBB aabb = entityHit.boundingBox.expand(
MovingObjectPosition hitMOP = aabb.calculateIntercept(startingPosition, reachPoint); (double) border, (double) border, (double) border
);
MovingObjectPosition hitMOP
= aabb.calculateIntercept(startingPosition, reachPoint);
if (hitMOP != null) { if (hitMOP != null) {
if (aabb.isVecInside(startingPosition)) { if (aabb.isVecInside(startingPosition)) {
if (0.0D < closestEntity || closestEntity == 0.0D) { if (0.0D < closestEntity || closestEntity == 0.0D) {
@ -89,15 +131,36 @@ public class CalculationHelper {
} }
} }
public static MovingObjectPosition raytraceBlocks(World world, Vector3 startPosition, float rotationYaw, float rotationPitch, boolean collisionFlag, double reachDistance) { public static MovingObjectPosition raytraceBlocks(
World world,
Vector3 startPosition,
float rotationYaw,
float rotationPitch,
boolean collisionFlag,
double reachDistance
) {
Vector3 lookVector = getDeltaPositionFromRotation(rotationYaw, rotationPitch); Vector3 lookVector = getDeltaPositionFromRotation(rotationYaw, rotationPitch);
Vector3 reachPoint = Vector3.add(startPosition, Vector3.multiply(lookVector, reachDistance)); Vector3 reachPoint
return world.rayTraceBlocks(startPosition.toVec3(), reachPoint.toVec3(), collisionFlag); = 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) { public static MovingObjectPosition doCustomRayTrace(
MovingObjectPosition pickedBlock = raytraceBlocks(world, startPosition, rotationYaw, rotationPitch, collisionFlag, reachDistance); World world,
MovingObjectPosition pickedEntity = raytraceEntities(world, startPosition, rotationYaw, rotationPitch, collisionFlag, reachDistance); 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) { if (pickedBlock == null) {
return pickedEntity; return pickedEntity;
} else if (pickedEntity == null) { } else if (pickedEntity == null) {

View file

@ -3,6 +3,5 @@ package calclavia.lib;
import java.util.HashSet; import java.util.HashSet;
public interface IPlayerUsing { public interface IPlayerUsing {
HashSet getPlayersUsing(); HashSet getPlayersUsing();
} }

View file

@ -3,5 +3,4 @@ package calclavia.lib;
import universalelectricity.core.block.IConnector; import universalelectricity.core.block.IConnector;
import universalelectricity.core.block.IVoltage; import universalelectricity.core.block.IVoltage;
public interface IUniversalEnergyTile extends IConnector, IVoltage { public interface IUniversalEnergyTile extends IConnector, IVoltage {}
}

View file

@ -8,18 +8,17 @@ import universalelectricity.prefab.tile.TileEntityElectrical;
public class TileEntityUniversalProducer extends TileEntityElectrical { public class TileEntityUniversalProducer extends TileEntityElectrical {
public ElectricityPack produce(double watts) { public ElectricityPack produce(double watts) {
ElectricityPack pack = ElectricityPack pack
new ElectricityPack(watts / this.getVoltage(), this.getVoltage()); = new ElectricityPack(watts / this.getVoltage(), this.getVoltage());
ElectricityPack remaining = ElectricityPack remaining
ElectricityNetworkHelper.produceFromMultipleSides(this, pack); = ElectricityNetworkHelper.produceFromMultipleSides(this, pack);
return remaining; return remaining;
} }
@Override @Override
public boolean canConnect(ForgeDirection direction) { public boolean canConnect(ForgeDirection direction) {
return this instanceof IRotatable return this instanceof IRotatable ? direction.ordinal() == this.getBlockMetadata()
? direction.ordinal() == this.getBlockMetadata()
: true; : true;
} }
} }

View file

@ -10,9 +10,8 @@ public abstract class TileEntityUniversalRunnable
extends TileEntityElectricityRunnable implements IUniversalEnergyTile { extends TileEntityElectricityRunnable implements IUniversalEnergyTile {
@Override @Override
public boolean canConnect(ForgeDirection direction) { public boolean canConnect(ForgeDirection direction) {
return this instanceof IRotatable return this instanceof IRotatable ? direction
? direction == ForgeDirection.getOrientation(this.getBlockMetadata()) == ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite()
.getOpposite()
: true; : true;
} }
@ -20,9 +19,10 @@ public abstract class TileEntityUniversalRunnable
return ForgeDirection.getOrientation(this.getBlockMetadata()); return ForgeDirection.getOrientation(this.getBlockMetadata());
} }
public void setDirection(World world, int x, int y, int z, public void
ForgeDirection facingDirection) { setDirection(World world, int x, int y, int z, ForgeDirection facingDirection) {
this.worldObj.setBlockMetadataWithNotify( this.worldObj.setBlockMetadataWithNotify(
this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 2); this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 2
);
} }
} }

View file

@ -10,9 +10,8 @@ public abstract class TileEntityUniversalStorable
extends TileEntityElectricityStorage implements IUniversalEnergyTile { extends TileEntityElectricityStorage implements IUniversalEnergyTile {
@Override @Override
public boolean canConnect(ForgeDirection direction) { public boolean canConnect(ForgeDirection direction) {
return this instanceof IRotatable return this instanceof IRotatable ? direction
? direction == ForgeDirection.getOrientation(this.getBlockMetadata()) == ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite()
.getOpposite()
: true; : true;
} }
@ -20,9 +19,10 @@ public abstract class TileEntityUniversalStorable
return ForgeDirection.getOrientation(this.getBlockMetadata()); return ForgeDirection.getOrientation(this.getBlockMetadata());
} }
public void setDirection(World world, int x, int y, int z, public void
ForgeDirection facingDirection) { setDirection(World world, int x, int y, int z, ForgeDirection facingDirection) {
this.worldObj.setBlockMetadataWithNotify( this.worldObj.setBlockMetadataWithNotify(
this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 2); this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 2
);
} }
} }

View file

@ -1,9 +1,10 @@
package calclavia.lib; package calclavia.lib;
import cpw.mods.fml.common.FMLLog;
import java.util.Arrays; import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import cpw.mods.fml.common.FMLLog;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.OreDictionary;
@ -57,7 +58,8 @@ public class UniversalRecipes {
Object possiblity = arr$[i$]; Object possiblity = arr$[i$];
if (possiblity instanceof ItemStack) { if (possiblity instanceof ItemStack) {
if (registerItemStacksToDictionary( if (registerItemStacksToDictionary(
name, new ItemStack[] {(ItemStack)possiblity})) { name, new ItemStack[] { (ItemStack) possiblity }
)) {
break; break;
} }
} else if (possiblity instanceof String) { } else if (possiblity instanceof String) {
@ -65,14 +67,14 @@ public class UniversalRecipes {
break; break;
} }
} else { } else {
FMLLog.severe("Universal Recipes: Error Registering " + name, FMLLog.severe(
new Object[0]); "Universal Recipes: Error Registering " + name, new Object[0]
);
} }
} }
} }
public static boolean registerItemStacksToDictionary(String name, public static boolean registerItemStacksToDictionary(String name, List itemStacks) {
List itemStacks) {
boolean returnValue = false; boolean returnValue = false;
if (itemStacks != null && itemStacks.size() > 0) { if (itemStacks != null && itemStacks.size() > 0) {
Iterator i$ = itemStacks.iterator(); Iterator i$ = itemStacks.iterator();
@ -94,9 +96,9 @@ public class UniversalRecipes {
return registerItemStacksToDictionary(name, Arrays.asList(itemStacks)); return registerItemStacksToDictionary(name, Arrays.asList(itemStacks));
} }
public static boolean registerItemStacksToDictionary(String name, public static boolean registerItemStacksToDictionary(String name, String stackName) {
String stackName) {
return registerItemStacksToDictionary( return registerItemStacksToDictionary(
name, (List)OreDictionary.getOres(stackName)); name, (List) OreDictionary.getOres(stackName)
);
} }
} }

View file

@ -8,11 +8,9 @@ import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
public class ContainerBase extends Container { public class ContainerBase extends Container {
protected int slotCount = 0; protected int slotCount = 0;
private IInventory inventory; private IInventory inventory;
public ContainerBase(IInventory inventory) { public ContainerBase(IInventory inventory) {
this.inventory = inventory; this.inventory = inventory;
this.slotCount = inventory.getSizeInventory(); this.slotCount = inventory.getSizeInventory();
@ -22,7 +20,6 @@ public class ContainerBase extends Container {
if (this.inventory instanceof IPlayerUsing) { if (this.inventory instanceof IPlayerUsing) {
((IPlayerUsing) this.inventory).getPlayersUsing().remove(player); ((IPlayerUsing) this.inventory).getPlayersUsing().remove(player);
} }
} }
public void addPlayerInventory(EntityPlayer player) { public void addPlayerInventory(EntityPlayer player) {
@ -33,14 +30,15 @@ public class ContainerBase extends Container {
int var3; int var3;
for (var3 = 0; var3 < 3; ++var3) { for (var3 = 0; var3 < 3; ++var3) {
for (int var4 = 0; var4 < 9; ++var4) { for (int var4 = 0; var4 < 9; ++var4) {
this.addSlotToContainer(new Slot(player.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 135 + var3 * 18)); this.addSlotToContainer(new Slot(
player.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 135 + var3 * 18
));
} }
} }
for (var3 = 0; var3 < 9; ++var3) { for (var3 = 0; var3 < 9; ++var3) {
this.addSlotToContainer(new Slot(player.inventory, var3, 8 + var3 * 18, 193)); this.addSlotToContainer(new Slot(player.inventory, var3, 8 + var3 * 18, 193));
} }
} }
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int slotID) { public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int slotID) {
@ -63,14 +61,18 @@ public class ContainerBase extends Container {
if (!didTry) { if (!didTry) {
if (slotID < 27 + this.slotCount) { if (slotID < 27 + this.slotCount) {
if(!this.mergeItemStack(itemStack, 27 + this.slotCount, 36 + this.slotCount, false)) { if (!this.mergeItemStack(
itemStack, 27 + this.slotCount, 36 + this.slotCount, false
)) {
return null; return null;
} }
} else if (slotID >= 27 + this.slotCount && slotID < 36 + this.slotCount && !this.mergeItemStack(itemStack, this.slotCount, 27 + this.slotCount, false)) { } else if (slotID >= 27 + this.slotCount && slotID < 36 + this.slotCount && !this.mergeItemStack(itemStack, this.slotCount, 27 + this.slotCount, false)) {
return null; return null;
} }
} }
} else if(!this.mergeItemStack(itemStack, this.slotCount, 36 + this.slotCount, false)) { } else if (!this.mergeItemStack(
itemStack, this.slotCount, 36 + this.slotCount, false
)) {
return null; return null;
} }

View file

@ -1,8 +1,9 @@
package calclavia.lib.gui; package calclavia.lib.gui;
import calclavia.lib.Calclavia;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map.Entry; import java.util.Map.Entry;
import calclavia.lib.Calclavia;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
@ -18,7 +19,6 @@ import universalelectricity.prefab.TranslationHelper;
import universalelectricity.prefab.vector.Region2; import universalelectricity.prefab.vector.Region2;
public class GuiContainerBase extends GuiContainer { public class GuiContainerBase extends GuiContainer {
//private static final int METER_X = 54; //private static final int METER_X = 54;
public static final int METER_HEIGHT = 49; public static final int METER_HEIGHT = 49;
public static final int METER_WIDTH = 14; public static final int METER_WIDTH = 14;
@ -48,17 +48,21 @@ public class GuiContainerBase extends GuiContainer {
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
for (Entry<Region2, String> entry : this.tooltips.entrySet()) { for (Entry<Region2, String> entry : this.tooltips.entrySet()) {
if (((Region2) entry.getKey()) if (((Region2) entry.getKey())
.isIn(new Vector2((double)(mouseX - this.guiLeft), .isIn(new Vector2(
(double)(mouseY - this.guiTop)))) { (double) (mouseX - this.guiLeft), (double) (mouseY - this.guiTop)
))) {
this.tooltip = (String) entry.getValue(); this.tooltip = (String) entry.getValue();
break; break;
} }
} }
if (this.tooltip != null && this.tooltip != "") { if (this.tooltip != null && this.tooltip != "") {
this.drawTooltip(mouseX - this.guiLeft, mouseY - this.guiTop, this.drawTooltip(
mouseX - this.guiLeft,
mouseY - this.guiTop,
(String[]) Calclavia.splitStringPerWord(this.tooltip, 5) (String[]) Calclavia.splitStringPerWord(this.tooltip, 5)
.toArray(new String[0])); .toArray(new String[0])
);
} }
this.tooltip = ""; this.tooltip = "";
@ -69,33 +73,39 @@ public class GuiContainerBase extends GuiContainer {
this.containerWidth = (this.width - this.xSize) / 2; this.containerWidth = (this.width - this.xSize) / 2;
this.containerHeight = (this.height - this.ySize) / 2; this.containerHeight = (this.height - this.ySize) / 2;
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_base.png")); new ResourceLocation("calclavia", "textures/gui/gui_base.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(this.containerWidth, this.containerHeight, 0, 0, this.drawTexturedModalRect(
this.xSize, this.ySize); this.containerWidth, this.containerHeight, 0, 0, this.xSize, this.ySize
);
} }
protected void drawBulb(int x, int y, boolean isOn) { protected void drawBulb(int x, int y, boolean isOn) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_base.png")); new ResourceLocation("calclavia", "textures/gui/gui_base.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
if (isOn) { if (isOn) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 161, 0, 6, 6); this.containerWidth + x, this.containerHeight + y, 161, 0, 6, 6
);
} else { } else {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 161, 4, 6, 6); this.containerWidth + x, this.containerHeight + y, 161, 4, 6, 6
);
} }
} }
protected void drawSlot(int x, int y, ItemStack itemStack) { protected void drawSlot(int x, int y, ItemStack itemStack) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_base.png")); new ResourceLocation("calclavia", "textures/gui/gui_base.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 0, 0, 18, 18); this.containerWidth + x, this.containerHeight + y, 0, 0, 18, 18
this.drawItemStack(itemStack, this.containerWidth + x, );
this.containerHeight + y); this.drawItemStack(itemStack, this.containerWidth + x, this.containerHeight + y);
} }
protected void drawItemStack(ItemStack itemStack, int x, int y) { protected void drawItemStack(ItemStack itemStack, int x, int y) {
@ -103,43 +113,53 @@ public class GuiContainerBase extends GuiContainer {
++y; ++y;
GL11.glTranslatef(0.0F, 0.0F, 32.0F); GL11.glTranslatef(0.0F, 0.0F, 32.0F);
itemRender.renderItemAndEffectIntoGUI( itemRender.renderItemAndEffectIntoGUI(
this.fontRendererObj, this.mc.renderEngine, itemStack, x, y); this.fontRendererObj, this.mc.renderEngine, itemStack, x, y
);
} }
protected void drawTextWithTooltip(String textName, String format, int x, protected void drawTextWithTooltip(
int y, int mouseX, int mouseY) { String textName, String format, int x, int y, int mouseX, int mouseY
) {
this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752); this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752);
} }
protected void drawTextWithTooltip(String textName, String format, int x, protected void drawTextWithTooltip(
int y, int mouseX, int mouseY, int color) { String textName, String format, int x, int y, int mouseX, int mouseY, int color
) {
String name = TranslationHelper.getLocal("gui." + textName + ".name"); String name = TranslationHelper.getLocal("gui." + textName + ".name");
String text = format.replaceAll("%1", name); String text = format.replaceAll("%1", name);
this.fontRendererObj.drawString(text, x, y, color); this.fontRendererObj.drawString(text, x, y, color);
String tooltip = TranslationHelper.getLocal("gui." + textName + ".tooltip"); String tooltip = TranslationHelper.getLocal("gui." + textName + ".tooltip");
if (tooltip != null && tooltip != "" && if (tooltip != null && tooltip != ""
this.func_146978_c(x, y, (int)((double)text.length() * 4.8D), 12, && this.func_146978_c(
mouseX, mouseY)) { x, y, (int) ((double) text.length() * 4.8D), 12, mouseX, mouseY
)) {
this.tooltip = tooltip; this.tooltip = tooltip;
} }
} }
protected void drawTextWithTooltip(String textName, int x, int y, int mouseX, protected void
int mouseY) { drawTextWithTooltip(String textName, int x, int y, int mouseX, int mouseY) {
this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY); this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY);
} }
protected void drawSlot(int x, int y, GuiSlotType type, float r, float g, protected void drawSlot(int x, int y, GuiSlotType type, float r, float g, float b) {
float b) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_components.png")); new ResourceLocation("calclavia", "textures/gui/gui_components.png")
);
GL11.glColor4f(r, g, b, 1.0F); GL11.glColor4f(r, g, b, 1.0F);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 0, 0, 18, 18); this.containerWidth + x, this.containerHeight + y, 0, 0, 18, 18
);
if (type != GuiSlotType.NONE) { if (type != GuiSlotType.NONE) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 0, this.containerWidth + x,
18 * type.ordinal(), 18, 18); this.containerHeight + y,
0,
18 * type.ordinal(),
18,
18
);
} }
} }
@ -153,55 +173,86 @@ public class GuiContainerBase extends GuiContainer {
protected void drawBar(int x, int y, float scale) { protected void drawBar(int x, int y, float scale) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_components.png")); new ResourceLocation("calclavia", "textures/gui/gui_components.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 18, 0, 22, 15); this.containerWidth + x, this.containerHeight + y, 18, 0, 22, 15
);
if (scale > 0.0F) { if (scale > 0.0F) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 18, 15, this.containerWidth + x,
22 - (int)(scale * 22.0F), 15); this.containerHeight + y,
18,
15,
22 - (int) (scale * 22.0F),
15
);
} }
} }
protected void drawForce(int x, int y, float scale) { protected void drawForce(int x, int y, float scale) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_components.png")); new ResourceLocation("calclavia", "textures/gui/gui_components.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 54, 0, 107, 11); this.containerWidth + x, this.containerHeight + y, 54, 0, 107, 11
);
if (scale > 0.0F) { if (scale > 0.0F) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 54, 11, this.containerWidth + x,
(int)(scale * 107.0F), 11); this.containerHeight + y,
54,
11,
(int) (scale * 107.0F),
11
);
} }
} }
protected void drawElectricity(int x, int y, float scale) { protected void drawElectricity(int x, int y, float scale) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_components.png")); new ResourceLocation("calclavia", "textures/gui/gui_components.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 54, 0, 107, 11); this.containerWidth + x, this.containerHeight + y, 54, 0, 107, 11
);
if (scale > 0.0F) { if (scale > 0.0F) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 54, 22, this.containerWidth + x,
(int)(scale * 107.0F), 11); this.containerHeight + y,
54,
22,
(int) (scale * 107.0F),
11
);
} }
} }
protected void drawMeter(int x, int y, float scale, FluidStack liquidStack) { protected void drawMeter(int x, int y, float scale, FluidStack liquidStack) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_base.png")); new ResourceLocation("calclavia", "textures/gui/gui_base.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 40, 0, 14, 49); 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.displayGauge(
this.containerWidth + x,
this.containerHeight + y,
0,
0,
(int) (48.0F * scale),
liquidStack
);
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_base.png")); new ResourceLocation("calclavia", "textures/gui/gui_base.png")
this.drawTexturedModalRect(this.containerWidth + x, );
this.containerHeight + y, 40, 98, 14, 49); this.drawTexturedModalRect(
this.containerWidth + x, this.containerHeight + y, 40, 98, 14, 49
);
} }
public void drawTooltip(int x, int y, String... toolTips) { public void drawTooltip(int x, int y, String... toolTips) {
@ -235,26 +286,60 @@ public class GuiContainerBase extends GuiContainer {
super.zLevel = 300.0F; super.zLevel = 300.0F;
int var10 = -267386864; int var10 = -267386864;
this.drawGradientRect(var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, this.drawGradientRect(
var10, var10); 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(
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var6 - 3,
var7 + var9 + 3, var10, var10); var7 + var9 + 3,
this.drawGradientRect(var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, var6 + var5 + 3,
var10, var10); var7 + var9 + 4,
this.drawGradientRect(var6 + var5 + 3, var7 - 3, var6 + var5 + 4, var10,
var7 + var9 + 3, var10, 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 var11 = 1347420415;
int var12 = (var11 & 16711422) >> 1 | var11 & -16777216; int var12 = (var11 & 16711422) >> 1 | var11 & -16777216;
this.drawGradientRect(var6 - 3, var7 - 3 + 1, var6 - 3 + 1, this.drawGradientRect(
var7 + var9 + 3 - 1, var11, var12); var6 - 3,
this.drawGradientRect(var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3, var7 - 3 + 1,
var7 + var9 + 3 - 1, var11, var12); var6 - 3 + 1,
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var7 + var9 + 3 - 1,
var11, var11); var11,
this.drawGradientRect(var6 - 3, var7 + var9 + 2, var6 + var5 + 3, var12
var7 + var9 + 3, var12, 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) { for (int var13 = 0; var13 < toolTips.length; ++var13) {
String var14 = toolTips[var13]; String var14 = toolTips[var13];
@ -271,8 +356,8 @@ public class GuiContainerBase extends GuiContainer {
} }
} }
protected void displayGauge(int j, int k, int line, int col, int squaled, protected void
FluidStack liquid) { displayGauge(int j, int k, int line, int col, int squaled, FluidStack liquid) {
if (liquid != null) { if (liquid != null) {
int start = 0; int start = 0;
IIcon liquidIcon = liquid.getFluid().getIcon(); IIcon liquidIcon = liquid.getFluid().getIcon();
@ -287,8 +372,9 @@ public class GuiContainerBase extends GuiContainer {
squaled = 0; squaled = 0;
} }
this.drawTexturedModelRectFromIcon(j + col, k + line + 58 - x1 - start, this.drawTexturedModelRectFromIcon(
liquidIcon, 16, 16 - (16 - x1)); j + col, k + line + 58 - x1 - start, liquidIcon, 16, 16 - (16 - x1)
);
start += 16; start += 16;
} while (x1 != 0 && squaled != 0); } while (x1 != 0 && squaled != 0);
} }

View file

@ -1,8 +1,9 @@
package calclavia.lib.gui; package calclavia.lib.gui;
import calclavia.lib.Calclavia;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map.Entry; import java.util.Map.Entry;
import calclavia.lib.Calclavia;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
@ -15,7 +16,6 @@ import universalelectricity.prefab.TranslationHelper;
import universalelectricity.prefab.vector.Region2; import universalelectricity.prefab.vector.Region2;
public class GuiScreenBase extends GuiBase { public class GuiScreenBase extends GuiBase {
// private static final int METER_X = 54; // private static final int METER_X = 54;
public static final int METER_HEIGHT = 49; public static final int METER_HEIGHT = 49;
public static final int METER_WIDTH = 14; public static final int METER_WIDTH = 14;
@ -25,23 +25,29 @@ public class GuiScreenBase extends GuiBase {
protected int containerWidth; protected int containerWidth;
protected int containerHeight; protected int containerHeight;
public GuiScreenBase() { super.ySize = 217; } public GuiScreenBase() {
super.ySize = 217;
}
@Override @Override
protected void drawForegroundLayer(int mouseX, int mouseY, float var1) { protected void drawForegroundLayer(int mouseX, int mouseY, float var1) {
for (Entry<Region2, String> entry : this.tooltips.entrySet()) { for (Entry<Region2, String> entry : this.tooltips.entrySet()) {
if (((Region2) entry.getKey()) if (((Region2) entry.getKey())
.isIn(new Vector2((double)(mouseX - this.guiLeft), .isIn(new Vector2(
(double)(mouseY - this.guiTop)))) { (double) (mouseX - this.guiLeft), (double) (mouseY - this.guiTop)
))) {
this.tooltip = (String) entry.getValue(); this.tooltip = (String) entry.getValue();
break; break;
} }
} }
if (this.tooltip != null && this.tooltip != "") { if (this.tooltip != null && this.tooltip != "") {
this.drawTooltip(mouseX - this.guiLeft, mouseY - this.guiTop, this.drawTooltip(
mouseX - this.guiLeft,
mouseY - this.guiTop,
(String[]) Calclavia.splitStringPerWord(this.tooltip, 5) (String[]) Calclavia.splitStringPerWord(this.tooltip, 5)
.toArray(new String[0])); .toArray(new String[0])
);
} }
this.tooltip = ""; this.tooltip = "";
@ -52,69 +58,83 @@ public class GuiScreenBase extends GuiBase {
this.containerWidth = (this.width - this.xSize) / 2; this.containerWidth = (this.width - this.xSize) / 2;
this.containerHeight = (this.height - this.ySize) / 2; this.containerHeight = (this.height - this.ySize) / 2;
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_base.png")); new ResourceLocation("calclavia", "textures/gui/gui_base.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(this.containerWidth, this.containerHeight, 0, 0, this.drawTexturedModalRect(
this.xSize, this.ySize); this.containerWidth, this.containerHeight, 0, 0, this.xSize, this.ySize
);
} }
protected void drawBulb(int x, int y, boolean isOn) { protected void drawBulb(int x, int y, boolean isOn) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_base.png")); new ResourceLocation("calclavia", "textures/gui/gui_base.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
if (isOn) { if (isOn) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 161, 0, 6, 6); this.containerWidth + x, this.containerHeight + y, 161, 0, 6, 6
);
} else { } else {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 161, 4, 6, 6); this.containerWidth + x, this.containerHeight + y, 161, 4, 6, 6
);
} }
} }
protected void drawTextWithTooltip(String textName, String format, int x, protected void drawTextWithTooltip(
int y, int mouseX, int mouseY) { String textName, String format, int x, int y, int mouseX, int mouseY
) {
this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752); this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752);
} }
protected void drawTextWithTooltip(String textName, String format, int x, protected void drawTextWithTooltip(
int y, int mouseX, int mouseY, int color) { String textName, String format, int x, int y, int mouseX, int mouseY, int color
) {
String name = TranslationHelper.getLocal("gui." + textName + ".name"); String name = TranslationHelper.getLocal("gui." + textName + ".name");
String text = format.replaceAll("%1", name); String text = format.replaceAll("%1", name);
this.fontRendererObj.drawString(text, x, y, color); this.fontRendererObj.drawString(text, x, y, color);
String tooltip = TranslationHelper.getLocal("gui." + textName + ".tooltip"); String tooltip = TranslationHelper.getLocal("gui." + textName + ".tooltip");
if (tooltip != null && tooltip != "" && if (tooltip != null && tooltip != ""
this.isPointInRegion(x, y, (int)((double)text.length() * 4.8D), 12, && this.isPointInRegion(
mouseX, mouseY)) { x, y, (int) ((double) text.length() * 4.8D), 12, mouseX, mouseY
)) {
this.tooltip = tooltip; this.tooltip = tooltip;
} }
} }
protected boolean isPointInRegion(int par1, int par2, int par3, int par4, protected boolean
int par5, int par6) { isPointInRegion(int par1, int par2, int par3, int par4, int par5, int par6) {
int k1 = super.guiLeft; int k1 = super.guiLeft;
int l1 = super.guiTop; int l1 = super.guiTop;
par5 -= k1; par5 -= k1;
par6 -= l1; par6 -= l1;
return par5 >= par1 - 1 && par5 < par1 + par3 + 1 && par6 >= par2 - 1 && return par5 >= par1 - 1 && par5 < par1 + par3 + 1 && par6 >= par2 - 1
par6 < par2 + par4 + 1; && par6 < par2 + par4 + 1;
} }
protected void drawTextWithTooltip(String textName, int x, int y, int mouseX, protected void
int mouseY) { drawTextWithTooltip(String textName, int x, int y, int mouseX, int mouseY) {
this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY); this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY);
} }
protected void drawSlot(int x, int y, GuiSlotType type, float r, float g, protected void drawSlot(int x, int y, GuiSlotType type, float r, float g, float b) {
float b) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_empty.png")); new ResourceLocation("calclavia", "textures/gui/gui_empty.png")
);
GL11.glColor4f(r, g, b, 1.0F); GL11.glColor4f(r, g, b, 1.0F);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 0, 0, 18, 18); this.containerWidth + x, this.containerHeight + y, 0, 0, 18, 18
);
if (type != GuiSlotType.NONE) { if (type != GuiSlotType.NONE) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 0, this.containerWidth + x,
18 * type.ordinal(), 18, 18); this.containerHeight + y,
0,
18 * type.ordinal(),
18,
18
);
} }
} }
@ -128,55 +148,86 @@ public class GuiScreenBase extends GuiBase {
protected void drawBar(int x, int y, float scale) { protected void drawBar(int x, int y, float scale) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_empty.png")); new ResourceLocation("calclavia", "textures/gui/gui_empty.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 18, 0, 22, 15); this.containerWidth + x, this.containerHeight + y, 18, 0, 22, 15
);
if (scale > 0.0F) { if (scale > 0.0F) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 18, 15, this.containerWidth + x,
22 - (int)(scale * 22.0F), 15); this.containerHeight + y,
18,
15,
22 - (int) (scale * 22.0F),
15
);
} }
} }
protected void drawForce(int x, int y, float scale) { protected void drawForce(int x, int y, float scale) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_empty.png")); new ResourceLocation("calclavia", "textures/gui/gui_empty.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 54, 0, 107, 11); this.containerWidth + x, this.containerHeight + y, 54, 0, 107, 11
);
if (scale > 0.0F) { if (scale > 0.0F) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 54, 11, this.containerWidth + x,
(int)(scale * 107.0F), 11); this.containerHeight + y,
54,
11,
(int) (scale * 107.0F),
11
);
} }
} }
protected void drawElectricity(int x, int y, float scale) { protected void drawElectricity(int x, int y, float scale) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_empty.png")); new ResourceLocation("calclavia", "textures/gui/gui_empty.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 54, 0, 107, 11); this.containerWidth + x, this.containerHeight + y, 54, 0, 107, 11
);
if (scale > 0.0F) { if (scale > 0.0F) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 54, 22, this.containerWidth + x,
(int)(scale * 107.0F), 11); this.containerHeight + y,
54,
22,
(int) (scale * 107.0F),
11
);
} }
} }
protected void drawMeter(int x, int y, float scale, FluidStack liquidStack) { protected void drawMeter(int x, int y, float scale, FluidStack liquidStack) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_empty.png")); new ResourceLocation("calclavia", "textures/gui/gui_empty.png")
);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 40, 0, 14, 49); 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.displayGauge(
this.containerWidth + x,
this.containerHeight + y,
0,
0,
(int) (48.0F * scale),
liquidStack
);
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("calclavia", "textures/gui/gui_empty.png")); new ResourceLocation("calclavia", "textures/gui/gui_empty.png")
this.drawTexturedModalRect(this.containerWidth + x, );
this.containerHeight + y, 40, 98, 14, 49); this.drawTexturedModalRect(
this.containerWidth + x, this.containerHeight + y, 40, 98, 14, 49
);
} }
public void drawTooltip(int x, int y, String... toolTips) { public void drawTooltip(int x, int y, String... toolTips) {
@ -210,26 +261,60 @@ public class GuiScreenBase extends GuiBase {
super.zLevel = 300.0F; super.zLevel = 300.0F;
int var10 = -267386864; int var10 = -267386864;
this.drawGradientRect(var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, this.drawGradientRect(
var10, var10); 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(
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var6 - 3,
var7 + var9 + 3, var10, var10); var7 + var9 + 3,
this.drawGradientRect(var6 - 4, var7 - 3, var6 - 3, var7 + var9 + 3, var6 + var5 + 3,
var10, var10); var7 + var9 + 4,
this.drawGradientRect(var6 + var5 + 3, var7 - 3, var6 + var5 + 4, var10,
var7 + var9 + 3, var10, 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 var11 = 1347420415;
int var12 = (var11 & 16711422) >> 1 | var11 & -16777216; int var12 = (var11 & 16711422) >> 1 | var11 & -16777216;
this.drawGradientRect(var6 - 3, var7 - 3 + 1, var6 - 3 + 1, this.drawGradientRect(
var7 + var9 + 3 - 1, var11, var12); var6 - 3,
this.drawGradientRect(var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3, var7 - 3 + 1,
var7 + var9 + 3 - 1, var11, var12); var6 - 3 + 1,
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var7 + var9 + 3 - 1,
var11, var11); var11,
this.drawGradientRect(var6 - 3, var7 + var9 + 2, var6 + var5 + 3, var12
var7 + var9 + 3, var12, 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) { for (int var13 = 0; var13 < toolTips.length; ++var13) {
String var14 = toolTips[var13]; String var14 = toolTips[var13];
@ -246,8 +331,8 @@ public class GuiScreenBase extends GuiBase {
} }
} }
protected void displayGauge(int j, int k, int line, int col, int squaled, protected void
FluidStack liquid) { displayGauge(int j, int k, int line, int col, int squaled, FluidStack liquid) {
if (liquid != null) { if (liquid != null) {
int start = 0; int start = 0;
IIcon liquidIcon = liquid.getFluid().getIcon(); IIcon liquidIcon = liquid.getFluid().getIcon();
@ -262,8 +347,9 @@ public class GuiScreenBase extends GuiBase {
squaled = 0; squaled = 0;
} }
this.drawTexturedModelRectFromIcon(j + col, k + line + 58 - x1 - start, this.drawTexturedModelRectFromIcon(
liquidIcon, 16, 16 - (16 - x1)); j + col, k + line + 58 - x1 - start, liquidIcon, 16, 16 - (16 - x1)
);
start += 16; start += 16;
} while (x1 != 0 && squaled != 0); } while (x1 != 0 && squaled != 0);
} }

View file

@ -1,8 +1,6 @@
package calclavia.lib.gui; package calclavia.lib.gui;
public enum GuiSlotType { public enum GuiSlotType {
NONE("NONE", 0), NONE("NONE", 0),
BATTERY("BATTERY", 1), BATTERY("BATTERY", 1),
LIQUID("LIQUID", 2), LIQUID("LIQUID", 2),
@ -15,9 +13,10 @@ public enum GuiSlotType {
ARR_DOWN_LEFT("ARR_DOWN_LEFT", 9), ARR_DOWN_LEFT("ARR_DOWN_LEFT", 9),
ARR_DOWN_RIGHT("ARR_DOWN_RIGHT", 10); ARR_DOWN_RIGHT("ARR_DOWN_RIGHT", 10);
// $FF: synthetic field // $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 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) {}
} }

View file

@ -10,7 +10,6 @@ import net.minecraft.client.renderer.entity.RenderManager;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
public class CalclaviaRenderHelper { public class CalclaviaRenderHelper {
public static void enableBlending() { public static void enableBlending() {
GL11.glShadeModel(7425); GL11.glShadeModel(7425);
GL11.glEnable(3042); GL11.glEnable(3042);
@ -30,10 +29,13 @@ public class CalclaviaRenderHelper {
public static void disableLighting() { public static void disableLighting() {
RenderHelper.disableStandardItemLighting(); RenderHelper.disableStandardItemLighting();
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F); OpenGlHelper.setLightmapTextureCoords(
OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F
);
} }
public static void renderNormalBlockAsItem(Block block, int metadata, RenderBlocks renderer) { public static void
renderNormalBlockAsItem(Block block, int metadata, RenderBlocks renderer) {
Tessellator tessellator = Tessellator.instance; Tessellator tessellator = Tessellator.instance;
block.setBlockBoundsForItemRender(); block.setBlockBoundsForItemRender();
renderer.setRenderBoundsFromBlock(block); renderer.setRenderBoundsFromBlock(block);
@ -41,27 +43,63 @@ public class CalclaviaRenderHelper {
GL11.glTranslatef(-0.5F, -0.5F, -0.5F); GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
tessellator.startDrawingQuads(); tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, -1.0F, 0.0F); tessellator.setNormal(0.0F, -1.0F, 0.0F);
renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); renderer.renderFaceYNeg(
block,
0.0D,
0.0D,
0.0D,
renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)
);
tessellator.draw(); tessellator.draw();
tessellator.startDrawingQuads(); tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 1.0F, 0.0F); tessellator.setNormal(0.0F, 1.0F, 0.0F);
renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); renderer.renderFaceYPos(
block,
0.0D,
0.0D,
0.0D,
renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)
);
tessellator.draw(); tessellator.draw();
tessellator.startDrawingQuads(); tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 0.0F, -1.0F); tessellator.setNormal(0.0F, 0.0F, -1.0F);
renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); renderer.renderFaceZNeg(
block,
0.0D,
0.0D,
0.0D,
renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)
);
tessellator.draw(); tessellator.draw();
tessellator.startDrawingQuads(); tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 0.0F, 1.0F); tessellator.setNormal(0.0F, 0.0F, 1.0F);
renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); renderer.renderFaceZPos(
block,
0.0D,
0.0D,
0.0D,
renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)
);
tessellator.draw(); tessellator.draw();
tessellator.startDrawingQuads(); tessellator.startDrawingQuads();
tessellator.setNormal(-1.0F, 0.0F, 0.0F); tessellator.setNormal(-1.0F, 0.0F, 0.0F);
renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); renderer.renderFaceXNeg(
block,
0.0D,
0.0D,
0.0D,
renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)
);
tessellator.draw(); tessellator.draw();
tessellator.startDrawingQuads(); tessellator.startDrawingQuads();
tessellator.setNormal(1.0F, 0.0F, 0.0F); tessellator.setNormal(1.0F, 0.0F, 0.0F);
renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); renderer.renderFaceXPos(
block,
0.0D,
0.0D,
0.0D,
renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)
);
tessellator.draw(); tessellator.draw();
GL11.glTranslatef(0.5F, 0.5F, 0.5F); GL11.glTranslatef(0.5F, 0.5F, 0.5F);
} }
@ -70,7 +108,8 @@ public class CalclaviaRenderHelper {
renderFloatingText(text, x, y, z, 16777215); renderFloatingText(text, x, y, z, 16777215);
} }
public static void renderFloatingText(String text, float x, float y, float z, int color) { public static void
renderFloatingText(String text, float x, float y, float z, int color) {
RenderManager renderManager = RenderManager.instance; RenderManager renderManager = RenderManager.instance;
FontRenderer fontRenderer = renderManager.getFontRenderer(); FontRenderer fontRenderer = renderManager.getFontRenderer();
float scale = 0.027F; float scale = 0.027F;
@ -92,17 +131,23 @@ public class CalclaviaRenderHelper {
tessellator.startDrawingQuads(); tessellator.startDrawingQuads();
int stringMiddle = fontRenderer.getStringWidth(text) / 2; int stringMiddle = fontRenderer.getStringWidth(text) / 2;
tessellator.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.5F); 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) (-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) (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.addVertex((double) (stringMiddle + 1), (double) (-1 + yOffset), 0.0D);
tessellator.draw(); tessellator.draw();
GL11.glEnable(3553); GL11.glEnable(3553);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);
fontRenderer.drawString(text, -fontRenderer.getStringWidth(text) / 2, yOffset, color); fontRenderer.drawString(
text, -fontRenderer.getStringWidth(text) / 2, yOffset, color
);
GL11.glEnable(2929); GL11.glEnable(2929);
GL11.glDepthMask(true); GL11.glDepthMask(true);
fontRenderer.drawString(text, -fontRenderer.getStringWidth(text) / 2, yOffset, color); fontRenderer.drawString(
text, -fontRenderer.getStringWidth(text) / 2, yOffset, color
);
GL11.glEnable(2896); GL11.glEnable(2896);
GL11.glDisable(3042); GL11.glDisable(3042);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

View file

@ -1,9 +1,9 @@
package calclavia.lib.render; package calclavia.lib.render;
import java.util.HashMap; import java.util.HashMap;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
public interface ITagRender { public interface ITagRender {
float addInformation(HashMap var1, EntityPlayer var2); float addInformation(HashMap var1, EntityPlayer var2);
} }

View file

@ -1,10 +1,11 @@
package calclavia.lib.render; package calclavia.lib.render;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map.Entry; 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.Minecraft;
import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.client.entity.EntityClientPlayerMP;
import net.minecraft.client.renderer.entity.RendererLivingEntity; import net.minecraft.client.renderer.entity.RendererLivingEntity;
@ -17,12 +18,11 @@ import net.minecraft.util.MovingObjectPosition;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public abstract class RenderTaggedTile extends TileEntitySpecialRenderer { public abstract class RenderTaggedTile extends TileEntitySpecialRenderer {
@Override @Override
public void renderTileEntityAt(TileEntity t, double x, double y, double z, public void renderTileEntityAt(TileEntity t, double x, double y, double z, float f) {
float f) { if (t != null && t instanceof ITagRender
if (t != null && t instanceof ITagRender && && this.getPlayer().getDistance(
this.getPlayer().getDistance((double)t.xCoord, (double)t.yCoord, (double) t.xCoord, (double) t.yCoord, (double) t.zCoord
(double)t.zCoord) <= ) <= (double) RendererLivingEntity.NAME_TAG_RANGE) {
(double)RendererLivingEntity.NAME_TAG_RANGE) {
HashMap tags = new HashMap(); HashMap tags = new HashMap();
float height = ((ITagRender) t).addInformation(tags, this.getPlayer()); float height = ((ITagRender) t).addInformation(tags, this.getPlayer());
EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer;
@ -32,9 +32,9 @@ public abstract class RenderTaggedTile extends TileEntitySpecialRenderer {
boolean isLooking = false; boolean isLooking = false;
for (int it = 0; (float) it < height; ++it) { for (int it = 0; (float) it < height; ++it) {
if (objectPosition.blockX == t.xCoord && if (objectPosition.blockX == t.xCoord
objectPosition.blockY == t.yCoord + it && && objectPosition.blockY == t.yCoord + it
objectPosition.blockZ == t.zCoord) { && objectPosition.blockZ == t.zCoord) {
isLooking = true; isLooking = true;
} }
} }
@ -46,9 +46,12 @@ public abstract class RenderTaggedTile extends TileEntitySpecialRenderer {
Entry entry = (Entry) var17.next(); Entry entry = (Entry) var17.next();
if (entry.getKey() != null) { if (entry.getKey() != null) {
CalclaviaRenderHelper.renderFloatingText( CalclaviaRenderHelper.renderFloatingText(
(String)entry.getKey(), (float)x + 0.5F, (String) entry.getKey(),
(float) x + 0.5F,
(float) y + (float) i * 0.25F - 2.0F + height, (float) y + (float) i * 0.25F - 2.0F + height,
(float)z + 0.5F, ((Integer)entry.getValue()).intValue()); (float) z + 0.5F,
((Integer) entry.getValue()).intValue()
);
} }
} }
} }

View file

@ -37,28 +37,32 @@ import net.minecraftforge.client.MinecraftForgeClient;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
public class ClientProxy extends CommonProxy { public class ClientProxy extends CommonProxy {
@Override @Override
public void init() { public void init() {
super.init(); super.init();
RenderingRegistry.registerBlockHandler( RenderingRegistry.registerBlockHandler((ISimpleBlockRenderingHandler
(ISimpleBlockRenderingHandler) new RenderBlockHandler()); ) new RenderBlockHandler());
RenderingRegistry.registerBlockHandler( RenderingRegistry.registerBlockHandler((ISimpleBlockRenderingHandler
(ISimpleBlockRenderingHandler) new RenderForceField()); ) new RenderForceField());
MinecraftForgeClient.registerItemRenderer( MinecraftForgeClient.registerItemRenderer(
ModularForceFieldSystem.itemCardID, (IItemRenderer) new RenderIDCard()); ModularForceFieldSystem.itemCardID, (IItemRenderer) new RenderIDCard()
);
ClientRegistry.bindTileEntitySpecialRenderer( ClientRegistry.bindTileEntitySpecialRenderer(
TileEntityFortronCapacitor.class, TileEntityFortronCapacitor.class,
(TileEntitySpecialRenderer) new RenderFortronCapacitor()); (TileEntitySpecialRenderer) new RenderFortronCapacitor()
);
ClientRegistry.bindTileEntitySpecialRenderer( ClientRegistry.bindTileEntitySpecialRenderer(
TileEntityCoercionDeriver.class, TileEntityCoercionDeriver.class,
(TileEntitySpecialRenderer) new RenderCoercionDeriver()); (TileEntitySpecialRenderer) new RenderCoercionDeriver()
);
ClientRegistry.bindTileEntitySpecialRenderer( ClientRegistry.bindTileEntitySpecialRenderer(
TileEntityForceManipulator.class, TileEntityForceManipulator.class,
(TileEntitySpecialRenderer) new RenderForceManipulator()); (TileEntitySpecialRenderer) new RenderForceManipulator()
);
ClientRegistry.bindTileEntitySpecialRenderer( ClientRegistry.bindTileEntitySpecialRenderer(
TileEntityForceFieldProjector.class, TileEntityForceFieldProjector.class,
(TileEntitySpecialRenderer) new RenderForceFieldProjector()); (TileEntitySpecialRenderer) new RenderForceFieldProjector()
);
} }
@Override @Override
@ -67,34 +71,45 @@ public class ClientProxy extends CommonProxy {
} }
@Override @Override
public Object getClientGuiElement(final int ID, final EntityPlayer player, public Object getClientGuiElement(
final World world, final int x, final int y, final int ID,
final int z) { final EntityPlayer player,
final World world,
final int x,
final int y,
final int z
) {
final TileEntity tileEntity = world.getTileEntity(x, y, z); final TileEntity tileEntity = world.getTileEntity(x, y, z);
if (tileEntity != null) { if (tileEntity != null) {
if (tileEntity.getClass() == TileEntityFortronCapacitor.class) { if (tileEntity.getClass() == TileEntityFortronCapacitor.class) {
return new GuiFortronCapacitor(player, return new GuiFortronCapacitor(
(TileEntityFortronCapacitor)tileEntity); player, (TileEntityFortronCapacitor) tileEntity
);
} }
if (tileEntity.getClass() == TileEntityForceFieldProjector.class) { if (tileEntity.getClass() == TileEntityForceFieldProjector.class) {
return new GuiForceFieldProjector( return new GuiForceFieldProjector(
player, (TileEntityForceFieldProjector)tileEntity); player, (TileEntityForceFieldProjector) tileEntity
);
} }
if (tileEntity.getClass() == TileEntityCoercionDeriver.class) { if (tileEntity.getClass() == TileEntityCoercionDeriver.class) {
return new GuiCoercionDeriver(player, return new GuiCoercionDeriver(
(TileEntityCoercionDeriver)tileEntity); player, (TileEntityCoercionDeriver) tileEntity
);
} }
if (tileEntity.getClass() == TileEntityBiometricIdentifier.class) { if (tileEntity.getClass() == TileEntityBiometricIdentifier.class) {
return new GuiBiometricIdentifier( return new GuiBiometricIdentifier(
player, (TileEntityBiometricIdentifier)tileEntity); player, (TileEntityBiometricIdentifier) tileEntity
);
} }
if (tileEntity.getClass() == TileEntityInterdictionMatrix.class) { if (tileEntity.getClass() == TileEntityInterdictionMatrix.class) {
return new GuiInterdictionMatrix( return new GuiInterdictionMatrix(
player, (TileEntityInterdictionMatrix)tileEntity); player, (TileEntityInterdictionMatrix) tileEntity
);
} }
if (tileEntity.getClass() == TileEntityForceManipulator.class) { if (tileEntity.getClass() == TileEntityForceManipulator.class) {
return new GuiForceManipulator(player, return new GuiForceManipulator(
(TileEntityForceManipulator)tileEntity); player, (TileEntityForceManipulator) tileEntity
);
} }
} }
return null; return null;
@ -106,29 +121,46 @@ public class ClientProxy extends CommonProxy {
} }
@Override @Override
public void renderBeam(final World world, final Vector3 position, public void renderBeam(
final Vector3 target, final float red, final World world,
final float green, final float blue, final int age) { final Vector3 position,
FMLClientHandler.instance().getClient().effectRenderer.addEffect( final Vector3 target,
(EntityFX) new FXBeam(world, position, target, red, green, blue, age)); 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 @Override
public void renderHologram(final World world, final Vector3 position, public void renderHologram(
final float red, final float green, final World world,
final float blue, final int age, final Vector3 position,
final Vector3 targetPosition) { final float red,
final float green,
final float blue,
final int age,
final Vector3 targetPosition
) {
FMLClientHandler.instance().getClient().effectRenderer.addEffect( FMLClientHandler.instance().getClient().effectRenderer.addEffect(
(EntityFX) new FXHologram(world, position, red, green, blue, age) (EntityFX) new FXHologram(world, position, red, green, blue, age)
.setTarget(targetPosition)); .setTarget(targetPosition)
);
} }
@Override @Override
public void renderHologramMoving(final World world, final Vector3 position, public void renderHologramMoving(
final float red, final float green, final World world,
final float blue, final int age) { final Vector3 position,
FMLClientHandler.instance().getClient().effectRenderer.addEffect(( final float red,
EntityFX) new FXHologramMoving(world, position, red, green, blue, age)); final float green,
final float blue,
final int age
) {
FMLClientHandler.instance().getClient().effectRenderer.addEffect((EntityFX
) new FXHologramMoving(world, position, red, green, blue, age));
} }
@Override @Override

View file

@ -25,50 +25,68 @@ public class CommonProxy implements IGuiHandler {
public void init() {} public void init() {}
public Object getClientGuiElement(final int ID, final EntityPlayer player, public Object getClientGuiElement(
final World world, final int x, final int y, final int ID,
final int z) { final EntityPlayer player,
final World world,
final int x,
final int y,
final int z
) {
return null; return null;
} }
public Object getServerGuiElement(final int ID, final EntityPlayer player, public Object getServerGuiElement(
final World world, final int x, final int y, final int ID,
final int z) { final EntityPlayer player,
final World world,
final int x,
final int y,
final int z
) {
final TileEntity tileEntity = world.getTileEntity(x, y, z); final TileEntity tileEntity = world.getTileEntity(x, y, z);
if (tileEntity != null) { if (tileEntity != null) {
if (tileEntity.getClass() == TileEntityFortronCapacitor.class) { if (tileEntity.getClass() == TileEntityFortronCapacitor.class) {
return new ContainerFortronCapacitor( return new ContainerFortronCapacitor(
player, (TileEntityFortronCapacitor)tileEntity); player, (TileEntityFortronCapacitor) tileEntity
);
} }
if (tileEntity.getClass() == TileEntityForceFieldProjector.class) { if (tileEntity.getClass() == TileEntityForceFieldProjector.class) {
return new ContainerForceFieldProjector( return new ContainerForceFieldProjector(
player, (TileEntityForceFieldProjector)tileEntity); player, (TileEntityForceFieldProjector) tileEntity
);
} }
if (tileEntity.getClass() == TileEntityCoercionDeriver.class) { if (tileEntity.getClass() == TileEntityCoercionDeriver.class) {
return new ContainerCoercionDeriver( return new ContainerCoercionDeriver(
player, (TileEntityCoercionDeriver)tileEntity); player, (TileEntityCoercionDeriver) tileEntity
);
} }
if (tileEntity.getClass() == TileEntityBiometricIdentifier.class) { if (tileEntity.getClass() == TileEntityBiometricIdentifier.class) {
return new ContainerBiometricIdentifier( return new ContainerBiometricIdentifier(
player, (TileEntityBiometricIdentifier)tileEntity); player, (TileEntityBiometricIdentifier) tileEntity
);
} }
if (tileEntity.getClass() == TileEntityInterdictionMatrix.class) { if (tileEntity.getClass() == TileEntityInterdictionMatrix.class) {
return new ContainerInterdictionMatrix( return new ContainerInterdictionMatrix(
player, (TileEntityInterdictionMatrix)tileEntity); player, (TileEntityInterdictionMatrix) tileEntity
);
} }
if (tileEntity.getClass() == TileEntityForceManipulator.class) { if (tileEntity.getClass() == TileEntityForceManipulator.class) {
return new ContainerForceManipulator( return new ContainerForceManipulator(
player, (TileEntityForceManipulator)tileEntity); player, (TileEntityForceManipulator) tileEntity
);
} }
} }
return null; return null;
} }
public World getClientWorld() { return null; } public World getClientWorld() {
return null;
}
public boolean isOp(final String username) { public boolean isOp(final String username) {
final MinecraftServer theServer = final MinecraftServer theServer
FMLCommonHandler.instance().getMinecraftServerInstance(); = FMLCommonHandler.instance().getMinecraftServerInstance();
if (theServer == null) if (theServer == null)
return false; return false;
@ -79,18 +97,34 @@ public class CommonProxy implements IGuiHandler {
return false; return false;
} }
public void renderBeam(final World world, final Vector3 position, public void renderBeam(
final Vector3 target, final float red, final World world,
final float green, final float blue, final int age) {} final Vector3 position,
final Vector3 target,
final float red,
final float green,
final float blue,
final int age
) {}
public void renderHologram(final World world, final Vector3 position, public void renderHologram(
final float red, final float green, final World world,
final float blue, final int age, final Vector3 position,
final Vector3 targetPosition) {} final float red,
final float green,
final float blue,
final int age,
final Vector3 targetPosition
) {}
public void renderHologramMoving(final World world, final Vector3 position, public void renderHologramMoving(
final float red, final float green, final World world,
final float blue, final int age) {} final Vector3 position,
final float red,
final float green,
final float blue,
final int age
) {}
public boolean isSneaking() { public boolean isSneaking() {
return false; return false;

View file

@ -3,7 +3,6 @@ package mffs;
import universalelectricity.core.UniversalElectricity; import universalelectricity.core.UniversalElectricity;
public class ConversionHelper { public class ConversionHelper {
public static double toEU(double joules) { public static double toEU(double joules) {
return joules / UniversalElectricity.UE_IC2_RATIO; return joules / UniversalElectricity.UE_IC2_RATIO;
} }
@ -19,5 +18,4 @@ public class ConversionHelper {
public static double fromRF(int rf) { public static double fromRF(int rf) {
return rf * UniversalElectricity.UE_RF_RATIO; return rf * UniversalElectricity.UE_RF_RATIO;
} }
} }

View file

@ -19,5 +19,7 @@ public abstract class DelayedEvent {
} }
} }
public int getPriority() { return 0; } public int getPriority() {
return 0;
}
} }

View file

@ -2,8 +2,7 @@ package mffs;
import java.util.List; import java.util.List;
public interface IDelayedEventHandler public interface IDelayedEventHandler {
{
List<DelayedEvent> getDelayedEvents(); List<DelayedEvent> getDelayedEvents();
List<DelayedEvent> getQuedDelayedEvents(); List<DelayedEvent> getQuedDelayedEvents();

View file

@ -12,12 +12,10 @@ public class MFFSCreativeTab extends CreativeTabs {
@Override @Override
public Item getTabIconItem() { public Item getTabIconItem() {
return Item.getItemFromBlock( return Item.getItemFromBlock(ModularForceFieldSystem.blockForceFieldProjector);
ModularForceFieldSystem.blockForceFieldProjector);
} }
static { static {
MFFSCreativeTab.INSTANCE = MFFSCreativeTab.INSTANCE = new MFFSCreativeTab(CreativeTabs.getNextID(), "MFFS");
new MFFSCreativeTab(CreativeTabs.getNextID(), "MFFS");
} }
} }

View file

@ -1,11 +1,12 @@
package mffs; package mffs;
import calclavia.lib.CalculationHelper;
import icbm.api.IBlockFrequency;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import calclavia.lib.CalculationHelper;
import icbm.api.IBlockFrequency;
import mffs.api.IProjector; import mffs.api.IProjector;
import mffs.api.fortron.IFortronFrequency; import mffs.api.fortron.IFortronFrequency;
import mffs.api.modules.IModuleAcceptor; import mffs.api.modules.IModuleAcceptor;
@ -27,10 +28,12 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
public class MFFSHelper { public class MFFSHelper {
public static void public static void transferFortron(
transferFortron(final IFortronFrequency transferer, final IFortronFrequency transferer,
final Set<IFortronFrequency> frequencyTiles, final Set<IFortronFrequency> frequencyTiles,
final TransferMode transferMode, final int limit) { final TransferMode transferMode,
final int limit
) {
if (transferer != null && frequencyTiles.size() > 1) { if (transferer != null && frequencyTiles.size() > 1) {
int totalFortron = 0; int totalFortron = 0;
int totalCapacity = 0; int totalCapacity = 0;
@ -45,12 +48,17 @@ public class MFFSHelper {
case EQUALIZE: { case EQUALIZE: {
for (final IFortronFrequency machine : frequencyTiles) { for (final IFortronFrequency machine : frequencyTiles) {
if (machine != null) { if (machine != null) {
final double capacityPercentage = final double capacityPercentage
machine.getFortronCapacity() / (double)totalCapacity; = machine.getFortronCapacity()
final int amountToSet = (int)(totalFortron * capacityPercentage); / (double) totalCapacity;
doTransferFortron(transferer, machine, final int amountToSet
= (int) (totalFortron * capacityPercentage);
doTransferFortron(
transferer,
machine,
amountToSet - machine.getFortronEnergy(), amountToSet - machine.getFortronEnergy(),
limit); limit
);
} }
} }
break; break;
@ -59,9 +67,12 @@ public class MFFSHelper {
final int amountToSet2 = totalFortron / frequencyTiles.size(); final int amountToSet2 = totalFortron / frequencyTiles.size();
for (final IFortronFrequency machine2 : frequencyTiles) { for (final IFortronFrequency machine2 : frequencyTiles) {
if (machine2 != null) { if (machine2 != null) {
doTransferFortron(transferer, machine2, doTransferFortron(
transferer,
machine2,
amountToSet2 - machine2.getFortronEnergy(), amountToSet2 - machine2.getFortronEnergy(),
limit); limit
);
} }
} }
break; break;
@ -70,36 +81,46 @@ public class MFFSHelper {
frequencyTiles.remove(transferer); frequencyTiles.remove(transferer);
for (final IFortronFrequency machine : frequencyTiles) { for (final IFortronFrequency machine : frequencyTiles) {
if (machine != null) { if (machine != null) {
final double capacityPercentage = final double capacityPercentage
machine.getFortronCapacity() / (double)totalCapacity; = machine.getFortronCapacity()
final int amountToSet = (int)(totalFortron * capacityPercentage); / (double) totalCapacity;
final int amountToSet
= (int) (totalFortron * capacityPercentage);
if (amountToSet - machine.getFortronEnergy() <= 0) { if (amountToSet - machine.getFortronEnergy() <= 0) {
continue; continue;
} }
doTransferFortron(transferer, machine, doTransferFortron(
transferer,
machine,
amountToSet - machine.getFortronEnergy(), amountToSet - machine.getFortronEnergy(),
limit); limit
);
} }
} }
break; break;
} }
case FILL: { case FILL: {
if (transferer.getFortronEnergy() < transferer.getFortronCapacity()) { if (transferer.getFortronEnergy()
< transferer.getFortronCapacity()) {
frequencyTiles.remove(transferer); frequencyTiles.remove(transferer);
final int requiredFortron = final int requiredFortron = transferer.getFortronCapacity()
transferer.getFortronCapacity() - transferer.getFortronEnergy(); - transferer.getFortronEnergy();
for (final IFortronFrequency machine2 : frequencyTiles) { for (final IFortronFrequency machine2 : frequencyTiles) {
if (machine2 != null) { if (machine2 != null) {
final int amountToConsume = final int amountToConsume = Math.min(
Math.min(requiredFortron, machine2.getFortronEnergy()); requiredFortron, machine2.getFortronEnergy()
final int amountToSet = );
-machine2.getFortronEnergy() - amountToConsume; final int amountToSet
= -machine2.getFortronEnergy() - amountToConsume;
if (amountToConsume <= 0) { if (amountToConsume <= 0) {
continue; continue;
} }
doTransferFortron(transferer, machine2, doTransferFortron(
transferer,
machine2,
amountToSet - machine2.getFortronEnergy(), amountToSet - machine2.getFortronEnergy(),
limit); limit
);
} }
} }
break; break;
@ -111,41 +132,61 @@ public class MFFSHelper {
} }
} }
public static void doTransferFortron(final IFortronFrequency transferer, public static void doTransferFortron(
final IFortronFrequency transferer,
final IFortronFrequency receiver, final IFortronFrequency receiver,
int joules, final int limit) { int joules,
final int limit
) {
if (transferer != null && receiver != null) { if (transferer != null && receiver != null) {
final TileEntity tileEntity = (TileEntity) transferer; final TileEntity tileEntity = (TileEntity) transferer;
final World world = tileEntity.getWorldObj(); final World world = tileEntity.getWorldObj();
boolean isCamo = false; boolean isCamo = false;
if (transferer instanceof IModuleAcceptor) { if (transferer instanceof IModuleAcceptor) {
isCamo = isCamo
(((IModuleAcceptor)transferer) = (((IModuleAcceptor) transferer)
.getModuleCount(ModularForceFieldSystem.itemModuleCamouflage, .getModuleCount(
new int[0]) > 0); ModularForceFieldSystem.itemModuleCamouflage, new int[0]
)
> 0);
} }
if (joules > 0) { if (joules > 0) {
joules = Math.min(joules, limit); joules = Math.min(joules, limit);
int toBeInjected = receiver.provideFortron( int toBeInjected = receiver.provideFortron(
transferer.requestFortron(joules, false), false); transferer.requestFortron(joules, false), false
);
toBeInjected = transferer.requestFortron( toBeInjected = transferer.requestFortron(
receiver.provideFortron(toBeInjected, true), true); receiver.provideFortron(toBeInjected, true), true
);
if (world.isRemote && toBeInjected > 0 && !isCamo) { if (world.isRemote && toBeInjected > 0 && !isCamo) {
ModularForceFieldSystem.proxy.renderBeam( ModularForceFieldSystem.proxy.renderBeam(
world, Vector3.add(new Vector3(tileEntity), 0.5), world,
Vector3.add(new Vector3((TileEntity)receiver), 0.5), 0.6f, 0.6f, Vector3.add(new Vector3(tileEntity), 0.5),
1.0f, 20); Vector3.add(new Vector3((TileEntity) receiver), 0.5),
0.6f,
0.6f,
1.0f,
20
);
} }
} else { } else {
joules = Math.min(Math.abs(joules), limit); joules = Math.min(Math.abs(joules), limit);
int toBeEjected = transferer.provideFortron( int toBeEjected = transferer.provideFortron(
receiver.requestFortron(joules, false), false); receiver.requestFortron(joules, false), false
);
toBeEjected = receiver.requestFortron( toBeEjected = receiver.requestFortron(
transferer.provideFortron(toBeEjected, true), true); transferer.provideFortron(toBeEjected, true), true
);
if (world.isRemote && toBeEjected > 0 && !isCamo) { if (world.isRemote && toBeEjected > 0 && !isCamo) {
ModularForceFieldSystem.proxy.renderBeam( ModularForceFieldSystem.proxy.renderBeam(
world, Vector3.add(new Vector3((TileEntity)receiver), 0.5), world,
Vector3.add(new Vector3(tileEntity), 0.5), 0.6f, 0.6f, 1.0f, 20); Vector3.add(new Vector3((TileEntity) receiver), 0.5),
Vector3.add(new Vector3(tileEntity), 0.5),
0.6f,
0.6f,
1.0f,
20
);
} }
} }
} }
@ -154,13 +195,13 @@ public class MFFSHelper {
public static IInterdictionMatrix public static IInterdictionMatrix
getNearestInterdictionMatrix(final World world, final Vector3 position) { getNearestInterdictionMatrix(final World world, final Vector3 position) {
for (final IBlockFrequency frequencyTile : FrequencyGrid.instance().get()) { for (final IBlockFrequency frequencyTile : FrequencyGrid.instance().get()) {
if (((TileEntity)frequencyTile).getWorldObj() == world && if (((TileEntity) frequencyTile).getWorldObj() == world
frequencyTile instanceof IInterdictionMatrix) { && frequencyTile instanceof IInterdictionMatrix) {
final IInterdictionMatrix interdictionMatrix = final IInterdictionMatrix interdictionMatrix
(IInterdictionMatrix)frequencyTile; = (IInterdictionMatrix) frequencyTile;
if (interdictionMatrix.isActive() && if (interdictionMatrix.isActive()
position.distanceTo(new Vector3((TileEntity)interdictionMatrix)) <= && position.distanceTo(new Vector3((TileEntity) interdictionMatrix))
interdictionMatrix.getActionRange()) { <= interdictionMatrix.getActionRange()) {
return interdictionMatrix; return interdictionMatrix;
} }
continue; continue;
@ -169,26 +210,32 @@ public class MFFSHelper {
return null; return null;
} }
public static boolean public static boolean isPermittedByInterdictionMatrix(
isPermittedByInterdictionMatrix(final IInterdictionMatrix interdictionMatrix, final IInterdictionMatrix interdictionMatrix,
final String username, final String username,
final Permission... permissions) { final Permission... permissions
if (interdictionMatrix != null && interdictionMatrix.isActive() && ) {
interdictionMatrix.getBiometricIdentifier() != null) { if (interdictionMatrix != null && interdictionMatrix.isActive()
&& interdictionMatrix.getBiometricIdentifier() != null) {
for (final Permission permission : permissions) { for (final Permission permission : permissions) {
if (!interdictionMatrix.getBiometricIdentifier().isAccessGranted( if (!interdictionMatrix.getBiometricIdentifier().isAccessGranted(
username, permission)) { username, permission
)) {
return interdictionMatrix.getModuleCount( return interdictionMatrix.getModuleCount(
ModularForceFieldSystem.itemModuleInvert, new int[0]) > 0; ModularForceFieldSystem.itemModuleInvert, new int[0]
)
> 0;
} }
} }
} }
return interdictionMatrix.getModuleCount( return interdictionMatrix.getModuleCount(
ModularForceFieldSystem.itemModuleInvert, new int[0]) <= 0; ModularForceFieldSystem.itemModuleInvert, new int[0]
)
<= 0;
} }
public static List<String> splitStringPerWord(final String string, public static List<String>
final int wordsPerLine) { splitStringPerWord(final String string, final int wordsPerLine) {
final String[] words = string.split(" "); final String[] words = string.split(" ");
final List<String> lines = new ArrayList<>(); final List<String> lines = new ArrayList<>();
for (int lineCount = 0; for (int lineCount = 0;
@ -205,18 +252,18 @@ public class MFFSHelper {
return lines; return lines;
} }
public static ItemStack getFirstItemBlock(final TileEntity tileEntity, public static ItemStack
final ItemStack itemStack) { getFirstItemBlock(final TileEntity tileEntity, final ItemStack itemStack) {
return getFirstItemBlock(tileEntity, itemStack, true); return getFirstItemBlock(tileEntity, itemStack, true);
} }
public static ItemStack getFirstItemBlock(final TileEntity tileEntity, public static ItemStack getFirstItemBlock(
final ItemStack itemStack, final TileEntity tileEntity, final ItemStack itemStack, final boolean recur
final boolean recur) { ) {
if (tileEntity instanceof IProjector) { if (tileEntity instanceof IProjector) {
for (final int i : ((IProjector) tileEntity).getModuleSlots()) { for (final int i : ((IProjector) tileEntity).getModuleSlots()) {
final ItemStack checkStack = final ItemStack checkStack
getFirstItemBlock(i, (IInventory)tileEntity, itemStack); = getFirstItemBlock(i, (IInventory) tileEntity, itemStack);
if (checkStack != null) { if (checkStack != null) {
return checkStack; return checkStack;
} }
@ -224,8 +271,7 @@ public class MFFSHelper {
} else if (tileEntity instanceof IInventory) { } else if (tileEntity instanceof IInventory) {
final IInventory inventory = (IInventory) tileEntity; final IInventory inventory = (IInventory) tileEntity;
for (int j = 0; j < inventory.getSizeInventory(); ++j) { for (int j = 0; j < inventory.getSizeInventory(); ++j) {
final ItemStack checkStack2 = final ItemStack checkStack2 = getFirstItemBlock(j, inventory, itemStack);
getFirstItemBlock(j, inventory, itemStack);
if (checkStack2 != null) { if (checkStack2 != null) {
return checkStack2; return checkStack2;
} }
@ -236,11 +282,11 @@ public class MFFSHelper {
final ForgeDirection direction = ForgeDirection.getOrientation(k); final ForgeDirection direction = ForgeDirection.getOrientation(k);
final Vector3 vector = new Vector3(tileEntity); final Vector3 vector = new Vector3(tileEntity);
vector.modifyPositionFromSide(direction); vector.modifyPositionFromSide(direction);
final TileEntity checkTile = final TileEntity checkTile
vector.getTileEntity((IBlockAccess)tileEntity.getWorldObj()); = vector.getTileEntity((IBlockAccess) tileEntity.getWorldObj());
if (checkTile != null) { if (checkTile != null) {
final ItemStack checkStack = final ItemStack checkStack
getFirstItemBlock(checkTile, itemStack, false); = getFirstItemBlock(checkTile, itemStack, false);
if (checkStack != null) { if (checkStack != null) {
return checkStack; return checkStack;
} }
@ -250,12 +296,12 @@ public class MFFSHelper {
return null; return null;
} }
public static ItemStack getFirstItemBlock(final int i, public static ItemStack getFirstItemBlock(
final IInventory inventory, final int i, final IInventory inventory, final ItemStack itemStack
final ItemStack itemStack) { ) {
final ItemStack checkStack = inventory.getStackInSlot(i); final ItemStack checkStack = inventory.getStackInSlot(i);
if (checkStack != null && checkStack.getItem() instanceof ItemBlock && if (checkStack != null && checkStack.getItem() instanceof ItemBlock
(itemStack == null || checkStack.isItemEqual(itemStack))) { && (itemStack == null || checkStack.isItemEqual(itemStack))) {
return checkStack; return checkStack;
} }
return null; return null;
@ -271,28 +317,32 @@ public class MFFSHelper {
return null; return null;
} }
public static ItemStack getCamoBlock(final IProjector projector, public static ItemStack
final Vector3 position) { getCamoBlock(final IProjector projector, final Vector3 position) {
if (projector != null && !((TileEntity)projector).getWorldObj().isRemote && if (projector != null && !((TileEntity) projector).getWorldObj().isRemote
projector != null && && projector != null
projector.getModuleCount(ModularForceFieldSystem.itemModuleCamouflage, && projector.getModuleCount(
new int[0]) > 0) { ModularForceFieldSystem.itemModuleCamouflage, new int[0]
) > 0) {
if (projector.getMode() instanceof ItemModeCustom) { if (projector.getMode() instanceof ItemModeCustom) {
final HashMap<Vector3, int[]> fieldMap = final HashMap<Vector3, int[]> fieldMap
((ItemModeCustom)projector.getMode()) = ((ItemModeCustom) projector.getMode())
.getFieldBlockMap(projector, projector.getModeStack()); .getFieldBlockMap(projector, projector.getModeStack());
if (fieldMap != null) { if (fieldMap != null) {
final Vector3 fieldCenter = new Vector3((TileEntity) projector) final Vector3 fieldCenter = new Vector3((TileEntity) projector)
.add(projector.getTranslation()); .add(projector.getTranslation());
final Vector3 relativePosition = final Vector3 relativePosition
position.clone().subtract(fieldCenter); = position.clone().subtract(fieldCenter);
CalculationHelper.rotateByAngle(relativePosition, CalculationHelper.rotateByAngle(
relativePosition,
-projector.getRotationYaw(), -projector.getRotationYaw(),
-projector.getRotationPitch()); -projector.getRotationPitch()
);
final int[] blockInfo = fieldMap.get(relativePosition.round()); final int[] blockInfo = fieldMap.get(relativePosition.round());
if (blockInfo != null && blockInfo[0] > 0) { if (blockInfo != null && blockInfo[0] > 0) {
return new ItemStack(Block.getBlockById(blockInfo[0]), 1, return new ItemStack(
blockInfo[1]); Block.getBlockById(blockInfo[0]), 1, blockInfo[1]
);
} }
} }
} }
@ -317,51 +367,62 @@ public class MFFSHelper {
return null; return null;
} }
public static boolean hasPermission(final World world, final Vector3 position, public static boolean hasPermission(
final World world,
final Vector3 position,
final Permission permission, final Permission permission,
final EntityPlayer player) { final EntityPlayer player
final IInterdictionMatrix interdictionMatrix = ) {
getNearestInterdictionMatrix(world, position); final IInterdictionMatrix interdictionMatrix
return interdictionMatrix == null || = getNearestInterdictionMatrix(world, position);
isPermittedByInterdictionMatrix(interdictionMatrix, return interdictionMatrix == null
player.getDisplayName(), permission); || isPermittedByInterdictionMatrix(
interdictionMatrix, player.getDisplayName(), permission
);
} }
public static boolean hasPermission(final World world, final Vector3 position, public static boolean hasPermission(
final World world,
final Vector3 position,
final PlayerInteractEvent.Action action, final PlayerInteractEvent.Action action,
final EntityPlayer player) { final EntityPlayer player
final IInterdictionMatrix interdictionMatrix = ) {
getNearestInterdictionMatrix(world, position); final IInterdictionMatrix interdictionMatrix
return interdictionMatrix == null || = getNearestInterdictionMatrix(world, position);
hasPermission(world, position, interdictionMatrix, action, player); return interdictionMatrix == null
|| hasPermission(world, position, interdictionMatrix, action, player);
} }
public static boolean public static boolean hasPermission(
hasPermission(final World world, final Vector3 position, final World world,
final Vector3 position,
final IInterdictionMatrix interdictionMatrix, final IInterdictionMatrix interdictionMatrix,
final PlayerInteractEvent.Action action, final PlayerInteractEvent.Action action,
final EntityPlayer player) { final EntityPlayer player
) {
boolean hasPermission = true; boolean hasPermission = true;
if (action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK && if (action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK
position.getTileEntity((IBlockAccess)world) != null && && position.getTileEntity((IBlockAccess) world) != null
interdictionMatrix.getModuleCount( && interdictionMatrix.getModuleCount(
ModularForceFieldSystem.itemModuleBlockAccess, new int[0]) > 0) { ModularForceFieldSystem.itemModuleBlockAccess, new int[0]
) > 0) {
hasPermission = false; hasPermission = false;
if (isPermittedByInterdictionMatrix(interdictionMatrix, if (isPermittedByInterdictionMatrix(
player.getDisplayName(), interdictionMatrix, player.getDisplayName(), Permission.BLOCK_ACCESS
Permission.BLOCK_ACCESS)) { )) {
hasPermission = true; hasPermission = true;
} }
} }
if (hasPermission && if (hasPermission
interdictionMatrix.getModuleCount( && interdictionMatrix.getModuleCount(
ModularForceFieldSystem.itemModuleBlockAlter, new int[0]) > 0 && ModularForceFieldSystem.itemModuleBlockAlter, new int[0]
(player.getCurrentEquippedItem() != null || ) > 0
action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK)) { && (player.getCurrentEquippedItem() != null
|| action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK)) {
hasPermission = false; hasPermission = false;
if (isPermittedByInterdictionMatrix(interdictionMatrix, if (isPermittedByInterdictionMatrix(
player.getDisplayName(), interdictionMatrix, player.getDisplayName(), Permission.BLOCK_ALTER
Permission.BLOCK_ALTER)) { )) {
hasPermission = true; hasPermission = true;
} }
} }

View file

@ -8,39 +8,49 @@ import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
public class ManipulatorHelper { public class ManipulatorHelper {
public static void setBlockSneaky(final World world, final Vector3 position, public static void setBlockSneaky(
final Block id, final int metadata, final World world,
final TileEntity tileEntity) { final Vector3 position,
final Chunk chunk = world.getChunkFromChunkCoords(position.intX() >> 4, final Block id,
position.intZ() >> 4); final int metadata,
final TileEntity tileEntity
) {
final Chunk chunk
= world.getChunkFromChunkCoords(position.intX() >> 4, position.intZ() >> 4);
final Vector3 chunkPosition = new Vector3( final Vector3 chunkPosition = new Vector3(
position.intX() & 0xF, position.intY() & 0xF, position.intZ() & 0xF); position.intX() & 0xF, position.intY() & 0xF, position.intZ() & 0xF
);
final int heightMapIndex = chunkPosition.intZ() << 4 | chunkPosition.intX(); final int heightMapIndex = chunkPosition.intZ() << 4 | chunkPosition.intX();
if (position.intY() >= chunk.precipitationHeightMap[heightMapIndex] - 1) { if (position.intY() >= chunk.precipitationHeightMap[heightMapIndex] - 1) {
chunk.precipitationHeightMap[heightMapIndex] = -999; chunk.precipitationHeightMap[heightMapIndex] = -999;
} }
final int heightMapValue = chunk.heightMap[heightMapIndex]; final int heightMapValue = chunk.heightMap[heightMapIndex];
world.removeTileEntity(position.intX(), position.intY(), position.intZ()); world.removeTileEntity(position.intX(), position.intY(), position.intZ());
ExtendedBlockStorage extendedBlockStorage = ExtendedBlockStorage extendedBlockStorage
chunk.getBlockStorageArray()[position.intY() >> 4]; = chunk.getBlockStorageArray()[position.intY() >> 4];
if (extendedBlockStorage == null) { if (extendedBlockStorage == null) {
extendedBlockStorage = new ExtendedBlockStorage(position.intY() >> 4 << 4, extendedBlockStorage = new ExtendedBlockStorage(
!world.provider.hasNoSky); position.intY() >> 4 << 4, !world.provider.hasNoSky
);
chunk.getBlockStorageArray()[position.intY() >> 4] = extendedBlockStorage; chunk.getBlockStorageArray()[position.intY() >> 4] = extendedBlockStorage;
} }
extendedBlockStorage.func_150818_a( extendedBlockStorage.func_150818_a(
chunkPosition.intX(), chunkPosition.intY(), chunkPosition.intZ(), id); chunkPosition.intX(), chunkPosition.intY(), chunkPosition.intZ(), id
extendedBlockStorage.setExtBlockMetadata(chunkPosition.intX(), );
chunkPosition.intY(), extendedBlockStorage.setExtBlockMetadata(
chunkPosition.intZ(), metadata); chunkPosition.intX(), chunkPosition.intY(), chunkPosition.intZ(), metadata
);
if (position.intY() >= heightMapValue) { if (position.intY() >= heightMapValue) {
chunk.generateSkylightMap(); chunk.generateSkylightMap();
} else { } else {
if (chunk.func_150808_b(chunkPosition.intX(), position.intY(), if (chunk.func_150808_b(
chunkPosition.intZ()) > 0) { chunkPosition.intX(), position.intY(), chunkPosition.intZ()
)
> 0) {
if (position.intY() >= heightMapValue) { if (position.intY() >= heightMapValue) {
relightBlock(chunk, relightBlock(
Vector3.add(chunkPosition, new Vector3(0.0, 1.0, 0.0))); chunk, Vector3.add(chunkPosition, new Vector3(0.0, 1.0, 0.0))
);
} }
} else if (position.intY() == heightMapValue - 1) { } else if (position.intY() == heightMapValue - 1) {
relightBlock(chunk, chunkPosition); relightBlock(chunk, chunkPosition);
@ -50,8 +60,9 @@ public class ManipulatorHelper {
chunk.isModified = true; chunk.isModified = true;
world.func_147451_t(position.intX(), position.intY(), position.intZ()); world.func_147451_t(position.intX(), position.intY(), position.intZ());
if (tileEntity != null) { if (tileEntity != null) {
world.setTileEntity(position.intX(), position.intY(), position.intZ(), world.setTileEntity(
tileEntity); position.intX(), position.intY(), position.intZ(), tileEntity
);
} }
world.markBlockForUpdate(position.intX(), position.intY(), position.intZ()); world.markBlockForUpdate(position.intX(), position.intY(), position.intZ());
} }
@ -60,8 +71,8 @@ public class ManipulatorHelper {
chunk.relightBlock(position.intX(), position.intY(), position.intZ()); chunk.relightBlock(position.intX(), position.intY(), position.intZ());
} }
public static void propagateSkylightOcclusion(final Chunk chunk, public static void
final Vector3 position) { propagateSkylightOcclusion(final Chunk chunk, final Vector3 position) {
chunk.propagateSkylightOcclusion(position.intX(), position.intZ()); chunk.propagateSkylightOcclusion(position.intX(), position.intZ());
} }
} }

View file

@ -1,5 +1,8 @@
package mffs; package mffs;
import java.util.Arrays;
import java.util.logging.Logger;
import calclavia.lib.UniversalRecipes; import calclavia.lib.UniversalRecipes;
import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler; 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.network.simpleimpl.SimpleNetworkWrapper;
import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import java.util.Arrays;
import java.util.logging.Logger;
import mffs.base.BlockBase; import mffs.base.BlockBase;
import mffs.base.BlockMachine; import mffs.base.BlockMachine;
import mffs.base.ItemBase; import mffs.base.ItemBase;
@ -74,16 +75,23 @@ import net.minecraftforge.fluids.FluidRegistry;
import universalelectricity.prefab.CustomDamageSource; import universalelectricity.prefab.CustomDamageSource;
import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.TranslationHelper;
@Mod(modid = "MFFS", name = "Modular Force Field System", version = ModularForceFieldSystem.VERSION, @Mod(
useMetadata = true, dependencies = "required-after:basiccomponents;after:IC2") modid = "MFFS",
name = "Modular Force Field System",
version = ModularForceFieldSystem.VERSION,
useMetadata = true,
dependencies = "required-after:basiccomponents;after:IC2"
)
public class ModularForceFieldSystem { public class ModularForceFieldSystem {
public static final String CHANNEL = "MFFS"; public static final String CHANNEL = "MFFS";
public static final String ID = "MFFS"; public static final String ID = "MFFS";
public static final String NAME = "Modular Force Field System"; public static final String NAME = "Modular Force Field System";
public static final String PREFIX = "mffs:"; public static final String PREFIX = "mffs:";
public static final String VERSION = "{VERSION}"; public static final String VERSION = "{VERSION}";
@Mod.Instance("MFFS") public static ModularForceFieldSystem instance; @Mod.Instance("MFFS")
@Mod.Metadata("MFFS") public static ModMetadata metadata; public static ModularForceFieldSystem instance;
@Mod.Metadata("MFFS")
public static ModMetadata metadata;
@SidedProxy(clientSide = "mffs.ClientProxy", serverSide = "mffs.CommonProxy") @SidedProxy(clientSide = "mffs.ClientProxy", serverSide = "mffs.CommonProxy")
public static CommonProxy proxy; public static CommonProxy proxy;
public static final Logger LOGGER; public static final Logger LOGGER;
@ -94,12 +102,11 @@ public class ModularForceFieldSystem {
public static final String ITEM_DIRECTORY = "/mods/mffs/textures/items/"; public static final String ITEM_DIRECTORY = "/mods/mffs/textures/items/";
public static final String MODEL_DIRECTORY = "/mods/mffs/textures/models/"; 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_DIRECTORY = "/mods/mffs/textures/gui/";
public static final String GUI_BASE_DIRECTORY = public static final String GUI_BASE_DIRECTORY
"/mods/mffs/textures/gui/gui_base.png"; = "/mods/mffs/textures/gui/gui_base.png";
public static final String GUI_COMPONENTS = public static final String GUI_COMPONENTS
"/mods/mffs/textures/gui/gui_components.png"; = "/mods/mffs/textures/gui/gui_components.png";
public static final String GUI_BUTTON = public static final String GUI_BUTTON = "/mods/mffs/textures/gui/gui_button.png";
"/mods/mffs/textures/gui/gui_button.png";
public static BlockMachine blockCoercionDeriver; public static BlockMachine blockCoercionDeriver;
public static BlockMachine blockFortronCapacitor; public static BlockMachine blockFortronCapacitor;
public static BlockMachine blockForceFieldProjector; public static BlockMachine blockForceFieldProjector;
@ -151,113 +158,116 @@ public class ModularForceFieldSystem {
@EventHandler @EventHandler
public void preInit(final FMLPreInitializationEvent event) { public void preInit(final FMLPreInitializationEvent event) {
NetworkRegistry.INSTANCE.registerGuiHandler( NetworkRegistry.INSTANCE.registerGuiHandler(
(Object)this, (IGuiHandler)ModularForceFieldSystem.proxy); (Object) this, (IGuiHandler) ModularForceFieldSystem.proxy
);
MinecraftForge.EVENT_BUS.register((Object) new SubscribeEventHandler()); MinecraftForge.EVENT_BUS.register((Object) new SubscribeEventHandler());
Settings.load(); Settings.load();
Settings.CONFIGURATION.load(); Settings.CONFIGURATION.load();
ModularForceFieldSystem.blockForceField = new BlockForceField(); ModularForceFieldSystem.blockForceField = new BlockForceField();
ModularForceFieldSystem.blockCoercionDeriver = new BlockCoercionDeriver(); ModularForceFieldSystem.blockCoercionDeriver = new BlockCoercionDeriver();
ModularForceFieldSystem.blockFortronCapacitor = new BlockFortronCapacitor(); ModularForceFieldSystem.blockFortronCapacitor = new BlockFortronCapacitor();
ModularForceFieldSystem.blockForceFieldProjector = ModularForceFieldSystem.blockForceFieldProjector = new BlockForceFieldProjector();
new BlockForceFieldProjector(); ModularForceFieldSystem.blockBiometricIdentifier = new BlockBiometricIdentifier();
ModularForceFieldSystem.blockBiometricIdentifier = ModularForceFieldSystem.blockInterdictionMatrix = new BlockInterdictionMatrix();
new BlockBiometricIdentifier();
ModularForceFieldSystem.blockInterdictionMatrix =
new BlockInterdictionMatrix();
ModularForceFieldSystem.blockForceManipulator = new BlockForceManipulator(); ModularForceFieldSystem.blockForceManipulator = new BlockForceManipulator();
ModularForceFieldSystem.itemRemoteController = new ItemRemoteController(); ModularForceFieldSystem.itemRemoteController = new ItemRemoteController();
ModularForceFieldSystem.itemFocusMatrix = new ItemBase("focusMatrix"); ModularForceFieldSystem.itemFocusMatrix = new ItemBase("focusMatrix");
ModularForceFieldSystem.itemModeCube = ModularForceFieldSystem.itemModeCube = new ItemModeCube(Settings.getNextItemID());
new ItemModeCube(Settings.getNextItemID()); ModularForceFieldSystem.itemModeSphere
ModularForceFieldSystem.itemModeSphere = = new ItemModeSphere(Settings.getNextItemID());
new ItemModeSphere(Settings.getNextItemID());
ModularForceFieldSystem.itemModeTube = new ItemModeTube(); ModularForceFieldSystem.itemModeTube = new ItemModeTube();
ModularForceFieldSystem.itemModePyramid = new ItemModePyramid(); ModularForceFieldSystem.itemModePyramid = new ItemModePyramid();
ModularForceFieldSystem.itemModeCylinder = new ItemModeCylinder(); ModularForceFieldSystem.itemModeCylinder = new ItemModeCylinder();
ModularForceFieldSystem.itemModeCustom = new ItemModeCustom(); ModularForceFieldSystem.itemModeCustom = new ItemModeCustom();
ModularForceFieldSystem.itemModuleTranslate = ModularForceFieldSystem.itemModuleTranslate
new ItemModule("moduleTranslate").setCost(1.6f); = new ItemModule("moduleTranslate").setCost(1.6f);
ModularForceFieldSystem.itemModuleScale = ModularForceFieldSystem.itemModuleScale
new ItemModule("moduleScale").setCost(1.2f); = new ItemModule("moduleScale").setCost(1.2f);
ModularForceFieldSystem.itemModuleRotate = ModularForceFieldSystem.itemModuleRotate
new ItemModule("moduleRotate").setCost(0.1f); = new ItemModule("moduleRotate").setCost(0.1f);
ModularForceFieldSystem.itemModuleSpeed = ModularForceFieldSystem.itemModuleSpeed
new ItemModule("moduleSpeed").setCost(1.0f); = new ItemModule("moduleSpeed").setCost(1.0f);
ModularForceFieldSystem.itemModuleCapacity = ModularForceFieldSystem.itemModuleCapacity
new ItemModule("moduleCapacity").setCost(0.5f); = new ItemModule("moduleCapacity").setCost(0.5f);
ModularForceFieldSystem.itemModuleFusion = new ItemModuleFusion(); ModularForceFieldSystem.itemModuleFusion = new ItemModuleFusion();
ModularForceFieldSystem.itemModuleManipulator = new ItemModuleManipulator(); ModularForceFieldSystem.itemModuleManipulator = new ItemModuleManipulator();
ModularForceFieldSystem.itemModuleCamouflage = ModularForceFieldSystem.itemModuleCamouflage
new ItemModule("moduleCamouflage").setCost(1.5f).setMaxStackSize(1); = new ItemModule("moduleCamouflage").setCost(1.5f).setMaxStackSize(1);
ModularForceFieldSystem.itemModuleDisintegration = ModularForceFieldSystem.itemModuleDisintegration = new ItemModuleDisintegration();
new ItemModuleDisintegration();
ModularForceFieldSystem.itemModuleShock = new ItemModuleShock(); ModularForceFieldSystem.itemModuleShock = new ItemModuleShock();
ModularForceFieldSystem.itemModuleGlow = new ItemModule("moduleGlow"); ModularForceFieldSystem.itemModuleGlow = new ItemModule("moduleGlow");
ModularForceFieldSystem.itemModuleSponge = new ItemModuleSponge(); ModularForceFieldSystem.itemModuleSponge = new ItemModuleSponge();
ModularForceFieldSystem.itemModuleStablize = new ItemModuleStablize(); ModularForceFieldSystem.itemModuleStablize = new ItemModuleStablize();
ModularForceFieldSystem.itemModuleAntiFriendly = ModularForceFieldSystem.itemModuleAntiFriendly = new ItemModuleAntiFriendly();
new ItemModuleAntiFriendly();
ModularForceFieldSystem.itemModuleAntiHostile = new ItemModuleAntiHostile(); ModularForceFieldSystem.itemModuleAntiHostile = new ItemModuleAntiHostile();
ModularForceFieldSystem.itemModuleAntiPersonnel = ModularForceFieldSystem.itemModuleAntiPersonnel = new ItemModuleAntiPersonnel();
new ItemModuleAntiPersonnel();
ModularForceFieldSystem.itemModuleConfiscate = new ItemModuleConfiscate(); ModularForceFieldSystem.itemModuleConfiscate = new ItemModuleConfiscate();
ModularForceFieldSystem.itemModuleWarn = new ItemModuleWarn(); ModularForceFieldSystem.itemModuleWarn = new ItemModuleWarn();
ModularForceFieldSystem.itemModuleBlockAccess = ModularForceFieldSystem.itemModuleBlockAccess
new ItemModuleInterdictionMatrix("moduleBlockAccess").setCost(10.0f); = new ItemModuleInterdictionMatrix("moduleBlockAccess").setCost(10.0f);
ModularForceFieldSystem.itemModuleBlockAlter = ModularForceFieldSystem.itemModuleBlockAlter
new ItemModuleInterdictionMatrix("moduleBlockAlter").setCost(15.0f); = new ItemModuleInterdictionMatrix("moduleBlockAlter").setCost(15.0f);
ModularForceFieldSystem.itemModuleAntiSpawn = ModularForceFieldSystem.itemModuleAntiSpawn
new ItemModuleInterdictionMatrix("moduleAntiSpawn").setCost(10.0f); = new ItemModuleInterdictionMatrix("moduleAntiSpawn").setCost(10.0f);
ModularForceFieldSystem.itemCardBlank = new ItemCard("cardBlank"); ModularForceFieldSystem.itemCardBlank = new ItemCard("cardBlank");
ModularForceFieldSystem.itemCardFrequency = new ItemCardFrequency(); ModularForceFieldSystem.itemCardFrequency = new ItemCardFrequency();
ModularForceFieldSystem.itemCardLink = new ItemCardLink(); ModularForceFieldSystem.itemCardLink = new ItemCardLink();
ModularForceFieldSystem.itemCardID = new ItemCardID(); ModularForceFieldSystem.itemCardID = new ItemCardID();
ModularForceFieldSystem.itemCardInfinite = new ItemCardInfinite(); ModularForceFieldSystem.itemCardInfinite = new ItemCardInfinite();
FortronHelper.FLUID_FORTRON = new Fluid("fortron"); FortronHelper.FLUID_FORTRON = new Fluid("fortron");
ModularForceFieldSystem.itemModuleCollection = ModularForceFieldSystem.itemModuleCollection
new ItemModule("moduleCollection").setMaxStackSize(1).setCost(15.0f); = new ItemModule("moduleCollection").setMaxStackSize(1).setCost(15.0f);
ModularForceFieldSystem.itemModuleInvert = ModularForceFieldSystem.itemModuleInvert
new ItemModule("moduleInvert").setMaxStackSize(1).setCost(15.0f); = new ItemModule("moduleInvert").setMaxStackSize(1).setCost(15.0f);
ModularForceFieldSystem.itemModuleSilence = ModularForceFieldSystem.itemModuleSilence
new ItemModule("moduleSilence").setMaxStackSize(1).setCost(1.0f); = new ItemModule("moduleSilence").setMaxStackSize(1).setCost(1.0f);
Settings.CONFIGURATION.save(); Settings.CONFIGURATION.save();
GameRegistry.registerBlock((Block)ModularForceFieldSystem.blockForceField, GameRegistry.registerBlock(
"blockForceField"); (Block) ModularForceFieldSystem.blockForceField, "blockForceField"
);
GameRegistry.registerBlock( GameRegistry.registerBlock(
(Block) ModularForceFieldSystem.blockCoercionDeriver, (Block) ModularForceFieldSystem.blockCoercionDeriver,
"blockCoercionDeriver"); "blockCoercionDeriver"
);
GameRegistry.registerBlock( GameRegistry.registerBlock(
(Block)ModularForceFieldSystem.blockFortronCapacitor, (Block) ModularForceFieldSystem.blockFortronCapacitor, "blockFortronCapacitor"
"blockFortronCapacitor"); );
GameRegistry.registerBlock( GameRegistry.registerBlock(
(Block) ModularForceFieldSystem.blockForceFieldProjector, (Block) ModularForceFieldSystem.blockForceFieldProjector,
"blockForceFieldProjector"); "blockForceFieldProjector"
);
GameRegistry.registerBlock( GameRegistry.registerBlock(
(Block) ModularForceFieldSystem.blockBiometricIdentifier, (Block) ModularForceFieldSystem.blockBiometricIdentifier,
"blockBiometricIdentifier"); "blockBiometricIdentifier"
);
GameRegistry.registerBlock( GameRegistry.registerBlock(
(Block) ModularForceFieldSystem.blockInterdictionMatrix, (Block) ModularForceFieldSystem.blockInterdictionMatrix,
"blockInterdictionMatrix"); "blockInterdictionMatrix"
);
GameRegistry.registerBlock( GameRegistry.registerBlock(
(Block)ModularForceFieldSystem.blockForceManipulator, (Block) ModularForceFieldSystem.blockForceManipulator, "blockForceManipulator"
"blockForceManipulator"
); );
GameRegistry.registerTileEntity(TileEntityForceField.class, GameRegistry.registerTileEntity(TileEntityForceField.class, "tileForceField");
"tileForceField"); GameRegistry.registerTileEntity(
GameRegistry.registerTileEntity(TileEntityCoercionDeriver.class, TileEntityCoercionDeriver.class, "tileCoercionDeriver"
"tileCoercionDeriver"); );
GameRegistry.registerTileEntity(TileEntityFortronCapacitor.class, GameRegistry.registerTileEntity(
"tileFortronCapacitor"); TileEntityFortronCapacitor.class, "tileFortronCapacitor"
GameRegistry.registerTileEntity(TileEntityForceFieldProjector.class, );
"tileForceFieldProjector"); GameRegistry.registerTileEntity(
GameRegistry.registerTileEntity(TileEntityBiometricIdentifier.class, TileEntityForceFieldProjector.class, "tileForceFieldProjector"
"tileBiometricIdentifier"); );
GameRegistry.registerTileEntity(TileEntityInterdictionMatrix.class, GameRegistry.registerTileEntity(
"tileInterdictionMatrix"); TileEntityBiometricIdentifier.class, "tileBiometricIdentifier"
GameRegistry.registerTileEntity(TileEntityForceManipulator.class, );
"tileForceManipulator"); GameRegistry.registerTileEntity(
TileEntityInterdictionMatrix.class, "tileInterdictionMatrix"
);
GameRegistry.registerTileEntity(
TileEntityForceManipulator.class, "tileForceManipulator"
);
ModularForceFieldSystem.proxy.preInit(); ModularForceFieldSystem.proxy.preInit();
@ -287,47 +297,49 @@ public class ModularForceFieldSystem {
GameRegistry.registerItem(itemModuleFusion, "itemModuleFusion"); GameRegistry.registerItem(itemModuleFusion, "itemModuleFusion");
GameRegistry.registerItem(itemModuleManipulator, "itemModuleManipulator"); GameRegistry.registerItem(itemModuleManipulator, "itemModuleManipulator");
GameRegistry.registerItem(itemModuleCamouflage, "itemModuleCamouflage"); GameRegistry.registerItem(itemModuleCamouflage, "itemModuleCamouflage");
GameRegistry.registerItem(itemModuleDisintegration, GameRegistry.registerItem(itemModuleDisintegration, "itemModuleDisintegration");
"itemModuleDisintegration");
GameRegistry.registerItem(itemModuleShock, "itemModuleShock"); GameRegistry.registerItem(itemModuleShock, "itemModuleShock");
GameRegistry.registerItem(itemModuleGlow, "itemModuleGlow"); GameRegistry.registerItem(itemModuleGlow, "itemModuleGlow");
GameRegistry.registerItem(itemModuleSponge, "itemModuleSponge"); GameRegistry.registerItem(itemModuleSponge, "itemModuleSponge");
GameRegistry.registerItem(itemModuleStablize, "itemModuleStablize"); GameRegistry.registerItem(itemModuleStablize, "itemModuleStablize");
GameRegistry.registerItem(itemModuleAntiHostile, "itemModuleAntiHostile"); GameRegistry.registerItem(itemModuleAntiHostile, "itemModuleAntiHostile");
GameRegistry.registerItem(itemModuleAntiFriendly, "itemModuleAntiFriendly"); GameRegistry.registerItem(itemModuleAntiFriendly, "itemModuleAntiFriendly");
GameRegistry.registerItem(itemModuleAntiPersonnel, GameRegistry.registerItem(itemModuleAntiPersonnel, "itemModuleAntiPersonnel");
"itemModuleAntiPersonnel");
GameRegistry.registerItem(itemModuleConfiscate, "itemModuleConfiscate"); GameRegistry.registerItem(itemModuleConfiscate, "itemModuleConfiscate");
GameRegistry.registerItem(itemModuleWarn, "itemModuleWarn"); GameRegistry.registerItem(itemModuleWarn, "itemModuleWarn");
GameRegistry.registerItem(itemModuleBlockAccess, "itemModuleBlockAccess"); GameRegistry.registerItem(itemModuleBlockAccess, "itemModuleBlockAccess");
GameRegistry.registerItem(itemModuleBlockAlter, "itemModuleBlockAlter"); GameRegistry.registerItem(itemModuleBlockAlter, "itemModuleBlockAlter");
GameRegistry.registerItem(itemModuleAntiSpawn, "itemModuleAntiSpawn"); GameRegistry.registerItem(itemModuleAntiSpawn, "itemModuleAntiSpawn");
channel = channel = NetworkRegistry.INSTANCE.newSimpleChannel("mffs");
NetworkRegistry.INSTANCE.newSimpleChannel("mffs");
int pkgDiscriminator = 0; int pkgDiscriminator = 0;
channel.registerMessage(PacketTileHandler.class, PacketTile.class, channel.registerMessage(
pkgDiscriminator++, Side.SERVER); PacketTileHandler.class, PacketTile.class, pkgDiscriminator++, Side.SERVER
channel.registerMessage(PacketFxsHandler.class, PacketFxs.class, );
pkgDiscriminator++, Side.CLIENT); channel.registerMessage(
PacketFxsHandler.class, PacketFxs.class, pkgDiscriminator++, Side.CLIENT
);
} }
@EventHandler @EventHandler
public void load(final FMLInitializationEvent evt) { public void load(final FMLInitializationEvent evt) {
ModularForceFieldSystem.LOGGER.fine( ModularForceFieldSystem.LOGGER.fine(
"Language(s) Loaded: " + "Language(s) Loaded: "
TranslationHelper.loadLanguages( + TranslationHelper.loadLanguages(
"/assets/mffs/lang/", new String[] {"en_US", "zh_CN", "de_DE"})); "/assets/mffs/lang/", new String[] { "en_US", "zh_CN", "de_DE" }
)
);
ModularForceFieldSystem.metadata.modId = "MFFS"; ModularForceFieldSystem.metadata.modId = "MFFS";
ModularForceFieldSystem.metadata.name = "Modular Force Field System"; ModularForceFieldSystem.metadata.name = "Modular Force Field System";
ModularForceFieldSystem.metadata.description = ModularForceFieldSystem.metadata.description
"Modular Force Field System is a mod that adds force fields, high tech machinery and defensive measures to Minecraft."; = "Modular Force Field System is a mod that adds force fields, high tech machinery and defensive measures to Minecraft.";
ModularForceFieldSystem.metadata.url = ModularForceFieldSystem.metadata.url
"http://www.universalelectricity.com/mffs/"; = "http://www.universalelectricity.com/mffs/";
ModularForceFieldSystem.metadata.logoFile = "mffs_logo.png"; ModularForceFieldSystem.metadata.logoFile = "mffs_logo.png";
ModularForceFieldSystem.metadata.version = VERSION; ModularForceFieldSystem.metadata.version = VERSION;
ModularForceFieldSystem.metadata.authorList = Arrays.asList("Calclavia", "LordMZTE", "tilera"); ModularForceFieldSystem.metadata.authorList
= Arrays.asList("Calclavia", "LordMZTE", "tilera");
ModularForceFieldSystem.metadata.credits = "Please visit the website."; ModularForceFieldSystem.metadata.credits = "Please visit the website.";
ModularForceFieldSystem.metadata.autogenerated = false; ModularForceFieldSystem.metadata.autogenerated = false;
} }
@ -346,7 +358,7 @@ public class ModularForceFieldSystem {
static { static {
LOGGER = Logger.getLogger("Modular Force Field System"); LOGGER = Logger.getLogger("Modular Force Field System");
ModularForceFieldSystem.damagefieldShock = ModularForceFieldSystem.damagefieldShock
new CustomDamageSource("fieldShock").setDamageBypassesArmor(); = new CustomDamageSource("fieldShock").setDamageBypassesArmor();
} }
} }

View file

@ -209,7 +209,8 @@ public class Recipes {
.ingredient('F', ModularForceFieldSystem.itemFocusMatrix) .ingredient('F', ModularForceFieldSystem.itemFocusMatrix)
.ingredient( .ingredient(
'R', 'R',
Items.redstone) // this is a guess, R isnt defined in the original Items.redstone
) // this is a guess, R isnt defined in the original
.register(); .register();
new RecipeBuilder(new ShapedOreRecipeAdapter()) new RecipeBuilder(new ShapedOreRecipeAdapter())

View file

@ -1,7 +1,8 @@
package mffs; package mffs;
import cpw.mods.fml.common.Loader;
import java.io.File; import java.io.File;
import cpw.mods.fml.common.Loader;
import mffs.api.Blacklist; import mffs.api.Blacklist;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.init.Blocks; import net.minecraft.init.Blocks;
@ -27,82 +28,91 @@ public class Settings {
public static final int MAX_FREQUENCY_DIGITS = 6; public static final int MAX_FREQUENCY_DIGITS = 6;
public static boolean ENABLE_MANIPULATOR; public static boolean ENABLE_MANIPULATOR;
public static int getNextBlockID() { return ++Settings.NEXT_BLOCK_ID; } public static int getNextBlockID() {
return ++Settings.NEXT_BLOCK_ID;
}
public static int getNextItemID() { return ++Settings.NEXT_ITEM_ID; } public static int getNextItemID() {
return ++Settings.NEXT_ITEM_ID;
}
public static void load() { public static void load() {
Settings.CONFIGURATION.load(); Settings.CONFIGURATION.load();
Settings.ENABLE_MANIPULATOR = Settings.ENABLE_MANIPULATOR
Settings.CONFIGURATION = Settings.CONFIGURATION
.get("general", "Enable Force Manipulator", .get("general", "Enable Force Manipulator", Settings.ENABLE_MANIPULATOR)
Settings.ENABLE_MANIPULATOR)
.getBoolean(Settings.ENABLE_MANIPULATOR); .getBoolean(Settings.ENABLE_MANIPULATOR);
final Property propFieldScale = Settings.CONFIGURATION.get( final Property propFieldScale = Settings.CONFIGURATION.get(
"general", "Max Force Field Scale", Settings.MAX_FORCE_FIELD_SCALE); "general", "Max Force Field Scale", Settings.MAX_FORCE_FIELD_SCALE
Settings.MAX_FORCE_FIELD_SCALE = );
propFieldScale.getInt(Settings.MAX_FORCE_FIELD_SCALE); Settings.MAX_FORCE_FIELD_SCALE
= propFieldScale.getInt(Settings.MAX_FORCE_FIELD_SCALE);
final Property propInterdiction = Settings.CONFIGURATION.get( final Property propInterdiction = Settings.CONFIGURATION.get(
"general", "Interdiction Murder Fortron Consumption", "general",
Settings.INTERDICTION_MURDER_ENERGY); "Interdiction Murder Fortron Consumption",
Settings.INTERDICTION_MURDER_ENERGY = Settings.INTERDICTION_MURDER_ENERGY
propInterdiction.getInt(Settings.INTERDICTION_MURDER_ENERGY); );
Settings.INTERDICTION_MURDER_ENERGY
= propInterdiction.getInt(Settings.INTERDICTION_MURDER_ENERGY);
final Property propCreative = Settings.CONFIGURATION.get( final Property propCreative = Settings.CONFIGURATION.get(
"general", "Effect Creative Players", Settings.INTERACT_CREATIVE); "general", "Effect Creative Players", Settings.INTERACT_CREATIVE
propCreative.comment = );
"Should the interdiction matrix interact with creative players?."; propCreative.comment
Settings.INTERACT_CREATIVE = = "Should the interdiction matrix interact with creative players?.";
propCreative.getBoolean(Settings.INTERACT_CREATIVE); Settings.INTERACT_CREATIVE = propCreative.getBoolean(Settings.INTERACT_CREATIVE);
final Property propChunkLoading = Settings.CONFIGURATION.get( final Property propChunkLoading
"general", "Load Chunks", Settings.LOAD_CHUNKS); = Settings.CONFIGURATION.get("general", "Load Chunks", Settings.LOAD_CHUNKS);
propChunkLoading.comment = propChunkLoading.comment
"Set this to false to turn off the MFFS Chunkloading capabilities."; = "Set this to false to turn off the MFFS Chunkloading capabilities.";
Settings.LOAD_CHUNKS = propChunkLoading.getBoolean(Settings.LOAD_CHUNKS); Settings.LOAD_CHUNKS = propChunkLoading.getBoolean(Settings.LOAD_CHUNKS);
final Property propOpOverride = Settings.CONFIGURATION.get( final Property propOpOverride
"general", "Op Override", Settings.OP_OVERRIDE); = Settings.CONFIGURATION.get("general", "Op Override", Settings.OP_OVERRIDE);
propOpOverride.comment = propOpOverride.comment
"Allow the operator(s) to override security measures created by MFFS?"; = "Allow the operator(s) to override security measures created by MFFS?";
Settings.OP_OVERRIDE = propOpOverride.getBoolean(Settings.OP_OVERRIDE); Settings.OP_OVERRIDE = propOpOverride.getBoolean(Settings.OP_OVERRIDE);
final Property propUseCache = final Property propUseCache
Settings.CONFIGURATION.get("general", "Use Cache", Settings.USE_CACHE); = Settings.CONFIGURATION.get("general", "Use Cache", Settings.USE_CACHE);
propUseCache.comment = propUseCache.comment
"Cache allows temporary data saving to decrease calculations required."; = "Cache allows temporary data saving to decrease calculations required.";
Settings.USE_CACHE = propUseCache.getBoolean(Settings.USE_CACHE); Settings.USE_CACHE = propUseCache.getBoolean(Settings.USE_CACHE);
final Property maxFFGenPerTick = final Property maxFFGenPerTick = Settings.CONFIGURATION.get(
Settings.CONFIGURATION.get("general", "Field Calculation Per Tick", "general", "Field Calculation Per Tick", Settings.MAX_FORCE_FIELDS_PER_TICK
Settings.MAX_FORCE_FIELDS_PER_TICK); );
maxFFGenPerTick.comment = maxFFGenPerTick.comment
"How many force field blocks can be generated per tick? Less reduces lag."; = "How many force field blocks can be generated per tick? Less reduces lag.";
Settings.MAX_FORCE_FIELDS_PER_TICK = Settings.MAX_FORCE_FIELDS_PER_TICK
maxFFGenPerTick.getInt(Settings.MAX_FORCE_FIELDS_PER_TICK); = maxFFGenPerTick.getInt(Settings.MAX_FORCE_FIELDS_PER_TICK);
final Property useElectricity = Settings.CONFIGURATION.get( final Property useElectricity = Settings.CONFIGURATION.get(
"general", "Require Electricity?", Settings.ENABLE_ELECTRICITY); "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!"; useElectricity.comment
Settings.ENABLE_ELECTRICITY = = "Turning this to false will make MFFS run without electricity or energy systems required. Great for vanilla!";
useElectricity.getBoolean(Settings.ENABLE_ELECTRICITY); Settings.ENABLE_ELECTRICITY
= useElectricity.getBoolean(Settings.ENABLE_ELECTRICITY);
final Property conservePackets = Settings.CONFIGURATION.get( final Property conservePackets = Settings.CONFIGURATION.get(
"general", "Conserve Packets?", Settings.CONSERVE_PACKETS); "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."; conservePackets.comment
Settings.CONSERVE_PACKETS = = "Turning this to false will enable better client side packet and updates but in the cost of more packets sent.";
conservePackets.getBoolean(Settings.CONSERVE_PACKETS); Settings.CONSERVE_PACKETS = conservePackets.getBoolean(Settings.CONSERVE_PACKETS);
final Property highGraphics = Settings.CONFIGURATION.get( final Property highGraphics = Settings.CONFIGURATION.get(
"general", "High Graphics", Settings.HIGH_GRAPHICS); "general", "High Graphics", Settings.HIGH_GRAPHICS
highGraphics.comment = );
"Turning this to false will reduce rendering and client side packet graphical packets."; highGraphics.comment
= "Turning this to false will reduce rendering and client side packet graphical packets.";
Settings.CONSERVE_PACKETS = highGraphics.getBoolean(Settings.HIGH_GRAPHICS); Settings.CONSERVE_PACKETS = highGraphics.getBoolean(Settings.HIGH_GRAPHICS);
final Property forceManipulatorBlacklist = Settings.CONFIGURATION.get( final Property forceManipulatorBlacklist
"general", "Force Manipulator Blacklist", ""); = Settings.CONFIGURATION.get("general", "Force Manipulator Blacklist", "");
highGraphics.comment = highGraphics.comment
"Put a list of block IDs to be not-moved by the force manipulator. Separate by commas, no space."; = "Put a list of block IDs to be not-moved by the force manipulator. Separate by commas, no space.";
final String blackListString = forceManipulatorBlacklist.getString(); final String blackListString = forceManipulatorBlacklist.getString();
if (blackListString != null) { if (blackListString != null) {
for (final String blockIDString : blackListString.split(",")) { for (final String blockIDString : blackListString.split(",")) {
Block b = Block.getBlockFromName(blockIDString); Block b = Block.getBlockFromName(blockIDString);
if (b == null) { if (b == null) {
ModularForceFieldSystem.LOGGER.severe( ModularForceFieldSystem.LOGGER.severe(
"Invalid block blacklist ID \'" + blockIDString + "\'!"); "Invalid block blacklist ID \'" + blockIDString + "\'!"
);
continue; continue;
} }
@ -110,23 +120,24 @@ public class Settings {
} }
} }
final Property blacklist1 = final Property blacklist1
Settings.CONFIGURATION.get("general", "Stabilization Blacklist", ""); = Settings.CONFIGURATION.get("general", "Stabilization Blacklist", "");
final String blackListString2 = blacklist1.getString(); final String blackListString2 = blacklist1.getString();
if (blackListString2 != null) { if (blackListString2 != null) {
for (final String blockIDString2 : blackListString2.split(",")) { for (final String blockIDString2 : blackListString2.split(",")) {
Block b = Block.getBlockFromName(blockIDString2); Block b = Block.getBlockFromName(blockIDString2);
if (b == null) { if (b == null) {
ModularForceFieldSystem.LOGGER.severe( ModularForceFieldSystem.LOGGER.severe(
"Invalid block blacklist ID \'" + blockIDString2 + "\'!"); "Invalid block blacklist ID \'" + blockIDString2 + "\'!"
);
continue; continue;
} }
Blacklist.stabilizationBlacklist.add(b); Blacklist.stabilizationBlacklist.add(b);
} }
} }
final Property blacklist2 = final Property blacklist2
Settings.CONFIGURATION.get("general", "Disintegration Blacklist", ""); = Settings.CONFIGURATION.get("general", "Disintegration Blacklist", "");
final String blackListString3 = blacklist2.getString(); final String blackListString3 = blacklist2.getString();
if (blackListString3 != null) { if (blackListString3 != null) {
for (final String blockIDString3 : blackListString3.split(",")) { for (final String blockIDString3 : blackListString3.split(",")) {
@ -134,7 +145,8 @@ public class Settings {
Block b = Block.getBlockFromName(blockIDString3); Block b = Block.getBlockFromName(blockIDString3);
if (b == null) { if (b == null) {
ModularForceFieldSystem.LOGGER.severe( ModularForceFieldSystem.LOGGER.severe(
"Invalid block blacklist ID \'" + blockIDString3 + "\'!"); "Invalid block blacklist ID \'" + blockIDString3 + "\'!"
);
continue; continue;
} }
@ -151,14 +163,14 @@ public class Settings {
Blacklist.disintegrationBlacklist.add(Blocks.lava); Blacklist.disintegrationBlacklist.add(Blocks.lava);
Blacklist.stabilizationBlacklist.add(Blocks.flowing_lava); Blacklist.stabilizationBlacklist.add(Blocks.flowing_lava);
Blacklist.forceManipulationBlacklist.add(Blocks.bedrock); Blacklist.forceManipulationBlacklist.add(Blocks.bedrock);
Blacklist.forceManipulationBlacklist.add( Blacklist.forceManipulationBlacklist.add(ModularForceFieldSystem.blockForceField);
ModularForceFieldSystem.blockForceField);
Settings.CONFIGURATION.save(); Settings.CONFIGURATION.save();
} }
static { static {
CONFIGURATION = new Configuration(new File( CONFIGURATION = new Configuration(
Loader.instance().getConfigDir(), "Modular Force Field System.cfg")); new File(Loader.instance().getConfigDir(), "Modular Force Field System.cfg")
);
Settings.NEXT_BLOCK_ID = 1680; Settings.NEXT_BLOCK_ID = 1680;
Settings.NEXT_ITEM_ID = 11130; Settings.NEXT_ITEM_ID = 11130;
Settings.MAX_FORCE_FIELDS_PER_TICK = 1000; Settings.MAX_FORCE_FIELDS_PER_TICK = 1000;

View file

@ -23,18 +23,19 @@ public class SubscribeEventHandler {
public void textureHook(final TextureStitchEvent.Pre event) { public void textureHook(final TextureStitchEvent.Pre event) {
if (event.map.getTextureType() == 1) { if (event.map.getTextureType() == 1) {
FluidRegistry.getFluid("fortron").setIcons( FluidRegistry.getFluid("fortron").setIcons(
event.map.registerIcon("mffs:fortron")); event.map.registerIcon("mffs:fortron")
);
} }
} }
@SubscribeEvent @SubscribeEvent
public void playerInteractEvent(final PlayerInteractEvent evt) { public void playerInteractEvent(final PlayerInteractEvent evt) {
if (evt.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK || if (evt.action == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK
evt.action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK) { || evt.action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK) {
if (evt.action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK && if (evt.action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK
((Entity)((PlayerEvent)evt).entityPlayer) && ((Entity) ((PlayerEvent) evt).entityPlayer)
.worldObj.getBlock(evt.x, evt.y, evt.z) == .worldObj.getBlock(evt.x, evt.y, evt.z)
ModularForceFieldSystem.blockForceField) { == ModularForceFieldSystem.blockForceField) {
evt.setCanceled(true); evt.setCanceled(true);
return; return;
} }
@ -42,30 +43,37 @@ public class SubscribeEventHandler {
return; return;
} }
final Vector3 position = new Vector3(evt.x, evt.y, evt.z); final Vector3 position = new Vector3(evt.x, evt.y, evt.z);
final IInterdictionMatrix interdictionMatrix = final IInterdictionMatrix interdictionMatrix
MFFSHelper.getNearestInterdictionMatrix( = MFFSHelper.getNearestInterdictionMatrix(
((Entity)((PlayerEvent)evt).entityPlayer).worldObj, position); ((Entity) ((PlayerEvent) evt).entityPlayer).worldObj, position
);
if (interdictionMatrix != null) { if (interdictionMatrix != null) {
final Block block = position.getBlock( final Block block = position.getBlock(
(IBlockAccess)((Entity)((PlayerEvent)evt).entityPlayer).worldObj); (IBlockAccess) ((Entity) ((PlayerEvent) evt).entityPlayer).worldObj
if (ModularForceFieldSystem.blockBiometricIdentifier == block && );
MFFSHelper.isPermittedByInterdictionMatrix( if (ModularForceFieldSystem.blockBiometricIdentifier == block
&& MFFSHelper.isPermittedByInterdictionMatrix(
interdictionMatrix, interdictionMatrix,
((PlayerEvent) evt).entityPlayer.getDisplayName(), ((PlayerEvent) evt).entityPlayer.getDisplayName(),
Permission.SECURITY_CENTER_CONFIGURE)) { Permission.SECURITY_CENTER_CONFIGURE
)) {
return; return;
} }
final boolean hasPermission = MFFSHelper.hasPermission( final boolean hasPermission = MFFSHelper.hasPermission(
((Entity) ((PlayerEvent) evt).entityPlayer).worldObj, ((Entity) ((PlayerEvent) evt).entityPlayer).worldObj,
new Vector3(evt.x, evt.y, evt.z), interdictionMatrix, evt.action, new Vector3(evt.x, evt.y, evt.z),
((PlayerEvent)evt).entityPlayer); interdictionMatrix,
evt.action,
((PlayerEvent) evt).entityPlayer
);
if (!hasPermission) { if (!hasPermission) {
((PlayerEvent) evt) ((PlayerEvent) evt)
.entityPlayer.addChatMessage(new ChatComponentText( .entityPlayer.addChatMessage(new ChatComponentText(
"[" + "["
ModularForceFieldSystem.blockInterdictionMatrix + ModularForceFieldSystem.blockInterdictionMatrix
.getLocalizedName() + .getLocalizedName()
"] You have no permission to do that!")); + "] You have no permission to do that!"
));
evt.setCanceled(true); evt.setCanceled(true);
} }
} }
@ -74,12 +82,14 @@ public class SubscribeEventHandler {
@SubscribeEvent @SubscribeEvent
public void livingSpawnEvent(final LivingSpawnEvent evt) { public void livingSpawnEvent(final LivingSpawnEvent evt) {
final IInterdictionMatrix interdictionMatrix = final IInterdictionMatrix interdictionMatrix
MFFSHelper.getNearestInterdictionMatrix( = MFFSHelper.getNearestInterdictionMatrix(
evt.world, new Vector3((Entity)evt.entityLiving)); evt.world, new Vector3((Entity) evt.entityLiving)
if (interdictionMatrix != null && );
interdictionMatrix.getModuleCount( if (interdictionMatrix != null
ModularForceFieldSystem.itemModuleAntiSpawn, new int[0]) > 0) { && interdictionMatrix.getModuleCount(
ModularForceFieldSystem.itemModuleAntiSpawn, new int[0]
) > 0) {
evt.setResult(Result.DENY); evt.setResult(Result.DENY);
} }
} }

View file

@ -11,6 +11,7 @@ public enum TransferMode {
if (newOrdinal >= values().length) { if (newOrdinal >= values().length) {
newOrdinal = 0; newOrdinal = 0;
} }
return values()[newOrdinal]; return values()[newOrdinal];
} }
} }

View file

@ -20,8 +20,7 @@ import universalelectricity.core.UniversalElectricity;
import universalelectricity.prefab.block.BlockRotatable; import universalelectricity.prefab.block.BlockRotatable;
import universalelectricity.prefab.implement.IRedstoneReceptor; import universalelectricity.prefab.implement.IRedstoneReceptor;
public abstract class BlockMachine public abstract class BlockMachine extends BlockRotatable implements ICamouflageMaterial {
extends BlockRotatable implements ICamouflageMaterial {
public BlockMachine(final String name) { public BlockMachine(final String name) {
super(UniversalElectricity.machine); super(UniversalElectricity.machine);
this.setBlockName("mffs:" + name); this.setBlockName("mffs:" + name);
@ -32,68 +31,95 @@ public abstract class BlockMachine
} }
@Override @Override
public boolean onMachineActivated(final World world, final int x, final int y, final int z, public boolean onMachineActivated(
final EntityPlayer entityPlayer, final int side, final World world,
final float hitX, final float hitY, final float hitZ) { 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 (!world.isRemote) {
if (entityPlayer.getCurrentEquippedItem() != null && if (entityPlayer.getCurrentEquippedItem() != null
entityPlayer.getCurrentEquippedItem().getItem() instanceof ItemCardLink) { && entityPlayer.getCurrentEquippedItem().getItem()
instanceof ItemCardLink) {
return false; return false;
} }
entityPlayer.openGui((Object) ModularForceFieldSystem.instance, 0, world, entityPlayer.openGui(
x, y, z); (Object) ModularForceFieldSystem.instance, 0, world, x, y, z
);
} }
return true; return true;
} }
@Override @Override
public boolean onSneakMachineActivated(final World world, final int x, public boolean onSneakMachineActivated(
final int y, final int z, final World world,
final int x,
final int y,
final int z,
final EntityPlayer entityPlayer, final EntityPlayer entityPlayer,
final int side, final float hitX, final int side,
final float hitY, final float hitZ) { final float hitX,
return this.onUseWrench(world, x, y, z, entityPlayer, side, hitX, hitY, final float hitY,
hitZ); final float hitZ
) {
return this.onUseWrench(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ);
} }
@Override @Override
public boolean onSneakUseWrench(final World world, final int x, final int y, public boolean onSneakUseWrench(
final int z, final EntityPlayer entityPlayer, final World world,
final int side, final float hitX, final int x,
final float hitY, final float hitZ) { 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 (!world.isRemote) {
final TileEntity tileEntity = world.getTileEntity(x, y, z); final TileEntity tileEntity = world.getTileEntity(x, y, z);
if (tileEntity instanceof IBiometricIdentifierLink) { if (tileEntity instanceof IBiometricIdentifierLink) {
if (((IBiometricIdentifierLink) tileEntity).getBiometricIdentifier() == null) { if (((IBiometricIdentifierLink) tileEntity).getBiometricIdentifier()
this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), == null) {
0); this.dropBlockAsItem(
world, x, y, z, world.getBlockMetadata(x, y, z), 0
);
world.setBlockToAir(x, y, z); world.setBlockToAir(x, y, z);
return true; return true;
} }
if (((IBiometricIdentifierLink) tileEntity) if (((IBiometricIdentifierLink) tileEntity)
.getBiometricIdentifier() .getBiometricIdentifier()
.isAccessGranted(entityPlayer.getDisplayName(), .isAccessGranted(
Permission.SECURITY_CENTER_CONFIGURE)) { entityPlayer.getDisplayName(),
this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), Permission.SECURITY_CENTER_CONFIGURE
0); )) {
this.dropBlockAsItem(
world, x, y, z, world.getBlockMetadata(x, y, z), 0
);
world.setBlockToAir(x, y, z); world.setBlockToAir(x, y, z);
return true; return true;
} }
entityPlayer.addChatMessage(new ChatComponentText( entityPlayer.addChatMessage(new ChatComponentText(
"[" + "["
ModularForceFieldSystem.blockBiometricIdentifier + ModularForceFieldSystem.blockBiometricIdentifier.getLocalizedName()
.getLocalizedName() + "]"
+ + " Cannot remove machine! Access denied!"
"]" ));
+ " Cannot remove machine! Access denied!"));
} }
} }
return false; return false;
} }
@Override @Override
public void onNeighborBlockChange(final World world, final int x, final int y, public void onNeighborBlockChange(
final int z, final Block block) { final World world, final int x, final int y, final int z, final Block block
) {
if (!world.isRemote) { if (!world.isRemote) {
final TileEntity tileEntity = world.getTileEntity(x, y, z); final TileEntity tileEntity = world.getTileEntity(x, y, z);
if (tileEntity instanceof IRedstoneReceptor) { if (tileEntity instanceof IRedstoneReceptor) {
@ -107,10 +133,16 @@ public abstract class BlockMachine
} }
@Override @Override
public float getExplosionResistance(final Entity entity, final World world, public float getExplosionResistance(
final int i, final int j, final int k, final Entity entity,
final double d, final double d1, final World world,
final double d2) { final int i,
final int j,
final int k,
final double d,
final double d1,
final double d2
) {
return 100.0f; return 100.0f;
} }

View file

@ -29,20 +29,24 @@ public class ContainerBase extends Container {
} }
for (int var3 = 0; var3 < 3; ++var3) { for (int var3 = 0; var3 < 3; ++var3) {
for (int var4 = 0; var4 < 9; ++var4) { for (int var4 = 0; var4 < 9; ++var4) {
this.addSlotToContainer(new Slot((IInventory)player.inventory, this.addSlotToContainer(new Slot(
var4 + var3 * 9 + 9, 8 + var4 * 18, (IInventory) player.inventory,
135 + var3 * 18)); var4 + var3 * 9 + 9,
8 + var4 * 18,
135 + var3 * 18
));
} }
} }
for (int var3 = 0; var3 < 9; ++var3) { for (int var3 = 0; var3 < 9; ++var3) {
this.addSlotToContainer( this.addSlotToContainer(
new Slot((IInventory)player.inventory, var3, 8 + var3 * 18, 193)); new Slot((IInventory) player.inventory, var3, 8 + var3 * 18, 193)
);
} }
} }
@Override @Override
public ItemStack transferStackInSlot(final EntityPlayer par1EntityPlayer, public ItemStack
final int slotID) { transferStackInSlot(final EntityPlayer par1EntityPlayer, final int slotID) {
ItemStack var2 = null; ItemStack var2 = null;
final Slot var3 = (Slot) super.inventorySlots.get(slotID); final Slot var3 = (Slot) super.inventorySlots.get(slotID);
if (var3 != null && var3.getHasStack()) { if (var3 != null && var3.getHasStack()) {
@ -60,19 +64,18 @@ public class ContainerBase extends Container {
} }
if (!didTry) { if (!didTry) {
if (slotID < 27 + this.slotCount) { if (slotID < 27 + this.slotCount) {
if (!this.mergeItemStack(itemStack, 27 + this.slotCount, if (!this.mergeItemStack(
36 + this.slotCount, false)) { itemStack, 27 + this.slotCount, 36 + this.slotCount, false
)) {
return null; return null;
} }
} else if (slotID >= 27 + this.slotCount && } else if (slotID >= 27 + this.slotCount && slotID < 36 + this.slotCount && !this.mergeItemStack(itemStack, this.slotCount, 27 + this.slotCount, false)) {
slotID < 36 + this.slotCount &&
!this.mergeItemStack(itemStack, this.slotCount,
27 + this.slotCount, false)) {
return null; return null;
} }
} }
} else if (!this.mergeItemStack(itemStack, this.slotCount, } else if (!this.mergeItemStack(
36 + this.slotCount, false)) { itemStack, this.slotCount, 36 + this.slotCount, false
)) {
return null; return null;
} }
if (itemStack.stackSize == 0) { if (itemStack.stackSize == 0) {

View file

@ -1,8 +1,9 @@
package mffs.base; package mffs.base;
import icbm.api.IBlockFrequency;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import icbm.api.IBlockFrequency;
import mffs.MFFSHelper; import mffs.MFFSHelper;
import mffs.ModularForceFieldSystem; import mffs.ModularForceFieldSystem;
import mffs.api.IBiometricIdentifierLink; import mffs.api.IBiometricIdentifierLink;
@ -45,8 +46,7 @@ public class GuiBase extends GuiContainer {
this.ySize = 217; this.ySize = 217;
} }
public GuiBase(final Container container, public GuiBase(final Container container, final IBlockFrequency frequencyTile) {
final IBlockFrequency frequencyTile) {
this(container); this(container);
this.frequencyTile = frequencyTile; this.frequencyTile = frequencyTile;
} }
@ -56,13 +56,21 @@ public class GuiBase extends GuiContainer {
super.initGui(); super.initGui();
this.buttonList.clear(); this.buttonList.clear();
this.buttonList.add(new GuiIcon( this.buttonList.add(new GuiIcon(
0, this.width / 2 - 82, this.height / 2 - 104, 0,
new ItemStack(Blocks.torch), new ItemStack(Blocks.redstone_torch))); this.width / 2 - 82,
this.height / 2 - 104,
new ItemStack(Blocks.torch),
new ItemStack(Blocks.redstone_torch)
));
Keyboard.enableRepeatEvents(true); Keyboard.enableRepeatEvents(true);
if (this.frequencyTile != null) { if (this.frequencyTile != null) {
(this.textFieldFrequency = (this.textFieldFrequency = new GuiTextField(
new GuiTextField(this.fontRendererObj, this.textFieldPos.intX(), this.fontRendererObj,
this.textFieldPos.intY(), 50, 12)) this.textFieldPos.intX(),
this.textFieldPos.intY(),
50,
12
))
.setMaxStringLength(6); .setMaxStringLength(6);
this.textFieldFrequency.setText(this.frequencyTile.getFrequency() + ""); this.textFieldFrequency.setText(this.frequencyTile.getFrequency() + "");
} }
@ -80,17 +88,18 @@ public class GuiBase extends GuiContainer {
if (this.textFieldFrequency != null) { if (this.textFieldFrequency != null) {
this.textFieldFrequency.textboxKeyTyped(par1, par2); this.textFieldFrequency.textboxKeyTyped(par1, par2);
try { try {
final int newFrequency = final int newFrequency
Math.max(0, Integer.parseInt(this.textFieldFrequency.getText())); = Math.max(0, Integer.parseInt(this.textFieldFrequency.getText()));
this.frequencyTile.setFrequency(newFrequency); this.frequencyTile.setFrequency(newFrequency);
this.textFieldFrequency.setText(this.frequencyTile.getFrequency() + ""); this.textFieldFrequency.setText(this.frequencyTile.getFrequency() + "");
NBTTagCompound nbt = new NBTTagCompound(); NBTTagCompound nbt = new NBTTagCompound();
nbt.setInteger("frequency", this.frequencyTile.getFrequency()); nbt.setInteger("frequency", this.frequencyTile.getFrequency());
ModularForceFieldSystem.channel.sendToServer( ModularForceFieldSystem.channel.sendToServer(new PacketTile(
new PacketTile(PacketTile.Type.FREQUENCY, PacketTile.Type.FREQUENCY,
new Vector3((TileEntity)this.frequencyTile), nbt)); new Vector3((TileEntity) this.frequencyTile),
} catch (final NumberFormatException ex) { nbt
} ));
} catch (final NumberFormatException ex) {}
} }
} }
@ -100,19 +109,20 @@ public class GuiBase extends GuiContainer {
if (this.frequencyTile != null && guiButton.id == 0) { if (this.frequencyTile != null && guiButton.id == 0) {
ModularForceFieldSystem.channel.sendToServer(new PacketTile( ModularForceFieldSystem.channel.sendToServer(new PacketTile(
PacketTile.Type.TOGGLE_ACTIVATION, PacketTile.Type.TOGGLE_ACTIVATION,
new Vector3((TileEntity)this.frequencyTile), new NBTTagCompound())); new Vector3((TileEntity) this.frequencyTile),
new NBTTagCompound()
));
} }
} }
@Override @Override
public void updateScreen() { public void updateScreen() {
super.updateScreen(); super.updateScreen();
if (this.textFieldFrequency != null && if (this.textFieldFrequency != null && !this.textFieldFrequency.isFocused()) {
!this.textFieldFrequency.isFocused()) {
this.textFieldFrequency.setText(this.frequencyTile.getFrequency() + ""); this.textFieldFrequency.setText(this.frequencyTile.getFrequency() + "");
} }
if (this.frequencyTile instanceof TileEntityBase && if (this.frequencyTile instanceof TileEntityBase && this.buttonList.size() > 0
this.buttonList.size() > 0 && this.buttonList.get(0) != null) { && this.buttonList.get(0) != null) {
((GuiIcon) this.buttonList.get(0)) ((GuiIcon) this.buttonList.get(0))
.setIndex(((TileEntityBase) this.frequencyTile).isActive() ? 1 : 0); .setIndex(((TileEntityBase) this.frequencyTile).isActive() ? 1 : 0);
} }
@ -122,73 +132,90 @@ public class GuiBase extends GuiContainer {
protected void mouseClicked(final int x, final int y, final int par3) { protected void mouseClicked(final int x, final int y, final int par3) {
super.mouseClicked(x, y, par3); super.mouseClicked(x, y, par3);
if (this.textFieldFrequency != null) { if (this.textFieldFrequency != null) {
this.textFieldFrequency.mouseClicked(x - this.containerWidth, this.textFieldFrequency.mouseClicked(
y - this.containerHeight, par3); x - this.containerWidth, y - this.containerHeight, par3
);
} }
} }
@Override @Override
protected void drawGuiContainerForegroundLayer(final int mouseX, protected void drawGuiContainerForegroundLayer(final int mouseX, final int mouseY) {
final int mouseY) { if (this.textFieldFrequency != null
if (this.textFieldFrequency != null && && this.func_146978_c(
this.func_146978_c(this.textFieldPos.intX(), this.textFieldPos.intY(), this.textFieldPos.intX(),
this.textFieldFrequency.getWidth(), 12, mouseX, this.textFieldPos.intY(),
mouseY)) { this.textFieldFrequency.getWidth(),
12,
mouseX,
mouseY
)) {
this.tooltip = TranslationHelper.getLocal("gui.frequency.tooltip"); this.tooltip = TranslationHelper.getLocal("gui.frequency.tooltip");
} }
for (final Map.Entry<Region2, String> entry : this.tooltips.entrySet()) { for (final Map.Entry<Region2, String> entry : this.tooltips.entrySet()) {
if (entry.getKey().isIn( if (entry.getKey().isIn(
new Vector2(mouseX - this.guiLeft, mouseY - this.guiTop))) { new Vector2(mouseX - this.guiLeft, mouseY - this.guiTop)
)) {
this.tooltip = entry.getValue(); this.tooltip = entry.getValue();
break; break;
} }
} }
if (this.tooltip != null && this.tooltip != "") { if (this.tooltip != null && this.tooltip != "") {
this.drawTooltip(mouseX - this.guiLeft, mouseY - this.guiTop, this.drawTooltip(
MFFSHelper.splitStringPerWord(this.tooltip, 5) mouseX - this.guiLeft,
.toArray(new String[] {})); mouseY - this.guiTop,
MFFSHelper.splitStringPerWord(this.tooltip, 5).toArray(new String[] {})
);
} }
this.tooltip = ""; this.tooltip = "";
} }
@Override @Override
protected void drawGuiContainerBackgroundLayer(final float var1, final int x, protected void
final int y) { drawGuiContainerBackgroundLayer(final float var1, final int x, final int y) {
this.containerWidth = (this.width - this.xSize) / 2; this.containerWidth = (this.width - this.xSize) / 2;
this.containerHeight = (this.height - this.ySize) / 2; this.containerHeight = (this.height - this.ySize) / 2;
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("mffs", "textures/gui/gui_base.png")); new ResourceLocation("mffs", "textures/gui/gui_base.png")
);
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
this.drawTexturedModalRect(this.containerWidth, this.containerHeight, 0, 0, this.drawTexturedModalRect(
this.xSize, this.ySize); this.containerWidth, this.containerHeight, 0, 0, this.xSize, this.ySize
);
if (this.frequencyTile instanceof IBiometricIdentifierLink) { if (this.frequencyTile instanceof IBiometricIdentifierLink) {
this.drawBulb(167, 4, this.drawBulb(
((IBiometricIdentifierLink)this.frequencyTile) 167,
.getBiometricIdentifier() != null); 4,
((IBiometricIdentifierLink) this.frequencyTile).getBiometricIdentifier()
!= null
);
} }
} }
protected void drawBulb(final int x, final int y, final boolean isOn) { protected void drawBulb(final int x, final int y, final boolean isOn) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("mffs", "textures/gui/gui_components.png")); new ResourceLocation("mffs", "textures/gui/gui_components.png")
);
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
if (isOn) { if (isOn) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 161, 0, 6, 6); this.containerWidth + x, this.containerHeight + y, 161, 0, 6, 6
);
} else { } else {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 161, 4, 6, 6); this.containerWidth + x, this.containerHeight + y, 161, 4, 6, 6
);
} }
} }
protected void drawSlot(final int x, final int y, final ItemStack itemStack) { protected void drawSlot(final int x, final int y, final ItemStack itemStack) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("mffs", "textures/gui/gui_components.png")); new ResourceLocation("mffs", "textures/gui/gui_components.png")
);
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 0, 0, 18, 18); this.containerWidth + x, this.containerHeight + y, 0, 0, 18, 18
this.drawItemStack(itemStack, this.containerWidth + x, );
this.containerHeight + y); this.drawItemStack(itemStack, this.containerWidth + x, this.containerHeight + y);
} }
protected void drawItemStack(final ItemStack itemStack, int x, int y) { protected void drawItemStack(final ItemStack itemStack, int x, int y) {
@ -196,47 +223,76 @@ public class GuiBase extends GuiContainer {
++y; ++y;
GL11.glTranslatef(0.0f, 0.0f, 32.0f); GL11.glTranslatef(0.0f, 0.0f, 32.0f);
GuiBase.itemRender.renderItemAndEffectIntoGUI( GuiBase.itemRender.renderItemAndEffectIntoGUI(
this.fontRendererObj, this.mc.renderEngine, itemStack, x, y); this.fontRendererObj, this.mc.renderEngine, itemStack, x, y
);
} }
protected void drawTextWithTooltip(final String textName, final String format, protected void drawTextWithTooltip(
final int x, final int y, final int mouseX, final String textName,
final int mouseY) { final String format,
final int x,
final int y,
final int mouseX,
final int mouseY
) {
this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752); this.drawTextWithTooltip(textName, format, x, y, mouseX, mouseY, 4210752);
} }
protected void drawTextWithTooltip(final String textName, final String format, protected void drawTextWithTooltip(
final int x, final int y, final int mouseX, final String textName,
final int mouseY, final int color) { 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 name = TranslationHelper.getLocal("gui." + textName + ".name");
final String text = format.replaceAll("%1", name); final String text = format.replaceAll("%1", name);
this.fontRendererObj.drawString(text, x, y, color); this.fontRendererObj.drawString(text, x, y, color);
final String tooltip = final String tooltip = TranslationHelper.getLocal("gui." + textName + ".tooltip");
TranslationHelper.getLocal("gui." + textName + ".tooltip"); if (tooltip != null && tooltip != ""
if (tooltip != null && tooltip != "" && && this.func_146978_c(
this.func_146978_c(x, y, (int)(text.length() * 4.8), 12, mouseX, x, y, (int) (text.length() * 4.8), 12, mouseX, mouseY
mouseY)) { )) {
this.tooltip = tooltip; this.tooltip = tooltip;
} }
} }
protected void drawTextWithTooltip(final String textName, final int x, protected void drawTextWithTooltip(
final int y, final int mouseX, final String textName,
final int mouseY) { final int x,
final int y,
final int mouseX,
final int mouseY
) {
this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY); this.drawTextWithTooltip(textName, "%1", x, y, mouseX, mouseY);
} }
protected void drawSlot(final int x, final int y, final SlotType type, protected void drawSlot(
final float r, final float g, final float b) { final int x,
final int y,
final SlotType type,
final float r,
final float g,
final float b
) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("mffs", "textures/gui/gui_components.png")); new ResourceLocation("mffs", "textures/gui/gui_components.png")
);
GL11.glColor4f(r, g, b, 1.0f); GL11.glColor4f(r, g, b, 1.0f);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 0, 0, 18, 18); this.containerWidth + x, this.containerHeight + y, 0, 0, 18, 18
);
if (type != SlotType.NONE) { if (type != SlotType.NONE) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 0, this.containerWidth + x,
18 * type.ordinal(), 18, 18); this.containerHeight + y,
0,
18 * type.ordinal(),
18,
18
);
} }
} }
@ -250,40 +306,61 @@ public class GuiBase extends GuiContainer {
protected void drawBar(final int x, final int y, final float scale) { protected void drawBar(final int x, final int y, final float scale) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("mffs", "textures/gui/gui_components.png")); new ResourceLocation("mffs", "textures/gui/gui_components.png")
);
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 18, 0, 22, 15); this.containerWidth + x, this.containerHeight + y, 18, 0, 22, 15
);
if (scale > 0.0f) { if (scale > 0.0f) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 18, 15, this.containerWidth + x,
22 - (int)(scale * 22.0f), 15); this.containerHeight + y,
18,
15,
22 - (int) (scale * 22.0f),
15
);
} }
} }
protected void drawForce(final int x, final int y, final float scale) { protected void drawForce(final int x, final int y, final float scale) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("mffs", "textures/gui/gui_components.png")); new ResourceLocation("mffs", "textures/gui/gui_components.png")
);
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 54, 0, 107, 11); this.containerWidth + x, this.containerHeight + y, 54, 0, 107, 11
);
if (scale > 0.0f) { if (scale > 0.0f) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 54, 11, this.containerWidth + x,
(int)(scale * 107.0f), 11); this.containerHeight + y,
54,
11,
(int) (scale * 107.0f),
11
);
} }
} }
protected void drawElectricity(final int x, final int y, final float scale) { protected void drawElectricity(final int x, final int y, final float scale) {
this.mc.renderEngine.bindTexture( this.mc.renderEngine.bindTexture(
new ResourceLocation("mffs", "textures/gui/gui_components.png")); new ResourceLocation("mffs", "textures/gui/gui_components.png")
);
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 54, 0, 107, 11); this.containerWidth + x, this.containerHeight + y, 54, 0, 107, 11
);
if (scale > 0.0f) { if (scale > 0.0f) {
this.drawTexturedModalRect(this.containerWidth + x, this.drawTexturedModalRect(
this.containerHeight + y, 54, 22, this.containerWidth + x,
(int)(scale * 107.0f), 11); this.containerHeight + y,
54,
22,
(int) (scale * 107.0f),
11
);
} }
} }
@ -312,26 +389,60 @@ public class GuiBase extends GuiContainer {
} }
zLevel = 300.0f; zLevel = 300.0f;
final int var9 = -267386864; final int var9 = -267386864;
this.drawGradientRect(var6 - 3, var7 - 4, var6 + var5 + 3, var7 - 3, this.drawGradientRect(
var9, var9); 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(
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var6 - 3,
var7 + var8 + 3, var9, var9); var7 + var8 + 3,
this.drawGradientRect(var6 - 4, var7 - 3, var6 - 3, var7 + var8 + 3, var6 + var5 + 3,
var9, var9); var7 + var8 + 4,
this.drawGradientRect(var6 + var5 + 3, var7 - 3, var6 + var5 + 4, var9,
var7 + var8 + 3, var9, 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 var10 = 1347420415;
final int var11 = (var10 & 0xFEFEFE) >> 1 | (var10 & 0xFF000000); final int var11 = (var10 & 0xFEFEFE) >> 1 | (var10 & 0xFF000000);
this.drawGradientRect(var6 - 3, var7 - 3 + 1, var6 - 3 + 1, this.drawGradientRect(
var7 + var8 + 3 - 1, var10, var11); var6 - 3,
this.drawGradientRect(var6 + var5 + 2, var7 - 3 + 1, var6 + var5 + 3, var7 - 3 + 1,
var7 + var8 + 3 - 1, var10, var11); var6 - 3 + 1,
this.drawGradientRect(var6 - 3, var7 - 3, var6 + var5 + 3, var7 - 3 + 1, var7 + var8 + 3 - 1,
var10, var10); var10,
this.drawGradientRect(var6 - 3, var7 + var8 + 2, var6 + var5 + 3, var11
var7 + var8 + 3, var11, 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) { for (int var12 = 0; var12 < toolTips.length; ++var12) {
final String var13 = toolTips[var12]; final String var13 = toolTips[var12];
this.fontRendererObj.drawStringWithShadow(var13, var6, var7, -1); this.fontRendererObj.drawStringWithShadow(var13, var6, var7, -1);

View file

@ -1,6 +1,7 @@
package mffs.base; package mffs.base;
import java.util.List; import java.util.List;
import mffs.MFFSCreativeTab; import mffs.MFFSCreativeTab;
import mffs.MFFSHelper; import mffs.MFFSHelper;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -18,11 +19,14 @@ public class ItemBase extends Item {
} }
@Override @Override
public void addInformation(final ItemStack itemStack, public void addInformation(
final EntityPlayer player, final List info, final ItemStack itemStack,
final boolean b) { final EntityPlayer player,
final String tooltip = final List info,
TranslationHelper.getLocal(this.getUnlocalizedName() + ".tooltip"); final boolean b
) {
final String tooltip
= TranslationHelper.getLocal(this.getUnlocalizedName() + ".tooltip");
if (tooltip != null && tooltip.length() > 0) { if (tooltip != null && tooltip.length() > 0) {
info.addAll(MFFSHelper.splitStringPerWord(tooltip, 5)); info.addAll(MFFSHelper.splitStringPerWord(tooltip, 5));
} }

View file

@ -1,12 +1,13 @@
package mffs.base; package mffs.base;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessage;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufInputStream; import io.netty.buffer.ByteBufInputStream;
import io.netty.buffer.ByteBufOutputStream; 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.CompressedStreamTools;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
@ -29,7 +30,8 @@ public class PacketFxs implements IMessage {
NBTTagCompound nbt = null; NBTTagCompound nbt = null;
try { try {
nbt = CompressedStreamTools.read( nbt = CompressedStreamTools.read(
new DataInputStream(new ByteBufInputStream(buf))); new DataInputStream(new ByteBufInputStream(buf))
);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -47,7 +49,8 @@ public class PacketFxs implements IMessage {
try { try {
CompressedStreamTools.write( CompressedStreamTools.write(
nbt, new DataOutputStream(new ByteBufOutputStream(buf))); nbt, new DataOutputStream(new ByteBufOutputStream(buf))
);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }

View file

@ -10,7 +10,6 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
public class PacketFxsHandler implements IMessageHandler<PacketFxs, IMessage> { public class PacketFxsHandler implements IMessageHandler<PacketFxs, IMessage> {
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public IMessage onMessage(PacketFxs message, MessageContext ctx) { public IMessage onMessage(PacketFxs message, MessageContext ctx) {

View file

@ -1,12 +1,13 @@
package mffs.base; package mffs.base;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessage;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufInputStream; import io.netty.buffer.ByteBufInputStream;
import io.netty.buffer.ByteBufOutputStream; 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.CompressedStreamTools;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
@ -28,7 +29,8 @@ public class PacketTile implements IMessage {
public void fromBytes(ByteBuf buf) { public void fromBytes(ByteBuf buf) {
try { try {
NBTTagCompound nbt = CompressedStreamTools.read( NBTTagCompound nbt = CompressedStreamTools.read(
new DataInputStream(new ByteBufInputStream(buf))); new DataInputStream(new ByteBufInputStream(buf))
);
this.type = Type.values()[nbt.getInteger("type")]; this.type = Type.values()[nbt.getInteger("type")];
this.pos = Vector3.readFromNBT(nbt); this.pos = Vector3.readFromNBT(nbt);
@ -48,7 +50,8 @@ public class PacketTile implements IMessage {
nbt.setTag("data", this.data); nbt.setTag("data", this.data);
CompressedStreamTools.write( CompressedStreamTools.write(
nbt, new DataOutputStream(new ByteBufOutputStream(buf))); nbt, new DataOutputStream(new ByteBufOutputStream(buf))
);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }

View file

@ -6,8 +6,7 @@ import cpw.mods.fml.common.network.simpleimpl.MessageContext;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
public class PacketTileHandler public class PacketTileHandler implements IMessageHandler<PacketTile, IMessage> {
implements IMessageHandler<PacketTile, IMessage> {
@Override @Override
public IMessage onMessage(PacketTile arg0, MessageContext arg1) { public IMessage onMessage(PacketTile arg0, MessageContext arg1) {
World w = arg1.getServerHandler().playerEntity.worldObj; World w = arg1.getServerHandler().playerEntity.worldObj;

View file

@ -1,11 +1,11 @@
package mffs.base; package mffs.base;
import dan200.computercraft.api.peripheral.IPeripheral;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import dan200.computercraft.api.peripheral.IPeripheral;
import mffs.api.IActivatable; import mffs.api.IActivatable;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
@ -48,13 +48,13 @@ public abstract class TileEntityBase extends TileEntityDisableable
nbt.setBoolean("isActive", this.isActive); nbt.setBoolean("isActive", this.isActive);
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, return new S35PacketUpdateTileEntity(
this.getBlockMetadata(), nbt); this.xCoord, this.yCoord, this.zCoord, this.getBlockMetadata(), nbt
);
} }
@Override @Override
public void onDataPacket(NetworkManager arg0, public void onDataPacket(NetworkManager arg0, S35PacketUpdateTileEntity arg1) {
S35PacketUpdateTileEntity arg1) {
NBTTagCompound nbt = arg1.func_148857_g(); NBTTagCompound nbt = arg1.func_148857_g();
this.isActive = nbt.getBoolean("isActive"); this.isActive = nbt.getBoolean("isActive");
@ -63,8 +63,7 @@ public abstract class TileEntityBase extends TileEntityDisableable
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void onFxsPacket(NBTTagCompound data) {} public void onFxsPacket(NBTTagCompound data) {}
public void onReceivePacket(final PacketTile.Type type, public void onReceivePacket(final PacketTile.Type type, final NBTTagCompound data) {
final NBTTagCompound data) {
if (type == PacketTile.Type.TOGGLE_ACTIVATION) { if (type == PacketTile.Type.TOGGLE_ACTIVATION) {
this.isRedstoneActive = !this.isRedstoneActive; this.isRedstoneActive = !this.isRedstoneActive;
this.setActive(this.isRedstoneActive); this.setActive(this.isRedstoneActive);
@ -73,7 +72,8 @@ public abstract class TileEntityBase extends TileEntityDisableable
public boolean isPoweredByRedstone() { public boolean isPoweredByRedstone() {
return this.worldObj.isBlockIndirectlyGettingPowered( return this.worldObj.isBlockIndirectlyGettingPowered(
this.xCoord, this.yCoord, this.zCoord); this.xCoord, this.yCoord, this.zCoord
);
} }
@Override @Override
@ -102,16 +102,22 @@ public abstract class TileEntityBase extends TileEntityDisableable
} }
@Override @Override
public ForgeDirection getDirection(final IBlockAccess world, final int x, public ForgeDirection
final int y, final int z) { getDirection(final IBlockAccess world, final int x, final int y, final int z) {
return ForgeDirection.getOrientation(this.getBlockMetadata()); return ForgeDirection.getOrientation(this.getBlockMetadata());
} }
@Override @Override
public void setDirection(final World world, final int x, final int y, public void setDirection(
final int z, final ForgeDirection facingDirection) { final World world,
final int x,
final int y,
final int z,
final ForgeDirection facingDirection
) {
this.worldObj.setBlockMetadataWithNotify( this.worldObj.setBlockMetadataWithNotify(
this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 3); this.xCoord, this.yCoord, this.zCoord, facingDirection.ordinal(), 3
);
} }
@Override @Override

View file

@ -46,8 +46,11 @@ public abstract class TileEntityFortron extends TileEntityFrequency
MFFSHelper.transferFortron( MFFSHelper.transferFortron(
this, this,
FrequencyGrid.instance().getFortronTiles( FrequencyGrid.instance().getFortronTiles(
this.worldObj, new Vector3(this), 100, this.getFrequency()), this.worldObj, new Vector3(this), 100, this.getFrequency()
TransferMode.DRAIN, Integer.MAX_VALUE); ),
TransferMode.DRAIN,
Integer.MAX_VALUE
);
} }
super.invalidate(); super.invalidate();
} }
@ -59,17 +62,18 @@ public abstract class TileEntityFortron extends TileEntityFrequency
nbt.setInteger("fortron", this.fortronTank.getFluidAmount()); nbt.setInteger("fortron", this.fortronTank.getFluidAmount());
nbt.setBoolean("isActive", this.isActive()); nbt.setBoolean("isActive", this.isActive());
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, return new S35PacketUpdateTileEntity(
this.getBlockMetadata(), nbt); this.xCoord, this.yCoord, this.zCoord, this.getBlockMetadata(), nbt
);
} }
@Override @Override
public void onDataPacket(NetworkManager arg0, public void onDataPacket(NetworkManager arg0, S35PacketUpdateTileEntity arg1) {
S35PacketUpdateTileEntity arg1) {
NBTTagCompound nbt = arg1.func_148857_g(); NBTTagCompound nbt = arg1.func_148857_g();
this.fortronTank.setFluid( this.fortronTank.setFluid(
new FluidStack(FortronHelper.FLUID_FORTRON, nbt.getInteger("fortron"))); new FluidStack(FortronHelper.FLUID_FORTRON, nbt.getInteger("fortron"))
);
this.isActive = nbt.getBoolean("isActive"); this.isActive = nbt.getBoolean("isActive");
} }
@ -90,7 +94,8 @@ public abstract class TileEntityFortron extends TileEntityFrequency
public void readFromNBT(final NBTTagCompound nbt) { public void readFromNBT(final NBTTagCompound nbt) {
super.readFromNBT(nbt); super.readFromNBT(nbt);
this.fortronTank.setFluid( this.fortronTank.setFluid(
FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("fortron"))); FluidStack.loadFluidStackFromNBT(nbt.getCompoundTag("fortron"))
);
} }
@Override @Override
@ -104,8 +109,8 @@ public abstract class TileEntityFortron extends TileEntityFrequency
} }
@Override @Override
public int fill(final ForgeDirection from, final FluidStack resource, public int
final boolean doFill) { fill(final ForgeDirection from, final FluidStack resource, final boolean doFill) {
if (resource.getFluid() == FortronHelper.FLUID_FORTRON) { if (resource.getFluid() == FortronHelper.FLUID_FORTRON) {
return this.fortronTank.fill(resource, doFill); return this.fortronTank.fill(resource, doFill);
} }
@ -114,13 +119,13 @@ public abstract class TileEntityFortron extends TileEntityFrequency
@Override @Override
public boolean canFill(ForgeDirection arg0, Fluid arg1) { public boolean canFill(ForgeDirection arg0, Fluid arg1) {
return arg1 == FortronHelper.FLUID_FORTRON && return arg1 == FortronHelper.FLUID_FORTRON
this.fortronTank.getFluidAmount() < this.fortronTank.getCapacity(); && this.fortronTank.getFluidAmount() < this.fortronTank.getCapacity();
} }
@Override @Override
public FluidStack drain(final ForgeDirection from, final int maxDrain, public FluidStack
final boolean doDrain) { drain(final ForgeDirection from, final int maxDrain, final boolean doDrain) {
return this.fortronTank.drain(maxDrain, doDrain); return this.fortronTank.drain(maxDrain, doDrain);
} }
@ -134,8 +139,8 @@ public abstract class TileEntityFortron extends TileEntityFrequency
@Override @Override
public boolean canDrain(ForgeDirection arg0, Fluid arg1) { public boolean canDrain(ForgeDirection arg0, Fluid arg1) {
return arg1 == FortronHelper.FLUID_FORTRON && return arg1 == FortronHelper.FLUID_FORTRON
this.fortronTank.getFluidAmount() > 0; && this.fortronTank.getFluidAmount() > 0;
} }
@Override @Override
@ -151,7 +156,9 @@ public abstract class TileEntityFortron extends TileEntityFrequency
return FortronHelper.getAmount(this.fortronTank); return FortronHelper.getAmount(this.fortronTank);
} }
public int getFortronCapacity() { return this.fortronTank.getCapacity(); } public int getFortronCapacity() {
return this.fortronTank.getCapacity();
}
public int requestFortron(final int amount, final boolean doUse) { public int requestFortron(final int amount, final boolean doUse) {
return FortronHelper.getAmount(this.fortronTank.drain(amount, doUse)); return FortronHelper.getAmount(this.fortronTank.drain(amount, doUse));

View file

@ -1,8 +1,9 @@
package mffs.base; package mffs.base;
import icbm.api.IBlockFrequency;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import icbm.api.IBlockFrequency;
import mffs.api.IBiometricIdentifierLink; import mffs.api.IBiometricIdentifierLink;
import mffs.api.card.ICardLink; import mffs.api.card.ICardLink;
import mffs.api.security.IBiometricIdentifier; import mffs.api.security.IBiometricIdentifier;
@ -13,8 +14,8 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
public abstract class TileEntityFrequency extends TileEntityInventory public abstract class TileEntityFrequency
implements IBlockFrequency, IBiometricIdentifierLink { extends TileEntityInventory implements IBlockFrequency, IBiometricIdentifierLink {
private int frequency; private int frequency;
@Override @Override
@ -30,8 +31,7 @@ public abstract class TileEntityFrequency extends TileEntityInventory
} }
@Override @Override
public void onReceivePacket(final PacketTile.Type type, public void onReceivePacket(final PacketTile.Type type, final NBTTagCompound data) {
final NBTTagCompound data) {
super.onReceivePacket(type, data); super.onReceivePacket(type, data);
if (type == PacketTile.Type.FREQUENCY) { if (type == PacketTile.Type.FREQUENCY) {
this.setFrequency(data.getInteger("frequency")); this.setFrequency(data.getInteger("frequency"));
@ -73,12 +73,12 @@ public abstract class TileEntityFrequency extends TileEntityInventory
final Set<IBiometricIdentifier> list = new HashSet<>(); final Set<IBiometricIdentifier> list = new HashSet<>();
for (final ItemStack itemStack : this.getCards()) { for (final ItemStack itemStack : this.getCards()) {
if (itemStack != null && itemStack.getItem() instanceof ICardLink) { if (itemStack != null && itemStack.getItem() instanceof ICardLink) {
final Vector3 linkedPosition = final Vector3 linkedPosition
((ICardLink)itemStack.getItem()).getLink(itemStack); = ((ICardLink) itemStack.getItem()).getLink(itemStack);
final TileEntity tileEntity = final TileEntity tileEntity
linkedPosition.getTileEntity((IBlockAccess)this.worldObj); = linkedPosition.getTileEntity((IBlockAccess) this.worldObj);
if (linkedPosition == null || if (linkedPosition == null
!(tileEntity instanceof IBiometricIdentifier)) { || !(tileEntity instanceof IBiometricIdentifier)) {
continue; continue;
} }
list.add((IBiometricIdentifier) tileEntity); list.add((IBiometricIdentifier) tileEntity);

View file

@ -1,10 +1,11 @@
package mffs.base; package mffs.base;
import java.util.HashSet;
import java.util.Set;
import dan200.computercraft.api.lua.ILuaContext; import dan200.computercraft.api.lua.ILuaContext;
import dan200.computercraft.api.lua.LuaException; import dan200.computercraft.api.lua.LuaException;
import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.IComputerAccess;
import java.util.HashSet;
import java.util.Set;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -24,8 +25,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.multiblock.TileEntityMulti; import universalelectricity.prefab.multiblock.TileEntityMulti;
public abstract class TileEntityInventory public abstract class TileEntityInventory extends TileEntityBase implements IInventory {
extends TileEntityBase implements IInventory {
protected ItemStack[] inventory; protected ItemStack[] inventory;
public TileEntityInventory() { public TileEntityInventory() {
@ -49,12 +49,13 @@ public abstract class TileEntityInventory
this.writeToNBT(nbt); 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 @Override
public void onDataPacket(NetworkManager arg0, public void onDataPacket(NetworkManager arg0, S35PacketUpdateTileEntity arg1) {
S35PacketUpdateTileEntity arg1) {
NBTTagCompound nbt = arg1.func_148857_g(); NBTTagCompound nbt = arg1.func_148857_g();
this.readFromNBT(nbt); this.readFromNBT(nbt);
@ -87,8 +88,7 @@ public abstract class TileEntityInventory
@Override @Override
public void setInventorySlotContents(final int i, final ItemStack itemstack) { public void setInventorySlotContents(final int i, final ItemStack itemstack) {
this.inventory[i] = itemstack; this.inventory[i] = itemstack;
if (itemstack != null && if (itemstack != null && itemstack.stackSize > this.getInventoryStackLimit()) {
itemstack.stackSize > this.getInventoryStackLimit()) {
itemstack.stackSize = this.getInventoryStackLimit(); itemstack.stackSize = this.getInventoryStackLimit();
} }
} }
@ -111,12 +111,10 @@ public abstract class TileEntityInventory
} }
@Override @Override
public void openInventory() { public void openInventory() {}
}
@Override @Override
public void closeInventory() { public void closeInventory() {}
}
@Override @Override
public boolean isUseableByPlayer(final EntityPlayer entityplayer) { public boolean isUseableByPlayer(final EntityPlayer entityplayer) {
@ -139,15 +137,14 @@ public abstract class TileEntityInventory
} }
@Override @Override
public boolean isItemValidForSlot(final int slotID, public boolean isItemValidForSlot(final int slotID, final ItemStack itemStack) {
final ItemStack itemStack) {
return true; return true;
} }
public boolean canIncreaseStack(final int slotID, final ItemStack itemStack) { public boolean canIncreaseStack(final int slotID, final ItemStack itemStack) {
return this.getStackInSlot(slotID) == null || return this.getStackInSlot(slotID) == null
(this.getStackInSlot(slotID).stackSize + 1 <= 64 && || (this.getStackInSlot(slotID).stackSize + 1 <= 64
this.getStackInSlot(slotID).isItemEqual(itemStack)); && this.getStackInSlot(slotID).isItemEqual(itemStack));
} }
public void incrStackSize(final int slot, final ItemStack itemStack) { public void incrStackSize(final int slot, final ItemStack itemStack) {
@ -165,37 +162,47 @@ public abstract class TileEntityInventory
return cards; return cards;
} }
public ItemStack tryPlaceInPosition(ItemStack itemStack, public ItemStack tryPlaceInPosition(
final Vector3 position, ItemStack itemStack, final Vector3 position, final ForgeDirection dir
final ForgeDirection dir) { ) {
final TileEntity tileEntity = position.getTileEntity((IBlockAccess) this.worldObj); final TileEntity tileEntity
= position.getTileEntity((IBlockAccess) this.worldObj);
final ForgeDirection direction = dir.getOpposite(); final ForgeDirection direction = dir.getOpposite();
if (tileEntity != null && itemStack != null) { if (tileEntity != null && itemStack != null) {
if (tileEntity instanceof TileEntityMulti) { if (tileEntity instanceof TileEntityMulti) {
final Vector3 mainBlockPosition = ((TileEntityMulti) tileEntity).mainBlockPosition; final Vector3 mainBlockPosition
if (mainBlockPosition != null && = ((TileEntityMulti) tileEntity).mainBlockPosition;
!(mainBlockPosition.getTileEntity((IBlockAccess) this.worldObj) instanceof TileEntityMulti)) { if (mainBlockPosition != null
return this.tryPlaceInPosition(itemStack, mainBlockPosition, && !(
direction); mainBlockPosition.getTileEntity((IBlockAccess) this.worldObj)
instanceof TileEntityMulti
)) {
return this.tryPlaceInPosition(
itemStack, mainBlockPosition, direction
);
} }
} else if (tileEntity instanceof TileEntityChest) { } else if (tileEntity instanceof TileEntityChest) {
final TileEntityChest[] chests = { (TileEntityChest) tileEntity, null }; final TileEntityChest[] chests = { (TileEntityChest) tileEntity, null };
for (int i = 2; i < 6; ++i) { for (int i = 2; i < 6; ++i) {
final ForgeDirection searchDirection = ForgeDirection.getOrientation(i); final ForgeDirection searchDirection
= ForgeDirection.getOrientation(i);
final Vector3 searchPosition = position.clone(); final Vector3 searchPosition = position.clone();
searchPosition.modifyPositionFromSide(searchDirection); searchPosition.modifyPositionFromSide(searchDirection);
if (searchPosition.getTileEntity((IBlockAccess) this.worldObj) != null && if (searchPosition.getTileEntity((IBlockAccess) this.worldObj) != null
searchPosition.getTileEntity((IBlockAccess) this.worldObj) && searchPosition.getTileEntity((IBlockAccess) this.worldObj)
.getClass() == chests[0].getClass()) { .getClass()
chests[1] = (TileEntityChest) searchPosition.getTileEntity( == chests[0].getClass()) {
(IBlockAccess) this.worldObj); chests[1] = (TileEntityChest
) searchPosition.getTileEntity((IBlockAccess) this.worldObj);
break; break;
} }
} }
for (final TileEntityChest chest : chests) { for (final TileEntityChest chest : chests) {
if (chest != null) { if (chest != null) {
for (int j = 0; j < chest.getSizeInventory(); ++j) { 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) { if (itemStack == null) {
return null; return null;
} }
@ -204,12 +211,15 @@ public abstract class TileEntityInventory
} }
} else if (tileEntity instanceof ISidedInventory) { } else if (tileEntity instanceof ISidedInventory) {
final ISidedInventory inventory = (ISidedInventory) tileEntity; 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) { for (int k = 0; k < slots.length; ++k) {
if (inventory.canInsertItem(slots[k], itemStack, if (inventory.canInsertItem(
direction.ordinal())) { slots[k], itemStack, direction.ordinal()
)) {
itemStack = this.addStackToInventory( itemStack = this.addStackToInventory(
slots[k], (IInventory) inventory, itemStack); slots[k], (IInventory) inventory, itemStack
);
} }
if (itemStack == null) { if (itemStack == null) {
return null; return null;
@ -231,9 +241,9 @@ public abstract class TileEntityInventory
return itemStack; return itemStack;
} }
public ItemStack addStackToInventory(final int slotIndex, public ItemStack addStackToInventory(
final IInventory inventory, final int slotIndex, final IInventory inventory, final ItemStack itemStack
final ItemStack itemStack) { ) {
if (inventory.getSizeInventory() > slotIndex) { if (inventory.getSizeInventory() > slotIndex) {
ItemStack stackInInventory = inventory.getStackInSlot(slotIndex); ItemStack stackInInventory = inventory.getStackInSlot(slotIndex);
if (stackInInventory == null) { if (stackInInventory == null) {
@ -242,17 +252,21 @@ public abstract class TileEntityInventory
return itemStack; return itemStack;
} }
return null; return null;
} else if (stackInInventory.isItemEqual(itemStack) && } else if (stackInInventory.isItemEqual(itemStack) && stackInInventory.isStackable()) {
stackInInventory.isStackable()) {
stackInInventory = stackInInventory.copy(); stackInInventory = stackInInventory.copy();
final int stackLim = Math.min(inventory.getInventoryStackLimit(), final int stackLim = Math.min(
itemStack.getMaxStackSize()); inventory.getInventoryStackLimit(), itemStack.getMaxStackSize()
);
final int rejectedAmount = Math.max( final int rejectedAmount = Math.max(
stackInInventory.stackSize + itemStack.stackSize - stackLim, 0); stackInInventory.stackSize + itemStack.stackSize - stackLim, 0
stackInInventory.stackSize = Math.min(Math.max(stackInInventory.stackSize + itemStack.stackSize - );
rejectedAmount, stackInInventory.stackSize = Math.min(
0), Math.max(
inventory.getInventoryStackLimit()); stackInInventory.stackSize + itemStack.stackSize - rejectedAmount,
0
),
inventory.getInventoryStackLimit()
);
itemStack.stackSize = rejectedAmount; itemStack.stackSize = rejectedAmount;
inventory.setInventorySlotContents(slotIndex, stackInInventory); inventory.setInventorySlotContents(slotIndex, stackInInventory);
} }
@ -268,14 +282,20 @@ public abstract class TileEntityInventory
for (final ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) { for (final ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) {
if (itemStack != null) { if (itemStack != null) {
itemStack = this.tryPlaceInPosition( itemStack = this.tryPlaceInPosition(
itemStack, new Vector3(this).modifyPositionFromSide(direction), itemStack,
direction); new Vector3(this).modifyPositionFromSide(direction),
direction
);
} }
} }
if (itemStack != null) { if (itemStack != null) {
this.worldObj.spawnEntityInWorld((Entity) new EntityItem( this.worldObj.spawnEntityInWorld((Entity) new EntityItem(
this.worldObj, this.xCoord + 0.5, (double) (this.yCoord + 1), this.worldObj,
this.zCoord + 0.5, itemStack)); this.xCoord + 0.5,
(double) (this.yCoord + 1),
this.zCoord + 0.5,
itemStack
));
} }
} }
return false; return false;
@ -287,7 +307,8 @@ public abstract class TileEntityInventory
final NBTTagList nbtTagList = nbttagcompound.getTagList("Items", 10); final NBTTagList nbtTagList = nbttagcompound.getTagList("Items", 10);
this.inventory = new ItemStack[this.getSizeInventory()]; this.inventory = new ItemStack[this.getSizeInventory()];
for (int i = 0; i < nbtTagList.tagCount(); ++i) { 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"); final byte byte0 = nbttagcompound2.getByte("Slot");
if (byte0 >= 0 && byte0 < this.inventory.length) { if (byte0 >= 0 && byte0 < this.inventory.length) {
this.inventory[byte0] = ItemStack.loadItemStackFromNBT(nbttagcompound2); this.inventory[byte0] = ItemStack.loadItemStackFromNBT(nbttagcompound2);
@ -321,9 +342,9 @@ public abstract class TileEntityInventory
} }
@Override @Override
public Object[] callMethod(IComputerAccess computer, ILuaContext context, public Object[] callMethod(
int method, Object[] arguments) IComputerAccess computer, ILuaContext context, int method, Object[] arguments
throws LuaException, InterruptedException { ) throws LuaException, InterruptedException {
switch (method) { switch (method) {
case 0: { case 0: {
return new Object[] { this.isActive() }; return new Object[] { this.isActive() };
@ -338,12 +359,9 @@ public abstract class TileEntityInventory
} }
} }
@Override
public void attach(final IComputerAccess computer) {}
@Override @Override
public void attach(final IComputerAccess computer) { public void detach(final IComputerAccess computer) {}
}
@Override
public void detach(final IComputerAccess computer) {
}
} }

View file

@ -33,11 +33,11 @@ public abstract class TileEntityModuleAcceptor
public void initiate() { public void initiate() {
super.initiate(); super.initiate();
super.fortronTank.setCapacity( super.fortronTank.setCapacity(
(this.getModuleCount(ModularForceFieldSystem.itemModuleCapacity, (this.getModuleCount(ModularForceFieldSystem.itemModuleCapacity, new int[0])
new int[0]) * * this.capacityBoost
this.capacityBoost + + this.capacityBase)
this.capacityBase) * * 1000
1000); );
} }
public void consumeCost() { public void consumeCost() {
@ -49,8 +49,8 @@ public abstract class TileEntityModuleAcceptor
@Override @Override
public ItemStack getModule(final IModule module) { public ItemStack getModule(final IModule module) {
final String cacheID = "getModule_" + module.hashCode(); final String cacheID = "getModule_" + module.hashCode();
if (Settings.USE_CACHE && this.cache.containsKey(cacheID) && if (Settings.USE_CACHE && this.cache.containsKey(cacheID)
this.cache.get(cacheID) instanceof ItemStack) { && this.cache.get(cacheID) instanceof ItemStack) {
return (ItemStack) this.cache.get(cacheID); return (ItemStack) this.cache.get(cacheID);
} }
final ItemStack returnStack = new ItemStack((Item) module, 0); final ItemStack returnStack = new ItemStack((Item) module, 0);
@ -74,14 +74,14 @@ public abstract class TileEntityModuleAcceptor
if (slots != null) { if (slots != null) {
cacheID = cacheID + "_" + Arrays.hashCode(slots); cacheID = cacheID + "_" + Arrays.hashCode(slots);
} }
if (Settings.USE_CACHE && this.cache.containsKey(cacheID) && if (Settings.USE_CACHE && this.cache.containsKey(cacheID)
this.cache.get(cacheID) instanceof Integer) { && this.cache.get(cacheID) instanceof Integer) {
return (int) this.cache.get(cacheID); return (int) this.cache.get(cacheID);
} }
if (slots != null && slots.length > 0) { if (slots != null && slots.length > 0) {
for (final int slotID : slots) { for (final int slotID : slots) {
if (this.getStackInSlot(slotID) != null && if (this.getStackInSlot(slotID) != null
this.getStackInSlot(slotID).getItem() == module) { && this.getStackInSlot(slotID).getItem() == module) {
count += this.getStackInSlot(slotID).stackSize; count += this.getStackInSlot(slotID).stackSize;
} }
} }
@ -105,13 +105,14 @@ public abstract class TileEntityModuleAcceptor
if (slots != null) { if (slots != null) {
cacheID += Arrays.hashCode(slots); cacheID += Arrays.hashCode(slots);
} }
if (Settings.USE_CACHE && this.cache.containsKey(cacheID) && if (Settings.USE_CACHE && this.cache.containsKey(cacheID)
this.cache.get(cacheID) instanceof Set<?>) { && this.cache.get(cacheID) instanceof Set<?>) {
return (Set<ItemStack>) this.cache.get(cacheID); return (Set<ItemStack>) this.cache.get(cacheID);
} }
final Set<ItemStack> modules = new HashSet<>(); final Set<ItemStack> modules = new HashSet<>();
if (slots == null || slots.length <= 0) { 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); final ItemStack itemStack = this.getStackInSlot(slotID);
if (itemStack != null && itemStack.getItem() instanceof IModule) { if (itemStack != null && itemStack.getItem() instanceof IModule) {
modules.add(itemStack); modules.add(itemStack);
@ -137,13 +138,14 @@ public abstract class TileEntityModuleAcceptor
if (slots != null) { if (slots != null) {
cacheID += Arrays.hashCode(slots); cacheID += Arrays.hashCode(slots);
} }
if (Settings.USE_CACHE && this.cache.containsKey(cacheID) && if (Settings.USE_CACHE && this.cache.containsKey(cacheID)
this.cache.get(cacheID) instanceof Set) { && this.cache.get(cacheID) instanceof Set) {
return (Set<IModule>) this.cache.get(cacheID); return (Set<IModule>) this.cache.get(cacheID);
} }
final Set<IModule> modules = new HashSet<>(); final Set<IModule> modules = new HashSet<>();
if (slots == null || slots.length <= 0) { 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); final ItemStack itemStack = this.getStackInSlot(slotID);
if (itemStack != null && itemStack.getItem() instanceof IModule) { if (itemStack != null && itemStack.getItem() instanceof IModule) {
modules.add((IModule) itemStack.getItem()); modules.add((IModule) itemStack.getItem());
@ -166,15 +168,15 @@ public abstract class TileEntityModuleAcceptor
@Override @Override
public int getFortronCost() { public int getFortronCost() {
final String cacheID = "getFortronCost"; final String cacheID = "getFortronCost";
if (Settings.USE_CACHE && this.cache.containsKey(cacheID) && if (Settings.USE_CACHE && this.cache.containsKey(cacheID)
this.cache.get(cacheID) instanceof Integer) { && this.cache.get(cacheID) instanceof Integer) {
return (int) this.cache.get(cacheID); return (int) this.cache.get(cacheID);
} }
float cost = 0.0f; float cost = 0.0f;
for (final ItemStack itemStack : this.getModuleStacks(new int[0])) { for (final ItemStack itemStack : this.getModuleStacks(new int[0])) {
if (itemStack != null) { if (itemStack != null) {
cost += itemStack.stackSize * cost += itemStack.stackSize
((IModule) itemStack.getItem()).getFortronCost(this.getAmplifier()); * ((IModule) itemStack.getItem()).getFortronCost(this.getAmplifier());
} }
} }
final int result = Math.round(cost); final int result = Math.round(cost);
@ -192,11 +194,11 @@ public abstract class TileEntityModuleAcceptor
public void markDirty() { public void markDirty() {
super.markDirty(); super.markDirty();
super.fortronTank.setCapacity( super.fortronTank.setCapacity(
(this.getModuleCount(ModularForceFieldSystem.itemModuleCapacity, (this.getModuleCount(ModularForceFieldSystem.itemModuleCapacity, new int[0])
new int[0]) * * this.capacityBoost
this.capacityBoost + + this.capacityBase)
this.capacityBase) * * 1000
1000); );
this.clearCache(); this.clearCache();
} }

View file

@ -1,16 +1,15 @@
package mffs.base; package mffs.base;
import cpw.mods.fml.common.Optional; import java.util.EnumSet;
import calclavia.lib.IUniversalEnergyTile; import calclavia.lib.IUniversalEnergyTile;
import cofh.api.energy.IEnergyReceiver; import cofh.api.energy.IEnergyReceiver;
import cpw.mods.fml.common.Optional;
import ic2.api.energy.event.EnergyTileLoadEvent; import ic2.api.energy.event.EnergyTileLoadEvent;
import ic2.api.energy.event.EnergyTileUnloadEvent; import ic2.api.energy.event.EnergyTileUnloadEvent;
import ic2.api.energy.tile.IEnergySink; import ic2.api.energy.tile.IEnergySink;
import mffs.ConversionHelper; import mffs.ConversionHelper;
import mffs.tileentity.TileEntityCoercionDeriver; import mffs.tileentity.TileEntityCoercionDeriver;
import java.util.EnumSet;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
@ -20,12 +19,14 @@ import universalelectricity.core.electricity.ElectricityPack;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
@Optional.Interface(modid = "IC2", iface = "ic2.api.energy.tile.IEnergySink") @Optional.Interface(modid = "IC2", iface = "ic2.api.energy.tile.IEnergySink")
public abstract class TileEntityUniversalEnergy public abstract class TileEntityUniversalEnergy extends TileEntityModuleAcceptor
extends TileEntityModuleAcceptor implements IUniversalEnergyTile, IEnergyReceiver, IEnergySink { implements IUniversalEnergyTile, IEnergyReceiver, IEnergySink {
public double prevWatts; public double prevWatts;
public double wattsReceived; public double wattsReceived;
public TileEntityUniversalEnergy() { this.wattsReceived = 0.0; } public TileEntityUniversalEnergy() {
this.wattsReceived = 0.0;
}
@Optional.Method(modid = "IC2") @Optional.Method(modid = "IC2")
@Override @Override
@ -47,13 +48,15 @@ public abstract class TileEntityUniversalEnergy
this.prevWatts = this.wattsReceived; this.prevWatts = this.wattsReceived;
if (!this.worldObj.isRemote) { if (!this.worldObj.isRemote) {
if (!this.isDisabled()) { if (!this.isDisabled()) {
final ElectricityPack electricityPack = final ElectricityPack electricityPack
ElectricityNetworkHelper.consumeFromMultipleSides( = ElectricityNetworkHelper.consumeFromMultipleSides(
this, this.getConsumingSides(), this.getRequest()); this, this.getConsumingSides(), this.getRequest()
);
this.onReceive(electricityPack); this.onReceive(electricityPack);
} else { } else {
ElectricityNetworkHelper.consumeFromMultipleSides( ElectricityNetworkHelper.consumeFromMultipleSides(
this, new ElectricityPack()); this, new ElectricityPack()
);
} }
} }
} }
@ -62,18 +65,23 @@ public abstract class TileEntityUniversalEnergy
return ElectricityNetworkHelper.getDirections(this); return ElectricityNetworkHelper.getDirections(this);
} }
public ElectricityPack getRequest() { return new ElectricityPack(); } public ElectricityPack getRequest() {
return new ElectricityPack();
}
public void onReceive(final ElectricityPack electricityPack) { public void onReceive(final ElectricityPack electricityPack) {
if (UniversalElectricity.isVoltageSensitive && if (UniversalElectricity.isVoltageSensitive
electricityPack.voltage > this.getVoltage()) { && electricityPack.voltage > this.getVoltage()) {
return; return;
} }
this.wattsReceived = Math.min( this.wattsReceived = Math.min(
this.wattsReceived + electricityPack.getWatts(), this.getWattBuffer()); this.wattsReceived + electricityPack.getWatts(), this.getWattBuffer()
);
} }
public double getWattBuffer() { return this.getRequest().getWatts() * 2.0; } public double getWattBuffer() {
return this.getRequest().getWatts() * 2.0;
}
@Override @Override
public double getVoltage() { public double getVoltage() {
@ -81,10 +89,10 @@ public abstract class TileEntityUniversalEnergy
} }
public ElectricityPack produce(double watts) { public ElectricityPack produce(double watts) {
ElectricityPack pack = ElectricityPack pack
new ElectricityPack(watts / this.getVoltage(), this.getVoltage()); = new ElectricityPack(watts / this.getVoltage(), this.getVoltage());
ElectricityPack remaining = ElectricityPack remaining
ElectricityNetworkHelper.produceFromMultipleSides(this, pack); = ElectricityNetworkHelper.produceFromMultipleSides(this, pack);
return remaining; return remaining;
} }
@ -92,11 +100,15 @@ public abstract class TileEntityUniversalEnergy
public int produceRF(int amount) { public int produceRF(int amount) {
int available = amount; int available = amount;
for (ForgeDirection dir : ForgeDirection.values()) { for (ForgeDirection dir : ForgeDirection.values()) {
TileEntity te = new Vector3(this).modifyPositionFromSide(dir).getTileEntity(this.worldObj); TileEntity te = new Vector3(this).modifyPositionFromSide(dir).getTileEntity(
this.worldObj
);
if (te instanceof IEnergyReceiver) { if (te instanceof IEnergyReceiver) {
IEnergyReceiver receiver = (IEnergyReceiver) te; IEnergyReceiver receiver = (IEnergyReceiver) te;
if (!receiver.canConnectEnergy(dir.getOpposite())) continue; if (!receiver.canConnectEnergy(dir.getOpposite()))
available -= receiver.receiveEnergy(dir.getOpposite(), (available), false); continue;
available
-= receiver.receiveEnergy(dir.getOpposite(), (available), false);
} }
} }
return amount - available; return amount - available;
@ -109,7 +121,8 @@ public abstract class TileEntityUniversalEnergy
@Override @Override
public int receiveEnergy(ForgeDirection side, int energy, boolean simulate) { public int receiveEnergy(ForgeDirection side, int energy, boolean simulate) {
if (!canConnect(side)) return 0; if (!canConnect(side))
return 0;
double toReceive = ConversionHelper.fromRF(energy); double toReceive = ConversionHelper.fromRF(energy);
double free = getWattBuffer() - wattsReceived; double free = getWattBuffer() - wattsReceived;
double toInject = Math.min(toReceive, free); double toInject = Math.min(toReceive, free);
@ -121,12 +134,16 @@ public abstract class TileEntityUniversalEnergy
@Override @Override
public int getEnergyStored(ForgeDirection var1) { public int getEnergyStored(ForgeDirection var1) {
return ConversionHelper.toRF(getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO); return ConversionHelper.toRF(
getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO
);
} }
@Override @Override
public int getMaxEnergyStored(ForgeDirection var1) { public int getMaxEnergyStored(ForgeDirection var1) {
return ConversionHelper.toRF(getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO); return ConversionHelper.toRF(
getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO
);
} }
@Optional.Method(modid = "IC2") @Optional.Method(modid = "IC2")
@ -155,8 +172,9 @@ public abstract class TileEntityUniversalEnergy
if (givenElectricity > this.getWattBuffer()) { if (givenElectricity > this.getWattBuffer()) {
rejects = givenElectricity - this.getRequest().getWatts(); rejects = givenElectricity - this.getRequest().getWatts();
} }
this.onReceive(new ElectricityPack(givenElectricity / this.getVoltage(), this.getVoltage())); this.onReceive(
new ElectricityPack(givenElectricity / this.getVoltage(), this.getVoltage())
);
return ConversionHelper.toEU(rejects); return ConversionHelper.toEU(rejects);
} }
} }

View file

@ -1,10 +1,11 @@
package mffs.block; package mffs.block;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import mffs.ModularForceFieldSystem; import mffs.ModularForceFieldSystem;
import mffs.api.IForceFieldBlock; import mffs.api.IForceFieldBlock;
import mffs.api.IProjector; import mffs.api.IProjector;
@ -82,20 +83,29 @@ public class BlockForceField
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(final IBlockAccess par1IBlockAccess, public boolean shouldSideBeRendered(
final int par2, final int par3, final IBlockAccess par1IBlockAccess,
final int par4, final int par5) { final int par2,
final int par3,
final int par4,
final int par5
) {
final Block i1 = par1IBlockAccess.getBlock(par2, par3, par4); final Block i1 = par1IBlockAccess.getBlock(par2, par3, par4);
return i1 != this && return i1 != this
super.shouldSideBeRendered(par1IBlockAccess, par2, par3, par4, par5); && super.shouldSideBeRendered(par1IBlockAccess, par2, par3, par4, par5);
} }
@Override @Override
public void onBlockClicked(final World world, final int x, final int y, public void onBlockClicked(
final int z, final EntityPlayer entityPlayer) { final World world,
final int x,
final int y,
final int z,
final EntityPlayer entityPlayer
) {
final TileEntity tileEntity = world.getTileEntity(x, y, z); final TileEntity tileEntity = world.getTileEntity(x, y, z);
if (tileEntity instanceof TileEntityForceField && if (tileEntity instanceof TileEntityForceField
((TileEntityForceField)tileEntity).getProjector() != null) { && ((TileEntityForceField) tileEntity).getProjector() != null) {
for (final ItemStack moduleStack : for (final ItemStack moduleStack :
((TileEntityForceField) tileEntity) ((TileEntityForceField) tileEntity)
.getProjector() .getProjector()
@ -103,8 +113,9 @@ public class BlockForceField
.getProjector() .getProjector()
.getModuleSlots())) { .getModuleSlots())) {
if (((IModule) moduleStack.getItem()) if (((IModule) moduleStack.getItem())
.onCollideWithForceField(world, x, y, z, (Entity)entityPlayer, .onCollideWithForceField(
moduleStack)) { world, x, y, z, (Entity) entityPlayer, moduleStack
)) {
return; return;
} }
} }
@ -112,30 +123,38 @@ public class BlockForceField
} }
@Override @Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(final World world, public AxisAlignedBB getCollisionBoundingBoxFromPool(
final int x, final int y, final World world, final int x, final int y, final int z
final int z) { ) {
if (world.isRemote) { if (world.isRemote) {
if (ModularForceFieldSystem.proxy.isSneaking()) { if (ModularForceFieldSystem.proxy.isSneaking()) {
return null; return null;
} }
} }
if (this.getProjector((IBlockAccess) world, x, y, z) != null && !world.isRemote) { if (this.getProjector((IBlockAccess) world, x, y, z) != null && !world.isRemote) {
final IBiometricIdentifier BiometricIdentifier = final IBiometricIdentifier BiometricIdentifier
this.getProjector((IBlockAccess)world, x, y, z) = this.getProjector((IBlockAccess) world, x, y, z)
.getBiometricIdentifier(); .getBiometricIdentifier();
final List entities = world.getEntitiesWithinAABB( final List entities = world.getEntitiesWithinAABB(
EntityPlayer.class, AxisAlignedBB.getBoundingBox( EntityPlayer.class,
(double)(x), (double)y, (double)(z), AxisAlignedBB.getBoundingBox(
(double)(x + 1), y + 1, (double)(z + 1))); (double) (x),
(double) y,
(double) (z),
(double) (x + 1),
y + 1,
(double) (z + 1)
)
);
for (final EntityPlayer entityPlayer : (List<EntityPlayer>) entities) { for (final EntityPlayer entityPlayer : (List<EntityPlayer>) entities) {
if (entityPlayer != null && entityPlayer.isSneaking()) { if (entityPlayer != null && entityPlayer.isSneaking()) {
if (entityPlayer.capabilities.isCreativeMode) { if (entityPlayer.capabilities.isCreativeMode) {
return null; return null;
} }
if (BiometricIdentifier != null && if (BiometricIdentifier != null
BiometricIdentifier.isAccessGranted( && BiometricIdentifier.isAccessGranted(
entityPlayer.getDisplayName(), Permission.FORCE_FIELD_WARP)) { entityPlayer.getDisplayName(), Permission.FORCE_FIELD_WARP
)) {
return null; return null;
} }
continue; continue;
@ -144,17 +163,22 @@ public class BlockForceField
} }
final float f = 0.0625f; final float f = 0.0625f;
return AxisAlignedBB.getBoundingBox( return AxisAlignedBB.getBoundingBox(
(double)(x + f), (double)(y + f), (double)(z + f), (double)(x + 1 - f), (double) (x + f),
(double)(y + 1 - f), (double)(z + 1 - f)); (double) (y + f),
(double) (z + f),
(double) (x + 1 - f),
(double) (y + 1 - f),
(double) (z + 1 - f)
);
} }
@Override @Override
public void onEntityCollidedWithBlock(final World world, final int x, public void onEntityCollidedWithBlock(
final int y, final int z, final World world, final int x, final int y, final int z, final Entity entity
final Entity entity) { ) {
final TileEntity tileEntity = world.getTileEntity(x, y, z); final TileEntity tileEntity = world.getTileEntity(x, y, z);
if (tileEntity instanceof TileEntityForceField && if (tileEntity instanceof TileEntityForceField
this.getProjector((IBlockAccess)world, x, y, z) != null) { && this.getProjector((IBlockAccess) world, x, y, z) != null) {
for (final ItemStack moduleStack : for (final ItemStack moduleStack :
((TileEntityForceField) tileEntity) ((TileEntityForceField) tileEntity)
.getProjector() .getProjector()
@ -166,30 +190,37 @@ public class BlockForceField
return; return;
} }
} }
final IBiometricIdentifier biometricIdentifier = final IBiometricIdentifier biometricIdentifier
this.getProjector((IBlockAccess)world, x, y, z) = this.getProjector((IBlockAccess) world, x, y, z)
.getBiometricIdentifier(); .getBiometricIdentifier();
if (new Vector3(entity).distanceTo(new Vector3(x, y, z).add(0.4)) < 0.5 && if (new Vector3(entity).distanceTo(new Vector3(x, y, z).add(0.4)) < 0.5
entity instanceof EntityLiving && !world.isRemote) { && entity instanceof EntityLiving && !world.isRemote) {
((EntityLiving) entity) ((EntityLiving) entity)
.addPotionEffect(new PotionEffect(Potion.confusion.id, 80, 3)); .addPotionEffect(new PotionEffect(Potion.confusion.id, 80, 3));
((EntityLiving) entity) ((EntityLiving) entity)
.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 20, 1)); .addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 20, 1));
boolean hasPermission = false; boolean hasPermission = false;
final List entities = world.getEntitiesWithinAABB( final List entities = world.getEntitiesWithinAABB(
EntityPlayer.class, AxisAlignedBB.getBoundingBox( EntityPlayer.class,
(double)x, (double)y, (double)z, AxisAlignedBB.getBoundingBox(
(double)(x + 1), y + 0.9, (double)(z + 1))); (double) x,
(double) y,
(double) z,
(double) (x + 1),
y + 0.9,
(double) (z + 1)
)
);
for (final EntityPlayer entityPlayer : (List<EntityPlayer>) entities) { for (final EntityPlayer entityPlayer : (List<EntityPlayer>) entities) {
if (entityPlayer != null && entityPlayer.isSneaking()) { if (entityPlayer != null && entityPlayer.isSneaking()) {
if (entityPlayer.capabilities.isCreativeMode) { if (entityPlayer.capabilities.isCreativeMode) {
hasPermission = true; hasPermission = true;
break; break;
} }
if (biometricIdentifier == null || if (biometricIdentifier == null
!biometricIdentifier.isAccessGranted( || !biometricIdentifier.isAccessGranted(
entityPlayer.getDisplayName(), entityPlayer.getDisplayName(), Permission.FORCE_FIELD_WARP
Permission.FORCE_FIELD_WARP)) { )) {
continue; continue;
} }
hasPermission = true; hasPermission = true;
@ -197,27 +228,34 @@ public class BlockForceField
} }
if (!hasPermission) { if (!hasPermission) {
entity.attackEntityFrom( entity.attackEntityFrom(
(DamageSource)CustomDamageSource.electrocution, (DamageSource) CustomDamageSource.electrocution, Integer.MAX_VALUE
Integer.MAX_VALUE); );
} }
} }
} }
} }
@Override @Override
public IIcon getIcon(final IBlockAccess iBlockAccess, final int x, public IIcon getIcon(
final int y, final int z, final int side) { final IBlockAccess iBlockAccess,
final int x,
final int y,
final int z,
final int side
) {
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z); final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
if (tileEntity instanceof TileEntityForceField) { if (tileEntity instanceof TileEntityForceField) {
final ItemStack checkStack = ((TileEntityForceField) tileEntity).camoStack; final ItemStack checkStack = ((TileEntityForceField) tileEntity).camoStack;
if (checkStack != null) { if (checkStack != null) {
try { try {
final Block block = Block.getBlockFromItem(checkStack.getItem()); final Block block = Block.getBlockFromItem(checkStack.getItem());
final Integer[] allowedRenderTypes = { final Integer[] allowedRenderTypes
0, 1, 4, 31, 20, 39, 5, 13, 23, 6, 8, 7, 12, 29, 30, 14, 16, 17}; = { 0, 1, 4, 31, 20, 39, 5, 13, 23,
6, 8, 7, 12, 29, 30, 14, 16, 17 };
if (Arrays.asList(allowedRenderTypes) if (Arrays.asList(allowedRenderTypes)
.contains(block.getRenderType())) { .contains(block.getRenderType())) {
final IIcon icon = block.getIcon(side, checkStack.getItemDamage()); final IIcon icon
= block.getIcon(side, checkStack.getItemDamage());
if (icon != null) { if (icon != null) {
return icon; return icon;
} }
@ -231,13 +269,14 @@ public class BlockForceField
} }
@Override @Override
public int colorMultiplier(final IBlockAccess iBlockAccess, final int x, public int colorMultiplier(
final int y, final int z) { final IBlockAccess iBlockAccess, final int x, final int y, final int z
) {
try { try {
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z); final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
if (tileEntity instanceof TileEntityForceField) { if (tileEntity instanceof TileEntityForceField) {
final ItemStack checkStack = final ItemStack checkStack
((TileEntityForceField)tileEntity).camoStack; = ((TileEntityForceField) tileEntity).camoStack;
if (checkStack != null) { if (checkStack != null) {
try { try {
return Block.getBlockFromItem(checkStack.getItem()) return Block.getBlockFromItem(checkStack.getItem())
@ -254,19 +293,23 @@ public class BlockForceField
} }
@Override @Override
public int getLightValue(final IBlockAccess iBlockAccess, final int x, public int getLightValue(
final int y, final int z) { final IBlockAccess iBlockAccess, final int x, final int y, final int z
) {
try { try {
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z); final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
if (tileEntity instanceof TileEntityForceField) { if (tileEntity instanceof TileEntityForceField) {
final IProjector zhuYao = final IProjector zhuYao
((TileEntityForceField)tileEntity).getProjectorSafe(); = ((TileEntityForceField) tileEntity).getProjectorSafe();
if (zhuYao instanceof IProjector) { if (zhuYao instanceof IProjector) {
return (int)(Math.min(zhuYao.getModuleCount( return (int
ModularForceFieldSystem.itemModuleGlow, ) (Math.min(
new int[0]), zhuYao.getModuleCount(
64) / ModularForceFieldSystem.itemModuleGlow, new int[0]
64.0f * 15.0f); ),
64
)
/ 64.0f * 15.0f);
} }
} }
} catch (final Exception e) { } catch (final Exception e) {
@ -276,10 +319,16 @@ public class BlockForceField
} }
@Override @Override
public float getExplosionResistance(final Entity entity, final World world, public float getExplosionResistance(
final int x, final int y, final int z, final Entity entity,
final double d, final double d1, final World world,
final double d2) { final int x,
final int y,
final int z,
final double d,
final double d1,
final double d2
) {
return 2.1474836E9f; return 2.1474836E9f;
} }
@ -289,10 +338,10 @@ public class BlockForceField
} }
@Override @Override
public void weakenForceField(final World world, final int x, final int y, public void weakenForceField(
final int z, final int joules) { 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); final IProjector projector = this.getProjector((IBlockAccess) world, x, y, z);
if (projector != null) { if (projector != null) {
((IFortronStorage) projector).provideFortron(joules, true); ((IFortronStorage) projector).provideFortron(joules, true);
} }
@ -300,15 +349,19 @@ public class BlockForceField
} }
@Override @Override
public ItemStack getPickBlock(final MovingObjectPosition target, public ItemStack getPickBlock(
final World world, final int x, final int y, final MovingObjectPosition target,
final int z) { final World world,
final int x,
final int y,
final int z
) {
return null; return null;
} }
@Override @Override
public IProjector getProjector(final IBlockAccess iBlockAccess, final int x, public IProjector
final int y, final int z) { getProjector(final IBlockAccess iBlockAccess, final int x, final int y, final int z) {
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z); final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
if (tileEntity instanceof TileEntityForceField) { if (tileEntity instanceof TileEntityForceField) {
return ((TileEntityForceField) tileEntity).getProjector(); return ((TileEntityForceField) tileEntity).getProjector();
@ -317,8 +370,7 @@ public class BlockForceField
} }
@Override @Override
public boolean isSealed(World world, int x, int y, int z, public boolean isSealed(World world, int x, int y, int z, ForgeDirection direction) {
ForgeDirection direction) {
return true; return true;
} }

View file

@ -19,20 +19,31 @@ public class BlockForceFieldProjector extends BlockMachine {
} }
@Override @Override
public boolean onMachineActivated(final World world, final int i, final int j, final int k, public boolean onMachineActivated(
final EntityPlayer entityplayer, final int par6, final World world,
final float par7, final float par8, final float par9) { final int i,
final TileEntityForceFieldProjector tileentity = (TileEntityForceFieldProjector) world.getTileEntity(i, j, k); final int j,
return !tileentity.isDisabled() && final int k,
super.onMachineActivated(world, i, j, k, entityplayer, par6, par7, par8, final EntityPlayer entityplayer,
par9); 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, public int getLightValue(
final int y, final int z) { final IBlockAccess iBlockAccess, final int x, final int y, final int z
) {
final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z); final TileEntity tileEntity = iBlockAccess.getTileEntity(x, y, z);
if (tileEntity instanceof TileEntityForceFieldProjector && if (tileEntity instanceof TileEntityForceFieldProjector
((TileEntityForceFieldProjector) tileEntity).getMode() != null) { && ((TileEntityForceFieldProjector) tileEntity).getMode() != null) {
return 10; return 10;
} }
return super.getLightValue(iBlockAccess, x, y, z); return super.getLightValue(iBlockAccess, x, y, z);

View file

@ -16,12 +16,17 @@ public class BlockForceManipulator extends BlockMachine {
super("manipulator"); super("manipulator");
} }
public static int determineOrientation(final World world, final int x, public static int determineOrientation(
final int y, final int z, final World world,
final EntityPlayer entityPlayer) { final int x,
if (MathHelper.abs((float) ((Entity) entityPlayer).posX - x) < 2.0f && final int y,
MathHelper.abs((float) ((Entity) entityPlayer).posZ - z) < 2.0f) { final int z,
final double var5 = ((Entity) entityPlayer).posY + 1.82 - ((Entity) entityPlayer).yOffset; 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) { if (var5 - y > 2.0) {
return 1; return 1;
} }
@ -30,36 +35,52 @@ public class BlockForceManipulator extends BlockMachine {
} }
} }
final int var6 = MathHelper.floor_double( final int var6 = MathHelper.floor_double(
((Entity) entityPlayer).rotationYaw * 4.0f / 360.0f + 0.5) & ((Entity) entityPlayer).rotationYaw * 4.0f / 360.0f + 0.5
0x3; )
& 0x3;
return (var6 == 0) return (var6 == 0)
? 2 ? 2
: ((var6 == 1) ? 5 : ((var6 == 2) ? 3 : ((var6 == 3) ? 4 : 0))); : ((var6 == 1) ? 5 : ((var6 == 2) ? 3 : ((var6 == 3) ? 4 : 0)));
} }
@Override @Override
public void onBlockPlacedBy(final World world, final int x, final int y, public void onBlockPlacedBy(
final World world,
final int x,
final int y,
final int z, final int z,
final EntityLivingBase par5EntityLiving, final EntityLivingBase par5EntityLiving,
final ItemStack stack) { final ItemStack stack
) {
final int metadata = determineOrientation( final int metadata = determineOrientation(
world, x, y, z, world,
(EntityPlayer) par5EntityLiving); // TODO: ClassCastException? x,
y,
z,
(EntityPlayer) par5EntityLiving
); // TODO: ClassCastException?
world.setBlockMetadataWithNotify(x, y, z, metadata, 2); world.setBlockMetadataWithNotify(x, y, z, metadata, 2);
} }
@Override @Override
public boolean onUseWrench(final World world, final int x, final int y, public boolean onUseWrench(
final int z, final EntityPlayer par5EntityPlayer, final World world,
final int side, final float hitX, final float hitY, final int x,
final float hitZ) { 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 mask = 7;
final int rotMeta = world.getBlockMetadata(x, y, z); final int rotMeta = world.getBlockMetadata(x, y, z);
final int masked = rotMeta & ~mask; final int masked = rotMeta & ~mask;
final ForgeDirection orientation = ForgeDirection.getOrientation(rotMeta & mask); final ForgeDirection orientation = ForgeDirection.getOrientation(rotMeta & mask);
final ForgeDirection rotated = orientation.getRotation(ForgeDirection.getOrientation(side)); final ForgeDirection rotated
world.setBlockMetadataWithNotify(x, y, z, = orientation.getRotation(ForgeDirection.getOrientation(side));
(rotated.ordinal() & mask) | masked, 3); world.setBlockMetadataWithNotify(x, y, z, (rotated.ordinal() & mask) | masked, 3);
return true; return true;
} }

View file

@ -17,11 +17,16 @@ public abstract class BlockMachineBlock extends BlockMachine {
} }
@Override @Override
public IIcon getIcon(final IBlockAccess par1IBlockAccess, final int x, public IIcon getIcon(
final int y, final int z, final int side) { final IBlockAccess par1IBlockAccess,
final int x,
final int y,
final int z,
final int side
) {
final TileEntity tileEntity = par1IBlockAccess.getTileEntity(x, y, z); final TileEntity tileEntity = par1IBlockAccess.getTileEntity(x, y, z);
if (tileEntity instanceof TileEntityBase && if (tileEntity instanceof TileEntityBase
((TileEntityBase) tileEntity).isActive()) { && ((TileEntityBase) tileEntity).isActive()) {
if (side == 0 || side == 1) { if (side == 0 || side == 1) {
return this.blockIconTopOn; return this.blockIconTopOn;
} }
@ -36,14 +41,14 @@ public abstract class BlockMachineBlock extends BlockMachine {
@Override @Override
public void registerBlockIcons(final IIconRegister reg) { public void registerBlockIcons(final IIconRegister reg) {
this.blockIcon = reg.registerIcon( this.blockIcon = reg.registerIcon(this.getUnlocalizedName().replace("tile.", ""));
this.getUnlocalizedName().replace("tile.", "")); this.blockIconTop
this.blockIconTop = reg.registerIcon( = reg.registerIcon(this.getUnlocalizedName().replace("tile.", "") + "_top");
this.getUnlocalizedName().replace("tile.", "") + "_top"); this.blockIconOn
this.blockIconOn = reg.registerIcon( = reg.registerIcon(this.getUnlocalizedName().replace("tile.", "") + "_on");
this.getUnlocalizedName().replace("tile.", "") + "_on");
this.blockIconTopOn = reg.registerIcon( this.blockIconTopOn = reg.registerIcon(
this.getUnlocalizedName().replace("tile.", "") + "_top_on"); this.getUnlocalizedName().replace("tile.", "") + "_top_on"
);
} }
@Override @Override

View file

@ -9,15 +9,16 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
public class ContainerBiometricIdentifier extends ContainerBase { public class ContainerBiometricIdentifier extends ContainerBase {
public ContainerBiometricIdentifier(final EntityPlayer player, public ContainerBiometricIdentifier(
final TileEntityBiometricIdentifier tileentity) { final EntityPlayer player, final TileEntityBiometricIdentifier tileentity
) {
super((IInventory) tileentity); super((IInventory) tileentity);
this.addSlotToContainer((Slot) new SlotActive(tileentity, 0, 88, 91)); this.addSlotToContainer((Slot) new SlotActive(tileentity, 0, 88, 91));
this.addSlotToContainer((Slot) new SlotBase(tileentity, 1, 8, 46)); this.addSlotToContainer((Slot) new SlotBase(tileentity, 1, 8, 46));
this.addSlotToContainer((Slot) new SlotActive(tileentity, 2, 8, 91)); this.addSlotToContainer((Slot) new SlotActive(tileentity, 2, 8, 91));
for (int var4 = 0; var4 < 9; ++var4) { for (int var4 = 0; var4 < 9; ++var4) {
this.addSlotToContainer( this.addSlotToContainer((Slot
(Slot) new SlotActive(tileentity, 3 + var4, 8 + var4 * 18, 111)); ) new SlotActive(tileentity, 3 + var4, 8 + var4 * 18, 111));
} }
this.addSlotToContainer((Slot) new SlotBase(tileentity, 12, 8, 66)); this.addSlotToContainer((Slot) new SlotBase(tileentity, 12, 8, 66));
this.addPlayerInventory(player); this.addPlayerInventory(player);

View file

@ -9,8 +9,9 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
public class ContainerCoercionDeriver extends ContainerBase { public class ContainerCoercionDeriver extends ContainerBase {
public ContainerCoercionDeriver(final EntityPlayer player, public ContainerCoercionDeriver(
final TileEntityCoercionDeriver tileEntity) { final EntityPlayer player, final TileEntityCoercionDeriver tileEntity
) {
super((IInventory) tileEntity); super((IInventory) tileEntity);
this.addSlotToContainer((Slot) new SlotCard(tileEntity, 0, 9, 41)); this.addSlotToContainer((Slot) new SlotCard(tileEntity, 0, 9, 41));
this.addSlotToContainer((Slot) new SlotBase(tileEntity, 1, 9, 83)); this.addSlotToContainer((Slot) new SlotBase(tileEntity, 1, 9, 83));

View file

@ -9,8 +9,9 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
public class ContainerForceFieldProjector extends ContainerBase { public class ContainerForceFieldProjector extends ContainerBase {
public ContainerForceFieldProjector(final EntityPlayer player, public ContainerForceFieldProjector(
final TileEntityForceFieldProjector tileEntity) { final EntityPlayer player, final TileEntityForceFieldProjector tileEntity
) {
super((IInventory) tileEntity); super((IInventory) tileEntity);
this.addSlotToContainer((Slot) new SlotCard(tileEntity, 0, 10, 89)); this.addSlotToContainer((Slot) new SlotCard(tileEntity, 0, 10, 89));
this.addSlotToContainer((Slot) new SlotCard(tileEntity, 1, 28, 89)); this.addSlotToContainer((Slot) new SlotCard(tileEntity, 1, 28, 89));
@ -18,18 +19,18 @@ public class ContainerForceFieldProjector extends ContainerBase {
int i = 3; int i = 3;
for (int xSlot = 0; xSlot < 4; ++xSlot) { for (int xSlot = 0; xSlot < 4; ++xSlot) {
for (int ySlot = 0; ySlot < 4; ++ySlot) { for (int ySlot = 0; ySlot < 4; ++ySlot) {
if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2) && if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2)
(xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) { && (xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) {
this.addSlotToContainer((Slot) new SlotBase( this.addSlotToContainer((Slot
tileEntity, i, 91 + 18 * xSlot, 18 + 18 * ySlot)); ) new SlotBase(tileEntity, i, 91 + 18 * xSlot, 18 + 18 * ySlot));
++i; ++i;
} }
} }
} }
for (int xSlot = 0; xSlot < 3; ++xSlot) { for (int xSlot = 0; xSlot < 3; ++xSlot) {
for (int ySlot = 0; ySlot < 2; ++ySlot) { for (int ySlot = 0; ySlot < 2; ++ySlot) {
this.addSlotToContainer((Slot) new SlotBase( this.addSlotToContainer((Slot
tileEntity, i, 19 + 18 * xSlot, 36 + 18 * ySlot)); ) new SlotBase(tileEntity, i, 19 + 18 * xSlot, 36 + 18 * ySlot));
++i; ++i;
} }
} }

View file

@ -10,7 +10,8 @@ import net.minecraft.inventory.Slot;
public class ContainerForceManipulator extends ContainerBase { public class ContainerForceManipulator extends ContainerBase {
public ContainerForceManipulator( public ContainerForceManipulator(
final EntityPlayer player, final TileEntityForceManipulator tileEntity) { final EntityPlayer player, final TileEntityForceManipulator tileEntity
) {
super((IInventory) tileEntity); super((IInventory) tileEntity);
this.addSlotToContainer((Slot) new SlotCard(tileEntity, 0, 73, 91)); this.addSlotToContainer((Slot) new SlotCard(tileEntity, 0, 73, 91));
this.addSlotToContainer((Slot) new SlotCard(tileEntity, 1, 91, 91)); this.addSlotToContainer((Slot) new SlotCard(tileEntity, 1, 91, 91));
@ -18,18 +19,18 @@ public class ContainerForceManipulator extends ContainerBase {
int i = 3; int i = 3;
for (int xSlot = 0; xSlot < 4; ++xSlot) { for (int xSlot = 0; xSlot < 4; ++xSlot) {
for (int ySlot = 0; ySlot < 4; ++ySlot) { for (int ySlot = 0; ySlot < 4; ++ySlot) {
if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2) && if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2)
(xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) { && (xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) {
this.addSlotToContainer((Slot) new SlotBase( this.addSlotToContainer((Slot
tileEntity, i, 91 + 18 * xSlot, 18 + 18 * ySlot)); ) new SlotBase(tileEntity, i, 91 + 18 * xSlot, 18 + 18 * ySlot));
++i; ++i;
} }
} }
} }
for (int xSlot = 0; xSlot < 3; ++xSlot) { for (int xSlot = 0; xSlot < 3; ++xSlot) {
for (int ySlot = 0; ySlot < 2; ++ySlot) { for (int ySlot = 0; ySlot < 2; ++ySlot) {
this.addSlotToContainer((Slot) new SlotBase( this.addSlotToContainer((Slot
tileEntity, i, 31 + 18 * xSlot, 19 + 18 * ySlot)); ) new SlotBase(tileEntity, i, 31 + 18 * xSlot, 19 + 18 * ySlot));
++i; ++i;
} }
} }

View file

@ -12,7 +12,8 @@ public class ContainerFortronCapacitor extends ContainerBase {
private TileEntityFortronCapacitor tileEntity; private TileEntityFortronCapacitor tileEntity;
public ContainerFortronCapacitor( public ContainerFortronCapacitor(
final EntityPlayer player, final TileEntityFortronCapacitor tileEntity) { final EntityPlayer player, final TileEntityFortronCapacitor tileEntity
) {
super((IInventory) tileEntity); super((IInventory) tileEntity);
this.tileEntity = tileEntity; this.tileEntity = tileEntity;
this.addSlotToContainer((Slot) new SlotCard(this.tileEntity, 0, 9, 74)); this.addSlotToContainer((Slot) new SlotCard(this.tileEntity, 0, 9, 74));

View file

@ -9,20 +9,22 @@ import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
public class ContainerInterdictionMatrix extends ContainerBase { public class ContainerInterdictionMatrix extends ContainerBase {
public ContainerInterdictionMatrix(final EntityPlayer player, public ContainerInterdictionMatrix(
final TileEntityInterdictionMatrix tileEntity) { final EntityPlayer player, final TileEntityInterdictionMatrix tileEntity
) {
super((IInventory) tileEntity); super((IInventory) tileEntity);
this.addSlotToContainer((Slot) new SlotCard(tileEntity, 0, 87, 89)); this.addSlotToContainer((Slot) new SlotCard(tileEntity, 0, 87, 89));
this.addSlotToContainer((Slot) new SlotBase(tileEntity, 1, 69, 89)); this.addSlotToContainer((Slot) new SlotBase(tileEntity, 1, 69, 89));
for (int var3 = 0; var3 < 2; ++var3) { for (int var3 = 0; var3 < 2; ++var3) {
for (int var4 = 0; var4 < 4; ++var4) { for (int var4 = 0; var4 < 4; ++var4) {
this.addSlotToContainer((Slot) new SlotBase( 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) { for (int var5 = 0; var5 < 9; ++var5) {
this.addSlotToContainer( this.addSlotToContainer((Slot
(Slot) new SlotBase(tileEntity, var5 + 8 + 2, 9 + var5 * 18, 69)); ) new SlotBase(tileEntity, var5 + 8 + 2, 9 + var5 * 18, 69));
} }
this.addPlayerInventory(player); this.addPlayerInventory(player);
} }

View file

@ -13,9 +13,13 @@ public class BlockDropDelayedEvent extends DelayedEvent {
protected World world; protected World world;
protected Vector3 position; protected Vector3 position;
public BlockDropDelayedEvent(final IDelayedEventHandler handler, public BlockDropDelayedEvent(
final int ticks, final Block block, final IDelayedEventHandler handler,
final World world, final Vector3 position) { final int ticks,
final Block block,
final World world,
final Vector3 position
) {
super(handler, ticks); super(handler, ticks);
this.block = block; this.block = block;
this.world = world; this.world = world;
@ -26,9 +30,13 @@ public class BlockDropDelayedEvent extends DelayedEvent {
protected void onEvent() { protected void onEvent() {
if (this.position.getBlock((IBlockAccess) this.world) == this.block) { if (this.position.getBlock((IBlockAccess) this.world) == this.block) {
this.block.dropBlockAsItem( this.block.dropBlockAsItem(
this.world, this.position.intX(), this.position.intY(), this.world,
this.position.intX(),
this.position.intY(),
this.position.intZ(), this.position.intZ(),
this.position.getBlockMetadata((IBlockAccess) this.world), 0); this.position.getBlockMetadata((IBlockAccess) this.world),
0
);
this.position.setBlock(this.world, Blocks.air); this.position.setBlock(this.world, Blocks.air);
} }
} }

View file

@ -1,6 +1,7 @@
package mffs.event; package mffs.event;
import java.util.ArrayList; import java.util.ArrayList;
import mffs.IDelayedEventHandler; import mffs.IDelayedEventHandler;
import mffs.base.TileEntityInventory; import mffs.base.TileEntityInventory;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -13,11 +14,14 @@ import universalelectricity.core.vector.Vector3;
public class BlockInventoryDropDelayedEvent extends BlockDropDelayedEvent { public class BlockInventoryDropDelayedEvent extends BlockDropDelayedEvent {
private TileEntityInventory projector; private TileEntityInventory projector;
public BlockInventoryDropDelayedEvent(final IDelayedEventHandler handler, public BlockInventoryDropDelayedEvent(
final int ticks, final Block block, final IDelayedEventHandler handler,
final int ticks,
final Block block,
final World world, final World world,
final Vector3 position, final Vector3 position,
final TileEntityInventory projector) { final TileEntityInventory projector
) {
super(handler, ticks, block, world, position); super(handler, ticks, block, world, position);
this.projector = projector; this.projector = projector;
} }
@ -26,9 +30,13 @@ public class BlockInventoryDropDelayedEvent extends BlockDropDelayedEvent {
protected void onEvent() { protected void onEvent() {
if (super.position.getBlock((IBlockAccess) super.world) == super.block) { if (super.position.getBlock((IBlockAccess) super.world) == super.block) {
final ArrayList<ItemStack> itemStacks = super.block.getDrops( final ArrayList<ItemStack> itemStacks = super.block.getDrops(
super.world, super.position.intX(), super.position.intY(), super.world,
super.position.intX(),
super.position.intY(),
super.position.intZ(), super.position.intZ(),
super.position.getBlockMetadata((IBlockAccess) super.world), 0); super.position.getBlockMetadata((IBlockAccess) super.world),
0
);
for (final ItemStack itemStack : itemStacks) { for (final ItemStack itemStack : itemStacks) {
this.projector.mergeIntoInventory(itemStack); this.projector.mergeIntoInventory(itemStack);
} }

View file

@ -14,9 +14,12 @@ public class BlockNotifyDelayedEvent extends DelayedEvent {
private World world; private World world;
private Vector3 position; private Vector3 position;
public BlockNotifyDelayedEvent(final IDelayedEventHandler handler, public BlockNotifyDelayedEvent(
final int ticks, final World world, final IDelayedEventHandler handler,
final Vector3 position) { final int ticks,
final World world,
final Vector3 position
) {
super(handler, ticks); super(handler, ticks);
this.world = world; this.world = world;
this.position = position; this.position = position;
@ -26,21 +29,29 @@ public class BlockNotifyDelayedEvent extends DelayedEvent {
protected void onEvent() { protected void onEvent() {
if (!this.world.isRemote) { if (!this.world.isRemote) {
this.world.notifyBlocksOfNeighborChange( this.world.notifyBlocksOfNeighborChange(
this.position.intX(), this.position.intY(), this.position.intZ(), this.position.intX(),
this.position.getBlock((IBlockAccess) this.world)); this.position.intY(),
final TileEntity newTile = this.position.getTileEntity((IBlockAccess) this.world); this.position.intZ(),
this.position.getBlock((IBlockAccess) this.world)
);
final TileEntity newTile
= this.position.getTileEntity((IBlockAccess) this.world);
if (newTile != null) { if (newTile != null) {
if (newTile instanceof ISpecialForceManipulation) { if (newTile instanceof ISpecialForceManipulation) {
((ISpecialForceManipulation) newTile).postMove(); ((ISpecialForceManipulation) newTile).postMove();
} }
if (Loader.isModLoaded("BuildCraft|Factory")) { if (Loader.isModLoaded("BuildCraft|Factory")) {
try { try {
final Class clazz = Class.forName("buildcraft.factory.TileQuarry"); final Class clazz
= Class.forName("buildcraft.factory.TileQuarry");
if (clazz == newTile.getClass()) { if (clazz == newTile.getClass()) {
// TODO: W T F AAAAAAAAAAAAA // TODO: W T F AAAAAAAAAAAAA
ReflectionHelper.setPrivateValue(clazz, (Object) newTile, ReflectionHelper.setPrivateValue(
clazz,
(Object) newTile,
(Object) true, (Object) true,
new String[] { "isAlive" }); new String[] { "isAlive" }
);
} }
} catch (final Exception e) { } catch (final Exception e) {
e.printStackTrace(); e.printStackTrace();

View file

@ -19,13 +19,17 @@ public class BlockPostMoveDelayedEvent extends DelayedEvent {
private TileEntity tileEntity; private TileEntity tileEntity;
private NBTTagCompound tileData; private NBTTagCompound tileData;
public BlockPostMoveDelayedEvent(final IDelayedEventHandler handler, public BlockPostMoveDelayedEvent(
final int ticks, final World world, final IDelayedEventHandler handler,
final int ticks,
final World world,
final Vector3 originalPosition, final Vector3 originalPosition,
final Vector3 newPosition, final Block blockID, final Vector3 newPosition,
final Block blockID,
final int blockMetadata, final int blockMetadata,
final TileEntity tileEntity, final TileEntity tileEntity,
final NBTTagCompound tileData) { final NBTTagCompound tileData
) {
super(handler, ticks); super(handler, ticks);
this.blockID = Blocks.air; this.blockID = Blocks.air;
this.blockMetadata = 0; this.blockMetadata = 0;
@ -44,17 +48,27 @@ public class BlockPostMoveDelayedEvent extends DelayedEvent {
try { try {
if (this.tileEntity != null && this.tileData != null) { if (this.tileEntity != null && this.tileData != null) {
ManipulatorHelper.setBlockSneaky( ManipulatorHelper.setBlockSneaky(
this.world, this.newPosition, this.blockID, this.blockMetadata, this.world,
TileEntity.createAndLoadEntity(this.tileData)); this.newPosition,
this.blockID,
this.blockMetadata,
TileEntity.createAndLoadEntity(this.tileData)
);
} else { } else {
ManipulatorHelper.setBlockSneaky(this.world, this.newPosition, ManipulatorHelper.setBlockSneaky(
this.blockID, this.blockMetadata, this.world,
null); this.newPosition,
this.blockID,
this.blockMetadata,
null
);
} }
super.handler.getQuedDelayedEvents().add(new BlockNotifyDelayedEvent( 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.getQuedDelayedEvents().add(new BlockNotifyDelayedEvent(
super.handler, 0, this.world, this.newPosition)); super.handler, 0, this.world, this.newPosition
));
} catch (final Exception e) { } catch (final Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

View file

@ -17,10 +17,13 @@ public class BlockPreMoveDelayedEvent extends DelayedEvent {
private Vector3 position; private Vector3 position;
private Vector3 newPosition; private Vector3 newPosition;
public BlockPreMoveDelayedEvent(final IDelayedEventHandler handler, public BlockPreMoveDelayedEvent(
final int ticks, final World world, final IDelayedEventHandler handler,
final int ticks,
final World world,
final Vector3 position, final Vector3 position,
final Vector3 newPosition) { final Vector3 newPosition
) {
super(handler, ticks); super(handler, ticks);
this.world = world; this.world = world;
this.position = position; this.position = position;
@ -30,23 +33,37 @@ public class BlockPreMoveDelayedEvent extends DelayedEvent {
@Override @Override
protected void onEvent() { protected void onEvent() {
if (!this.world.isRemote) { 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) { if (tileEntity instanceof ISpecialForceManipulation) {
((ISpecialForceManipulation) tileEntity) ((ISpecialForceManipulation) tileEntity)
.move(this.newPosition.intX(), this.newPosition.intY(), .move(
this.newPosition.intZ()); this.newPosition.intX(),
this.newPosition.intY(),
this.newPosition.intZ()
);
} }
final Block blockID = this.position.getBlock((IBlockAccess) this.world); 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(); final NBTTagCompound tileData = new NBTTagCompound();
if (tileEntity != null) { if (tileEntity != null) {
tileEntity.writeToNBT(tileData); tileEntity.writeToNBT(tileData);
} }
ManipulatorHelper.setBlockSneaky(this.world, this.position, Blocks.air, 0, ManipulatorHelper.setBlockSneaky(
null); this.world, this.position, Blocks.air, 0, null
);
super.handler.getQuedDelayedEvents().add(new BlockPostMoveDelayedEvent( super.handler.getQuedDelayedEvents().add(new BlockPostMoveDelayedEvent(
super.handler, 0, this.world, this.position, this.newPosition, super.handler,
blockID, blockMetadata, tileEntity, tileData)); 0,
this.world,
this.position,
this.newPosition,
blockID,
blockMetadata,
tileEntity,
tileData
));
} }
} }
} }

View file

@ -4,8 +4,7 @@ import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTank;
public class FortronHelper public class FortronHelper {
{
public static Fluid FLUID_FORTRON; public static Fluid FLUID_FORTRON;
public static FluidStack getFortron(final int amount) { public static FluidStack getFortron(final int amount) {

View file

@ -1,11 +1,12 @@
package mffs.fortron; 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.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import icbm.api.IBlockFrequency; import icbm.api.IBlockFrequency;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import mffs.api.fortron.IFortronFrequency; import mffs.api.fortron.IFortronFrequency;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
@ -55,8 +56,8 @@ public class FrequencyGrid {
public Set<IBlockFrequency> get(final int frequency) { public Set<IBlockFrequency> get(final int frequency) {
final Set<IBlockFrequency> set = new HashSet<>(); final Set<IBlockFrequency> set = new HashSet<>();
for (final IBlockFrequency tile : this.get()) { for (final IBlockFrequency tile : this.get()) {
if (tile != null && !((TileEntity) tile).isInvalid() && if (tile != null && !((TileEntity) tile).isInvalid()
tile.getFrequency() == frequency) { && tile.getFrequency() == frequency) {
set.add(tile); set.add(tile);
} }
} }
@ -73,10 +74,14 @@ public class FrequencyGrid {
} else if (((TileEntity) frequency).isInvalid()) { } else if (((TileEntity) frequency).isInvalid()) {
it.remove(); it.remove();
} else { } else {
if (((TileEntity) frequency).getWorldObj().getTileEntity( if (((TileEntity) frequency)
.getWorldObj()
.getTileEntity(
((TileEntity) frequency).xCoord, ((TileEntity) frequency).xCoord,
((TileEntity) frequency).yCoord, ((TileEntity) frequency).yCoord,
((TileEntity) frequency).zCoord) == (TileEntity) frequency) { ((TileEntity) frequency).zCoord
)
== (TileEntity) frequency) {
continue; continue;
} }
it.remove(); it.remove();
@ -87,25 +92,29 @@ public class FrequencyGrid {
} }
} }
public Set<IBlockFrequency> get(final World world, final Vector3 position, final int radius, public Set<IBlockFrequency>
final int frequency) { get(final World world, final Vector3 position, final int radius, final int frequency
) {
final Set set = new HashSet(); final Set set = new HashSet();
for (final IBlockFrequency tileEntity : this.get(frequency)) { for (final IBlockFrequency tileEntity : this.get(frequency)) {
if (((TileEntity) tileEntity).getWorldObj() == world && if (((TileEntity) tileEntity).getWorldObj() == world
Vector3.distance(new Vector3((TileEntity) tileEntity), position) <= radius) { && Vector3.distance(new Vector3((TileEntity) tileEntity), position)
<= radius) {
set.add(tileEntity); set.add(tileEntity);
} }
} }
return set; return set;
} }
public Set<IFortronFrequency> getFortronTiles(final World world, final Vector3 position, public Set<IFortronFrequency> getFortronTiles(
final int radius, final int frequency) { final World world, final Vector3 position, final int radius, final int frequency
) {
final Set set = new HashSet(); final Set set = new HashSet();
for (final IBlockFrequency tileEntity : this.get(frequency)) { for (final IBlockFrequency tileEntity : this.get(frequency)) {
if (((TileEntity) tileEntity).getWorldObj() == world && if (((TileEntity) tileEntity).getWorldObj() == world
tileEntity instanceof IFortronFrequency && && tileEntity instanceof IFortronFrequency
Vector3.distance(new Vector3((TileEntity) tileEntity), position) <= radius) { && Vector3.distance(new Vector3((TileEntity) tileEntity), position)
<= radius) {
set.add(tileEntity); set.add(tileEntity);
} }
} }

View file

@ -19,8 +19,9 @@ public class GuiBiometricIdentifier extends GuiBase {
private TileEntityBiometricIdentifier tileEntity; private TileEntityBiometricIdentifier tileEntity;
private GuiTextField textFieldUsername; private GuiTextField textFieldUsername;
public GuiBiometricIdentifier(final EntityPlayer player, public GuiBiometricIdentifier(
final TileEntityBiometricIdentifier tileEntity) { final EntityPlayer player, final TileEntityBiometricIdentifier tileEntity
) {
super(new ContainerBiometricIdentifier(player, tileEntity), tileEntity); super(new ContainerBiometricIdentifier(player, tileEntity), tileEntity);
this.tileEntity = tileEntity; this.tileEntity = tileEntity;
tileEntity.canUpdate(); tileEntity.canUpdate();
@ -37,9 +38,13 @@ public class GuiBiometricIdentifier extends GuiBase {
for (int i = 0; i < Permission.getPermissions().length; ++i) { for (int i = 0; i < Permission.getPermissions().length; ++i) {
++x; ++x;
this.buttonList.add(new GuiButtonPress( this.buttonList.add(new GuiButtonPress(
i + 1, this.width / 2 - 50 + 20 * x, this.height / 2 - 75 + 20 * y, i + 1,
new Vector2(18.0, 18 * i), this, this.width / 2 - 50 + 20 * x,
Permission.getPermissions()[i].name)); this.height / 2 - 75 + 20 * y,
new Vector2(18.0, 18 * i),
this,
Permission.getPermissions()[i].name
));
if (i % 3 == 0 && i != 0) { if (i % 3 == 0 && i != 0) {
x = 0; x = 0;
++y; ++y;
@ -51,26 +56,31 @@ public class GuiBiometricIdentifier extends GuiBase {
protected void drawGuiContainerForegroundLayer(final int x, final int y) { protected void drawGuiContainerForegroundLayer(final int x, final int y) {
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
this.tileEntity.getInventoryName(), this.tileEntity.getInventoryName(),
this.xSize / 2 - this.fontRendererObj.getStringWidth( this.xSize / 2
this.tileEntity.getInventoryName()) / - this.fontRendererObj.getStringWidth(this.tileEntity.getInventoryName())
2, / 2,
6, 4210752); 6,
4210752
);
this.drawTextWithTooltip("rights", "%1", 8, 32, x, y, 0); this.drawTextWithTooltip("rights", "%1", 8, 32, x, y, 0);
try { try {
if (this.tileEntity.getManipulatingCard() != null) { if (this.tileEntity.getManipulatingCard() != null) {
final ICardIdentification idCard = (ICardIdentification) this.tileEntity.getManipulatingCard() final ICardIdentification idCard
.getItem(); = (ICardIdentification) this.tileEntity.getManipulatingCard().getItem(
);
this.textFieldUsername.drawTextBox(); this.textFieldUsername.drawTextBox();
if (idCard.getUsername(this.tileEntity.getManipulatingCard()) != null) { if (idCard.getUsername(this.tileEntity.getManipulatingCard()) != null) {
for (int i = 0; i < this.buttonList.size(); ++i) { for (int i = 0; i < this.buttonList.size(); ++i) {
if (this.buttonList.get(i) instanceof GuiButtonPress) { 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; button.visible = true;
final int permissionID = i - 1; final int permissionID = i - 1;
if (Permission.getPermission(permissionID) != null) { if (Permission.getPermission(permissionID) != null) {
if (idCard.hasPermission( if (idCard.hasPermission(
this.tileEntity.getManipulatingCard(), this.tileEntity.getManipulatingCard(),
Permission.getPermission(permissionID))) { Permission.getPermission(permissionID)
)) {
button.stuck = true; button.stuck = true;
} else { } else {
button.stuck = false; button.stuck = false;
@ -90,27 +100,30 @@ public class GuiBiometricIdentifier extends GuiBase {
e.printStackTrace(); e.printStackTrace();
} }
super.textFieldFrequency.drawTextBox(); super.textFieldFrequency.drawTextBox();
this.drawTextWithTooltip("master", 28, this.drawTextWithTooltip(
90 + this.fontRendererObj.FONT_HEIGHT / 2, x, y); "master", 28, 90 + this.fontRendererObj.FONT_HEIGHT / 2, x, y
);
super.drawGuiContainerForegroundLayer(x, y); super.drawGuiContainerForegroundLayer(x, y);
} }
@Override @Override
public void updateScreen() { public void updateScreen() {
super.updateScreen(); super.updateScreen();
if (!this.textFieldUsername.isFocused() && if (!this.textFieldUsername.isFocused()
this.tileEntity.getManipulatingCard() != null) { && this.tileEntity.getManipulatingCard() != null) {
final ICardIdentification idCard = (ICardIdentification) this.tileEntity.getManipulatingCard().getItem(); final ICardIdentification idCard
= (ICardIdentification) this.tileEntity.getManipulatingCard().getItem();
if (idCard.getUsername(this.tileEntity.getManipulatingCard()) != null) { if (idCard.getUsername(this.tileEntity.getManipulatingCard()) != null) {
this.textFieldUsername.setText( this.textFieldUsername.setText(
idCard.getUsername(this.tileEntity.getManipulatingCard())); idCard.getUsername(this.tileEntity.getManipulatingCard())
);
} }
} }
} }
@Override @Override
protected void drawGuiContainerBackgroundLayer(final float f, final int x, protected void
final int y) { drawGuiContainerBackgroundLayer(final float f, final int x, final int y) {
super.drawGuiContainerBackgroundLayer(f, x, y); super.drawGuiContainerBackgroundLayer(f, x, y);
this.drawSlot(87, 90); this.drawSlot(87, 90);
this.drawSlot(7, 45); this.drawSlot(7, 45);
@ -129,15 +142,17 @@ public class GuiBiometricIdentifier extends GuiBase {
this.textFieldUsername.textboxKeyTyped(par1, par2); this.textFieldUsername.textboxKeyTyped(par1, par2);
NBTTagCompound nbt = new NBTTagCompound(); NBTTagCompound nbt = new NBTTagCompound();
nbt.setString("username", this.textFieldUsername.getText()); nbt.setString("username", this.textFieldUsername.getText());
ModularForceFieldSystem.channel.sendToServer(new PacketTile( ModularForceFieldSystem.channel.sendToServer(
PacketTile.Type.STRING, new Vector3(this.tileEntity), nbt)); new PacketTile(PacketTile.Type.STRING, new Vector3(this.tileEntity), nbt)
);
} }
@Override @Override
protected void mouseClicked(final int x, final int y, final int par3) { protected void mouseClicked(final int x, final int y, final int par3) {
super.mouseClicked(x, y, par3); super.mouseClicked(x, y, par3);
this.textFieldUsername.mouseClicked(x - super.containerWidth, this.textFieldUsername.mouseClicked(
y - super.containerHeight, par3); x - super.containerWidth, y - super.containerHeight, par3
);
} }
@Override @Override
@ -146,7 +161,9 @@ public class GuiBiometricIdentifier extends GuiBase {
if (guiButton.id > 0) { if (guiButton.id > 0) {
NBTTagCompound nbt = new NBTTagCompound(); NBTTagCompound nbt = new NBTTagCompound();
nbt.setInteger("buttonId", guiButton.id - 1); 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
));
} }
} }
} }

View file

@ -9,16 +9,17 @@ import net.minecraft.client.gui.GuiButton;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import universalelectricity.core.UniversalElectricity;
import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay;
import universalelectricity.core.UniversalElectricity;
import universalelectricity.core.vector.Vector2; import universalelectricity.core.vector.Vector2;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
public class GuiCoercionDeriver extends GuiBase { public class GuiCoercionDeriver extends GuiBase {
private TileEntityCoercionDeriver tileEntity; private TileEntityCoercionDeriver tileEntity;
public GuiCoercionDeriver(final EntityPlayer player, public GuiCoercionDeriver(
final TileEntityCoercionDeriver tileentity) { final EntityPlayer player, final TileEntityCoercionDeriver tileentity
) {
super(new ContainerCoercionDeriver(player, tileentity), tileentity); super(new ContainerCoercionDeriver(player, tileentity), tileentity);
this.tileEntity = tileentity; this.tileEntity = tileentity;
} }
@ -27,18 +28,21 @@ public class GuiCoercionDeriver extends GuiBase {
public void initGui() { public void initGui() {
super.textFieldPos = new Vector2(30.0, 43.0); super.textFieldPos = new Vector2(30.0, 43.0);
super.initGui(); super.initGui();
this.buttonList.add(new GuiButton(1, this.width / 2 - 10, this.buttonList.add(
this.height / 2 - 28, 58, 20, "Derive")); new GuiButton(1, this.width / 2 - 10, this.height / 2 - 28, 58, 20, "Derive")
);
} }
@Override @Override
protected void drawGuiContainerForegroundLayer(final int x, final int y) { protected void drawGuiContainerForegroundLayer(final int x, final int y) {
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
this.tileEntity.getInventoryName(), this.tileEntity.getInventoryName(),
this.xSize / 2 - this.fontRendererObj.getStringWidth( this.xSize / 2
this.tileEntity.getInventoryName()) / - this.fontRendererObj.getStringWidth(this.tileEntity.getInventoryName())
2, / 2,
6, 4210752); 6,
4210752
);
this.drawTextWithTooltip("frequency", "%1:", 8, 30, x, y); this.drawTextWithTooltip("frequency", "%1:", 8, 30, x, y);
super.textFieldFrequency.drawTextBox(); super.textFieldFrequency.drawTextBox();
GL11.glPushMatrix(); GL11.glPushMatrix();
@ -53,38 +57,58 @@ public class GuiCoercionDeriver extends GuiBase {
} }
} }
this.fontRendererObj.drawString( 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( 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
);
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
UnitDisplay.getDisplayShort( UnitDisplay.getDisplayShort(
1000.0, UnitDisplay.Unit.WATT), this.tileEntity.getVoltage(), UnitDisplay.Unit.VOLTAGE
85, 50, 4210752); ),
this.fontRendererObj.drawString( 85,
UnitDisplay.getDisplayShort( 60,
this.tileEntity.getVoltage(), 4210752
UnitDisplay.Unit.VOLTAGE), );
85, 60, 4210752);
this.drawTextWithTooltip( this.drawTextWithTooltip(
"progress", "%1: " + (this.tileEntity.isActive() ? "Running" : "Idle"), "progress",
8, 70, x, y); "%1: " + (this.tileEntity.isActive() ? "Running" : "Idle"),
this.drawTextWithTooltip("fortron", 8,
"%1: " + 70,
UnitDisplay.getDisplayShort( x,
this.tileEntity.getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO, y
UnitDisplay.Unit.JOULES), );
8, 105, 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( this.fontRendererObj.drawString(
"§2+" + UnitDisplay.getDisplayShort( "§2+"
this.tileEntity.getProductionRate() * 20, + UnitDisplay.getDisplayShort(
UnitDisplay.Unit.JOULES), this.tileEntity.getProductionRate() * 20, UnitDisplay.Unit.JOULES
120, 117, 4210752); ),
120,
117,
4210752
);
super.drawGuiContainerForegroundLayer(x, y); super.drawGuiContainerForegroundLayer(x, y);
} }
@Override @Override
protected void drawGuiContainerBackgroundLayer(final float f, final int x, protected void
final int y) { drawGuiContainerBackgroundLayer(final float f, final int x, final int y) {
super.drawGuiContainerBackgroundLayer(f, x, y); super.drawGuiContainerBackgroundLayer(f, x, y);
this.drawSlot(153, 46); this.drawSlot(153, 46);
this.drawSlot(153, 66); this.drawSlot(153, 66);
@ -93,18 +117,23 @@ public class GuiCoercionDeriver extends GuiBase {
this.drawSlot(8, 82, SlotType.BATTERY); this.drawSlot(8, 82, SlotType.BATTERY);
this.drawSlot(28, 82); this.drawSlot(28, 82);
this.drawBar(50, 84, 1.0f); this.drawBar(50, 84, 1.0f);
this.drawForce(8, 115, this.drawForce(
this.tileEntity.getFortronEnergy() / 8,
(float) this.tileEntity.getFortronCapacity()); 115,
this.tileEntity.getFortronEnergy()
/ (float) this.tileEntity.getFortronCapacity()
);
} }
@Override @Override
protected void actionPerformed(final GuiButton guibutton) { protected void actionPerformed(final GuiButton guibutton) {
super.actionPerformed(guibutton); super.actionPerformed(guibutton);
if (guibutton.id == 1) { if (guibutton.id == 1) {
ModularForceFieldSystem.channel.sendToServer( ModularForceFieldSystem.channel.sendToServer(new PacketTile(
new PacketTile(PacketTile.Type.TOGGLE_MODE, PacketTile.Type.TOGGLE_MODE,
new Vector3(this.tileEntity), new NBTTagCompound())); new Vector3(this.tileEntity),
new NBTTagCompound()
));
} }
} }
} }

View file

@ -14,9 +14,9 @@ import universalelectricity.prefab.vector.Region2;
public class GuiForceFieldProjector extends GuiBase { public class GuiForceFieldProjector extends GuiBase {
private TileEntityForceFieldProjector tileEntity; private TileEntityForceFieldProjector tileEntity;
public GuiForceFieldProjector(final EntityPlayer player, public GuiForceFieldProjector(
final TileEntityForceFieldProjector final EntityPlayer player, final TileEntityForceFieldProjector tileEntity
tileEntity) { ) {
super(new ContainerForceFieldProjector(player, tileEntity), tileEntity); super(new ContainerForceFieldProjector(player, tileEntity), tileEntity);
this.tileEntity = tileEntity; this.tileEntity = tileEntity;
} }
@ -25,97 +25,130 @@ public class GuiForceFieldProjector extends GuiBase {
public void initGui() { public void initGui() {
super.textFieldPos = new Vector2(48.0, 91.0); super.textFieldPos = new Vector2(48.0, 91.0);
super.initGui(); 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( super.tooltips.put(
new Region2(new Vector2(90.0, 17.0), new Vector2(90.0, 17.0).add(18.0)), new Region2(new Vector2(117.0, 44.0), new Vector2(117.0, 44.0).add(18.0)),
"Up"); "Mode"
super.tooltips.put(new Region2(new Vector2(144.0, 17.0), );
new Vector2(144.0, 17.0).add(18.0)), super.tooltips.put(
"Up"); 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( super.tooltips.put(
new Region2(new Vector2(90.0, 71.0), new Vector2(90.0, 71.0).add(18.0)), new Region2(new Vector2(90.0, 71.0), new Vector2(90.0, 71.0).add(18.0)),
"Down"); "Down"
super.tooltips.put(new Region2(new Vector2(144.0, 71.0), );
new Vector2(144.0, 71.0).add(18.0)), super.tooltips.put(
"Down"); new Region2(new Vector2(144.0, 71.0), new Vector2(144.0, 71.0).add(18.0)),
super.tooltips.put(new Region2(new Vector2(108.0, 17.0), "Down"
new Vector2(108.0, 17.0).add(18.0)), );
"Front"); super.tooltips.put(
super.tooltips.put(new Region2(new Vector2(126.0, 17.0), new Region2(new Vector2(108.0, 17.0), new Vector2(108.0, 17.0).add(18.0)),
new Vector2(126.0, 17.0).add(18.0)), "Front"
"Front"); );
super.tooltips.put(new Region2(new Vector2(108.0, 71.0), super.tooltips.put(
new Vector2(108.0, 71.0).add(18.0)), new Region2(new Vector2(126.0, 17.0), new Vector2(126.0, 17.0).add(18.0)),
"Back"); "Front"
super.tooltips.put(new Region2(new Vector2(126.0, 71.0), );
new Vector2(126.0, 71.0).add(18.0)), super.tooltips.put(
"Back"); new Region2(new Vector2(108.0, 71.0), new Vector2(108.0, 71.0).add(18.0)),
super.tooltips.put(new Region2(new Vector2(90.0, 35.0), "Back"
new Vector2(108.0, 35.0).add(18.0)), );
"Left"); super.tooltips.put(
super.tooltips.put(new Region2(new Vector2(90.0, 53.0), new Region2(new Vector2(126.0, 71.0), new Vector2(126.0, 71.0).add(18.0)),
new Vector2(108.0, 53.0).add(18.0)), "Back"
"Left"); );
super.tooltips.put(new Region2(new Vector2(144.0, 35.0), super.tooltips.put(
new Vector2(144.0, 35.0).add(18.0)), new Region2(new Vector2(90.0, 35.0), new Vector2(108.0, 35.0).add(18.0)),
"Right"); "Left"
super.tooltips.put(new Region2(new Vector2(144.0, 53.0), );
new Vector2(144.0, 53.0).add(18.0)), super.tooltips.put(
"Right"); 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 @Override
protected void drawGuiContainerForegroundLayer(final int x, final int y) { protected void drawGuiContainerForegroundLayer(final int x, final int y) {
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
this.tileEntity.getInventoryName(), this.tileEntity.getInventoryName(),
this.xSize / 2 - this.fontRendererObj.getStringWidth( this.xSize / 2
this.tileEntity.getInventoryName()) / - this.fontRendererObj.getStringWidth(this.tileEntity.getInventoryName())
2, / 2,
6, 4210752); 6,
4210752
);
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glRotatef(-90.0f, 0.0f, 0.0f, 1.0f); GL11.glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
this.tileEntity this.tileEntity
.getDirection((IBlockAccess)this.tileEntity.getWorldObj(), .getDirection(
this.tileEntity.xCoord, this.tileEntity.yCoord, (IBlockAccess) this.tileEntity.getWorldObj(),
this.tileEntity.zCoord) this.tileEntity.xCoord,
this.tileEntity.yCoord,
this.tileEntity.zCoord
)
.name(), .name(),
-63, 8, 4210752); -63,
8,
4210752
);
GL11.glPopMatrix(); GL11.glPopMatrix();
this.drawTextWithTooltip("matrix", 32, 20, x, y); this.drawTextWithTooltip("matrix", 32, 20, x, y);
this.drawTextWithTooltip("frequency", "%1:", 8, 76, x, y); this.drawTextWithTooltip("frequency", "%1:", 8, 76, x, y);
super.textFieldFrequency.drawTextBox(); super.textFieldFrequency.drawTextBox();
this.drawTextWithTooltip("fortron", this.drawTextWithTooltip(
"%1: " + "fortron",
UnitDisplay.getDisplayShort( "%1: "
this.tileEntity.getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO, + UnitDisplay.getDisplayShort(
UnitDisplay.Unit.JOULES) + this.tileEntity.getFortronEnergy()
"/" + * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
UnitDisplay.getDisplayShort( UnitDisplay.Unit.JOULES
this.tileEntity.getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO, )
UnitDisplay.Unit.JOULES), + "/"
8, 110, x, y); + UnitDisplay.getDisplayShort(
this.tileEntity.getFortronCapacity()
* TileEntityCoercionDeriver.FORTRON_UE_RATIO,
UnitDisplay.Unit.JOULES
),
8,
110,
x,
y
);
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
"§4-" + UnitDisplay.getDisplayShort( "§4-"
this.tileEntity.getFortronCost() * 20, + UnitDisplay.getDisplayShort(
UnitDisplay.Unit.JOULES), this.tileEntity.getFortronCost() * 20, UnitDisplay.Unit.JOULES
120, 121, 4210752); ),
120,
121,
4210752
);
super.drawGuiContainerForegroundLayer(x, y); super.drawGuiContainerForegroundLayer(x, y);
} }
@Override @Override
protected void drawGuiContainerBackgroundLayer(final float f, final int x, protected void
final int y) { drawGuiContainerBackgroundLayer(final float f, final int x, final int y) {
super.drawGuiContainerBackgroundLayer(f, x, y); super.drawGuiContainerBackgroundLayer(f, x, y);
this.drawSlot(9, 88); this.drawSlot(9, 88);
this.drawSlot(27, 88); this.drawSlot(27, 88);
this.drawSlot(117, 44, SlotType.NONE, 1.0f, 0.4f, 0.4f); this.drawSlot(117, 44, SlotType.NONE, 1.0f, 0.4f, 0.4f);
for (int xSlot = 0; xSlot < 4; ++xSlot) { for (int xSlot = 0; xSlot < 4; ++xSlot) {
for (int ySlot = 0; ySlot < 4; ++ySlot) { for (int ySlot = 0; ySlot < 4; ++ySlot) {
if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2) && if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2)
(xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) { && (xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) {
SlotType type = SlotType.NONE; SlotType type = SlotType.NONE;
if (xSlot == 0 && ySlot == 0) { if (xSlot == 0 && ySlot == 0) {
type = SlotType.ARR_UP_LEFT; type = SlotType.ARR_UP_LEFT;
@ -143,9 +176,14 @@ public class GuiForceFieldProjector extends GuiBase {
this.drawSlot(18 + 18 * xSlot, 35 + 18 * ySlot); this.drawSlot(18 + 18 * xSlot, 35 + 18 * ySlot);
} }
} }
this.drawForce(8, 120, this.drawForce(
Math.min(this.tileEntity.getFortronEnergy() / 8,
(float)this.tileEntity.getFortronCapacity(), 120,
1.0f)); Math.min(
this.tileEntity.getFortronEnergy()
/ (float) this.tileEntity.getFortronCapacity(),
1.0f
)
);
} }
} }

View file

@ -23,8 +23,9 @@ import universalelectricity.prefab.vector.Region2;
public class GuiForceManipulator extends GuiBase { public class GuiForceManipulator extends GuiBase {
private TileEntityForceManipulator tileEntity; private TileEntityForceManipulator tileEntity;
public GuiForceManipulator(final EntityPlayer player, public GuiForceManipulator(
final TileEntityForceManipulator tileEntity) { final EntityPlayer player, final TileEntityForceManipulator tileEntity
) {
super(new ContainerForceManipulator(player, tileEntity), tileEntity); super(new ContainerForceManipulator(player, tileEntity), tileEntity);
this.tileEntity = tileEntity; this.tileEntity = tileEntity;
} }
@ -33,98 +34,141 @@ public class GuiForceManipulator extends GuiBase {
public void initGui() { public void initGui() {
super.textFieldPos = new Vector2(111.0, 93.0); super.textFieldPos = new Vector2(111.0, 93.0);
super.initGui(); super.initGui();
this.buttonList.add(new GuiButton(1, this.width / 2 - 60,
this.height / 2 - 22, 40, 20, "Reset"));
this.buttonList.add( this.buttonList.add(
new GuiIcon(2, this.width / 2 - 82, this.height / 2 - 82, new GuiButton(1, this.width / 2 - 60, this.height / 2 - 22, 40, 20, "Reset")
new ItemStack[] { null, new ItemStack(Items.redstone), );
new ItemStack(Blocks.redstone_block) })); this.buttonList.add(new GuiIcon(
this.buttonList.add( 2,
new GuiIcon(3, this.width / 2 - 82, this.height / 2 - 60, this.width / 2 - 82,
new ItemStack[] { null, new ItemStack(Blocks.anvil) })); this.height / 2 - 82,
super.tooltips.put(new Region2(new Vector2(117.0, 44.0), new ItemStack[] { null,
new Vector2(117.0, 44.0).add(18.0)), new ItemStack(Items.redstone),
"Mode"); 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( super.tooltips.put(
new Region2(new Vector2(90.0, 17.0), new Vector2(90.0, 17.0).add(18.0)), new Region2(new Vector2(117.0, 44.0), new Vector2(117.0, 44.0).add(18.0)),
"Up"); "Mode"
super.tooltips.put(new Region2(new Vector2(144.0, 17.0), );
new Vector2(144.0, 17.0).add(18.0)), super.tooltips.put(
"Up"); 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( super.tooltips.put(
new Region2(new Vector2(90.0, 71.0), new Vector2(90.0, 71.0).add(18.0)), new Region2(new Vector2(90.0, 71.0), new Vector2(90.0, 71.0).add(18.0)),
"Down"); "Down"
super.tooltips.put(new Region2(new Vector2(144.0, 71.0), );
new Vector2(144.0, 71.0).add(18.0)), super.tooltips.put(
"Down"); new Region2(new Vector2(144.0, 71.0), new Vector2(144.0, 71.0).add(18.0)),
super.tooltips.put(new Region2(new Vector2(108.0, 17.0), "Down"
new Vector2(108.0, 17.0).add(18.0)), );
"Front"); super.tooltips.put(
super.tooltips.put(new Region2(new Vector2(126.0, 17.0), new Region2(new Vector2(108.0, 17.0), new Vector2(108.0, 17.0).add(18.0)),
new Vector2(126.0, 17.0).add(18.0)), "Front"
"Front"); );
super.tooltips.put(new Region2(new Vector2(108.0, 71.0), super.tooltips.put(
new Vector2(108.0, 71.0).add(18.0)), new Region2(new Vector2(126.0, 17.0), new Vector2(126.0, 17.0).add(18.0)),
"Back"); "Front"
super.tooltips.put(new Region2(new Vector2(126.0, 71.0), );
new Vector2(126.0, 71.0).add(18.0)), super.tooltips.put(
"Back"); new Region2(new Vector2(108.0, 71.0), new Vector2(108.0, 71.0).add(18.0)),
super.tooltips.put(new Region2(new Vector2(90.0, 35.0), "Back"
new Vector2(108.0, 35.0).add(18.0)), );
"Left"); super.tooltips.put(
super.tooltips.put(new Region2(new Vector2(90.0, 53.0), new Region2(new Vector2(126.0, 71.0), new Vector2(126.0, 71.0).add(18.0)),
new Vector2(108.0, 53.0).add(18.0)), "Back"
"Left"); );
super.tooltips.put(new Region2(new Vector2(144.0, 35.0), super.tooltips.put(
new Vector2(144.0, 35.0).add(18.0)), new Region2(new Vector2(90.0, 35.0), new Vector2(108.0, 35.0).add(18.0)),
"Right"); "Left"
super.tooltips.put(new Region2(new Vector2(144.0, 53.0), );
new Vector2(144.0, 53.0).add(18.0)), super.tooltips.put(
"Right"); 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 @Override
protected void drawGuiContainerForegroundLayer(final int x, final int y) { protected void drawGuiContainerForegroundLayer(final int x, final int y) {
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
this.tileEntity.getInventoryName(), this.tileEntity.getInventoryName(),
this.xSize / 2 - this.fontRendererObj.getStringWidth( this.xSize / 2
this.tileEntity.getInventoryName()) / - this.fontRendererObj.getStringWidth(this.tileEntity.getInventoryName())
2, / 2,
6, 4210752); 6,
4210752
);
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glRotatef(-90.0f, 0.0f, 0.0f, 1.0f); GL11.glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
this.tileEntity this.tileEntity
.getDirection((IBlockAccess) this.tileEntity.getWorldObj(), .getDirection(
this.tileEntity.xCoord, this.tileEntity.yCoord, (IBlockAccess) this.tileEntity.getWorldObj(),
this.tileEntity.zCoord) this.tileEntity.xCoord,
this.tileEntity.yCoord,
this.tileEntity.zCoord
)
.name(), .name(),
-100, 10, 4210752); -100,
10,
4210752
);
GL11.glPopMatrix(); GL11.glPopMatrix();
this.fontRendererObj.drawString("Anchor:", 30, 60, 4210752); this.fontRendererObj.drawString("Anchor:", 30, 60, 4210752);
if (this.tileEntity.anchor != null) { if (this.tileEntity.anchor != null) {
this.fontRendererObj.drawString(this.tileEntity.anchor.intX() + ", " + this.fontRendererObj.drawString(
this.tileEntity.anchor.intY() + ", " + this.tileEntity.anchor.intX() + ", " + this.tileEntity.anchor.intY()
this.tileEntity.anchor.intZ(), + ", " + this.tileEntity.anchor.intZ(),
30, 72, 4210752); 30,
72,
4210752
);
} }
super.textFieldFrequency.drawTextBox(); super.textFieldFrequency.drawTextBox();
this.drawTextWithTooltip("fortron", this.drawTextWithTooltip(
"%1: " + "fortron",
UnitDisplay.getDisplayShort( "%1: "
this.tileEntity.getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO, + UnitDisplay.getDisplayShort(
UnitDisplay.Unit.JOULES) this.tileEntity.getFortronEnergy()
+ * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
"/" + UnitDisplay.Unit.JOULES
UnitDisplay.getDisplayShort( )
this.tileEntity.getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO, + "/"
UnitDisplay.Unit.JOULES), + UnitDisplay.getDisplayShort(
8, 110, x, y); this.tileEntity.getFortronCapacity()
* TileEntityCoercionDeriver.FORTRON_UE_RATIO,
UnitDisplay.Unit.JOULES
),
8,
110,
x,
y
);
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
"§4-" + UnitDisplay.getDisplayShort( "§4-"
this.tileEntity.getFortronCost(), + UnitDisplay.getDisplayShort(
UnitDisplay.Unit.JOULES), this.tileEntity.getFortronCost(), UnitDisplay.Unit.JOULES
120, 121, 4210752); ),
120,
121,
4210752
);
super.drawGuiContainerForegroundLayer(x, y); super.drawGuiContainerForegroundLayer(x, y);
} }
@ -132,21 +176,20 @@ public class GuiForceManipulator extends GuiBase {
public void updateScreen() { public void updateScreen() {
super.updateScreen(); super.updateScreen();
((GuiIcon) this.buttonList.get(2)).setIndex(this.tileEntity.displayMode); ((GuiIcon) this.buttonList.get(2)).setIndex(this.tileEntity.displayMode);
((GuiIcon) this.buttonList.get(3)) ((GuiIcon) this.buttonList.get(3)).setIndex(this.tileEntity.doAnchor ? 1 : 0);
.setIndex(this.tileEntity.doAnchor ? 1 : 0);
} }
@Override @Override
protected void drawGuiContainerBackgroundLayer(final float f, final int x, protected void
final int y) { drawGuiContainerBackgroundLayer(final float f, final int x, final int y) {
super.drawGuiContainerBackgroundLayer(f, x, y); super.drawGuiContainerBackgroundLayer(f, x, y);
this.drawSlot(72, 90); this.drawSlot(72, 90);
this.drawSlot(90, 90); this.drawSlot(90, 90);
this.drawSlot(117, 44, SlotType.NONE, 1.0f, 0.4f, 0.4f); this.drawSlot(117, 44, SlotType.NONE, 1.0f, 0.4f, 0.4f);
for (int xSlot = 0; xSlot < 4; ++xSlot) { for (int xSlot = 0; xSlot < 4; ++xSlot) {
for (int ySlot = 0; ySlot < 4; ++ySlot) { for (int ySlot = 0; ySlot < 4; ++ySlot) {
if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2) && if ((xSlot != 1 || ySlot != 1) && (xSlot != 2 || ySlot != 2)
(xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) { && (xSlot != 1 || ySlot != 2) && (xSlot != 2 || ySlot != 1)) {
SlotType type = SlotType.NONE; SlotType type = SlotType.NONE;
if (xSlot == 0 && ySlot == 0) { if (xSlot == 0 && ySlot == 0) {
type = SlotType.ARR_UP_LEFT; type = SlotType.ARR_UP_LEFT;
@ -174,10 +217,15 @@ public class GuiForceManipulator extends GuiBase {
this.drawSlot(30 + 18 * xSlot, 18 + 18 * ySlot); this.drawSlot(30 + 18 * xSlot, 18 + 18 * ySlot);
} }
} }
this.drawForce(8, 120, this.drawForce(
Math.min(this.tileEntity.getFortronEnergy() / 8,
(float) this.tileEntity.getFortronCapacity(), 120,
1.0f)); Math.min(
this.tileEntity.getFortronEnergy()
/ (float) this.tileEntity.getFortronCapacity(),
1.0f
)
);
} }
@Override @Override
@ -189,7 +237,8 @@ public class GuiForceManipulator extends GuiBase {
if (guiButton.id == 1 || guiButton.id == 2 || guiButton.id == 3) { if (guiButton.id == 1 || guiButton.id == 2 || guiButton.id == 3) {
ModularForceFieldSystem.channel.sendToServer(new PacketTile( ModularForceFieldSystem.channel.sendToServer(new PacketTile(
PacketTile.Type.TOGGLE_MODE, new Vector3(this.tileEntity), nbt)); PacketTile.Type.TOGGLE_MODE, new Vector3(this.tileEntity), nbt
));
} }
} }
} }

View file

@ -18,8 +18,9 @@ import universalelectricity.core.vector.Vector3;
public class GuiFortronCapacitor extends GuiBase { public class GuiFortronCapacitor extends GuiBase {
private TileEntityFortronCapacitor tileEntity; private TileEntityFortronCapacitor tileEntity;
public GuiFortronCapacitor(final EntityPlayer player, public GuiFortronCapacitor(
final TileEntityFortronCapacitor tileentity) { final EntityPlayer player, final TileEntityFortronCapacitor tileentity
) {
super(new ContainerFortronCapacitor(player, tileentity), tileentity); super(new ContainerFortronCapacitor(player, tileentity), tileentity);
this.tileEntity = tileentity; this.tileEntity = tileentity;
} }
@ -29,69 +30,96 @@ public class GuiFortronCapacitor extends GuiBase {
super.textFieldPos = new Vector2(50.0, 76.0); super.textFieldPos = new Vector2(50.0, 76.0);
super.initGui(); super.initGui();
this.buttonList.add(new GuiButtonPressTransferMode( this.buttonList.add(new GuiButtonPressTransferMode(
1, this.width / 2 + 15, this.height / 2 - 37, this, this.tileEntity)); 1, this.width / 2 + 15, this.height / 2 - 37, this, this.tileEntity
));
} }
@Override @Override
protected void drawGuiContainerForegroundLayer(final int x, final int y) { protected void drawGuiContainerForegroundLayer(final int x, final int y) {
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
this.tileEntity.getInventoryName(), this.tileEntity.getInventoryName(),
this.xSize / 2 - this.fontRendererObj.getStringWidth( this.xSize / 2
this.tileEntity.getInventoryName()) / - this.fontRendererObj.getStringWidth(this.tileEntity.getInventoryName())
2, / 2,
6, 4210752); 6,
4210752
);
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glRotatef(-90.0f, 0.0f, 0.0f, 1.0f); GL11.glRotatef(-90.0f, 0.0f, 0.0f, 1.0f);
this.drawTextWithTooltip("upgrade", -95, 140, x, y); this.drawTextWithTooltip("upgrade", -95, 140, x, y);
GL11.glPopMatrix(); 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( this.drawTextWithTooltip(
"range", "%1: " + this.tileEntity.getTransmissionRange(), 8, 52, x, y); "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); this.drawTextWithTooltip("frequency", "%1:", 8, 63, x, y);
super.textFieldFrequency.drawTextBox(); super.textFieldFrequency.drawTextBox();
this.drawTextWithTooltip("fortron", "%1:", 8, 95, x, y); this.drawTextWithTooltip("fortron", "%1:", 8, 95, x, y);
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
UnitDisplay.getDisplayShort( UnitDisplay.getDisplayShort(
this.tileEntity.getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO, this.tileEntity.getFortronEnergy()
UnitDisplay.Unit.JOULES) + * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
"/" + UnitDisplay.Unit.JOULES
UnitDisplay.getDisplayShort( ) + "/"
this.tileEntity.getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO, + UnitDisplay.getDisplayShort(
UnitDisplay.Unit.JOULES), this.tileEntity.getFortronCapacity()
8, 105, 4210752); * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
UnitDisplay.Unit.JOULES
),
8,
105,
4210752
);
super.drawGuiContainerForegroundLayer(x, y); super.drawGuiContainerForegroundLayer(x, y);
} }
@Override @Override
protected void drawGuiContainerBackgroundLayer(final float f, final int x, protected void
final int y) { drawGuiContainerBackgroundLayer(final float f, final int x, final int y) {
super.drawGuiContainerBackgroundLayer(f, x, y); super.drawGuiContainerBackgroundLayer(f, x, y);
this.drawSlot(153, 46); this.drawSlot(153, 46);
this.drawSlot(153, 66); this.drawSlot(153, 66);
this.drawSlot(153, 86); this.drawSlot(153, 86);
this.drawSlot(8, 73); this.drawSlot(8, 73);
this.drawSlot(26, 73); this.drawSlot(26, 73);
this.drawForce(8, 115, this.drawForce(
Math.min(this.tileEntity.getFortronEnergy() / 8,
(float)this.tileEntity.getFortronCapacity(), 115,
1.0f)); Math.min(
this.tileEntity.getFortronEnergy()
/ (float) this.tileEntity.getFortronCapacity(),
1.0f
)
);
} }
@Override @Override
protected void actionPerformed(final GuiButton guibutton) { protected void actionPerformed(final GuiButton guibutton) {
super.actionPerformed(guibutton); super.actionPerformed(guibutton);
if (guibutton.id == 1) { if (guibutton.id == 1) {
ModularForceFieldSystem.channel.sendToServer( ModularForceFieldSystem.channel.sendToServer(new PacketTile(
new PacketTile(PacketTile.Type.TOGGLE_MODE, PacketTile.Type.TOGGLE_MODE,
new Vector3(this.tileEntity), new NBTTagCompound())); new Vector3(this.tileEntity),
new NBTTagCompound()
));
} }
} }
} }

View file

@ -16,8 +16,9 @@ import universalelectricity.core.vector.Vector3;
public class GuiInterdictionMatrix extends GuiBase { public class GuiInterdictionMatrix extends GuiBase {
private TileEntityInterdictionMatrix tileEntity; private TileEntityInterdictionMatrix tileEntity;
public GuiInterdictionMatrix(final EntityPlayer player, public GuiInterdictionMatrix(
final TileEntityInterdictionMatrix tileEntity) { final EntityPlayer player, final TileEntityInterdictionMatrix tileEntity
) {
super(new ContainerInterdictionMatrix(player, tileEntity), tileEntity); super(new ContainerInterdictionMatrix(player, tileEntity), tileEntity);
this.tileEntity = tileEntity; this.tileEntity = tileEntity;
} }
@ -26,17 +27,20 @@ public class GuiInterdictionMatrix extends GuiBase {
public void initGui() { public void initGui() {
super.textFieldPos = new Vector2(110.0, 91.0); super.textFieldPos = new Vector2(110.0, 91.0);
super.initGui(); super.initGui();
this.buttonList.add(new GuiButton(1, this.width / 2 - 80, this.buttonList.add(
this.height / 2 - 65, 50, 20, "Banned")); new GuiButton(1, this.width / 2 - 80, this.height / 2 - 65, 50, 20, "Banned")
);
} }
@Override @Override
protected void actionPerformed(final GuiButton guiButton) { protected void actionPerformed(final GuiButton guiButton) {
super.actionPerformed(guiButton); super.actionPerformed(guiButton);
if (guiButton.id == 1) { if (guiButton.id == 1) {
ModularForceFieldSystem.channel.sendToServer( ModularForceFieldSystem.channel.sendToServer(new PacketTile(
new PacketTile(PacketTile.Type.TOGGLE_MODE, PacketTile.Type.TOGGLE_MODE,
new Vector3(this.tileEntity), new NBTTagCompound())); new Vector3(this.tileEntity),
new NBTTagCompound()
));
} }
} }
@ -44,14 +48,18 @@ public class GuiInterdictionMatrix extends GuiBase {
protected void drawGuiContainerForegroundLayer(final int x, final int y) { protected void drawGuiContainerForegroundLayer(final int x, final int y) {
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
this.tileEntity.getInventoryName(), this.tileEntity.getInventoryName(),
this.xSize / 2 - this.fontRendererObj.getStringWidth( this.xSize / 2
this.tileEntity.getInventoryName()) / - this.fontRendererObj.getStringWidth(this.tileEntity.getInventoryName())
2, / 2,
6, 4210752); 6,
this.drawTextWithTooltip("warn", "%1: " + this.tileEntity.getWarningRange(), 4210752
35, 19, x, y); );
this.drawTextWithTooltip( this.drawTextWithTooltip(
"action", "%1: " + this.tileEntity.getActionRange(), 100, 19, x, y); "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); this.drawTextWithTooltip("filterMode", "%1:", 9, 32, x, y);
if (!this.tileEntity.isBanMode()) { if (!this.tileEntity.isBanMode()) {
if (this.buttonList.get(1) instanceof GuiButton) { if (this.buttonList.get(1) instanceof GuiButton) {
@ -62,27 +70,40 @@ public class GuiInterdictionMatrix extends GuiBase {
} }
this.drawTextWithTooltip("frequency", "%1:", 8, 93, x, y); this.drawTextWithTooltip("frequency", "%1:", 8, 93, x, y);
super.textFieldFrequency.drawTextBox(); super.textFieldFrequency.drawTextBox();
this.drawTextWithTooltip("fortron", this.drawTextWithTooltip(
"%1: " + "fortron",
UnitDisplay.getDisplayShort( "%1: "
this.tileEntity.getFortronEnergy() * TileEntityCoercionDeriver.FORTRON_UE_RATIO, + UnitDisplay.getDisplayShort(
UnitDisplay.Unit.JOULES) + this.tileEntity.getFortronEnergy()
"/" + * TileEntityCoercionDeriver.FORTRON_UE_RATIO,
UnitDisplay.getDisplayShort( UnitDisplay.Unit.JOULES
this.tileEntity.getFortronCapacity() * TileEntityCoercionDeriver.FORTRON_UE_RATIO, )
UnitDisplay.Unit.JOULES), + "/"
8, 110, x, y); + UnitDisplay.getDisplayShort(
this.tileEntity.getFortronCapacity()
* TileEntityCoercionDeriver.FORTRON_UE_RATIO,
UnitDisplay.Unit.JOULES
),
8,
110,
x,
y
);
this.fontRendererObj.drawString( this.fontRendererObj.drawString(
"§4-" + UnitDisplay.getDisplayShort( "§4-"
this.tileEntity.getFortronCost() * 20, + UnitDisplay.getDisplayShort(
UnitDisplay.Unit.JOULES), this.tileEntity.getFortronCost() * 20, UnitDisplay.Unit.JOULES
120, 121, 4210752); ),
120,
121,
4210752
);
super.drawGuiContainerForegroundLayer(x, y); super.drawGuiContainerForegroundLayer(x, y);
} }
@Override @Override
protected void drawGuiContainerBackgroundLayer(final float var1, final int x, protected void
final int y) { drawGuiContainerBackgroundLayer(final float var1, final int x, final int y) {
super.drawGuiContainerBackgroundLayer(var1, x, y); super.drawGuiContainerBackgroundLayer(var1, x, y);
for (int var2 = 0; var2 < 2; ++var2) { for (int var2 = 0; var2 < 2; ++var2) {
for (int var3 = 0; var3 < 4; ++var3) { for (int var3 = 0; var3 < 4; ++var3) {
@ -98,9 +119,14 @@ public class GuiInterdictionMatrix extends GuiBase {
} }
this.drawSlot(68, 88); this.drawSlot(68, 88);
this.drawSlot(86, 88); this.drawSlot(86, 88);
this.drawForce(8, 120, this.drawForce(
Math.min(this.tileEntity.getFortronEnergy() / 8,
(float)this.tileEntity.getFortronCapacity(), 120,
1.0f)); Math.min(
this.tileEntity.getFortronEnergy()
/ (float) this.tileEntity.getFortronCapacity(),
1.0f
)
);
} }
} }

View file

@ -17,9 +17,14 @@ public class GuiButtonPress extends GuiButton {
public boolean stuck; public boolean stuck;
private GuiBase mainGui; private GuiBase mainGui;
public GuiButtonPress(final int id, final int x, final int y, public GuiButtonPress(
final Vector2 offset, final GuiBase mainGui, final int id,
final String name) { final int x,
final int y,
final Vector2 offset,
final GuiBase mainGui,
final String name
) {
super(id, x, y, 18, 18, name); super(id, x, y, 18, 18, name);
this.offset = new Vector2(); this.offset = new Vector2();
this.stuck = false; this.stuck = false;
@ -27,13 +32,17 @@ public class GuiButtonPress extends GuiButton {
this.mainGui = mainGui; this.mainGui = mainGui;
} }
public GuiButtonPress(final int id, final int x, final int y, public GuiButtonPress(
final Vector2 offset, final GuiBase mainGui) { final int id,
final int x,
final int y,
final Vector2 offset,
final GuiBase mainGui
) {
this(id, x, y, offset, mainGui, ""); this(id, x, y, offset, mainGui, "");
} }
public GuiButtonPress(final int id, final int x, final int y, public GuiButtonPress(final int id, final int x, final int y, final Vector2 offset) {
final Vector2 offset) {
this(id, x, y, offset, null, ""); this(id, x, y, offset, null, "");
} }
@ -42,48 +51,62 @@ public class GuiButtonPress extends GuiButton {
} }
@Override @Override
public void drawButton(final Minecraft minecraft, final int x, public void drawButton(final Minecraft minecraft, final int x, final int y) {
final int y) {
if (this.visible) { if (this.visible) {
Minecraft.getMinecraft().renderEngine.bindTexture( Minecraft.getMinecraft().renderEngine.bindTexture(
new ResourceLocation("mffs", "textures/gui/gui_button.png")); new ResourceLocation("mffs", "textures/gui/gui_button.png")
);
if (this.stuck) { if (this.stuck) {
GL11.glColor4f(0.6f, 0.6f, 0.6f, 1.0f); GL11.glColor4f(0.6f, 0.6f, 0.6f, 1.0f);
} else if (this.isPointInRegion(this.xPosition, this.yPosition, } else if (this.isPointInRegion(
this.width, this.height, x, y)) { this.xPosition, this.yPosition, this.width, this.height, x, y
)) {
GL11.glColor4f(0.85f, 0.85f, 0.85f, 1.0f); GL11.glColor4f(0.85f, 0.85f, 0.85f, 1.0f);
} else { } else {
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
} }
this.drawTexturedModalRect(this.xPosition, this.yPosition, this.drawTexturedModalRect(
this.offset.intX(), this.offset.intY(), this.xPosition,
this.width, this.height); this.yPosition,
this.offset.intX(),
this.offset.intY(),
this.width,
this.height
);
this.mouseDragged(minecraft, x, y); this.mouseDragged(minecraft, x, y);
} }
} }
@Override @Override
protected void mouseDragged(final Minecraft minecraft, final int x, protected void mouseDragged(final Minecraft minecraft, final int x, final int y) {
final int y) { if (this.mainGui != null && this.displayString != null
if (this.mainGui != null && this.displayString != null && && this.displayString.length() > 0
this.displayString.length() > 0 && && this.isPointInRegion(
this.isPointInRegion(this.xPosition, this.yPosition, this.width, this.xPosition, this.yPosition, this.width, this.height, x, y
this.height, x, y)) { )) {
final String title = TranslationHelper.getLocal("gui." + this.displayString + ".name"); final String title
this.mainGui.tooltip = TranslationHelper.getLocal("gui." + this.displayString + ".tooltip"); = TranslationHelper.getLocal("gui." + this.displayString + ".name");
this.mainGui.tooltip
= TranslationHelper.getLocal("gui." + this.displayString + ".tooltip");
if (title != null && title.length() > 0) { if (title != null && title.length() > 0) {
this.mainGui.tooltip = title + ": " + this.mainGui.tooltip; this.mainGui.tooltip = title + ": " + this.mainGui.tooltip;
} }
} }
} }
protected boolean isPointInRegion(final int x, final int y, final int width, protected boolean isPointInRegion(
final int height, int checkX, int checkY) { final int x,
final int y,
final int width,
final int height,
int checkX,
int checkY
) {
final int var7 = 0; final int var7 = 0;
final int var8 = 0; final int var8 = 0;
checkX -= var7; checkX -= var7;
checkY -= var8; checkY -= var8;
return checkX >= x - 1 && checkX < x + width + 1 && checkY >= y - 1 && return checkX >= x - 1 && checkX < x + width + 1 && checkY >= y - 1
checkY < y + height + 1; && checkY < y + height + 1;
} }
} }

View file

@ -4,16 +4,21 @@
package mffs.gui.button; package mffs.gui.button;
import net.minecraft.client.Minecraft;
import universalelectricity.core.vector.Vector2;
import mffs.base.GuiBase; import mffs.base.GuiBase;
import mffs.tileentity.TileEntityFortronCapacitor; 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; 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); super(id, x, y, new Vector2(), mainGui);
this.tileEntity = tileEntity; this.tileEntity = tileEntity;
} }

View file

@ -16,8 +16,9 @@ public class GuiIcon extends GuiButton {
public ItemStack[] itemStacks; public ItemStack[] itemStacks;
private int index; private int index;
public GuiIcon(final int par1, final int par2, final int par3, public GuiIcon(
final ItemStack... itemStacks) { final int par1, final int par2, final int par3, final ItemStack... itemStacks
) {
super(par1, par2, par3, 20, 20, ""); super(par1, par2, par3, 20, 20, "");
this.index = 0; this.index = 0;
this.itemStacks = itemStacks; this.itemStacks = itemStacks;
@ -30,19 +31,24 @@ public class GuiIcon extends GuiButton {
} }
@Override @Override
public void drawButton(final Minecraft par1Minecraft, final int par2, public void
final int par3) { drawButton(final Minecraft par1Minecraft, final int par2, final int par3) {
super.drawButton(par1Minecraft, par2, par3); super.drawButton(par1Minecraft, par2, par3);
if (this.visible && this.itemStacks[this.index] != null) { if (this.visible && this.itemStacks[this.index] != null) {
int yDisplacement = 2; int yDisplacement = 2;
if (this.itemStacks[this.index].getItem() == Item.getItemFromBlock(Blocks.torch) || if (this.itemStacks[this.index].getItem()
this.itemStacks[this.index].getItem() == Item.getItemFromBlock(Blocks.redstone_torch)) { == Item.getItemFromBlock(Blocks.torch)
|| this.itemStacks[this.index].getItem()
== Item.getItemFromBlock(Blocks.redstone_torch)) {
yDisplacement = 0; yDisplacement = 0;
} else if (this.itemStacks[this.index].getItem() instanceof ItemBlock) { } else if (this.itemStacks[this.index].getItem() instanceof ItemBlock) {
yDisplacement = 3; yDisplacement = 3;
} }
this.drawItemStack(this.itemStacks[this.index], this.xPosition, this.drawItemStack(
this.yPosition + yDisplacement); this.itemStacks[this.index],
this.xPosition,
this.yPosition + yDisplacement
);
} }
} }
@ -56,9 +62,11 @@ public class GuiIcon extends GuiButton {
this.zLevel = 500.0f; this.zLevel = 500.0f;
GuiIcon.itemRenderer.zLevel = 500.0f; GuiIcon.itemRenderer.zLevel = 500.0f;
GuiIcon.itemRenderer.renderItemAndEffectIntoGUI( GuiIcon.itemRenderer.renderItemAndEffectIntoGUI(
fontRenderer, mc.renderEngine, itemStack, x, y); fontRenderer, mc.renderEngine, itemStack, x, y
GuiIcon.itemRenderer.renderItemOverlayIntoGUI(fontRenderer, mc.renderEngine, );
itemStack, x, y); GuiIcon.itemRenderer.renderItemOverlayIntoGUI(
fontRenderer, mc.renderEngine, itemStack, x, y
);
this.zLevel = 0.0f; this.zLevel = 0.0f;
GuiIcon.itemRenderer.zLevel = 0.0f; GuiIcon.itemRenderer.zLevel = 0.0f;
RenderHelper.disableStandardItemLighting(); RenderHelper.disableStandardItemLighting();

View file

@ -2,6 +2,7 @@ package mffs.item;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import mffs.MFFSHelper; import mffs.MFFSHelper;
import mffs.ModularForceFieldSystem; import mffs.ModularForceFieldSystem;
import mffs.api.card.ICardLink; import mffs.api.card.ICardLink;
@ -23,22 +24,27 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
public class ItemRemoteController public class ItemRemoteController extends ItemCardFrequency implements ICardLink {
extends ItemCardFrequency implements ICardLink { public ItemRemoteController() {
public ItemRemoteController() { super("remoteController"); } super("remoteController");
}
@Override @Override
public void addInformation(final ItemStack itemStack, public void addInformation(
final EntityPlayer player, final List list, final ItemStack itemStack,
final boolean b) { final EntityPlayer player,
final List list,
final boolean b
) {
super.addInformation(itemStack, player, list, b); super.addInformation(itemStack, player, list, b);
final Vector3 position = this.getLink(itemStack); final Vector3 position = this.getLink(itemStack);
if (position != null) { if (position != null) {
final Block blockId = position.getBlock(player.worldObj); final Block blockId = position.getBlock(player.worldObj);
if (blockId != null) { if (blockId != null) {
list.add("Linked with: " + blockId.getLocalizedName()); list.add("Linked with: " + blockId.getLocalizedName());
list.add(position.intX() + ", " + position.intY() + ", " + list.add(
position.intZ()); position.intX() + ", " + position.intY() + ", " + position.intZ()
);
return; return;
} }
} }
@ -46,18 +52,27 @@ public class ItemRemoteController
} }
@Override @Override
public boolean onItemUse(final ItemStack itemStack, final EntityPlayer player, public boolean onItemUse(
final World world, final int x, final int y, final ItemStack itemStack,
final int z, final int side, final float hitX, final EntityPlayer player,
final float hitY, final float hitZ) { 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 (player.isSneaking()) {
if (!world.isRemote) { if (!world.isRemote) {
final Vector3 vector = new Vector3(x, y, z); final Vector3 vector = new Vector3(x, y, z);
this.setLink(itemStack, vector); this.setLink(itemStack, vector);
if (vector.getBlock((IBlockAccess) world) != null) { if (vector.getBlock((IBlockAccess) world) != null) {
player.addChatMessage(new ChatComponentText( player.addChatMessage(new ChatComponentText(
"Linked remote to position: " + x + ", " + y + ", " + z + "Linked remote to position: " + x + ", " + y + ", " + z
" with block: " + vector.getBlock(world).getLocalizedName())); + " with block: " + vector.getBlock(world).getLocalizedName()
));
} }
} }
return true; return true;
@ -66,51 +81,76 @@ public class ItemRemoteController
} }
@Override @Override
public ItemStack onItemRightClick(final ItemStack itemStack, public ItemStack onItemRightClick(
final World world, final ItemStack itemStack, final World world, final EntityPlayer entityPlayer
final EntityPlayer entityPlayer) { ) {
if (!entityPlayer.isSneaking()) { if (!entityPlayer.isSneaking()) {
final Vector3 position = this.getLink(itemStack); final Vector3 position = this.getLink(itemStack);
if (position != null) { if (position != null) {
final Block blockId = position.getBlock(world); final Block blockId = position.getBlock(world);
if (blockId != null) { if (blockId != null) {
final Chunk chunk = final Chunk chunk
world.getChunkFromBlockCoords(position.intX(), position.intZ()); = world.getChunkFromBlockCoords(position.intX(), position.intZ());
if (chunk != null && chunk.isChunkLoaded && if (chunk != null && chunk.isChunkLoaded
(MFFSHelper.hasPermission( && (MFFSHelper.hasPermission(
world, position, world,
position,
PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK, PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK,
entityPlayer) || entityPlayer
MFFSHelper.hasPermission( )
world, position, Permission.REMOTE_CONTROL, entityPlayer))) { || MFFSHelper.hasPermission(
final double requiredEnergy = world, position, Permission.REMOTE_CONTROL, entityPlayer
Vector3.distance(new Vector3((Entity)entityPlayer), position) * ))) {
10.0; final double requiredEnergy
= Vector3.distance(
new Vector3((Entity) entityPlayer), position
)
* 10.0;
int receivedEnergy = 0; int receivedEnergy = 0;
final Set<IFortronFrequency> fortronTiles = final Set<IFortronFrequency> fortronTiles
FrequencyGrid.instance().getFortronTiles( = FrequencyGrid.instance().getFortronTiles(
world, new Vector3((Entity)entityPlayer), 50, world,
this.getFrequency(itemStack)); new Vector3((Entity) entityPlayer),
50,
this.getFrequency(itemStack)
);
for (final IFortronFrequency fortronTile : fortronTiles) { for (final IFortronFrequency fortronTile : fortronTiles) {
final int consumedEnergy = fortronTile.requestFortron( final int consumedEnergy = fortronTile.requestFortron(
(int)Math.ceil(requiredEnergy / fortronTiles.size()), true); (int) Math.ceil(requiredEnergy / fortronTiles.size()),
true
);
if (consumedEnergy > 0) { if (consumedEnergy > 0) {
if (world.isRemote) { if (world.isRemote) {
ModularForceFieldSystem.proxy.renderBeam( ModularForceFieldSystem.proxy.renderBeam(
world, world,
new Vector3((Entity) entityPlayer) new Vector3((Entity) entityPlayer)
.add(new Vector3( .add(new Vector3(
0.0, entityPlayer.getEyeHeight() - 0.2, 0.0)), 0.0,
new Vector3((TileEntity)fortronTile).add(0.5), 0.6f, 0.6f, entityPlayer.getEyeHeight() - 0.2,
1.0f, 20); 0.0
)),
new Vector3((TileEntity) fortronTile).add(0.5),
0.6f,
0.6f,
1.0f,
20
);
} }
receivedEnergy += consumedEnergy; receivedEnergy += consumedEnergy;
} }
if (receivedEnergy >= requiredEnergy) { if (receivedEnergy >= requiredEnergy) {
try { try {
blockId.onBlockActivated(world, position.intX(), blockId.onBlockActivated(
position.intY(), position.intZ(), world,
entityPlayer, 0, 0.0f, 0.0f, 0.0f); position.intX(),
position.intY(),
position.intZ(),
entityPlayer,
0,
0.0f,
0.0f,
0.0f
);
} catch (final Exception e) { } catch (final Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -119,10 +159,12 @@ public class ItemRemoteController
} }
if (!world.isRemote) { if (!world.isRemote) {
entityPlayer.addChatMessage(new ChatComponentText( entityPlayer.addChatMessage(new ChatComponentText(
"Unable to harness " + "Unable to harness "
UnitDisplay.getDisplay( + UnitDisplay.getDisplay(
requiredEnergy, UnitDisplay.Unit.JOULES) + requiredEnergy, UnitDisplay.Unit.JOULES
" from the Fortron field.")); )
+ " from the Fortron field."
));
} }
} }
} }

View file

@ -1,7 +1,8 @@
package mffs.item.card; package mffs.item.card;
import icbm.api.IItemFrequency;
import java.util.List; import java.util.List;
import icbm.api.IItemFrequency;
import mffs.base.TileEntityFrequency; import mffs.base.TileEntityFrequency;
import mffs.card.ItemCard; import mffs.card.ItemCard;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
@ -12,14 +13,21 @@ import net.minecraft.util.ChatComponentText;
import net.minecraft.world.World; import net.minecraft.world.World;
public class ItemCardFrequency extends ItemCard implements IItemFrequency { public class ItemCardFrequency extends ItemCard implements IItemFrequency {
public ItemCardFrequency(final String name) { super(name); } public ItemCardFrequency(final String name) {
super(name);
}
public ItemCardFrequency() { this("cardFrequency"); } public ItemCardFrequency() {
this("cardFrequency");
}
@Override @Override
public void addInformation(final ItemStack itemStack, public void addInformation(
final ItemStack itemStack,
final EntityPlayer par2EntityPlayer, final EntityPlayer par2EntityPlayer,
final List list, final boolean par4) { final List list,
final boolean par4
) {
list.add("Frequency: " + this.getFrequency(itemStack)); list.add("Frequency: " + this.getFrequency(itemStack));
} }
@ -45,22 +53,31 @@ public class ItemCardFrequency extends ItemCard implements IItemFrequency {
} }
@Override @Override
public ItemStack onItemRightClick(final ItemStack itemStack, public ItemStack onItemRightClick(
final World world, final ItemStack itemStack, final World world, final EntityPlayer player
final EntityPlayer player) { ) {
if (!world.isRemote && player.isSneaking()) { if (!world.isRemote && player.isSneaking()) {
this.setFrequency(world.rand.nextInt(15), itemStack); this.setFrequency(world.rand.nextInt(15), itemStack);
player.addChatMessage(new ChatComponentText( player.addChatMessage(new ChatComponentText(
"Generated random frequency: " + this.getFrequency(itemStack))); "Generated random frequency: " + this.getFrequency(itemStack)
));
} }
return itemStack; return itemStack;
} }
@Override @Override
public boolean onItemUse(final ItemStack itemStack, final EntityPlayer player, public boolean onItemUse(
final World world, final int x, final int y, final ItemStack itemStack,
final int z, final int side, final float hitX, final EntityPlayer player,
final float hitY, final float hitZ) { 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); final TileEntity tileEntity = world.getTileEntity(x, y, z);
if (tileEntity instanceof TileEntityFrequency) { if (tileEntity instanceof TileEntityFrequency) {
if (!world.isRemote) { if (!world.isRemote) {
@ -68,7 +85,8 @@ public class ItemCardFrequency extends ItemCard implements IItemFrequency {
.setFrequency(this.getFrequency(itemStack)); .setFrequency(this.getFrequency(itemStack));
world.markBlockForUpdate(x, y, z); world.markBlockForUpdate(x, y, z);
player.addChatMessage(new ChatComponentText( player.addChatMessage(new ChatComponentText(
"Frequency set to: " + this.getFrequency(itemStack))); "Frequency set to: " + this.getFrequency(itemStack)
));
} }
return true; return true;
} }

View file

@ -1,6 +1,7 @@
package mffs.item.card; package mffs.item.card;
import java.util.List; import java.util.List;
import mffs.MFFSHelper; import mffs.MFFSHelper;
import mffs.api.card.ICardIdentification; import mffs.api.card.ICardIdentification;
import mffs.api.security.Permission; import mffs.api.security.Permission;
@ -13,28 +14,35 @@ import net.minecraft.world.World;
import universalelectricity.prefab.TranslationHelper; import universalelectricity.prefab.TranslationHelper;
public class ItemCardID extends ItemCard implements ICardIdentification { public class ItemCardID extends ItemCard implements ICardIdentification {
public ItemCardID() {
super("cardIdentification");
}
public ItemCardID() { super("cardIdentification"); } public ItemCardID(final String name) {
super(name);
public ItemCardID(final String name) { super(name); } }
@Override @Override
public boolean hitEntity(final ItemStack itemStack, public boolean hitEntity(
final ItemStack itemStack,
final EntityLivingBase entityLiving, final EntityLivingBase entityLiving,
final EntityLivingBase par3EntityLiving) { final EntityLivingBase par3EntityLiving
) {
if (entityLiving instanceof EntityPlayer) { if (entityLiving instanceof EntityPlayer) {
this.setUsername(itemStack, this.setUsername(itemStack, ((EntityPlayer) entityLiving).getDisplayName());
((EntityPlayer)entityLiving).getDisplayName());
} }
return false; return false;
} }
@Override @Override
public void addInformation(final ItemStack itemStack, public void addInformation(
final EntityPlayer player, final List info, final ItemStack itemStack,
final boolean b) { final EntityPlayer player,
if (this.getUsername(itemStack) != null && final List info,
!this.getUsername(itemStack).isEmpty()) { final boolean b
) {
if (this.getUsername(itemStack) != null
&& !this.getUsername(itemStack).isEmpty()) {
info.add("Username: " + this.getUsername(itemStack)); info.add("Username: " + this.getUsername(itemStack));
} else { } else {
info.add("Unidentified"); info.add("Unidentified");
@ -47,8 +55,7 @@ public class ItemCardID extends ItemCard implements ICardIdentification {
tooltip += ", "; tooltip += ", ";
} }
isFirst = false; isFirst = false;
tooltip += tooltip += TranslationHelper.getLocal("gui." + permission.name + ".name");
TranslationHelper.getLocal("gui." + permission.name + ".name");
} }
} }
if (tooltip != null && tooltip.length() > 0) { if (tooltip != null && tooltip.length() > 0) {
@ -57,24 +64,22 @@ public class ItemCardID extends ItemCard implements ICardIdentification {
} }
@Override @Override
public ItemStack onItemRightClick(final ItemStack itemStack, public ItemStack onItemRightClick(
final World par2World, final ItemStack itemStack, final World par2World, final EntityPlayer entityPlayer
final EntityPlayer entityPlayer) { ) {
this.setUsername(itemStack, entityPlayer.getDisplayName()); this.setUsername(itemStack, entityPlayer.getDisplayName());
return itemStack; return itemStack;
} }
@Override @Override
public void setUsername(final ItemStack itemStack, final String username) { public void setUsername(final ItemStack itemStack, final String username) {
final NBTTagCompound nbtTagCompound = final NBTTagCompound nbtTagCompound = MFFSHelper.getNBTTagCompound(itemStack);
MFFSHelper.getNBTTagCompound(itemStack);
nbtTagCompound.setString("name", username); nbtTagCompound.setString("name", username);
} }
@Override @Override
public String getUsername(final ItemStack itemStack) { public String getUsername(final ItemStack itemStack) {
final NBTTagCompound nbtTagCompound = final NBTTagCompound nbtTagCompound = MFFSHelper.getNBTTagCompound(itemStack);
MFFSHelper.getNBTTagCompound(itemStack);
if (nbtTagCompound != null && nbtTagCompound.getString("name") != "") { if (nbtTagCompound != null && nbtTagCompound.getString("name") != "") {
return nbtTagCompound.getString("name"); return nbtTagCompound.getString("name");
} }
@ -82,23 +87,21 @@ public class ItemCardID extends ItemCard implements ICardIdentification {
} }
@Override @Override
public boolean hasPermission(final ItemStack itemStack, public boolean hasPermission(final ItemStack itemStack, final Permission permission) {
final Permission permission) {
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack); final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
return nbt.getBoolean("mffs_permission_" + permission.id); return nbt.getBoolean("mffs_permission_" + permission.id);
} }
@Override @Override
public boolean addPermission(final ItemStack itemStack, public boolean addPermission(final ItemStack itemStack, final Permission permission) {
final Permission permission) {
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack); final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
nbt.setBoolean("mffs_permission_" + permission.id, true); nbt.setBoolean("mffs_permission_" + permission.id, true);
return false; return false;
} }
@Override @Override
public boolean removePermission(final ItemStack itemStack, public boolean
final Permission permission) { removePermission(final ItemStack itemStack, final Permission permission) {
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack); final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
nbt.setBoolean("mffs_permission_" + permission.id, false); nbt.setBoolean("mffs_permission_" + permission.id, false);
return false; return false;

View file

@ -4,5 +4,7 @@ import mffs.api.card.ICardInfinite;
import mffs.card.ItemCard; import mffs.card.ItemCard;
public class ItemCardInfinite extends ItemCard implements ICardInfinite { public class ItemCardInfinite extends ItemCard implements ICardInfinite {
public ItemCardInfinite() { super("cardInfinite"); } public ItemCardInfinite() {
super("cardInfinite");
}
} }

View file

@ -1,6 +1,7 @@
package mffs.item.card; package mffs.item.card;
import java.util.List; import java.util.List;
import mffs.MFFSHelper; import mffs.MFFSHelper;
import mffs.api.card.ICardLink; import mffs.api.card.ICardLink;
import mffs.card.ItemCard; import mffs.card.ItemCard;
@ -15,38 +16,53 @@ import net.minecraft.world.World;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
public class ItemCardLink extends ItemCard implements ICardLink { public class ItemCardLink extends ItemCard implements ICardLink {
public ItemCardLink() { super("cardLink"); } public ItemCardLink() {
super("cardLink");
}
@Override @Override
public void addInformation(final ItemStack itemStack, public void addInformation(
final EntityPlayer player, final List list, final ItemStack itemStack,
final boolean b) { final EntityPlayer player,
final List list,
final boolean b
) {
final Vector3 position = this.getLink(itemStack); final Vector3 position = this.getLink(itemStack);
if (position != null) { if (position != null) {
final Block blockId = final Block blockId
position.getBlock((IBlockAccess)((Entity)player).worldObj); = position.getBlock((IBlockAccess) ((Entity) player).worldObj);
if (blockId != null) { if (blockId != null) {
list.add("Linked with: " + blockId.getLocalizedName()); list.add("Linked with: " + blockId.getLocalizedName());
list.add(position.intX() + ", " + position.intY() + ", " + list.add(
position.intZ()); position.intX() + ", " + position.intY() + ", " + position.intZ()
);
return; return;
} }
} }
list.add("Not linked."); list.add("Not linked.");
} }
public boolean onItemUse(final ItemStack itemStack, final EntityPlayer player, public boolean onItemUse(
final World world, final int x, final int y, final ItemStack itemStack,
final int z, final int par7, final float par8, final EntityPlayer player,
final float par9, final float par10) { 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) { if (!world.isRemote) {
final Vector3 vector = new Vector3(x, y, z); final Vector3 vector = new Vector3(x, y, z);
this.setLink(itemStack, vector); this.setLink(itemStack, vector);
Block block = vector.getBlock(world); Block block = vector.getBlock(world);
if (block != null) { if (block != null) {
player.addChatMessage(new ChatComponentText( player.addChatMessage(new ChatComponentText(
"Linked card to position: " + x + ", " + y + ", " + z + "Linked card to position: " + x + ", " + y + ", " + z
" with block: " + block.getLocalizedName())); + " with block: " + block.getLocalizedName()
));
} }
} }
return true; return true;

View file

@ -1,15 +1,14 @@
package mffs.item.mode; package mffs.item.mode;
import universalelectricity.core.vector.Vector3;
import mffs.api.IFieldInteraction;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import mffs.api.IFieldInteraction;
import mffs.api.IProjector; import mffs.api.IProjector;
import mffs.api.modules.IProjectorMode; import mffs.api.modules.IProjectorMode;
import mffs.base.ItemBase; 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) { public ItemMode(final String name) {
super(name); super(name);
this.setMaxStackSize(1); this.setMaxStackSize(1);
@ -17,8 +16,14 @@ public abstract class ItemMode extends ItemBase implements IProjectorMode
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @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 @Override
public boolean isInField(final IFieldInteraction projector, final Vector3 position) { public boolean isInField(final IFieldInteraction projector, final Vector3 position) {

View file

@ -1,10 +1,11 @@
package mffs.item.mode; package mffs.item.mode;
import java.util.HashSet;
import java.util.Set;
import calclavia.lib.CalculationHelper; import calclavia.lib.CalculationHelper;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import java.util.HashSet;
import java.util.Set;
import mffs.api.IFieldInteraction; import mffs.api.IFieldInteraction;
import mffs.api.IProjector; import mffs.api.IProjector;
import mffs.render.model.ModelCube; import mffs.render.model.ModelCube;
@ -14,9 +15,13 @@ import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.vector.Region3; import universalelectricity.prefab.vector.Region3;
public class ItemModeCube extends ItemMode { public class ItemModeCube extends ItemMode {
public ItemModeCube(final String name) { super(name); } public ItemModeCube(final String name) {
super(name);
}
public ItemModeCube(final int i) { this("modeCube"); } public ItemModeCube(final int i) {
this("modeCube");
}
@Override @Override
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) { public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
@ -24,13 +29,12 @@ public class ItemModeCube extends ItemMode {
final Vector3 posScale = projector.getPositiveScale(); final Vector3 posScale = projector.getPositiveScale();
final Vector3 negScale = projector.getNegativeScale(); final Vector3 negScale = projector.getNegativeScale();
for (float x = (float) (-negScale.intX()); x <= posScale.intX(); x += 0.5f) { for (float x = (float) (-negScale.intX()); x <= posScale.intX(); x += 0.5f) {
for (float z = (float)(-negScale.intZ()); z <= posScale.intZ(); for (float z = (float) (-negScale.intZ()); z <= posScale.intZ(); z += 0.5f) {
z += 0.5f) {
for (float y = (float) (-negScale.intY()); y <= posScale.intY(); for (float y = (float) (-negScale.intY()); y <= posScale.intY();
y += 0.5f) { y += 0.5f) {
if (y == -negScale.intY() || y == posScale.intY() || if (y == -negScale.intY() || y == posScale.intY()
x == -negScale.intX() || x == posScale.intX() || || x == -negScale.intX() || x == posScale.intX()
z == -negScale.intZ() || z == posScale.intZ()) { || z == -negScale.intZ() || z == posScale.intZ()) {
fieldBlocks.add(new Vector3(x, y, z)); fieldBlocks.add(new Vector3(x, y, z));
} }
} }
@ -55,24 +59,30 @@ public class ItemModeCube extends ItemMode {
} }
@Override @Override
public boolean isInField(final IFieldInteraction projector, public boolean isInField(final IFieldInteraction projector, final Vector3 position) {
final Vector3 position) {
final Vector3 projectorPos = new Vector3((TileEntity) projector); final Vector3 projectorPos = new Vector3((TileEntity) projector);
projectorPos.add(projector.getTranslation()); projectorPos.add(projector.getTranslation());
final Vector3 relativePosition = position.clone().subtract(projectorPos); final Vector3 relativePosition = position.clone().subtract(projectorPos);
CalculationHelper.rotateByAngle(relativePosition, CalculationHelper.rotateByAngle(
-projector.getRotationYaw(), relativePosition, -projector.getRotationYaw(), -projector.getRotationPitch()
-projector.getRotationPitch()); );
final Region3 region = final Region3 region = new Region3(
new Region3(projector.getNegativeScale().clone().multiply(-1.0), projector.getNegativeScale().clone().multiply(-1.0),
projector.getPositiveScale()); projector.getPositiveScale()
);
return region.isIn(relativePosition); return region.isIn(relativePosition);
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @Override
public void render(final IProjector projector, final double x, final double y, public void render(
final double z, final float f, final long ticks) { 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.glScalef(0.5f, 0.5f, 0.5f);
ModelCube.INSTNACE.render(); ModelCube.INSTNACE.render();
} }

View file

@ -1,9 +1,10 @@
package mffs.item.mode; package mffs.item.mode;
import java.util.HashSet;
import java.util.Set;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import java.util.HashSet;
import java.util.Set;
import mffs.ModularForceFieldSystem; import mffs.ModularForceFieldSystem;
import mffs.api.IFieldInteraction; import mffs.api.IFieldInteraction;
import mffs.api.IProjector; import mffs.api.IProjector;
@ -13,23 +14,29 @@ import org.lwjgl.opengl.GL11;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
public class ItemModeSphere extends ItemMode { public class ItemModeSphere extends ItemMode {
public ItemModeSphere(final int i) { super("modeSphere"); } public ItemModeSphere(final int i) {
super("modeSphere");
}
@Override @Override
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) { public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
final Set<Vector3> fieldBlocks = new HashSet<>(); final Set<Vector3> fieldBlocks = new HashSet<>();
final int radius = projector.getModuleCount( final int radius = projector.getModuleCount(
ModularForceFieldSystem.itemModuleScale, new int[0]); ModularForceFieldSystem.itemModuleScale, new int[0]
for (int steps = (int)Math.ceil(3.141592653589793 / );
Math.atan(1.0 / radius / 2.0)), for (int steps
= (int) Math.ceil(3.141592653589793 / Math.atan(1.0 / radius / 2.0)),
phi_n = 0; phi_n = 0;
phi_n < 2 * steps; ++phi_n) { phi_n < 2 * steps;
++phi_n) {
for (int theta_n = 0; theta_n < steps; ++theta_n) { for (int theta_n = 0; theta_n < steps; ++theta_n) {
final double phi = 6.283185307179586 / steps * phi_n; final double phi = 6.283185307179586 / steps * phi_n;
final double theta = 3.141592653589793 / steps * theta_n; final double theta = 3.141592653589793 / steps * theta_n;
final Vector3 point = final Vector3 point = new Vector3(
new Vector3(Math.sin(theta) * Math.cos(phi), Math.cos(theta), Math.sin(theta) * Math.cos(phi),
Math.sin(theta) * Math.sin(phi)) Math.cos(theta),
Math.sin(theta) * Math.sin(phi)
)
.multiply(radius); .multiply(radius);
fieldBlocks.add(point); fieldBlocks.add(point);
} }
@ -42,16 +49,19 @@ public class ItemModeSphere extends ItemMode {
final Set<Vector3> fieldBlocks = new HashSet<>(); final Set<Vector3> fieldBlocks = new HashSet<>();
final Vector3 translation = projector.getTranslation(); final Vector3 translation = projector.getTranslation();
for (int radius = projector.getModuleCount( for (int radius = projector.getModuleCount(
ModularForceFieldSystem.itemModuleScale, new int[0]), ModularForceFieldSystem.itemModuleScale, new int[0]
),
x = -radius; x = -radius;
x <= radius; ++x) { x <= radius;
++x) {
for (int z = -radius; z <= radius; ++z) { for (int z = -radius; z <= radius; ++z) {
for (int y = -radius; y <= radius; ++y) { for (int y = -radius; y <= radius; ++y) {
final Vector3 position = new Vector3(x, y, z); final Vector3 position = new Vector3(x, y, z);
if (this.isInField( if (this.isInField(
projector, projector,
Vector3.add(position, new Vector3((TileEntity) projector)) Vector3.add(position, new Vector3((TileEntity) projector))
.add(translation))) { .add(translation)
)) {
fieldBlocks.add(position); fieldBlocks.add(position);
} }
} }
@ -61,33 +71,41 @@ public class ItemModeSphere extends ItemMode {
} }
@Override @Override
public boolean isInField(final IFieldInteraction projector, public boolean isInField(final IFieldInteraction projector, final Vector3 position) {
final Vector3 position) {
return new Vector3((TileEntity) projector) return new Vector3((TileEntity) projector)
.add(projector.getTranslation()) .add(projector.getTranslation())
.distanceTo(position) < .distanceTo(position)
projector.getModuleCount(ModularForceFieldSystem.itemModuleScale, < projector.getModuleCount(
new int[0]); ModularForceFieldSystem.itemModuleScale, new int[0]
);
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @Override
public void render(final IProjector projector, final double x1, public void render(
final double y1, final double z1, final float f, final IProjector projector,
final long ticks) { final double x1,
final double y1,
final double z1,
final float f,
final long ticks
) {
final float scale = 0.15f; final float scale = 0.15f;
GL11.glScalef(scale, scale, scale); GL11.glScalef(scale, scale, scale);
final float radius = 1.5f; final float radius = 1.5f;
for (int steps = (int)Math.ceil(3.141592653589793 / for (int steps
Math.atan(1.0 / radius / 2.0)), = (int) Math.ceil(3.141592653589793 / Math.atan(1.0 / radius / 2.0)),
phi_n = 0; phi_n = 0;
phi_n < 2 * steps; ++phi_n) { phi_n < 2 * steps;
++phi_n) {
for (int theta_n = 0; theta_n < steps; ++theta_n) { for (int theta_n = 0; theta_n < steps; ++theta_n) {
final double phi = 6.283185307179586 / steps * phi_n; final double phi = 6.283185307179586 / steps * phi_n;
final double theta = 3.141592653589793 / steps * theta_n; final double theta = 3.141592653589793 / steps * theta_n;
final Vector3 vector = final Vector3 vector = new Vector3(
new Vector3(Math.sin(theta) * Math.cos(phi), Math.cos(theta), Math.sin(theta) * Math.cos(phi),
Math.sin(theta) * Math.sin(phi)); Math.cos(theta),
Math.sin(theta) * Math.sin(phi)
);
vector.multiply(radius); vector.multiply(radius);
GL11.glTranslated(vector.x, vector.y, vector.z); GL11.glTranslated(vector.x, vector.y, vector.z);
ModelCube.INSTNACE.render(); ModelCube.INSTNACE.render();

View file

@ -1,20 +1,20 @@
package mffs.item.mode; package mffs.item.mode;
import java.util.HashSet;
import java.util.Set;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import mffs.render.model.ModelPlane; import mffs.api.IFieldInteraction;
import org.lwjgl.opengl.GL11;
import mffs.api.IProjector; 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.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import net.minecraft.tileentity.TileEntity; import org.lwjgl.opengl.GL11;
import java.util.HashSet; import universalelectricity.core.vector.Vector3;
import java.util.Set;
import mffs.api.IFieldInteraction;
public class ItemModeTube extends ItemModeCube public class ItemModeTube extends ItemModeCube {
{
public ItemModeTube() { public ItemModeTube() {
super("modeTube"); super("modeTube");
} }
@ -22,13 +22,20 @@ public class ItemModeTube extends ItemModeCube
@Override @Override
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) { public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
final Set<Vector3> fieldBlocks = new HashSet<>(); 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 posScale = projector.getPositiveScale();
final Vector3 negScale = projector.getNegativeScale(); final Vector3 negScale = projector.getNegativeScale();
for (float x = (float) (-negScale.intX()); x <= posScale.intX(); x += 0.5f) { 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 z = (float) (-negScale.intZ()); z <= posScale.intZ(); z += 0.5f) {
for (float y = (float)(-negScale.intY()); y <= posScale.intY(); y += 0.5f) { for (float y = (float) (-negScale.intY()); y <= posScale.intY();
if (direction != ForgeDirection.UP && direction != ForgeDirection.DOWN && (y == -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)); fieldBlocks.add(new Vector3(x, y, z));
} }
else if (direction != ForgeDirection.NORTH && direction != ForgeDirection.SOUTH && (z == -negScale.intZ() || z == posScale.intZ())) { else if (direction != ForgeDirection.NORTH && direction != ForgeDirection.SOUTH && (z == -negScale.intZ() || z == posScale.intZ())) {
@ -45,7 +52,14 @@ public class ItemModeTube extends ItemModeCube
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @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.glScalef(0.5f, 0.5f, 0.5f);
GL11.glTranslatef(-0.5f, 0.0f, 0.0f); GL11.glTranslatef(-0.5f, 0.0f, 0.0f);
ModelPlane.INSTNACE.render(); ModelPlane.INSTNACE.render();

View file

@ -2,6 +2,7 @@ package mffs.item.module;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import mffs.api.IFieldInteraction; import mffs.api.IFieldInteraction;
import mffs.api.IProjector; import mffs.api.IProjector;
import mffs.api.modules.IModule; import mffs.api.modules.IModule;
@ -21,20 +22,22 @@ public class ItemModule extends ItemBase implements IModule {
} }
@Override @Override
public void addInformation(final ItemStack itemStack, public void addInformation(
final EntityPlayer player, final List info, final ItemStack itemStack,
final boolean b) { final EntityPlayer player,
final List info,
final boolean b
) {
info.add("Fortron: " + this.getFortronCost(1.0f)); info.add("Fortron: " + this.getFortronCost(1.0f));
super.addInformation(itemStack, player, info, b); super.addInformation(itemStack, player, info, b);
} }
@Override @Override
public void onCalculate(final IFieldInteraction projector, public void
final Set<Vector3> position) {} onCalculate(final IFieldInteraction projector, final Set<Vector3> position) {}
@Override @Override
public boolean onProject(final IProjector projector, public boolean onProject(final IProjector projector, final Set<Vector3> fields) {
final Set<Vector3> fields) {
return false; return false;
} }
@ -44,10 +47,14 @@ public class ItemModule extends ItemBase implements IModule {
} }
@Override @Override
public boolean onCollideWithForceField(final World world, final int x, public boolean onCollideWithForceField(
final int y, final int z, final World world,
final int x,
final int y,
final int z,
final Entity entity, final Entity entity,
final ItemStack moduleStack) { final ItemStack moduleStack
) {
return false; return false;
} }

View file

@ -1,21 +1,24 @@
package mffs.item.module.interdiction; package mffs.item.module.interdiction;
import mffs.ModularForceFieldSystem; import mffs.ModularForceFieldSystem;
import mffs.api.security.IInterdictionMatrix;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.INpc; import net.minecraft.entity.INpc;
import net.minecraft.entity.monster.IMob; 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() { public ItemModuleAntiFriendly() {
super("moduleAntiFriendly"); super("moduleAntiFriendly");
} }
@Override @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) { if (!(entityLiving instanceof IMob) || entityLiving instanceof INpc) {
entityLiving.attackEntityFrom(ModularForceFieldSystem.damagefieldShock, Integer.MAX_VALUE); entityLiving.attackEntityFrom(
ModularForceFieldSystem.damagefieldShock, Integer.MAX_VALUE
);
} }
return false; return false;
} }

View file

@ -1,19 +1,20 @@
package mffs.item.module.interdiction; package mffs.item.module.interdiction;
import mffs.ModularForceFieldSystem; import mffs.ModularForceFieldSystem;
import mffs.api.security.IInterdictionMatrix;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.INpc; import net.minecraft.entity.INpc;
import net.minecraft.entity.monster.IMob; 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() { public ItemModuleAntiHostile() {
super("moduleAntiHostile"); super("moduleAntiHostile");
} }
@Override @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)) { if (entityLiving instanceof IMob && !(entityLiving instanceof INpc)) {
entityLiving.attackEntityFrom(ModularForceFieldSystem.damagefieldShock, 20); entityLiving.attackEntityFrom(ModularForceFieldSystem.damagefieldShock, 20);
} }

View file

@ -9,29 +9,35 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentText;
public class ItemModuleAntiPersonnel extends ItemModuleInterdictionMatrix { public class ItemModuleAntiPersonnel extends ItemModuleInterdictionMatrix {
public ItemModuleAntiPersonnel() { super("moduleAntiPersonnel"); } public ItemModuleAntiPersonnel() {
super("moduleAntiPersonnel");
}
@Override @Override
public boolean onDefend(final IInterdictionMatrix interdictionMatrix, public boolean onDefend(
final EntityLivingBase entityLiving) { final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving
) {
final boolean hasPermission = false; final boolean hasPermission = false;
if (!hasPermission && entityLiving instanceof EntityPlayer) { if (!hasPermission && entityLiving instanceof EntityPlayer) {
final EntityPlayer player = (EntityPlayer) entityLiving; final EntityPlayer player = (EntityPlayer) entityLiving;
if (!player.capabilities.isCreativeMode && if (!player.capabilities.isCreativeMode && !player.isEntityInvulnerable()) {
!player.isEntityInvulnerable()) {
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) { for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
if (player.inventory.getStackInSlot(i) != null) { if (player.inventory.getStackInSlot(i) != null) {
interdictionMatrix.mergeIntoInventory( interdictionMatrix.mergeIntoInventory(
player.inventory.getStackInSlot(i)); player.inventory.getStackInSlot(i)
);
player.inventory.setInventorySlotContents(i, (ItemStack) null); player.inventory.setInventorySlotContents(i, (ItemStack) null);
} }
} }
player.attackEntityFrom(ModularForceFieldSystem.damagefieldShock, player.attackEntityFrom(
Integer.MAX_VALUE); ModularForceFieldSystem.damagefieldShock, Integer.MAX_VALUE
interdictionMatrix.requestFortron(Settings.INTERDICTION_MURDER_ENERGY, );
false); interdictionMatrix.requestFortron(
Settings.INTERDICTION_MURDER_ENERGY, false
);
player.addChatMessage(new ChatComponentText( player.addChatMessage(new ChatComponentText(
"[" + interdictionMatrix.getInventoryName() + "] Fairwell.")); "[" + interdictionMatrix.getInventoryName() + "] Fairwell."
));
} }
} }
return false; return false;

View file

@ -1,6 +1,7 @@
package mffs.item.module.interdiction; package mffs.item.module.interdiction;
import java.util.Set; import java.util.Set;
import mffs.api.security.IBiometricIdentifier; import mffs.api.security.IBiometricIdentifier;
import mffs.api.security.IInterdictionMatrix; import mffs.api.security.IInterdictionMatrix;
import mffs.api.security.Permission; import mffs.api.security.Permission;
@ -11,33 +12,36 @@ import net.minecraft.item.ItemStack;
import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentText;
public class ItemModuleConfiscate extends ItemModuleInterdictionMatrix { public class ItemModuleConfiscate extends ItemModuleInterdictionMatrix {
public ItemModuleConfiscate() { super("moduleConfiscate"); } public ItemModuleConfiscate() {
super("moduleConfiscate");
}
@Override @Override
public boolean onDefend(final IInterdictionMatrix interdictionMatrix, public boolean onDefend(
final EntityLivingBase entityLiving) { final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving
) {
if (entityLiving instanceof EntityPlayer) { if (entityLiving instanceof EntityPlayer) {
final EntityPlayer player = (EntityPlayer) entityLiving; final EntityPlayer player = (EntityPlayer) entityLiving;
final IBiometricIdentifier biometricIdentifier = final IBiometricIdentifier biometricIdentifier
interdictionMatrix.getBiometricIdentifier(); = interdictionMatrix.getBiometricIdentifier();
if (biometricIdentifier != null && if (biometricIdentifier != null
biometricIdentifier.isAccessGranted( && biometricIdentifier.isAccessGranted(
player.getDisplayName(), player.getDisplayName(), Permission.DEFENSE_STATION_CONFISCATION
Permission.DEFENSE_STATION_CONFISCATION)) { )) {
return false; return false;
} }
} }
final Set<ItemStack> controlledStacks = final Set<ItemStack> controlledStacks = interdictionMatrix.getFilteredItems();
interdictionMatrix.getFilteredItems();
int confiscationCount = 0; int confiscationCount = 0;
IInventory inventory = null; IInventory inventory = null;
if (entityLiving instanceof EntityPlayer) { if (entityLiving instanceof EntityPlayer) {
final IBiometricIdentifier biometricIdentifier2 = final IBiometricIdentifier biometricIdentifier2
interdictionMatrix.getBiometricIdentifier(); = interdictionMatrix.getBiometricIdentifier();
if (biometricIdentifier2 != null && if (biometricIdentifier2 != null
biometricIdentifier2.isAccessGranted( && biometricIdentifier2.isAccessGranted(
((EntityPlayer) entityLiving).getDisplayName(), ((EntityPlayer) entityLiving).getDisplayName(),
Permission.BYPASS_INTERDICTION_MATRIX)) { Permission.BYPASS_INTERDICTION_MATRIX
)) {
return false; return false;
} }
final EntityPlayer player2 = (EntityPlayer) entityLiving; final EntityPlayer player2 = (EntityPlayer) entityLiving;
@ -56,9 +60,10 @@ public class ItemModuleConfiscate extends ItemModuleInterdictionMatrix {
break; break;
} }
} }
if ((interdictionMatrix.getFilterMode() && stacksMatch) || if ((interdictionMatrix.getFilterMode() && stacksMatch)
(!interdictionMatrix.getFilterMode() && !stacksMatch)) { || (!interdictionMatrix.getFilterMode() && !stacksMatch)) {
interdictionMatrix.mergeIntoInventory(inventory.getStackInSlot(i)); interdictionMatrix.mergeIntoInventory(inventory.getStackInSlot(i)
);
inventory.setInventorySlotContents(i, (ItemStack) null); inventory.setInventorySlotContents(i, (ItemStack) null);
++confiscationCount; ++confiscationCount;
} }
@ -67,8 +72,9 @@ public class ItemModuleConfiscate extends ItemModuleInterdictionMatrix {
if (confiscationCount > 0 && entityLiving instanceof EntityPlayer) { if (confiscationCount > 0 && entityLiving instanceof EntityPlayer) {
((EntityPlayer) entityLiving) ((EntityPlayer) entityLiving)
.addChatMessage(new ChatComponentText( .addChatMessage(new ChatComponentText(
"[" + interdictionMatrix.getInventoryName() + "] " + "[" + interdictionMatrix.getInventoryName() + "] "
confiscationCount + " of your item(s) has been confiscated.")); + confiscationCount + " of your item(s) has been confiscated."
));
} }
interdictionMatrix.requestFortron(confiscationCount, true); interdictionMatrix.requestFortron(confiscationCount, true);
} }

View file

@ -1,6 +1,7 @@
package mffs.item.module.interdiction; package mffs.item.module.interdiction;
import java.util.List; import java.util.List;
import mffs.api.modules.IInterdictionMatrixModule; import mffs.api.modules.IInterdictionMatrixModule;
import mffs.api.security.IInterdictionMatrix; import mffs.api.security.IInterdictionMatrix;
import mffs.item.module.ItemModule; import mffs.item.module.ItemModule;
@ -10,19 +11,25 @@ import net.minecraft.item.ItemStack;
public class ItemModuleInterdictionMatrix public class ItemModuleInterdictionMatrix
extends ItemModule implements IInterdictionMatrixModule { extends ItemModule implements IInterdictionMatrixModule {
public ItemModuleInterdictionMatrix(final String name) { super(name); } public ItemModuleInterdictionMatrix(final String name) {
super(name);
}
@Override @Override
public void addInformation(final ItemStack itemStack, public void addInformation(
final EntityPlayer player, final List info, final ItemStack itemStack,
final boolean b) { final EntityPlayer player,
final List info,
final boolean b
) {
info.add("§4Interdiction Matrix"); info.add("§4Interdiction Matrix");
super.addInformation(itemStack, player, info, b); super.addInformation(itemStack, player, info, b);
} }
@Override @Override
public boolean onDefend(final IInterdictionMatrix interdictionMatrix, public boolean onDefend(
final EntityLivingBase entityLiving) { final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving
) {
return false; return false;
} }
} }

View file

@ -1,21 +1,26 @@
package mffs.item.module.interdiction; package mffs.item.module.interdiction;
import mffs.api.security.IInterdictionMatrix;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChatComponentText; 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() { public ItemModuleWarn() {
super("moduleWarn"); super("moduleWarn");
} }
@Override @Override
public boolean onDefend(final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving) { public boolean onDefend(
final IInterdictionMatrix interdictionMatrix, final EntityLivingBase entityLiving
) {
final boolean hasPermission = false; final boolean hasPermission = false;
if (!hasPermission && entityLiving instanceof EntityPlayer) { 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; return false;
} }

View file

@ -1,7 +1,5 @@
package mffs.item.module.projector; package mffs.item.module.projector;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.UncheckedIOException; import java.io.UncheckedIOException;
@ -9,6 +7,9 @@ import java.nio.file.Paths;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import mffs.MFFSHelper; import mffs.MFFSHelper;
import mffs.ModularForceFieldSystem; import mffs.ModularForceFieldSystem;
import mffs.Settings; import mffs.Settings;
@ -42,17 +43,22 @@ public class ItemModeCustom extends ItemMode implements ICache {
} }
@Override @Override
public void addInformation(final ItemStack itemStack, public void addInformation(
final ItemStack itemStack,
final EntityPlayer par2EntityPlayer, final EntityPlayer par2EntityPlayer,
final List list, final boolean par4) { final List list,
final boolean par4
) {
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack); final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
list.add("Mode: " + (nbt.getBoolean("mode") ? "Additive" : "Substraction")); list.add("Mode: " + (nbt.getBoolean("mode") ? "Additive" : "Substraction"));
final Vector3 point1 = Vector3.readFromNBT(nbt.getCompoundTag("point1")); final Vector3 point1 = Vector3.readFromNBT(nbt.getCompoundTag("point1"));
list.add("Point 1: " + point1.intX() + ", " + point1.intY() + ", " + list.add(
point1.intZ()); "Point 1: " + point1.intX() + ", " + point1.intY() + ", " + point1.intZ()
);
final Vector3 point2 = Vector3.readFromNBT(nbt.getCompoundTag("point2")); final Vector3 point2 = Vector3.readFromNBT(nbt.getCompoundTag("point2"));
list.add("Point 2: " + point2.intX() + ", " + point2.intY() + ", " + list.add(
point2.intZ()); "Point 2: " + point2.intX() + ", " + point2.intY() + ", " + point2.intZ()
);
final int modeID = nbt.getInteger("id"); final int modeID = nbt.getInteger("id");
if (modeID > 0) { if (modeID > 0) {
list.add("Mode ID: " + modeID); list.add("Mode ID: " + modeID);
@ -70,20 +76,20 @@ public class ItemModeCustom extends ItemMode implements ICache {
} }
} }
public ItemStack onItemRightClick(final ItemStack itemStack, public ItemStack onItemRightClick(
final World world, final ItemStack itemStack, final World world, final EntityPlayer entityPlayer
final EntityPlayer entityPlayer) { ) {
if (!world.isRemote) { if (!world.isRemote) {
if (entityPlayer.isSneaking()) { if (entityPlayer.isSneaking()) {
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack); final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
if (nbt != null) { if (nbt != null) {
final Vector3 point1 = final Vector3 point1
Vector3.readFromNBT(nbt.getCompoundTag("point1")); = Vector3.readFromNBT(nbt.getCompoundTag("point1"));
final Vector3 point2 = final Vector3 point2
Vector3.readFromNBT(nbt.getCompoundTag("point2")); = Vector3.readFromNBT(nbt.getCompoundTag("point2"));
if (nbt.hasKey("point1") && nbt.hasKey("point2") && if (nbt.hasKey("point1") && nbt.hasKey("point2")
!point1.equals(point2) && && !point1.equals(point2)
point1.distanceTo(point2) < Settings.MAX_FORCE_FIELD_SCALE) { && point1.distanceTo(point2) < Settings.MAX_FORCE_FIELD_SCALE) {
nbt.removeTag("point1"); nbt.removeTag("point1");
nbt.removeTag("point2"); nbt.removeTag("point2");
Vector3 midPoint = new Vector3(); Vector3 midPoint = new Vector3();
@ -93,15 +99,21 @@ public class ItemModeCustom extends ItemMode implements ICache {
midPoint = midPoint.floor(); midPoint = midPoint.floor();
point1.subtract(midPoint); point1.subtract(midPoint);
point2.subtract(midPoint); point2.subtract(midPoint);
final Vector3 minPoint = new Vector3(Math.min(point1.x, point2.x), final Vector3 minPoint = new Vector3(
Math.min(point1.x, point2.x),
Math.min(point1.y, point2.y), Math.min(point1.y, point2.y),
Math.min(point1.z, point2.z)); Math.min(point1.z, point2.z)
final Vector3 maxPoint = new Vector3(Math.max(point1.x, point2.x), );
final Vector3 maxPoint = new Vector3(
Math.max(point1.x, point2.x),
Math.max(point1.y, point2.y), Math.max(point1.y, point2.y),
Math.max(point1.z, point2.z)); Math.max(point1.z, point2.z)
);
File saveFile = Paths File saveFile = Paths
.get(this.getSaveDirectory().getPath(), .get(
"custom_mode_" + this.getModeID(itemStack)) this.getSaveDirectory().getPath(),
"custom_mode_" + this.getModeID(itemStack)
)
.toFile(); .toFile();
// TODO: WTF happened to NBTFileLoader?! // TODO: WTF happened to NBTFileLoader?!
NBTTagCompound saveNBT = null; NBTTagCompound saveNBT = null;
@ -128,22 +140,28 @@ public class ItemModeCustom extends ItemMode implements ICache {
for (int y = minPoint.intY(); y <= maxPoint.intY(); ++y) { for (int y = minPoint.intY(); y <= maxPoint.intY(); ++y) {
for (int z = minPoint.intZ(); z <= maxPoint.intZ(); ++z) { for (int z = minPoint.intZ(); z <= maxPoint.intZ(); ++z) {
final Vector3 position = new Vector3(x, y, z); final Vector3 position = new Vector3(x, y, z);
final Vector3 targetCheck = Vector3.add(midPoint, position); final Vector3 targetCheck
= Vector3.add(midPoint, position);
final Block blockID = targetCheck.getBlock(world); final Block blockID = targetCheck.getBlock(world);
if (blockID != Blocks.air) { if (blockID != Blocks.air) {
if (nbt.getBoolean("mode")) { if (nbt.getBoolean("mode")) {
final NBTTagCompound vectorTag = new NBTTagCompound(); final NBTTagCompound vectorTag
= new NBTTagCompound();
position.writeToNBT(vectorTag); position.writeToNBT(vectorTag);
vectorTag.setInteger("blockID", vectorTag.setInteger(
Block.getIdFromBlock(blockID)); "blockID", Block.getIdFromBlock(blockID)
);
vectorTag.setInteger( vectorTag.setInteger(
"blockMetadata", "blockMetadata",
targetCheck.getBlockMetadata((IBlockAccess)world)); targetCheck.getBlockMetadata((IBlockAccess
) world)
);
list.appendTag((NBTBase) vectorTag); list.appendTag((NBTBase) vectorTag);
} else { } else {
for (int i = 0; i < list.tagCount(); ++i) { for (int i = 0; i < list.tagCount(); ++i) {
final Vector3 vector = Vector3.readFromNBT( final Vector3 vector
(NBTTagCompound)list.getCompoundTagAt(i)); = Vector3.readFromNBT((NBTTagCompound
) list.getCompoundTagAt(i));
if (vector.equals(position)) { if (vector.equals(position)) {
list.removeTag(i); list.removeTag(i);
} }
@ -167,7 +185,8 @@ public class ItemModeCustom extends ItemMode implements ICache {
// saveNBT); // saveNBT);
this.clearCache(); this.clearCache();
entityPlayer.addChatMessage( entityPlayer.addChatMessage(
new ChatComponentText("Field structure saved.")); new ChatComponentText("Field structure saved.")
);
} }
} }
} else { } else {
@ -175,35 +194,45 @@ public class ItemModeCustom extends ItemMode implements ICache {
if (nbt != null) { if (nbt != null) {
nbt.setBoolean("mode", !nbt.getBoolean("mode")); nbt.setBoolean("mode", !nbt.getBoolean("mode"));
entityPlayer.addChatMessage(new ChatComponentText( entityPlayer.addChatMessage(new ChatComponentText(
"Changed selection mode to " + "Changed selection mode to "
(nbt.getBoolean("mode") ? "additive" : "substraction"))); + (nbt.getBoolean("mode") ? "additive" : "substraction")
));
} }
} }
} }
return itemStack; return itemStack;
} }
public boolean onItemUse(final ItemStack itemStack, public boolean onItemUse(
final EntityPlayer entityPlayer, final World world, final ItemStack itemStack,
final int x, final int y, final int z, final EntityPlayer entityPlayer,
final int par7, final float par8, final float par9, final World world,
final float par10) { final int x,
final int y,
final int z,
final int par7,
final float par8,
final float par9,
final float par10
) {
if (!world.isRemote) { if (!world.isRemote) {
final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack); final NBTTagCompound nbt = MFFSHelper.getNBTTagCompound(itemStack);
if (nbt != null) { if (nbt != null) {
final Vector3 point1 = final Vector3 point1 = Vector3.readFromNBT(nbt.getCompoundTag("point1"));
Vector3.readFromNBT(nbt.getCompoundTag("point1")); if (!nbt.hasKey("point1") || point1.equals(new Vector3(0.0, 0.0, 0.0))) {
if (!nbt.hasKey("point1") || nbt.setTag(
point1.equals(new Vector3(0.0, 0.0, 0.0))) { "point1", new Vector3(x, y, z).writeToNBT(new NBTTagCompound())
nbt.setTag("point1", );
new Vector3(x, y, z).writeToNBT(new NBTTagCompound()));
entityPlayer.addChatMessage(new ChatComponentText( entityPlayer.addChatMessage(new ChatComponentText(
"Set point 1: " + x + ", " + y + ", " + z + ".")); "Set point 1: " + x + ", " + y + ", " + z + "."
));
} else { } else {
nbt.setTag("point2", nbt.setTag(
new Vector3(x, y, z).writeToNBT(new NBTTagCompound())); "point2", new Vector3(x, y, z).writeToNBT(new NBTTagCompound())
);
entityPlayer.addChatMessage(new ChatComponentText( entityPlayer.addChatMessage(new ChatComponentText(
"Set point 2: " + x + ", " + y + ", " + z + ".")); "Set point 2: " + x + ", " + y + ", " + z + "."
));
} }
} }
} }
@ -229,8 +258,7 @@ public class ItemModeCustom extends ItemMode implements ICache {
public File getSaveDirectory() { public File getSaveDirectory() {
final File saveDirectory = final File saveDirectory =
// TODO: might be wrong path? // TODO: might be wrong path?
Paths.get(MinecraftServer.getServer().getFolderName(), "saves") Paths.get(MinecraftServer.getServer().getFolderName(), "saves").toFile();
.toFile();
if (!saveDirectory.exists()) { if (!saveDirectory.exists()) {
saveDirectory.mkdir(); saveDirectory.mkdir();
} }
@ -241,32 +269,34 @@ public class ItemModeCustom extends ItemMode implements ICache {
return file; return file;
} }
public Set<Vector3> getFieldBlocks(final IFieldInteraction projector, public Set<Vector3>
final ItemStack itemStack) { getFieldBlocks(final IFieldInteraction projector, final ItemStack itemStack) {
return this.getFieldBlockMap(projector, itemStack).keySet(); return this.getFieldBlockMap(projector, itemStack).keySet();
} }
public HashMap<Vector3, int[]> public HashMap<Vector3, int[]>
getFieldBlockMap(final IFieldInteraction projector, getFieldBlockMap(final IFieldInteraction projector, final ItemStack itemStack) {
final ItemStack itemStack) {
final String cacheID = "itemStack_" + itemStack.hashCode(); final String cacheID = "itemStack_" + itemStack.hashCode();
if (Settings.USE_CACHE && this.cache.containsKey(cacheID) && if (Settings.USE_CACHE && this.cache.containsKey(cacheID)
this.cache.get(cacheID) instanceof HashMap) { && this.cache.get(cacheID) instanceof HashMap) {
return (HashMap<Vector3, int[]>) this.cache.get(cacheID); return (HashMap<Vector3, int[]>) this.cache.get(cacheID);
} }
final float scale = final float scale = projector.getModuleCount(
projector.getModuleCount(ModularForceFieldSystem.itemModuleScale, ModularForceFieldSystem.itemModuleScale, new int[0]
new int[0]) / )
3.0f; / 3.0f;
final HashMap<Vector3, int[]> fieldBlocks = new HashMap<>(); final HashMap<Vector3, int[]> fieldBlocks = new HashMap<>();
if (this.getSaveDirectory() != null) { if (this.getSaveDirectory() != null) {
NBTTagCompound nbt = null; NBTTagCompound nbt = null;
try { try {
nbt = CompressedStreamTools.read( nbt = CompressedStreamTools.read(
Paths Paths
.get(this.getSaveDirectory().getPath(), .get(
"custom_mode_" + this.getModeID(itemStack)) this.getSaveDirectory().getPath(),
.toFile()); "custom_mode_" + this.getModeID(itemStack)
)
.toFile()
);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -275,8 +305,8 @@ public class ItemModeCustom extends ItemMode implements ICache {
if (nbt != null) { if (nbt != null) {
final NBTTagList nbtTagList = nbt.getTagList("fieldPoints", 10); final NBTTagList nbtTagList = nbt.getTagList("fieldPoints", 10);
for (int i = 0; i < nbtTagList.tagCount(); ++i) { for (int i = 0; i < nbtTagList.tagCount(); ++i) {
final NBTTagCompound vectorTag = final NBTTagCompound vectorTag
(NBTTagCompound)nbtTagList.getCompoundTagAt(i); = (NBTTagCompound) nbtTagList.getCompoundTagAt(i);
final Vector3 position = Vector3.readFromNBT(vectorTag); final Vector3 position = Vector3.readFromNBT(vectorTag);
if (scale > 0.0f) { if (scale > 0.0f) {
position.multiply(scale); position.multiply(scale);
@ -320,15 +350,20 @@ public class ItemModeCustom extends ItemMode implements ICache {
} }
@Override @Override
public boolean isInField(final IFieldInteraction projector, public boolean isInField(final IFieldInteraction projector, final Vector3 position) {
final Vector3 position) {
return false; return false;
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @Override
public void render(final IProjector projector, final double x, final double y, public void render(
final double z, final float f, final long ticks) { final IProjector projector,
final double x,
final double y,
final double z,
final float f,
final long ticks
) {
final IProjectorMode[] modes = { ModularForceFieldSystem.itemModeCube, final IProjectorMode[] modes = { ModularForceFieldSystem.itemModeCube,
ModularForceFieldSystem.itemModeSphere, ModularForceFieldSystem.itemModeSphere,
ModularForceFieldSystem.itemModeTube, ModularForceFieldSystem.itemModeTube,

View file

@ -1,10 +1,11 @@
package mffs.item.module.projector; package mffs.item.module.projector;
import java.util.HashSet;
import java.util.Set;
import calclavia.lib.CalculationHelper; import calclavia.lib.CalculationHelper;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import java.util.HashSet;
import java.util.Set;
import mffs.api.IFieldInteraction; import mffs.api.IFieldInteraction;
import mffs.api.IProjector; import mffs.api.IProjector;
import mffs.item.mode.ItemMode; import mffs.item.mode.ItemMode;
@ -14,27 +15,27 @@ import org.lwjgl.opengl.GL11;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
public class ItemModeCylinder extends ItemMode { public class ItemModeCylinder extends ItemMode {
public ItemModeCylinder() {
public ItemModeCylinder() { super("modeCylinder"); } super("modeCylinder");
}
@Override @Override
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) { public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
final Set<Vector3> fieldBlocks = new HashSet<>(); final Set<Vector3> fieldBlocks = new HashSet<>();
final Vector3 posScale = projector.getPositiveScale(); final Vector3 posScale = projector.getPositiveScale();
final Vector3 negScale = projector.getNegativeScale(); final Vector3 negScale = projector.getNegativeScale();
final int radius = (posScale.intX() + negScale.intX() + posScale.intZ() + final int radius
negScale.intZ()) / = (posScale.intX() + negScale.intX() + posScale.intZ() + negScale.intZ()) / 2;
2;
final int height = posScale.intY() + negScale.intY(); final int height = posScale.intY() + negScale.intY();
for (float x = (float) (-radius); x <= radius; ++x) { for (float x = (float) (-radius); x <= radius; ++x) {
for (float z = (float) (-radius); z <= radius; ++z) { for (float z = (float) (-radius); z <= radius; ++z) {
for (float y = 0.0f; y < height; ++y) { for (float y = 0.0f; y < height; ++y) {
if ((y == 0.0f || y == height - 1) && if ((y == 0.0f || y == height - 1)
x * x + z * z + 0.0f <= radius * radius) { && x * x + z * z + 0.0f <= radius * radius) {
fieldBlocks.add(new Vector3(x, y, z)); fieldBlocks.add(new Vector3(x, y, z));
} }
if (x * x + z * z + 0.0f <= radius * radius && if (x * x + z * z + 0.0f <= radius * radius
x * x + z * z + 0.0f >= (radius - 1) * (radius - 1)) { && x * x + z * z + 0.0f >= (radius - 1) * (radius - 1)) {
fieldBlocks.add(new Vector3(x, y, z)); fieldBlocks.add(new Vector3(x, y, z));
} }
} }
@ -49,9 +50,8 @@ public class ItemModeCylinder extends ItemMode {
final Vector3 translation = projector.getTranslation(); final Vector3 translation = projector.getTranslation();
final Vector3 posScale = projector.getPositiveScale(); final Vector3 posScale = projector.getPositiveScale();
final Vector3 negScale = projector.getNegativeScale(); final Vector3 negScale = projector.getNegativeScale();
final int radius = (posScale.intX() + negScale.intX() + posScale.intZ() + final int radius
negScale.intZ()) / = (posScale.intX() + negScale.intX() + posScale.intZ() + negScale.intZ()) / 2;
2;
final int height = posScale.intY() + negScale.intY(); final int height = posScale.intY() + negScale.intY();
for (int x = -radius; x <= radius; ++x) { for (int x = -radius; x <= radius; ++x) {
for (int z = -radius; z <= radius; ++z) { for (int z = -radius; z <= radius; ++z) {
@ -60,7 +60,8 @@ public class ItemModeCylinder extends ItemMode {
if (this.isInField( if (this.isInField(
projector, projector,
Vector3.add(position, new Vector3((TileEntity) projector)) Vector3.add(position, new Vector3((TileEntity) projector))
.add(translation))) { .add(translation)
)) {
fieldBlocks.add(position); fieldBlocks.add(position);
} }
} }
@ -70,28 +71,32 @@ public class ItemModeCylinder extends ItemMode {
} }
@Override @Override
public boolean isInField(final IFieldInteraction projector, public boolean isInField(final IFieldInteraction projector, final Vector3 position) {
final Vector3 position) {
final Vector3 posScale = projector.getPositiveScale(); final Vector3 posScale = projector.getPositiveScale();
final Vector3 negScale = projector.getNegativeScale(); final Vector3 negScale = projector.getNegativeScale();
final int radius = (posScale.intX() + negScale.intX() + posScale.intZ() + final int radius
negScale.intZ()) / = (posScale.intX() + negScale.intX() + posScale.intZ() + negScale.intZ()) / 2;
2;
final Vector3 projectorPos = new Vector3((TileEntity) projector); final Vector3 projectorPos = new Vector3((TileEntity) projector);
projectorPos.add(projector.getTranslation()); projectorPos.add(projector.getTranslation());
final Vector3 relativePosition = position.clone().subtract(projectorPos); final Vector3 relativePosition = position.clone().subtract(projectorPos);
CalculationHelper.rotateByAngle(relativePosition, CalculationHelper.rotateByAngle(
-projector.getRotationYaw(), relativePosition, -projector.getRotationYaw(), -projector.getRotationPitch()
-projector.getRotationPitch()); );
return relativePosition.x * relativePosition.x + return relativePosition.x * relativePosition.x
relativePosition.z * relativePosition.z + 0.0 <= + relativePosition.z * relativePosition.z + 0.0
radius * radius; <= radius * radius;
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @Override
public void render(final IProjector projector, final double x, final double y, public void render(
final double z, final float f, final long ticks) { 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 scale = 0.15f;
final float detail = 0.5f; final float detail = 0.5f;
GL11.glScalef(scale, scale, scale); GL11.glScalef(scale, scale, scale);
@ -100,13 +105,12 @@ public class ItemModeCylinder extends ItemMode {
for (float renderX = -radius; renderX <= radius; renderX += detail) { for (float renderX = -radius; renderX <= radius; renderX += detail) {
for (float renderZ = -radius; renderZ <= radius; renderZ += detail) { for (float renderZ = -radius; renderZ <= radius; renderZ += detail) {
for (float renderY = -radius; renderY <= radius; renderY += detail) { for (float renderY = -radius; renderY <= radius; renderY += detail) {
if ((renderX * renderX + renderZ * renderZ + 0.0f <= if ((renderX * renderX + renderZ * renderZ + 0.0f <= radius * radius
radius * radius && && renderX * renderX + renderZ * renderZ + 0.0f
renderX * renderX + renderZ * renderZ + 0.0f >= >= (radius - 1.0f) * (radius - 1.0f))
(radius - 1.0f) * (radius - 1.0f)) || || ((renderY == 0.0f || renderY == radius - 1.0f)
((renderY == 0.0f || renderY == radius - 1.0f) && && renderX * renderX + renderZ * renderZ + 0.0f
renderX * renderX + renderZ * renderZ + 0.0f <= <= radius * radius)) {
radius * radius)) {
if (i % 2 == 0) { if (i % 2 == 0) {
final Vector3 vector = new Vector3(renderX, renderY, renderZ); final Vector3 vector = new Vector3(renderX, renderY, renderZ);
GL11.glTranslated(vector.x, vector.y, vector.z); GL11.glTranslated(vector.x, vector.y, vector.z);

View file

@ -1,10 +1,11 @@
package mffs.item.module.projector; package mffs.item.module.projector;
import java.util.HashSet;
import java.util.Set;
import calclavia.lib.CalculationHelper; import calclavia.lib.CalculationHelper;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import java.util.HashSet;
import java.util.Set;
import mffs.api.IFieldInteraction; import mffs.api.IFieldInteraction;
import mffs.api.IProjector; import mffs.api.IProjector;
import mffs.item.mode.ItemMode; import mffs.item.mode.ItemMode;
@ -15,7 +16,9 @@ import universalelectricity.core.vector.Vector3;
import universalelectricity.prefab.vector.Region3; import universalelectricity.prefab.vector.Region3;
public class ItemModePyramid extends ItemMode { public class ItemModePyramid extends ItemMode {
public ItemModePyramid() { super("modePyramid"); } public ItemModePyramid() {
super("modePyramid");
}
@Override @Override
public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) { public Set<Vector3> getExteriorPoints(final IFieldInteraction projector) {
@ -30,22 +33,22 @@ public class ItemModePyramid extends ItemMode {
for (float x = (float) (-xStretch); x <= xStretch; ++x) { for (float x = (float) (-xStretch); x <= xStretch; ++x) {
for (float z = (float) (-zStretch); z <= zStretch; ++z) { for (float z = (float) (-zStretch); z <= zStretch; ++z) {
final double yTest = y / yStretch * 8.0f; final double yTest = y / yStretch * 8.0f;
final double xzPositivePlane = final double xzPositivePlane
(1.0f - x / xStretch - z / zStretch) * 8.0f; = (1.0f - x / xStretch - z / zStretch) * 8.0f;
final double xzNegativePlane = final double xzNegativePlane
(1.0f + x / xStretch - z / zStretch) * 8.0f; = (1.0f + x / xStretch - z / zStretch) * 8.0f;
if (x >= 0.0f && z >= 0.0f && if (x >= 0.0f && z >= 0.0f
Math.round(xzPositivePlane) == Math.round(yTest)) { && Math.round(xzPositivePlane) == Math.round(yTest)) {
fieldBlocks.add(new Vector3(x, y, z).add(translation)); fieldBlocks.add(new Vector3(x, y, z).add(translation));
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 && if (x <= 0.0f && z >= 0.0f
Math.round(xzNegativePlane) == Math.round(yTest)) { && Math.round(xzNegativePlane) == Math.round(yTest)) {
fieldBlocks.add(new Vector3(x, y, -z).add(translation)); fieldBlocks.add(new Vector3(x, y, -z).add(translation));
fieldBlocks.add(new Vector3(x, y, z).add(translation)); fieldBlocks.add(new Vector3(x, y, z).add(translation));
} }
if (y == 0.0f && if (y == 0.0f
Math.abs(x) + Math.abs(z) < (xStretch + yStretch) / 2) { && Math.abs(x) + Math.abs(z) < (xStretch + yStretch) / 2) {
fieldBlocks.add(new Vector3(x, y, z).add(translation)); fieldBlocks.add(new Vector3(x, y, z).add(translation));
} }
} }
@ -69,7 +72,8 @@ public class ItemModePyramid extends ItemMode {
final Vector3 position = new Vector3(x, y, z).add(translation); final Vector3 position = new Vector3(x, y, z).add(translation);
if (this.isInField( if (this.isInField(
projector, projector,
Vector3.add(position, new Vector3((TileEntity)projector)))) { Vector3.add(position, new Vector3((TileEntity) projector))
)) {
fieldBlocks.add(position); fieldBlocks.add(position);
} }
} }
@ -79,8 +83,7 @@ public class ItemModePyramid extends ItemMode {
} }
@Override @Override
public boolean isInField(final IFieldInteraction projector, public boolean isInField(final IFieldInteraction projector, final Vector3 position) {
final Vector3 position) {
final Vector3 posScale = projector.getPositiveScale().clone(); final Vector3 posScale = projector.getPositiveScale().clone();
final Vector3 negScale = projector.getNegativeScale().clone(); final Vector3 negScale = projector.getNegativeScale().clone();
final int xStretch = posScale.intX() + negScale.intX(); final int xStretch = posScale.intX() + negScale.intX();
@ -90,20 +93,26 @@ public class ItemModePyramid extends ItemMode {
projectorPos.add(projector.getTranslation()); projectorPos.add(projector.getTranslation());
projectorPos.add(new Vector3(0.0, -negScale.intY() + 1, 0.0)); projectorPos.add(new Vector3(0.0, -negScale.intY() + 1, 0.0));
final Vector3 relativePosition = position.clone().subtract(projectorPos); final Vector3 relativePosition = position.clone().subtract(projectorPos);
CalculationHelper.rotateByAngle(relativePosition, CalculationHelper.rotateByAngle(
-projector.getRotationYaw(), relativePosition, -projector.getRotationYaw(), -projector.getRotationPitch()
-projector.getRotationPitch()); );
final Region3 region = new Region3(negScale.multiply(-1.0), posScale); final Region3 region = new Region3(negScale.multiply(-1.0), posScale);
return region.isIn(relativePosition) && relativePosition.y > 0.0 && return region.isIn(relativePosition) && relativePosition.y > 0.0
1.0 - Math.abs(relativePosition.x) / xStretch - && 1.0 - Math.abs(relativePosition.x) / xStretch
Math.abs(relativePosition.z) / zStretch > - Math.abs(relativePosition.z) / zStretch
relativePosition.y / yStretch; > relativePosition.y / yStretch;
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
@Override @Override
public void render(final IProjector projector, final double x, final double y, public void render(
final double z, final float f, final long ticks) { final IProjector projector,
final double x,
final double y,
final double z,
final float f,
final long ticks
) {
final Tessellator tessellator = Tessellator.instance; final Tessellator tessellator = Tessellator.instance;
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glRotatef(180.0f, 0.0f, 0.0f, 1.0f); GL11.glRotatef(180.0f, 0.0f, 0.0f, 1.0f);
@ -114,23 +123,44 @@ public class ItemModePyramid extends ItemMode {
final Vector3 translation = new Vector3(0.0, -0.4, 0.0); final Vector3 translation = new Vector3(0.0, -0.4, 0.0);
tessellator.startDrawing(6); tessellator.startDrawing(6);
tessellator.setColorRGBA(72, 198, 255, 255); tessellator.setColorRGBA(72, 198, 255, 255);
tessellator.addVertexWithUV(0.0 + translation.x, 0.0 + translation.y, tessellator.addVertexWithUV(
0.0 + translation.z, 0.0, 0.0); 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), tessellator.addVertexWithUV(
(double)(-uvMaxY)); -width + translation.x,
tessellator.addVertexWithUV(-width + translation.x, height + translation.y, height + translation.y,
width + translation.z, (double)(-uvMaxX), -width + translation.z,
(double)uvMaxY); (double) (-uvMaxX),
tessellator.addVertexWithUV(width + translation.x, height + translation.y, (double) (-uvMaxY)
width + translation.z, (double)uvMaxX, );
(double)uvMaxY); tessellator.addVertexWithUV(
tessellator.addVertexWithUV(width + translation.x, height + translation.y, -width + translation.x,
-width + translation.z, (double)uvMaxX, height + translation.y,
(double)(-uvMaxY)); width + translation.z,
tessellator.addVertexWithUV(-width + translation.x, height + translation.y, (double) (-uvMaxX),
-width + translation.z, (double)(-uvMaxX), (double) uvMaxY
(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(); tessellator.draw();
GL11.glPopMatrix(); GL11.glPopMatrix();
} }

View file

@ -2,12 +2,13 @@ package mffs.item.module.projector;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import mffs.IDelayedEventHandler; import mffs.IDelayedEventHandler;
import mffs.MFFSHelper; import mffs.MFFSHelper;
import mffs.ModularForceFieldSystem; import mffs.ModularForceFieldSystem;
import mffs.base.PacketFxs;
import mffs.api.Blacklist; import mffs.api.Blacklist;
import mffs.api.IProjector; import mffs.api.IProjector;
import mffs.base.PacketFxs;
import mffs.base.TileEntityInventory; import mffs.base.TileEntityInventory;
import mffs.event.BlockDropDelayedEvent; import mffs.event.BlockDropDelayedEvent;
import mffs.event.BlockInventoryDropDelayedEvent; import mffs.event.BlockInventoryDropDelayedEvent;
@ -33,8 +34,7 @@ public class ItemModuleDisintegration extends ItemModule {
} }
@Override @Override
public boolean onProject(final IProjector projector, public boolean onProject(final IProjector projector, final Set<Vector3> fields) {
final Set<Vector3> fields) {
this.blockCount = 0; this.blockCount = 0;
return false; return false;
} }
@ -43,11 +43,15 @@ public class ItemModuleDisintegration extends ItemModule {
public int onProject(final IProjector projector, final Vector3 position) { public int onProject(final IProjector projector, final Vector3 position) {
if (projector.getTicks() % 40L == 0L) { if (projector.getTicks() % 40L == 0L) {
final TileEntity tileEntity = (TileEntity) projector; 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 (block != Blocks.air) {
if (projector.getModuleCount( if (projector.getModuleCount(
ModularForceFieldSystem.itemModuleCamouflage, new int[0]) > 0) { ModularForceFieldSystem.itemModuleCamouflage, new int[0]
final int blockMetadata = position.getBlockMetadata((IBlockAccess) tileEntity.getWorldObj()); )
> 0) {
final int blockMetadata = position.getBlockMetadata((IBlockAccess
) tileEntity.getWorldObj());
final Set<ItemStack> filterStacks = new HashSet<>(); final Set<ItemStack> filterStacks = new HashSet<>();
for (final int i : projector.getModuleSlots()) { for (final int i : projector.getModuleSlots()) {
final ItemStack checkStack = projector.getStackInSlot(i); final ItemStack checkStack = projector.getStackInSlot(i);
@ -58,8 +62,8 @@ public class ItemModuleDisintegration extends ItemModule {
} }
boolean contains = false; boolean contains = false;
for (final ItemStack filterStack : filterStacks) { for (final ItemStack filterStack : filterStacks) {
if (filterStack.isItemEqual( if (filterStack.isItemEqual(new ItemStack(block, 1, blockMetadata)
new ItemStack(block, 1, blockMetadata))) { )) {
contains = true; contains = true;
break; break;
} }
@ -68,8 +72,8 @@ public class ItemModuleDisintegration extends ItemModule {
return 1; return 1;
} }
} }
if (Blacklist.disintegrationBlacklist.contains(block) || if (Blacklist.disintegrationBlacklist.contains(block)
block instanceof IFluidBlock) { || block instanceof IFluidBlock) {
return 1; return 1;
} }
@ -79,26 +83,38 @@ public class ItemModuleDisintegration extends ItemModule {
fxsData.setInteger("type", 2); fxsData.setInteger("type", 2);
ModularForceFieldSystem.channel.sendToAll( ModularForceFieldSystem.channel.sendToAll(
new PacketFxs(new Vector3((TileEntity) projector), fxsData)); new PacketFxs(new Vector3((TileEntity) projector), fxsData)
);
if (projector.getModuleCount( if (projector.getModuleCount(
ModularForceFieldSystem.itemModuleCollection, new int[0]) > 0) { ModularForceFieldSystem.itemModuleCollection, new int[0]
)
> 0) {
((TileEntityForceFieldProjector) projector) ((TileEntityForceFieldProjector) projector)
.getDelayedEvents() .getDelayedEvents()
.add(new BlockInventoryDropDelayedEvent( .add(new BlockInventoryDropDelayedEvent(
(IDelayedEventHandler) projector, 39, block, (IDelayedEventHandler) projector,
tileEntity.getWorldObj(), position, 39,
(TileEntityInventory) projector)); block,
tileEntity.getWorldObj(),
position,
(TileEntityInventory) projector
));
} else { } else {
((TileEntityForceFieldProjector) projector) ((TileEntityForceFieldProjector) projector)
.getDelayedEvents() .getDelayedEvents()
.add(new BlockDropDelayedEvent( .add(new BlockDropDelayedEvent(
(IDelayedEventHandler) projector, 39, block, (IDelayedEventHandler) projector,
tileEntity.getWorldObj(), position)); 39,
block,
tileEntity.getWorldObj(),
position
));
} }
if (this.blockCount++ >= projector.getModuleCount(ModularForceFieldSystem.itemModuleSpeed, if (this.blockCount++
new int[0]) / >= projector.getModuleCount(
3) { ModularForceFieldSystem.itemModuleSpeed, new int[0]
) / 3) {
return 2; return 2;
} }
return 1; return 1;

View file

@ -1,8 +1,9 @@
package mffs.item.module.projector; package mffs.item.module.projector;
import icbm.api.IBlockFrequency;
import java.util.Iterator; import java.util.Iterator;
import java.util.Set; import java.util.Set;
import icbm.api.IBlockFrequency;
import mffs.api.IFieldInteraction; import mffs.api.IFieldInteraction;
import mffs.api.IProjector; import mffs.api.IProjector;
import mffs.api.fortron.IFortronFrequency; import mffs.api.fortron.IFortronFrequency;
@ -20,24 +21,24 @@ public class ItemModuleFusion extends ItemModule {
} }
@Override @Override
public boolean onProject(final IProjector projector, public boolean onProject(final IProjector projector, final Set<Vector3> fieldBlocks) {
final Set<Vector3> fieldBlocks) { final Set<IBlockFrequency> machines
final Set<IBlockFrequency> machines = FrequencyGrid.instance().get( = FrequencyGrid.instance().get(((IFortronFrequency) projector).getFrequency()
((IFortronFrequency)projector).getFrequency()); );
for (final IBlockFrequency compareProjector : machines) { for (final IBlockFrequency compareProjector : machines) {
if (compareProjector instanceof IProjector && if (compareProjector instanceof IProjector && compareProjector != projector
compareProjector != projector && && ((TileEntity) compareProjector).getWorldObj()
((TileEntity)compareProjector).getWorldObj() == == ((TileEntity) projector).getWorldObj()
((TileEntity)projector).getWorldObj() && && ((TileEntityBase) compareProjector).isActive()
((TileEntityBase)compareProjector).isActive() && && ((IProjector) compareProjector).getMode() != null) {
((IProjector)compareProjector).getMode() != null) {
final Iterator<Vector3> it = fieldBlocks.iterator(); final Iterator<Vector3> it = fieldBlocks.iterator();
while (it.hasNext()) { while (it.hasNext()) {
final Vector3 position = it.next(); final Vector3 position = it.next();
if (((IProjector) compareProjector) if (((IProjector) compareProjector)
.getMode() .getMode()
.isInField((IFieldInteraction)compareProjector, .isInField(
position.clone())) { (IFieldInteraction) compareProjector, position.clone()
)) {
it.remove(); it.remove();
} }
} }

View file

@ -2,17 +2,20 @@ package mffs.item.module.projector;
import java.util.Iterator; import java.util.Iterator;
import java.util.Set; import java.util.Set;
import mffs.api.IFieldInteraction; import mffs.api.IFieldInteraction;
import mffs.item.module.ItemModule; import mffs.item.module.ItemModule;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import universalelectricity.core.vector.Vector3; import universalelectricity.core.vector.Vector3;
public class ItemModuleManipulator extends ItemModule { public class ItemModuleManipulator extends ItemModule {
public ItemModuleManipulator() { super("moduleManipulator"); } public ItemModuleManipulator() {
super("moduleManipulator");
}
@Override @Override
public void onCalculate(final IFieldInteraction projector, public void
final Set<Vector3> fieldBlocks) { onCalculate(final IFieldInteraction projector, final Set<Vector3> fieldBlocks) {
final Iterator<Vector3> it = fieldBlocks.iterator(); final Iterator<Vector3> it = fieldBlocks.iterator();
while (it.hasNext()) { while (it.hasNext()) {
final Vector3 position = it.next(); final Vector3 position = it.next();

View file

@ -8,16 +8,23 @@ import net.minecraft.item.ItemStack;
import net.minecraft.world.World; import net.minecraft.world.World;
public class ItemModuleShock extends ItemModule { public class ItemModuleShock extends ItemModule {
public ItemModuleShock() { super("moduleShock"); } public ItemModuleShock() {
super("moduleShock");
}
@Override @Override
public boolean onCollideWithForceField(final World world, final int x, public boolean onCollideWithForceField(
final int y, final int z, final World world,
final int x,
final int y,
final int z,
final Entity entity, final Entity entity,
final ItemStack moduleStack) { final ItemStack moduleStack
) {
if (entity instanceof EntityLiving) { if (entity instanceof EntityLiving) {
entity.attackEntityFrom(ModularForceFieldSystem.damagefieldShock, entity.attackEntityFrom(
moduleStack.stackSize); ModularForceFieldSystem.damagefieldShock, moduleStack.stackSize
);
} }
return false; return false;
} }

View file

@ -1,6 +1,7 @@
package mffs.item.module.projector; package mffs.item.module.projector;
import java.util.Set; import java.util.Set;
import mffs.api.IProjector; import mffs.api.IProjector;
import mffs.item.module.ItemModule; import mffs.item.module.ItemModule;
import net.minecraft.block.BlockLiquid; import net.minecraft.block.BlockLiquid;
@ -17,12 +18,12 @@ public class ItemModuleSponge extends ItemModule {
} }
@Override @Override
public boolean onProject(final IProjector projector, public boolean onProject(final IProjector projector, final Set<Vector3> fields) {
final Set<Vector3> fields) {
if (projector.getTicks() % 60L == 0L) { if (projector.getTicks() % 60L == 0L) {
final World world = ((TileEntity) projector).getWorldObj(); final World world = ((TileEntity) projector).getWorldObj();
for (final Vector3 point : projector.getInteriorPoints()) { for (final Vector3 point : projector.getInteriorPoints()) {
if (point.getBlock(world) instanceof IFluidBlock || point.getBlock(world) instanceof BlockLiquid) { if (point.getBlock(world) instanceof IFluidBlock
|| point.getBlock(world) instanceof BlockLiquid) {
point.setBlock(world, Blocks.air); point.setBlock(world, Blocks.air);
} }
} }

View file

@ -1,12 +1,13 @@
package mffs.item.module.projector; package mffs.item.module.projector;
import calclavia.lib.CalculationHelper;
import java.util.HashMap; import java.util.HashMap;
import java.util.Set; import java.util.Set;
import mffs.base.PacketFxs;
import calclavia.lib.CalculationHelper;
import mffs.ModularForceFieldSystem; import mffs.ModularForceFieldSystem;
import mffs.api.Blacklist; import mffs.api.Blacklist;
import mffs.api.IProjector; import mffs.api.IProjector;
import mffs.base.PacketFxs;
import mffs.item.module.ItemModule; import mffs.item.module.ItemModule;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
@ -32,8 +33,7 @@ public class ItemModuleStablize extends ItemModule {
} }
@Override @Override
public boolean onProject(final IProjector projector, public boolean onProject(final IProjector projector, final Set<Vector3> fields) {
final Set<Vector3> fields) {
this.blockCount = 0; this.blockCount = 0;
return false; return false;
} }
@ -43,28 +43,36 @@ public class ItemModuleStablize extends ItemModule {
int[] blockInfo = null; int[] blockInfo = null;
if (projector.getTicks() % 40L == 0L) { if (projector.getTicks() % 40L == 0L) {
if (projector.getMode() instanceof ItemModeCustom) { if (projector.getMode() instanceof ItemModeCustom) {
final HashMap<Vector3, int[]> fieldBlocks = ((ItemModeCustom) projector.getMode()) final HashMap<Vector3, int[]> fieldBlocks
= ((ItemModeCustom) projector.getMode())
.getFieldBlockMap(projector, projector.getModeStack()); .getFieldBlockMap(projector, projector.getModeStack());
final Vector3 fieldCenter = new Vector3((TileEntity) projector).add(projector.getTranslation()); final Vector3 fieldCenter
= new Vector3((TileEntity) projector).add(projector.getTranslation());
final Vector3 relativePosition = position.clone().subtract(fieldCenter); final Vector3 relativePosition = position.clone().subtract(fieldCenter);
CalculationHelper.rotateByAngle(relativePosition, CalculationHelper.rotateByAngle(
relativePosition,
-projector.getRotationYaw(), -projector.getRotationYaw(),
-projector.getRotationPitch()); -projector.getRotationPitch()
);
blockInfo = fieldBlocks.get(relativePosition.round()); blockInfo = fieldBlocks.get(relativePosition.round());
} }
for (int dir = 0; dir < 6; ++dir) { for (int dir = 0; dir < 6; ++dir) {
final ForgeDirection direction = ForgeDirection.getOrientation(dir); final ForgeDirection direction = ForgeDirection.getOrientation(dir);
final TileEntity tileEntity = VectorHelper.getTileEntityFromSide( final TileEntity tileEntity = VectorHelper.getTileEntityFromSide(
((TileEntity) projector).getWorldObj(), ((TileEntity) projector).getWorldObj(),
new Vector3((TileEntity) projector), direction); new Vector3((TileEntity) projector),
direction
);
if (tileEntity instanceof IInventory) { if (tileEntity instanceof IInventory) {
final IInventory inventory = (IInventory) tileEntity; final IInventory inventory = (IInventory) tileEntity;
for (int i = 0; i < inventory.getSizeInventory(); ++i) { for (int i = 0; i < inventory.getSizeInventory(); ++i) {
final ItemStack checkStack = inventory.getStackInSlot(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 (blockInfo != null) {
if (Block.getBlockById(blockInfo[0]) != Block if (Block.getBlockById(blockInfo[0])
.getBlockFromItem((ItemBlock) checkStack.getItem())) { != Block.getBlockFromItem((ItemBlock
) checkStack.getItem())) {
continue; continue;
} }
} }
@ -72,10 +80,16 @@ public class ItemModuleStablize extends ItemModule {
if (((TileEntity) projector) if (((TileEntity) projector)
.getWorldObj() .getWorldObj()
.canPlaceEntityOnSide( .canPlaceEntityOnSide(
Block.getBlockFromItem( Block.getBlockFromItem((ItemBlock
(ItemBlock) checkStack.getItem()), ) checkStack.getItem()),
position.intX(), position.intY(), position.intZ(), position.intX(),
false, 0, (Entity) null, checkStack)) { position.intY(),
position.intZ(),
false,
0,
(Entity) null,
checkStack
)) {
final int metadata = (blockInfo != null) final int metadata = (blockInfo != null)
? blockInfo[1] ? blockInfo[1]
: (checkStack.getHasSubtypes() : (checkStack.getHasSubtypes()
@ -84,16 +98,24 @@ public class ItemModuleStablize extends ItemModule {
final Block block = (blockInfo != null) final Block block = (blockInfo != null)
? Block.getBlockById(blockInfo[0]) ? Block.getBlockById(blockInfo[0])
: null; : null;
if (Blacklist.stabilizationBlacklist.contains(block) || if (Blacklist.stabilizationBlacklist.contains(block)
block instanceof IFluidBlock) { || block instanceof IFluidBlock) {
return 1; return 1;
} }
((ItemBlock) checkStack.getItem()) ((ItemBlock) checkStack.getItem())
.placeBlockAt(checkStack, (EntityPlayer) null, .placeBlockAt(
checkStack,
(EntityPlayer) null,
((TileEntity) projector).getWorldObj(), ((TileEntity) projector).getWorldObj(),
position.intX(), position.intY(), position.intX(),
position.intZ(), 0, 0.0f, 0.0f, 0.0f, position.intY(),
metadata); position.intZ(),
0,
0.0f,
0.0f,
0.0f,
metadata
);
inventory.decrStackSize(i, 1); inventory.decrStackSize(i, 1);
NBTTagCompound fxsData = new NBTTagCompound(); NBTTagCompound fxsData = new NBTTagCompound();
@ -101,12 +123,17 @@ public class ItemModuleStablize extends ItemModule {
position.writeToNBT(fxsData); position.writeToNBT(fxsData);
fxsData.setInteger("type", 1); fxsData.setInteger("type", 1);
ModularForceFieldSystem.channel.sendToAll(new PacketFxs( ModularForceFieldSystem.channel.sendToAll(
new Vector3((TileEntity) projector), fxsData)); new PacketFxs(
new Vector3((TileEntity) projector), fxsData
)
);
if (this.blockCount++ >= projector.getModuleCount( if (this.blockCount++
ModularForceFieldSystem.itemModuleSpeed, new int[0]) / >= projector.getModuleCount(
3) { ModularForceFieldSystem.itemModuleSpeed,
new int[0]
) / 3) {
return 2; return 2;
} }
return 1; return 1;

View file

@ -8,7 +8,9 @@ import net.minecraft.item.ItemStack;
public class RecipeBuilder { 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) { public RecipeBuilder output(ItemStack stack) {
this.adapter.setOutput(stack); this.adapter.setOutput(stack);
@ -45,5 +47,7 @@ public class RecipeBuilder {
return this; return this;
} }
public void register() { GameRegistry.addRecipe(this.adapter.create()); } public void register() {
GameRegistry.addRecipe(this.adapter.create());
}
} }

View file

@ -1,6 +1,7 @@
package mffs.recipe; package mffs.recipe;
import java.util.ArrayList; import java.util.ArrayList;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.IRecipe;
import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapedOreRecipe;

View file

@ -1,6 +1,7 @@
package mffs.recipe; package mffs.recipe;
import java.util.ArrayList; import java.util.ArrayList;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.IRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe;

View file

@ -30,9 +30,15 @@ public class FXBeam extends EntityFX {
private int rotationSpeed; private int rotationSpeed;
private float prevSize; private float prevSize;
public FXBeam(final World par1World, final Vector3 position, public FXBeam(
final Vector3 target, final float red, final float green, final World par1World,
final float blue, final int age) { 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); super(par1World, position.x, position.y, position.z, 0.0, 0.0, 0.0);
this.movX = 0.0; this.movX = 0.0;
this.movY = 0.0; this.movY = 0.0;
@ -65,14 +71,15 @@ public class FXBeam extends EntityFX {
this.prevYaw = this.rotYaw; this.prevYaw = this.rotYaw;
this.prevPitch = this.rotPitch; this.prevPitch = this.rotPitch;
super.particleMaxAge = age; super.particleMaxAge = age;
final EntityLivingBase renderentity = final EntityLivingBase renderentity = Minecraft.getMinecraft().renderViewEntity;
Minecraft.getMinecraft().renderViewEntity;
int visibleDistance = 50; int visibleDistance = 50;
if (!Minecraft.getMinecraft().gameSettings.fancyGraphics) { if (!Minecraft.getMinecraft().gameSettings.fancyGraphics) {
visibleDistance = 25; visibleDistance = 25;
} }
if (renderentity.getDistance(((Entity)this).posX, ((Entity)this).posY, if (renderentity.getDistance(
((Entity)this).posZ) > visibleDistance) { ((Entity) this).posX, ((Entity) this).posY, ((Entity) this).posZ
)
> visibleDistance) {
super.particleMaxAge = 0; super.particleMaxAge = 0;
} }
} }
@ -101,16 +108,22 @@ public class FXBeam extends EntityFX {
super.particleBlue = b; super.particleBlue = b;
} }
public void renderParticle(final Tessellator tessellator, final float f, public void renderParticle(
final float f1, final float f2, final float f3, final Tessellator tessellator,
final float f4, final float f5) { final float f,
final float f1,
final float f2,
final float f3,
final float f4,
final float f5
) {
tessellator.draw(); tessellator.draw();
GL11.glPushMatrix(); GL11.glPushMatrix();
final float var9 = 1.0f; final float var9 = 1.0f;
final float slide = (float) ((Entity) this).worldObj.getTotalWorldTime(); final float slide = (float) ((Entity) this).worldObj.getTotalWorldTime();
final float rot = ((Entity)this).worldObj.provider.getWorldTime() % final float rot = ((Entity) this).worldObj.provider.getWorldTime()
(360 / this.rotationSpeed) * this.rotationSpeed + % (360 / this.rotationSpeed) * this.rotationSpeed
this.rotationSpeed * f; + this.rotationSpeed * f;
float size = 1.0f; float size = 1.0f;
if (this.pulse) { if (this.pulse) {
size = Math.min(super.particleAge / 4.0f, 1.0f); size = Math.min(super.particleAge / 4.0f, 1.0f);
@ -121,7 +134,8 @@ public class FXBeam extends EntityFX {
op = 0.5f - (4 - (super.particleMaxAge - super.particleAge)) * 0.1f; op = 0.5f - (4 - (super.particleMaxAge - super.particleAge)) * 0.1f;
} }
Minecraft.getMinecraft().renderEngine.bindTexture( Minecraft.getMinecraft().renderEngine.bindTexture(
new ResourceLocation("mffs", "textures/blocks/fortron.png")); new ResourceLocation("mffs", "textures/blocks/fortron.png")
);
GL11.glTexParameterf(3553, 10242, 10497.0f); GL11.glTexParameterf(3553, 10242, 10497.0f);
GL11.glTexParameterf(3553, 10243, 10497.0f); GL11.glTexParameterf(3553, 10243, 10497.0f);
GL11.glDisable(2884); GL11.glDisable(2884);
@ -133,18 +147,15 @@ public class FXBeam extends EntityFX {
GL11.glEnable(3042); GL11.glEnable(3042);
GL11.glBlendFunc(770, 1); GL11.glBlendFunc(770, 1);
GL11.glDepthMask(false); GL11.glDepthMask(false);
final float xx = final float xx = (float
(float)(((Entity)this).prevPosX + ) (((Entity) this).prevPosX
(((Entity)this).posX - ((Entity)this).prevPosX) * f - + (((Entity) this).posX - ((Entity) this).prevPosX) * f - EntityFX.interpPosX);
EntityFX.interpPosX); final float yy = (float
final float yy = ) (((Entity) this).prevPosY
(float)(((Entity)this).prevPosY + + (((Entity) this).posY - ((Entity) this).prevPosY) * f - EntityFX.interpPosY);
(((Entity)this).posY - ((Entity)this).prevPosY) * f - final float zz = (float
EntityFX.interpPosY); ) (((Entity) this).prevPosZ
final float zz = + (((Entity) this).posZ - ((Entity) this).prevPosZ) * f - EntityFX.interpPosZ);
(float)(((Entity)this).prevPosZ +
(((Entity)this).posZ - ((Entity)this).prevPosZ) * f -
EntityFX.interpPosZ);
GL11.glTranslated((double) xx, (double) yy, (double) zz); GL11.glTranslated((double) xx, (double) yy, (double) zz);
final float ry = this.prevYaw + (this.rotYaw - this.prevYaw) * f; final float ry = this.prevYaw + (this.rotYaw - this.prevYaw) * f;
final float rp = this.prevPitch + (this.rotPitch - this.prevPitch) * f; final float rp = this.prevPitch + (this.rotPitch - this.prevPitch) * f;
@ -165,8 +176,9 @@ public class FXBeam extends EntityFX {
GL11.glRotatef(60.0f, 0.0f, 1.0f, 0.0f); GL11.glRotatef(60.0f, 0.0f, 1.0f, 0.0f);
tessellator.startDrawingQuads(); tessellator.startDrawingQuads();
tessellator.setBrightness(200); tessellator.setBrightness(200);
tessellator.setColorRGBA_F(super.particleRed, super.particleGreen, tessellator.setColorRGBA_F(
super.particleBlue, op); super.particleRed, super.particleGreen, super.particleBlue, op
);
tessellator.addVertexWithUV(var44b, var14, 0.0, var16, var18); tessellator.addVertexWithUV(var44b, var14, 0.0, var16, var18);
tessellator.addVertexWithUV(var12, 0.0, 0.0, var16, var17); tessellator.addVertexWithUV(var12, 0.0, 0.0, var16, var17);
tessellator.addVertexWithUV(var13, 0.0, 0.0, var15, var17); tessellator.addVertexWithUV(var13, 0.0, 0.0, var15, var17);
@ -180,6 +192,8 @@ public class FXBeam extends EntityFX {
GL11.glPopMatrix(); GL11.glPopMatrix();
tessellator.startDrawingQuads(); tessellator.startDrawingQuads();
this.prevSize = size; this.prevSize = size;
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("textures/particle/particles.png")); Minecraft.getMinecraft().renderEngine.bindTexture(
new ResourceLocation("textures/particle/particles.png")
);
} }
} }

View file

@ -20,9 +20,14 @@ import universalelectricity.core.vector.Vector3;
public class FXHologram extends EntityFX { public class FXHologram extends EntityFX {
private Vector3 targetPosition; private Vector3 targetPosition;
public FXHologram(final World par1World, final Vector3 position, public FXHologram(
final float red, final float green, final float blue, final World par1World,
final int age) { final Vector3 position,
final float red,
final float green,
final float blue,
final int age
) {
super(par1World, position.x, position.y, position.z); super(par1World, position.x, position.y, position.z);
this.targetPosition = null; this.targetPosition = null;
this.setRBGColorF(red, green, blue); this.setRBGColorF(red, green, blue);
@ -32,12 +37,12 @@ public class FXHologram extends EntityFX {
public FXHologram setTarget(final Vector3 targetPosition) { public FXHologram setTarget(final Vector3 targetPosition) {
this.targetPosition = targetPosition; this.targetPosition = targetPosition;
((Entity)this).motionX = ((Entity) this).motionX
(this.targetPosition.x - ((Entity)this).posX) / super.particleMaxAge; = (this.targetPosition.x - ((Entity) this).posX) / super.particleMaxAge;
((Entity)this).motionY = ((Entity) this).motionY
(this.targetPosition.y - ((Entity)this).posY) / super.particleMaxAge; = (this.targetPosition.y - ((Entity) this).posY) / super.particleMaxAge;
((Entity)this).motionZ = ((Entity) this).motionZ
(this.targetPosition.z - ((Entity)this).posZ) / super.particleMaxAge; = (this.targetPosition.z - ((Entity) this).posZ) / super.particleMaxAge;
return this; return this;
} }
@ -50,44 +55,56 @@ public class FXHologram extends EntityFX {
return; return;
} }
if (this.targetPosition != null) { if (this.targetPosition != null) {
this.moveEntity(((Entity)this).motionX, ((Entity)this).motionY, this.moveEntity(
((Entity)this).motionZ); ((Entity) this).motionX, ((Entity) this).motionY, ((Entity) this).motionZ
);
} }
} }
public void renderParticle(final Tessellator tessellator, final float f, public void renderParticle(
final float f1, final float f2, final float f3, final Tessellator tessellator,
final float f4, final float f5) { final float f,
final float f1,
final float f2,
final float f3,
final float f4,
final float f5
) {
tessellator.draw(); tessellator.draw();
GL11.glPushMatrix(); GL11.glPushMatrix();
final float xx = final float xx = (float
(float)(((Entity)this).prevPosX + ) (((Entity) this).prevPosX
(((Entity)this).posX - ((Entity)this).prevPosX) * f - + (((Entity) this).posX - ((Entity) this).prevPosX) * f - EntityFX.interpPosX);
EntityFX.interpPosX); final float yy = (float
final float yy = ) (((Entity) this).prevPosY
(float)(((Entity)this).prevPosY + + (((Entity) this).posY - ((Entity) this).prevPosY) * f - EntityFX.interpPosY);
(((Entity)this).posY - ((Entity)this).prevPosY) * f - final float zz = (float
EntityFX.interpPosY); ) (((Entity) this).prevPosZ
final float zz = + (((Entity) this).posZ - ((Entity) this).prevPosZ) * f - EntityFX.interpPosZ);
(float)(((Entity)this).prevPosZ +
(((Entity)this).posZ - ((Entity)this).prevPosZ) * f -
EntityFX.interpPosZ);
GL11.glTranslated((double) xx, (double) yy, (double) zz); GL11.glTranslated((double) xx, (double) yy, (double) zz);
GL11.glScalef(1.01f, 1.01f, 1.01f); GL11.glScalef(1.01f, 1.01f, 1.01f);
float op = 0.5f; float op = 0.5f;
if (super.particleMaxAge - super.particleAge <= 4) { if (super.particleMaxAge - super.particleAge <= 4) {
op = 0.5f - (5 - (super.particleMaxAge - super.particleAge)) * 0.1f; op = 0.5f - (5 - (super.particleMaxAge - super.particleAge)) * 0.1f;
} }
GL11.glColor4d((double)super.particleRed, (double)super.particleGreen, GL11.glColor4d(
(double)super.particleBlue, (double)(op * 2.0f)); (double) super.particleRed,
(double) super.particleGreen,
(double) super.particleBlue,
(double) (op * 2.0f)
);
CalclaviaRenderHelper.disableLighting(); CalclaviaRenderHelper.disableLighting();
CalclaviaRenderHelper.enableBlending(); CalclaviaRenderHelper.enableBlending();
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture); Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture
);
CalclaviaRenderHelper.renderNormalBlockAsItem( CalclaviaRenderHelper.renderNormalBlockAsItem(
(Block)ModularForceFieldSystem.blockForceField, 0, new RenderBlocks()); (Block) ModularForceFieldSystem.blockForceField, 0, new RenderBlocks()
);
CalclaviaRenderHelper.disableBlending(); CalclaviaRenderHelper.disableBlending();
GL11.glPopMatrix(); GL11.glPopMatrix();
tessellator.startDrawingQuads(); tessellator.startDrawingQuads();
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("textures/particle/particles.png")); Minecraft.getMinecraft().renderEngine.bindTexture(
new ResourceLocation("textures/particle/particles.png")
);
} }
} }

View file

@ -18,9 +18,14 @@ import universalelectricity.core.vector.Vector3;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class FXHologramMoving extends EntityFX { public class FXHologramMoving extends EntityFX {
public FXHologramMoving(final World par1World, final Vector3 position, public FXHologramMoving(
final float red, final float green, final float blue, final World par1World,
final int age) { final Vector3 position,
final float red,
final float green,
final float blue,
final int age
) {
super(par1World, position.x, position.y, position.z); super(par1World, position.x, position.y, position.z);
this.setRBGColorF(red, green, blue); this.setRBGColorF(red, green, blue);
super.particleMaxAge = age; super.particleMaxAge = age;
@ -36,23 +41,26 @@ public class FXHologramMoving extends EntityFX {
} }
} }
public void renderParticle(final Tessellator tessellator, final float f, public void renderParticle(
final float f1, final float f2, final float f3, final Tessellator tessellator,
final float f4, final float f5) { final float f,
final float f1,
final float f2,
final float f3,
final float f4,
final float f5
) {
tessellator.draw(); tessellator.draw();
GL11.glPushMatrix(); GL11.glPushMatrix();
final float xx = final float xx = (float
(float)(((Entity)this).prevPosX + ) (((Entity) this).prevPosX
(((Entity)this).posX - ((Entity)this).prevPosX) * f - + (((Entity) this).posX - ((Entity) this).prevPosX) * f - EntityFX.interpPosX);
EntityFX.interpPosX); final float yy = (float
final float yy = ) (((Entity) this).prevPosY
(float)(((Entity)this).prevPosY + + (((Entity) this).posY - ((Entity) this).prevPosY) * f - EntityFX.interpPosY);
(((Entity)this).posY - ((Entity)this).prevPosY) * f - final float zz = (float
EntityFX.interpPosY); ) (((Entity) this).prevPosZ
final float zz = + (((Entity) this).posZ - ((Entity) this).prevPosZ) * f - EntityFX.interpPosZ);
(float)(((Entity)this).prevPosZ +
(((Entity)this).posZ - ((Entity)this).prevPosZ) * f -
EntityFX.interpPosZ);
GL11.glTranslated((double) xx, (double) yy, (double) zz); GL11.glTranslated((double) xx, (double) yy, (double) zz);
GL11.glScalef(1.01f, 1.01f, 1.01f); GL11.glScalef(1.01f, 1.01f, 1.01f);
final double completion = super.particleAge / (double) super.particleMaxAge; final double completion = super.particleAge / (double) super.particleMaxAge;
@ -62,17 +70,25 @@ public class FXHologramMoving extends EntityFX {
if (super.particleMaxAge - super.particleAge <= 4) { if (super.particleMaxAge - super.particleAge <= 4) {
op = 0.5f - (5 - (super.particleMaxAge - super.particleAge)) * 0.1f; op = 0.5f - (5 - (super.particleMaxAge - super.particleAge)) * 0.1f;
} }
GL11.glColor4d((double)super.particleRed, (double)super.particleGreen, GL11.glColor4d(
(double)super.particleBlue, (double)(op * 2.0f)); (double) super.particleRed,
(double) super.particleGreen,
(double) super.particleBlue,
(double) (op * 2.0f)
);
CalclaviaRenderHelper.disableLighting(); CalclaviaRenderHelper.disableLighting();
CalclaviaRenderHelper.enableBlending(); CalclaviaRenderHelper.enableBlending();
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture); Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture
);
CalclaviaRenderHelper.renderNormalBlockAsItem( CalclaviaRenderHelper.renderNormalBlockAsItem(
(Block)ModularForceFieldSystem.blockForceField, 0, new RenderBlocks()); (Block) ModularForceFieldSystem.blockForceField, 0, new RenderBlocks()
);
CalclaviaRenderHelper.disableBlending(); CalclaviaRenderHelper.disableBlending();
CalclaviaRenderHelper.enableLighting(); CalclaviaRenderHelper.enableLighting();
GL11.glPopMatrix(); GL11.glPopMatrix();
tessellator.startDrawingQuads(); tessellator.startDrawingQuads();
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("textures/particle/particles.png")); 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