Wireless Terminal now respects WAPs and distances.
Finished Wireless Terminal. Added WAP Gui. Added Battery Config. Added Wireless Config. Fixed bug with dense cable channels, and the controller.
This commit is contained in:
parent
8b81545abf
commit
6de529a889
|
@ -6,6 +6,7 @@ import java.util.List;
|
|||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.Icon;
|
||||
import net.minecraft.world.World;
|
||||
|
@ -14,8 +15,10 @@ import appeng.block.AEBaseBlock;
|
|||
import appeng.client.render.BaseBlockRender;
|
||||
import appeng.client.render.blocks.RenderBlockWireless;
|
||||
import appeng.core.features.AEFeature;
|
||||
import appeng.core.sync.GuiBridge;
|
||||
import appeng.helpers.ICustomCollision;
|
||||
import appeng.tile.networking.TileWireless;
|
||||
import appeng.util.Platform;
|
||||
|
||||
public class BlockWireless extends AEBaseBlock implements ICustomCollision
|
||||
{
|
||||
|
@ -166,4 +169,20 @@ public class BlockWireless extends AEBaseBlock implements ICustomCollision
|
|||
out.add( AxisAlignedBB.getAABBPool().getAABB( 0.0, 0.0, 0.0, 1.0, 1.0, 1.0 ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onActivated(World w, int x, int y, int z, EntityPlayer p, int side, float hitX, float hitY, float hitZ)
|
||||
{
|
||||
if ( p.isSneaking() )
|
||||
return false;
|
||||
|
||||
TileWireless tg = getTileEntity( w, x, y, z );
|
||||
if ( tg != null )
|
||||
{
|
||||
if ( Platform.isServer() )
|
||||
Platform.openGUI( p, tg, ForgeDirection.getOrientation( side ), GuiBridge.GUI_WIRELESS );
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package appeng.container.implementations;
|
||||
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import appeng.core.Configuration;
|
||||
import appeng.core.localization.PlayerMessages;
|
||||
import appeng.helpers.WirelessTerminalGuiObject;
|
||||
|
||||
|
@ -24,5 +25,9 @@ public class ContainerWirelessTerm extends ContainerMEPortableCell
|
|||
getPlayerInv().player.closeScreen();
|
||||
getPlayerInv().player.sendChatToPlayer( PlayerMessages.OutOfRange.get() );
|
||||
}
|
||||
else
|
||||
{
|
||||
powerMultiplier = Configuration.instance.wireless_getDrainRate( wtgo.getRange() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,11 +40,17 @@ public class Configuration extends net.minecraftforge.common.Configuration imple
|
|||
private double WirelessBaseCost = 8;
|
||||
private double WirelessCostMultiplier = 1;
|
||||
private double WirelessHighWirelessCount = 64;
|
||||
private double WirelessTerminalDrainMultiplier = 1;
|
||||
|
||||
private double WirelessBaseRange = 16;
|
||||
private double WirelessBoosterRangeMultiplier = 1;
|
||||
private double WirelessBoosterExp = 1.5;
|
||||
|
||||
public double wireless_getDrainRate(double range)
|
||||
{
|
||||
return WirelessTerminalDrainMultiplier * range;
|
||||
}
|
||||
|
||||
public double wireless_getMaxRange(int boosters)
|
||||
{
|
||||
return WirelessBaseRange + WirelessBoosterRangeMultiplier * Math.pow( boosters, WirelessBoosterExp );
|
||||
|
@ -74,7 +80,12 @@ public class Configuration extends net.minecraftforge.common.Configuration imple
|
|||
public double oreDoublePercentage = 90.0;
|
||||
|
||||
public boolean enableEffects = true;
|
||||
public boolean enableNetworkProfiler = true;
|
||||
|
||||
public int wireless_battery = 1600000;
|
||||
public int manipulator_battery = 200000;
|
||||
public int mattercannon_battery = 200000;
|
||||
public int portablecell_battery = 20000;
|
||||
public int staff_battery = 8000;
|
||||
|
||||
public Configuration(File f) {
|
||||
super( new File( f.getPath() + File.separator + "AppliedEnergistics2" + File.separator + "AppliedEnergistics2.cfg" ) );
|
||||
|
@ -97,13 +108,27 @@ public class Configuration extends net.minecraftforge.common.Configuration imple
|
|||
grinderOres = get( "GrindStone", "grinderOres", grinderOres ).getStringList();
|
||||
oreDoublePercentage = get( "GrindStone", "oreDoublePercentage", oreDoublePercentage ).getDouble( oreDoublePercentage );
|
||||
enableEffects = get( "Client", "enableEffects", true ).getBoolean( true );
|
||||
enableNetworkProfiler = get( "Server", "enableNetworkProfiler", true ).getBoolean( true );
|
||||
|
||||
// settings.registerSetting( Settings.SEARCH_MODS, YesNo.YES );
|
||||
settings.registerSetting( Settings.SEARCH_TOOLTIPS, YesNo.YES );
|
||||
settings.registerSetting( Settings.SORT_BY, SortOrder.NAME );
|
||||
settings.registerSetting( Settings.SORT_DIRECTION, SortDir.ASCENDING );
|
||||
|
||||
WirelessBaseCost = get( "wireless", "WirelessBaseCost", WirelessBaseCost ).getDouble( WirelessBaseCost );
|
||||
WirelessCostMultiplier = get( "wireless", "WirelessCostMultiplier", WirelessCostMultiplier ).getDouble( WirelessCostMultiplier );
|
||||
WirelessBaseRange = get( "wireless", "WirelessBaseRange", WirelessBaseRange ).getDouble( WirelessBaseRange );
|
||||
WirelessBoosterRangeMultiplier = get( "wireless", "WirelessBoosterRangeMultiplier", WirelessBoosterRangeMultiplier ).getDouble(
|
||||
WirelessBoosterRangeMultiplier );
|
||||
WirelessBoosterExp = get( "wireless", "WirelessBoosterExp", WirelessBoosterExp ).getDouble( WirelessBoosterExp );
|
||||
WirelessTerminalDrainMultiplier = get( "wireless", "WirelessTerminalDrainMultiplier", WirelessTerminalDrainMultiplier ).getDouble(
|
||||
WirelessTerminalDrainMultiplier );
|
||||
|
||||
wireless_battery = get( "battery", "wireless", wireless_battery ).getInt( wireless_battery );
|
||||
staff_battery = get( "battery", "staff", staff_battery ).getInt( staff_battery );
|
||||
manipulator_battery = get( "battery", "manipulator", manipulator_battery ).getInt( manipulator_battery );
|
||||
portablecell_battery = get( "battery", "portablecell", portablecell_battery ).getInt( portablecell_battery );
|
||||
mattercannon_battery = get( "battery", "mattercannon", mattercannon_battery ).getInt( mattercannon_battery );
|
||||
|
||||
for (AEFeature feature : AEFeature.values())
|
||||
{
|
||||
if ( feature.isVisible() )
|
||||
|
|
|
@ -21,7 +21,7 @@ public enum GuiText
|
|||
|
||||
StorageBus, Priority, Security, Encoded, Blank, Unlinked, Linked,
|
||||
|
||||
SecurityCardEditor, NoPermissions, WirelessTerminal,
|
||||
SecurityCardEditor, NoPermissions, WirelessTerminal, Wireless,
|
||||
|
||||
METunnel, ItemTunnel, RedstoneTunnel, MJTunnel, EUTunnel, FluidTunnel;
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@ import appeng.container.implementations.ContainerSecurity;
|
|||
import appeng.container.implementations.ContainerStorageBus;
|
||||
import appeng.container.implementations.ContainerUpgradeable;
|
||||
import appeng.container.implementations.ContainerVibrationChamber;
|
||||
import appeng.container.implementations.ContainerWireless;
|
||||
import appeng.container.implementations.ContainerWirelessTerm;
|
||||
import appeng.helpers.IInterfaceHost;
|
||||
import appeng.helpers.IPriorityHost;
|
||||
|
@ -58,6 +59,7 @@ import appeng.tile.misc.TileCellWorkbench;
|
|||
import appeng.tile.misc.TileCondenser;
|
||||
import appeng.tile.misc.TileSecurity;
|
||||
import appeng.tile.misc.TileVibrationChamber;
|
||||
import appeng.tile.networking.TileWireless;
|
||||
import appeng.tile.qnb.TileQuantumBridge;
|
||||
import appeng.tile.storage.TileChest;
|
||||
import appeng.tile.storage.TileDrive;
|
||||
|
@ -76,6 +78,8 @@ public enum GuiBridge implements IGuiHandler
|
|||
|
||||
GUI_CHEST(ContainerChest.class, TileChest.class, false, SecurityPermissions.BUILD),
|
||||
|
||||
GUI_WIRELESS(ContainerWireless.class, TileWireless.class, false, SecurityPermissions.BUILD),
|
||||
|
||||
GUI_ME(ContainerMEMonitorable.class, IStorageMonitorable.class, false, null),
|
||||
|
||||
GUI_PORTABLE_CELL(ContainerMEPortableCell.class, IPortableCell.class, true, null),
|
||||
|
|
|
@ -13,6 +13,7 @@ import appeng.api.implementations.guiobjects.IPortableCell;
|
|||
import appeng.api.networking.IGrid;
|
||||
import appeng.api.networking.IGridHost;
|
||||
import appeng.api.networking.IGridNode;
|
||||
import appeng.api.networking.IMachineSet;
|
||||
import appeng.api.networking.security.BaseActionSource;
|
||||
import appeng.api.networking.storage.IStorageGrid;
|
||||
import appeng.api.storage.IMEMonitor;
|
||||
|
@ -21,6 +22,7 @@ import appeng.api.storage.StorageChannel;
|
|||
import appeng.api.storage.data.IAEFluidStack;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.api.storage.data.IItemList;
|
||||
import appeng.tile.networking.TileWireless;
|
||||
|
||||
public class WirelessTerminalGuiObject implements IPortableCell
|
||||
{
|
||||
|
@ -31,10 +33,19 @@ public class WirelessTerminalGuiObject implements IPortableCell
|
|||
IGrid targetGrid;
|
||||
IStorageGrid sg;
|
||||
IMEMonitor<IAEItemStack> itemStorage;
|
||||
TileWireless myWap;
|
||||
|
||||
double sqRange = Double.MAX_VALUE;
|
||||
double myRange = Double.MAX_VALUE;
|
||||
|
||||
EntityPlayer myPlayer;
|
||||
public ItemStack effectiveItem;
|
||||
|
||||
public double getRange()
|
||||
{
|
||||
return myRange;
|
||||
}
|
||||
|
||||
public WirelessTerminalGuiObject(IWirelessTermHandler wh, ItemStack is, EntityPlayer ep, World w, int x, int y, int z) {
|
||||
encryptionKey = wh.getEncryptionKey( is );
|
||||
effectiveItem = is;
|
||||
|
@ -61,10 +72,57 @@ public class WirelessTerminalGuiObject implements IPortableCell
|
|||
|
||||
public boolean rangeCheck()
|
||||
{
|
||||
sqRange = myRange = Double.MAX_VALUE;
|
||||
|
||||
if ( targetGrid != null && itemStorage != null )
|
||||
{
|
||||
if ( myWap != null )
|
||||
{
|
||||
if ( myWap.getGridNode( ForgeDirection.UNKNOWN ).getGrid() == targetGrid )
|
||||
{
|
||||
if ( testWap( myWap ) )
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
IMachineSet tw = targetGrid.getMachines( TileWireless.class );
|
||||
|
||||
myWap = null;
|
||||
|
||||
for (IGridNode n : tw)
|
||||
{
|
||||
TileWireless wap = (TileWireless) n.getMachine();
|
||||
if ( testWap( wap ) )
|
||||
myWap = wap;
|
||||
}
|
||||
|
||||
return myWap != null;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean testWap(TileWireless wap)
|
||||
{
|
||||
double rangeLimit = wap.getRange();
|
||||
rangeLimit *= rangeLimit;
|
||||
|
||||
if ( wap.worldObj == myPlayer.worldObj )
|
||||
{
|
||||
double offX = (double) wap.xCoord - myPlayer.posX;
|
||||
double offY = (double) wap.yCoord - myPlayer.posY;
|
||||
double offZ = (double) wap.zCoord - myPlayer.posZ;
|
||||
|
||||
double r = offX * offX + offY * offY + offZ * offZ;
|
||||
if ( r < rangeLimit && sqRange > r )
|
||||
{
|
||||
if ( wap.getGridNode( ForgeDirection.UNKNOWN ).isActive() )
|
||||
{
|
||||
sqRange = r;
|
||||
myRange = Math.sqrt( r );
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.util.EnumSet;
|
|||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import appeng.core.Configuration;
|
||||
import appeng.core.features.AEFeature;
|
||||
import appeng.core.sync.packets.PacketLightning;
|
||||
import appeng.items.tools.powered.powersink.AEBasePoweredItem;
|
||||
|
@ -18,7 +19,7 @@ public class ToolChargedStaff extends AEBasePoweredItem
|
|||
public ToolChargedStaff() {
|
||||
super( ToolChargedStaff.class, null );
|
||||
setfeature( EnumSet.of( AEFeature.ChargedStaff, AEFeature.PoweredTools ) );
|
||||
maxStoredPower = 8000;
|
||||
maxStoredPower = Configuration.instance.staff_battery;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -17,6 +17,7 @@ import net.minecraft.util.EnumMovingObjectType;
|
|||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import appeng.core.Configuration;
|
||||
import appeng.core.features.AEFeature;
|
||||
import appeng.items.tools.powered.powersink.AEBasePoweredItem;
|
||||
import appeng.util.InWorldToolOperationResult;
|
||||
|
@ -103,6 +104,7 @@ public class ToolEntropyManipulator extends AEBasePoweredItem
|
|||
public ToolEntropyManipulator() {
|
||||
super( ToolEntropyManipulator.class, null );
|
||||
setfeature( EnumSet.of( AEFeature.EntropyManipulator, AEFeature.PoweredTools ) );
|
||||
maxStoredPower = Configuration.instance.manipulator_battery;
|
||||
|
||||
coolDown = new Hashtable<String, InWorldToolOperationResult>();
|
||||
coolDown.put( Block.stone.blockID + ":0", new InWorldToolOperationResult( new ItemStack( Block.cobblestone ) ) );
|
||||
|
|
|
@ -48,6 +48,7 @@ public class ToolMassCannon extends AEBasePoweredItem implements IStorageCell
|
|||
public ToolMassCannon() {
|
||||
super( ToolMassCannon.class, null );
|
||||
setfeature( EnumSet.of( AEFeature.MatterCannon, AEFeature.PoweredTools ) );
|
||||
maxStoredPower = Configuration.instance.mattercannon_battery;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -16,6 +16,7 @@ import appeng.api.implementations.items.IStorageCell;
|
|||
import appeng.api.storage.IMEInventory;
|
||||
import appeng.api.storage.StorageChannel;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.core.Configuration;
|
||||
import appeng.core.features.AEFeature;
|
||||
import appeng.core.localization.GuiText;
|
||||
import appeng.core.sync.GuiBridge;
|
||||
|
@ -33,7 +34,7 @@ public class ToolPortableCell extends AEBasePoweredItem implements IStorageCell,
|
|||
public ToolPortableCell() {
|
||||
super( ToolPortableCell.class, null );
|
||||
setfeature( EnumSet.of( AEFeature.PortableCell, AEFeature.StorageCells, AEFeature.PoweredTools ) );
|
||||
maxStoredPower = 20000;
|
||||
maxStoredPower = Configuration.instance.portablecell_battery;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -10,6 +10,7 @@ import net.minecraft.util.StatCollector;
|
|||
import net.minecraft.world.World;
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.features.IWirelessTermHandler;
|
||||
import appeng.core.Configuration;
|
||||
import appeng.core.features.AEFeature;
|
||||
import appeng.core.localization.GuiText;
|
||||
import appeng.items.tools.powered.powersink.AEBasePoweredItem;
|
||||
|
@ -18,12 +19,10 @@ import appeng.util.Platform;
|
|||
public class ToolWirelessTerminal extends AEBasePoweredItem implements IWirelessTermHandler
|
||||
{
|
||||
|
||||
String name;
|
||||
int DISTNACE_CALC = 2;
|
||||
|
||||
public ToolWirelessTerminal() {
|
||||
super( ToolWirelessTerminal.class, null );
|
||||
setfeature( EnumSet.of( AEFeature.WirelessAccessTerminal, AEFeature.PoweredTools ) );
|
||||
maxStoredPower = Configuration.instance.wireless_battery;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -96,7 +96,8 @@ public class PartCable extends AEBasePart implements IPartCable
|
|||
return CableBusTextures.MECable_Yellow.getIcon();
|
||||
default:
|
||||
}
|
||||
return AEApi.instance().parts().partCableGlass.item( AEColor.Transparent ).getIconIndex( AEApi.instance().parts().partCableGlass.stack( AEColor.Transparent, 1 ) );
|
||||
return AEApi.instance().parts().partCableGlass.item( AEColor.Transparent ).getIconIndex(
|
||||
AEApi.instance().parts().partCableGlass.stack( AEColor.Transparent, 1 ) );
|
||||
}
|
||||
|
||||
public Icon getTexture(AEColor c)
|
||||
|
@ -142,7 +143,8 @@ public class PartCable extends AEBasePart implements IPartCable
|
|||
return CableBusTextures.MECovered_Yellow.getIcon();
|
||||
default:
|
||||
}
|
||||
return AEApi.instance().parts().partCableCovered.item( AEColor.Transparent ).getIconIndex( AEApi.instance().parts().partCableCovered.stack( AEColor.Transparent, 1 ) );
|
||||
return AEApi.instance().parts().partCableCovered.item( AEColor.Transparent ).getIconIndex(
|
||||
AEApi.instance().parts().partCableCovered.stack( AEColor.Transparent, 1 ) );
|
||||
}
|
||||
|
||||
public Icon getSmartTexture(AEColor c)
|
||||
|
@ -183,8 +185,8 @@ public class PartCable extends AEBasePart implements IPartCable
|
|||
return CableBusTextures.MESmart_Yellow.getIcon();
|
||||
default:
|
||||
}
|
||||
|
||||
return is.getIconIndex();
|
||||
return AEApi.instance().parts().partCableCovered.item( AEColor.Transparent ).getIconIndex(
|
||||
AEApi.instance().parts().partCableSmart.stack( AEColor.Transparent, 1 ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -242,7 +244,10 @@ public class PartCable extends AEBasePart implements IPartCable
|
|||
ForgeDirection side = gc.getDirection( n );
|
||||
if ( side != ForgeDirection.UNKNOWN )
|
||||
{
|
||||
if ( proxy.getNode().hasFlag( GridFlags.TIER_2_CAPACITY ) && gc.getOtherSide( proxy.getNode() ).hasFlag( GridFlags.TIER_2_CAPACITY ) )
|
||||
boolean isTier2a = proxy.getNode().hasFlag( GridFlags.TIER_2_CAPACITY );
|
||||
boolean isTier2b = gc.getOtherSide( proxy.getNode() ).hasFlag( GridFlags.TIER_2_CAPACITY );
|
||||
|
||||
if ( isTier2a && isTier2b )
|
||||
sideOut |= (gc.getUsedChannels() / 4) << (4 * side.ordinal());
|
||||
else
|
||||
sideOut |= gc.getUsedChannels() << (4 * side.ordinal());
|
||||
|
|
|
@ -29,7 +29,7 @@ public class TileController extends AENetworkPowerTile implements IAEPowerStorag
|
|||
internalMaxPower = 8000;
|
||||
internalPublicPowerStorage = true;
|
||||
gridProxy.setIdlePowerUsage( 6 );
|
||||
gridProxy.setFlags( GridFlags.CANNOT_CARRY );
|
||||
gridProxy.setFlags( GridFlags.CANNOT_CARRY, GridFlags.TIER_2_CAPACITY );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -125,15 +125,14 @@ public class TileWireless extends AENetworkInvTile
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removed, ItemStack added)
|
||||
public void onInventoryChanged()
|
||||
{
|
||||
updatePower();
|
||||
}
|
||||
|
||||
private void updatePower()
|
||||
{
|
||||
ItemStack boosters = inv.getStackInSlot( 0 );
|
||||
gridProxy.setIdlePowerUsage( Configuration.instance.wireless_getPowerDrain( boosters == null ? 0 : boosters.stackSize ) );
|
||||
gridProxy.setIdlePowerUsage( Configuration.instance.wireless_getPowerDrain( getBoosters() ) );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -142,4 +141,21 @@ public class TileWireless extends AENetworkInvTile
|
|||
return sides;
|
||||
}
|
||||
|
||||
public double getRange()
|
||||
{
|
||||
return Configuration.instance.wireless_getMaxRange( getBoosters() );
|
||||
}
|
||||
|
||||
private int getBoosters()
|
||||
{
|
||||
ItemStack boosters = inv.getStackInSlot( 0 );
|
||||
return boosters == null ? 0 : boosters.stackSize;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removed, ItemStack added)
|
||||
{
|
||||
// :P
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue