Pretty much all of security minus the gui.
and all the stuff I did that i forgot to comment.
This commit is contained in:
+2
-1
@@ -6,6 +6,7 @@ import appeng.api.definitions.Blocks;
|
||||
import appeng.api.definitions.Items;
|
||||
import appeng.api.definitions.Materials;
|
||||
import appeng.api.definitions.Parts;
|
||||
import appeng.api.exceptions.FailedConnection;
|
||||
import appeng.api.features.IRegistryContainer;
|
||||
import appeng.api.networking.IGridBlock;
|
||||
import appeng.api.networking.IGridConnection;
|
||||
@@ -89,7 +90,7 @@ public class Api implements IAppEngApi
|
||||
}
|
||||
|
||||
@Override
|
||||
public IGridConnection createGridConnection(IGridNode a, IGridNode b)
|
||||
public IGridConnection createGridConnection(IGridNode a, IGridNode b) throws FailedConnection
|
||||
{
|
||||
return new GridConnection( a, b, ForgeDirection.UNKNOWN );
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import appeng.api.definitions.Parts;
|
||||
import appeng.api.implementations.tiles.ITileStorageMonitorable;
|
||||
import appeng.api.networking.energy.IEnergyGrid;
|
||||
import appeng.api.networking.pathing.IPathingGrid;
|
||||
import appeng.api.networking.security.ISecurityGrid;
|
||||
import appeng.api.networking.spatial.ISpatialCache;
|
||||
import appeng.api.networking.storage.IStorageGrid;
|
||||
import appeng.api.networking.ticking.ITickManager;
|
||||
@@ -40,6 +41,7 @@ import appeng.block.misc.BlockInterface;
|
||||
import appeng.block.misc.BlockNetworkEmitter;
|
||||
import appeng.block.misc.BlockQuartzCrystalizer;
|
||||
import appeng.block.misc.BlockQuartzTorch;
|
||||
import appeng.block.misc.BlockSecurity;
|
||||
import appeng.block.misc.BlockTinyTNT;
|
||||
import appeng.block.misc.BlockVibrationChamber;
|
||||
import appeng.block.networking.BlockCableBus;
|
||||
@@ -111,6 +113,7 @@ import appeng.me.cache.EnergyGridCache;
|
||||
import appeng.me.cache.GridStorageCache;
|
||||
import appeng.me.cache.P2PCache;
|
||||
import appeng.me.cache.PathGridCache;
|
||||
import appeng.me.cache.SecurityCache;
|
||||
import appeng.me.cache.SpatialPylonCache;
|
||||
import appeng.me.cache.TickManagerCache;
|
||||
import appeng.me.storage.AEExternalHandler;
|
||||
@@ -256,6 +259,8 @@ public class Registration
|
||||
blocks.blockEnergyCellDense = addFeature( BlockDenseEnergyCell.class );
|
||||
blocks.blockEnergyCellCreative = addFeature( BlockCreativeEnergyCell.class );
|
||||
|
||||
blocks.blockSecurity = addFeature( BlockSecurity.class );
|
||||
|
||||
items.itemEncodedAsemblerPattern = addFeature( ItemEncodedPattern.class );
|
||||
|
||||
items.itemCellCreative = addFeature( ItemCreativeStorageCell.class );
|
||||
@@ -410,6 +415,7 @@ public class Registration
|
||||
AEApi.instance().registries().gridCache().registerGridCache( IStorageGrid.class, GridStorageCache.class );
|
||||
AEApi.instance().registries().gridCache().registerGridCache( P2PCache.class, P2PCache.class );
|
||||
AEApi.instance().registries().gridCache().registerGridCache( ISpatialCache.class, SpatialPylonCache.class );
|
||||
AEApi.instance().registries().gridCache().registerGridCache( ISecurityGrid.class, SecurityCache.class );
|
||||
|
||||
AEApi.instance().registries().externalStorage().addExternalStorageInterface( new AEExternalHandler() );
|
||||
|
||||
|
||||
@@ -2,10 +2,13 @@ package appeng.core;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import net.minecraftforge.common.ConfigCategory;
|
||||
import net.minecraftforge.common.Configuration;
|
||||
import net.minecraftforge.common.DimensionManager;
|
||||
import net.minecraftforge.common.Property;
|
||||
import appeng.api.util.WorldCoord;
|
||||
import appeng.me.GridStorage;
|
||||
import appeng.me.GridStorageSearch;
|
||||
@@ -17,16 +20,19 @@ public class WorldSettings extends Configuration
|
||||
private static WorldSettings instance;
|
||||
|
||||
long lastGridStorage = 0;
|
||||
int lastPlayer = 0;
|
||||
|
||||
public WorldSettings(File f) {
|
||||
super( f );
|
||||
try
|
||||
{
|
||||
lastGridStorage = Long.parseLong( get( "Counters", "lastGridStorage", 0 ).getString() );
|
||||
lastPlayer = get( "Counters", "lastPlayer", 0 ).getInt();
|
||||
}
|
||||
catch (NumberFormatException err)
|
||||
{
|
||||
lastGridStorage = 0;
|
||||
lastPlayer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,4 +147,38 @@ public class WorldSettings extends Configuration
|
||||
return r;
|
||||
}
|
||||
|
||||
private long nextPlayer()
|
||||
{
|
||||
long r = lastPlayer++;
|
||||
get( "Counters", "lastPlayer", lastPlayer ).set( lastPlayer );
|
||||
return r;
|
||||
}
|
||||
|
||||
public String getUsername(int id)
|
||||
{
|
||||
ConfigCategory playerList = this.getCategory( "players" );
|
||||
for (Entry<String, Property> fish : playerList.entrySet())
|
||||
{
|
||||
if ( fish.getValue().isIntValue() && fish.getValue().getInt() == id )
|
||||
return fish.getKey();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public int getPlayerID(String username)
|
||||
{
|
||||
ConfigCategory playerList = this.getCategory( "players" );
|
||||
if ( playerList == null )
|
||||
return -1;
|
||||
|
||||
Property prop = playerList.get( username );
|
||||
if ( prop != null && prop.isIntValue() )
|
||||
return prop.getInt();
|
||||
else
|
||||
{
|
||||
playerList.put( username, prop = new Property( username, "" + nextPlayer(), Property.Type.INTEGER ) );
|
||||
save();
|
||||
return prop.getInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public enum AEFeature
|
||||
DenseEnergyCells("HigherCapacity"), DenseCables("HigherCapacity"),
|
||||
|
||||
P2PTunnelME("P2PTunnels"), P2PTunnelItems("P2PTunnels"), P2PTunnelRedstone("P2PTunnels"), P2PTunnelEU("P2PTunnels"), P2PTunnelMJ("P2PTunnels"), P2PTunnelLiquids(
|
||||
"P2PTunnels"),
|
||||
"P2PTunnels"), Security("Security"),
|
||||
|
||||
MassCannonBlockDamage("BlockFeatures"), TinyTNTBlockDamage("BlockFeatures"), Facades("Facades"),
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package appeng.core.features.registries;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import appeng.api.features.IPlayerRegistry;
|
||||
import appeng.core.WorldSettings;
|
||||
|
||||
public class PlayerRegistry implements IPlayerRegistry
|
||||
{
|
||||
|
||||
@Override
|
||||
public int getID(String username)
|
||||
{
|
||||
return WorldSettings.getInstance().getPlayerID( username );
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getID(EntityPlayer player)
|
||||
{
|
||||
return WorldSettings.getInstance().getPlayerID( player.username );
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsername(int id)
|
||||
{
|
||||
return WorldSettings.getInstance().getUsername( id );
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import appeng.api.features.IGrinderRegistry;
|
||||
import appeng.api.features.ILocateableRegistry;
|
||||
import appeng.api.features.IMatterCannonAmmoRegistry;
|
||||
import appeng.api.features.IP2PTunnelRegistry;
|
||||
import appeng.api.features.IPlayerRegistry;
|
||||
import appeng.api.features.IRegistryContainer;
|
||||
import appeng.api.features.ISpecialComparisonRegistry;
|
||||
import appeng.api.features.IWirelessTermRegistery;
|
||||
@@ -25,6 +26,7 @@ public class RegistryContainer implements IRegistryContainer
|
||||
private P2PTunnelRegistry P2PRegistry = new P2PTunnelRegistry();
|
||||
private MovableTileRegistry MoveableReg = new MovableTileRegistry();
|
||||
private MatterCannonAmmoRegistry matterCannonReg = new MatterCannonAmmoRegistry();
|
||||
private PlayerRegistry playerreg = new PlayerRegistry();
|
||||
|
||||
@Override
|
||||
public IWirelessTermRegistery wireless()
|
||||
@@ -86,4 +88,10 @@ public class RegistryContainer implements IRegistryContainer
|
||||
return matterCannonReg;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPlayerRegistry players()
|
||||
{
|
||||
return playerreg;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
package appeng.core.sync.packets;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.network.INetworkManager;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import appeng.container.AEBaseContainer;
|
||||
import appeng.container.ContainerOpenContext;
|
||||
import appeng.core.sync.AppEngPacket;
|
||||
import appeng.core.sync.GuiBridge;
|
||||
import appeng.util.Platform;
|
||||
|
||||
public class PacketSwitchGuis extends AppEngPacket
|
||||
{
|
||||
|
||||
final GuiBridge newGui;
|
||||
|
||||
// automatic.
|
||||
public PacketSwitchGuis(DataInputStream stream) throws IOException {
|
||||
newGui = GuiBridge.values()[stream.readInt()];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serverPacketData(INetworkManager manager, AppEngPacket packet, EntityPlayer player)
|
||||
{
|
||||
Container c = player.openContainer;
|
||||
if ( c instanceof AEBaseContainer )
|
||||
{
|
||||
AEBaseContainer bc = (AEBaseContainer) c;
|
||||
ContainerOpenContext context = bc.openContext;
|
||||
if ( context != null )
|
||||
{
|
||||
TileEntity te = context.w.getBlockTileEntity( context.x, context.y, context.z );
|
||||
Platform.openGUI( player, te, context.side, newGui );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// api
|
||||
public PacketSwitchGuis(GuiBridge newGui) throws IOException {
|
||||
|
||||
this.newGui = newGui;
|
||||
|
||||
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
|
||||
DataOutputStream data = new DataOutputStream( bytes );
|
||||
|
||||
data.writeInt( getPacketID() );
|
||||
data.writeInt( newGui.ordinal() );
|
||||
|
||||
isChunkDataPacket = false;
|
||||
configureWrite( bytes.toByteArray() );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user