Removed Dropped Features.

Implemented Spatial Storage.
Fixed bug with ME Chest saying the cell was un-readable.
This commit is contained in:
AlgorithmX2
2014-03-05 01:27:42 -06:00
parent d5182da346
commit 040e948d8e
29 changed files with 606 additions and 324 deletions
+15
View File
@@ -35,6 +35,9 @@ public class AEConfig extends Configuration implements IConfigureableObject, ICo
public IConfigManager settings = new ConfigManager( this );
public EnumSet<AEFeature> featureFlags = EnumSet.noneOf( AEFeature.class );
public int storageBiomeID = -1;
public int storageProviderID = -1;
public int oresPerCluster = 4;
private double WirelessBaseCost = 8;
@@ -149,6 +152,12 @@ public class AEConfig extends Configuration implements IConfigureableObject, ICo
this.get( Category, e.name(), settings.getSetting( e ).name() );
}
if ( isFeatureEnabled( AEFeature.SpatialIO ) )
{
storageBiomeID = get( "spatialio", "storageBiomeID", storageBiomeID ).getInt( storageBiomeID );
storageProviderID = get( "spatialio", "storageProviderID", storageProviderID ).getInt( storageProviderID );
}
if ( isFeatureEnabled( AEFeature.VersionChecker ) )
{
try
@@ -184,6 +193,12 @@ public class AEConfig extends Configuration implements IConfigureableObject, ICo
get( "VersionChecker", "LatestTimeStamp", "" ).set( Long.toString( latestTimeStamp ) );
}
if ( isFeatureEnabled( AEFeature.SpatialIO ) )
{
get( "spatialio", "storageBiomeID", storageBiomeID ).set( storageBiomeID );
get( "spatialio", "storageProviderID", storageProviderID ).set( storageProviderID );
}
if ( hasChanged() )
super.save();
}
+73
View File
@@ -6,6 +6,7 @@ import java.lang.reflect.Field;
import net.minecraft.util.WeightedRandomChestContent;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.ChestGenHooks;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.oredict.RecipeSorter;
import net.minecraftforge.oredict.RecipeSorter.Category;
@@ -17,6 +18,7 @@ import appeng.api.definitions.Materials;
import appeng.api.definitions.Parts;
import appeng.api.features.IRecipeHandlerRegistry;
import appeng.api.features.IWirelessTermHandler;
import appeng.api.movable.IMovableRegistry;
import appeng.api.networking.IGridCacheRegistry;
import appeng.api.networking.energy.IEnergyGrid;
import appeng.api.networking.pathing.IPathingGrid;
@@ -133,6 +135,10 @@ import appeng.recipes.handlers.Smelt;
import appeng.recipes.loader.ConfigLoader;
import appeng.recipes.loader.JarLoader;
import appeng.recipes.ores.OreDictionaryHandler;
import appeng.spatial.BiomeGenStorage;
import appeng.spatial.StorageWorldProvider;
import appeng.tile.AEBaseTile;
import appeng.util.Platform;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
@@ -160,6 +166,8 @@ public class Registration
public void PreInit(FMLPreInitializationEvent event)
{
registerSpatial( false );
IRecipeHandlerRegistry recipeRegistery = AEApi.instance().registries().recipes();
recipeRegistery.addNewSubItemResolver( new AEItemResolver() );
@@ -488,6 +496,8 @@ public class Registration
public void PostInit(FMLPostInitializationEvent event)
{
registerSpatial( true );
// add to localizaiton..
PlayerMessages.values();
GuiText.values();
@@ -567,6 +577,69 @@ public class Registration
if ( AEConfig.instance.isFeatureEnabled( AEFeature.MeteoriteWorldGen ) )
GameRegistry.registerWorldGenerator( new MeteoriteWorldGen(), 0 );
IMovableRegistry mr = AEApi.instance().registries().moveable();
/*
* White List Vanilla...
*/
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityBeacon.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityBrewingStand.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityChest.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityCommandBlock.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityComparator.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityDaylightDetector.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityDispenser.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityDropper.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityEnchantmentTable.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityEnderChest.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityEndPortal.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntitySkull.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityFurnace.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityMobSpawner.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntitySign.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityPiston.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityFlowerPot.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityNote.class );
mr.whiteListTileEntity( net.minecraft.tileentity.TileEntityHopper.class );
/**
* Whitelist AE
*/
mr.whiteListTileEntity( AEBaseTile.class );
recipeHandler.registerHandlers();
}
private void registerSpatial(boolean force)
{
AEConfig config = AEConfig.instance;
if ( storageBiome == null )
{
if ( force && config.storageBiomeID == -1 )
{
storageBiome = new BiomeGenStorage( config.storageBiomeID = Platform.findEmpty( BiomeGenBase.getBiomeGenArray() ) );
config.save();
}
if ( !force && config.storageBiomeID != -1 )
storageBiome = new BiomeGenStorage( config.storageBiomeID );
}
if ( config.storageProviderID != -1 )
{
DimensionManager.registerProviderType( config.storageProviderID, StorageWorldProvider.class, false );
}
if ( config.storageProviderID == -1 && force )
{
config.storageProviderID = -11;
while (!DimensionManager.registerProviderType( config.storageProviderID, StorageWorldProvider.class, false ))
config.storageProviderID--;
config.save();
}
}
}
+43 -3
View File
@@ -1,16 +1,21 @@
package appeng.core;
import java.io.File;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import java.util.WeakHashMap;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.config.ConfigCategory;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.config.Property;
import appeng.api.util.WorldCoord;
import appeng.core.sync.network.NetworkHandler;
import appeng.core.sync.packets.PacketNewStorageDimension;
import appeng.me.GridStorage;
import appeng.me.GridStorageSearch;
import appeng.services.CompassService;
@@ -46,6 +51,31 @@ public class WorldSettings extends Configuration
}
}
List<Integer> storageCellDims = new ArrayList();
public void addStorageCellDim(int newDim)
{
storageCellDims.add( newDim );
DimensionManager.registerDimension( newDim, AEConfig.instance.storageProviderID );
try
{
NetworkHandler.instance.sendToAll( new PacketNewStorageDimension( newDim ) );
}
catch (IOException e)
{
e.printStackTrace();
}
String[] values = new String[storageCellDims.size()];
for (int x = 0; x < values.length; x++)
values[x] = "" + storageCellDims.get( x );
get( "DimensionManager", "StorageCells", new int[0] ).set( values );
save();
}
public CompassService getCompass()
{
return compass;
@@ -68,9 +98,19 @@ public class WorldSettings extends Configuration
return instance;
}
public void sendToPlayer(EntityPlayer player)
public void sendToPlayer(EntityPlayerMP player)
{
for (int newDim : get( "DimensionManager", "StorageCells", new int[0] ).getIntList())
{
try
{
NetworkHandler.instance.sendTo( new PacketNewStorageDimension( newDim ), player );
}
catch (IOException e)
{
AELog.error( e );
}
}
}
public void init()
+1 -1
View File
@@ -24,7 +24,7 @@ public enum GuiText
CraftingTerminal, FormationPlane, Inscriber, QuartzCuttingKnife,
METunnel, ItemTunnel, RedstoneTunnel, MJTunnel, EUTunnel, FluidTunnel;
METunnel, ItemTunnel, RedstoneTunnel, MJTunnel, EUTunnel, FluidTunnel, StoredSize;
String root;
+3
View File
@@ -17,6 +17,7 @@ import appeng.core.sync.packets.PacketMEInventoryUpdate;
import appeng.core.sync.packets.PacketMatterCannon;
import appeng.core.sync.packets.PacketMockExplosion;
import appeng.core.sync.packets.PacketMultiPart;
import appeng.core.sync.packets.PacketNewStorageDimension;
import appeng.core.sync.packets.PacketPartPlacement;
import appeng.core.sync.packets.PacketProgressBar;
import appeng.core.sync.packets.PacketSwitchGuis;
@@ -58,6 +59,8 @@ public class AppEngPacketHandlerBase
PACKET_CLICK(PacketClick.class),
PACKET_NEW_STORAGE_DIMENSION(PacketNewStorageDimension.class),
PACKET_SWITCH_GUIS(PacketSwitchGuis.class);
final public Class pc;
+6
View File
@@ -46,6 +46,7 @@ import appeng.container.implementations.ContainerPriority;
import appeng.container.implementations.ContainerQNB;
import appeng.container.implementations.ContainerSecurity;
import appeng.container.implementations.ContainerSkyChest;
import appeng.container.implementations.ContainerSpatialIOPort;
import appeng.container.implementations.ContainerStorageBus;
import appeng.container.implementations.ContainerUpgradeable;
import appeng.container.implementations.ContainerVibrationChamber;
@@ -66,6 +67,7 @@ import appeng.tile.misc.TileSecurity;
import appeng.tile.misc.TileVibrationChamber;
import appeng.tile.networking.TileWireless;
import appeng.tile.qnb.TileQuantumBridge;
import appeng.tile.spatial.TileSpatialIOPort;
import appeng.tile.storage.TileChest;
import appeng.tile.storage.TileDrive;
import appeng.tile.storage.TileIOPort;
@@ -123,6 +125,10 @@ public enum GuiBridge implements IGuiHandler
// extends (Container/Gui) + Bus
GUI_LEVELEMITTER(ContainerLevelEmitter.class, PartLevelEmitter.class, false, SecurityPermissions.BUILD),
GUI_SPATIALIOPORT(ContainerSpatialIOPort.class, TileSpatialIOPort.class, false, SecurityPermissions.BUILD),
// GUI_INSCRIBER
GUI_CELLWORKBENCH(ContainerCellWorkbench.class, TileCellWorkbench.class, false, null);
private Class Tile;
+23 -2
View File
@@ -4,12 +4,16 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.NetHandlerPlayServer;
import appeng.core.WorldSettings;
import appeng.core.sync.AppEngPacket;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent;
import cpw.mods.fml.common.network.FMLEventChannel;
import cpw.mods.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent;
import cpw.mods.fml.common.network.FMLNetworkEvent.CustomNetworkEvent;
import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent;
import cpw.mods.fml.common.network.NetworkHandshakeEstablished;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.relauncher.Side;
public class NetworkHandler
{
@@ -23,6 +27,7 @@ public class NetworkHandler
final IPacketHandler serveHandler;
public NetworkHandler(String channelName) {
FMLCommonHandler.instance().bus().register( this );
ec = NetworkRegistry.INSTANCE.newEventDrivenChannel( myChannelName = channelName );
ec.register( this );
@@ -55,9 +60,25 @@ public class NetworkHandler
}
@SubscribeEvent
public void newPlayer(PlayerLoggedInEvent ev)
public void newConection(CustomNetworkEvent cctse)
{
WorldSettings.getInstance().sendToPlayer( ev.player );
if ( cctse.wrappedEvent instanceof NetworkHandshakeEstablished )
{
NetworkHandshakeEstablished nhe = (NetworkHandshakeEstablished) cctse.wrappedEvent;
if ( nhe.side == Side.SERVER && nhe.netHandler instanceof NetHandlerPlayServer )
{
NetHandlerPlayServer srv = (NetHandlerPlayServer) nhe.netHandler;
// WorldSettings.getInstance().sendToPlayer( srv.playerEntity );
}
}
}
@SubscribeEvent
public void newConection(PlayerLoggedInEvent loginEvent)
{
if ( loginEvent.player instanceof EntityPlayerMP )
WorldSettings.getInstance().sendToPlayer( (EntityPlayerMP) loginEvent.player );
}
@SubscribeEvent
@@ -0,0 +1,46 @@
package appeng.core.sync.packets;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import java.io.IOException;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.common.DimensionManager;
import appeng.core.AEConfig;
import appeng.core.sync.AppEngPacket;
import appeng.core.sync.network.INetworkInfo;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class PacketNewStorageDimension extends AppEngPacket
{
final int newDim;
// automatic.
public PacketNewStorageDimension(ByteBuf stream) throws IOException {
newDim = stream.readInt();
}
@Override
@SideOnly(Side.CLIENT)
public void clientPacketData(INetworkInfo network, AppEngPacket packet, EntityPlayer player)
{
DimensionManager.registerDimension( newDim, AEConfig.instance.storageProviderID );
}
// api
public PacketNewStorageDimension(int newDim) throws IOException {
this.newDim = newDim;
ByteBuf data = Unpooled.buffer();
data.writeInt( getPacketID() );
data.writeInt( newDim );
configureWrite( data );
}
}