Removed Dropped Features.
Implemented Spatial Storage. Fixed bug with ME Chest saying the cell was un-readable.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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
@@ -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()
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 );
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user