aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bloodasp/galacticgreg
diff options
context:
space:
mode:
authorNamikon <namikon@gmx.net>2015-07-22 20:21:53 +0200
committerNamikon <namikon@gmx.net>2015-07-22 20:21:53 +0200
commit9f118402a384f055abdd44627ece22b50cc66595 (patch)
tree069395895bc685bbfcba3f682e60682afaee0f50 /src/main/java/bloodasp/galacticgreg
parent8fdeea1adc6bdcbb6b97d7c828bb1f3be7854966 (diff)
downloadGT5-Unofficial-9f118402a384f055abdd44627ece22b50cc66595.tar.gz
GT5-Unofficial-9f118402a384f055abdd44627ece22b50cc66595.tar.bz2
GT5-Unofficial-9f118402a384f055abdd44627ece22b50cc66595.zip
ReleaseCandidate 2
- ModDefinitions for GalaxySpace updated to 2.3-Beta - Added missing DimensionDefinition-Defaults for OreType - Added missing DimensionDefinition-Defaults for DimensionType
Diffstat (limited to 'src/main/java/bloodasp/galacticgreg')
-rw-r--r--src/main/java/bloodasp/galacticgreg/GT_TileEntity_Ores_Space.java98
-rw-r--r--src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_Layer_Space.java4
-rw-r--r--src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_SmallPieces_Space.java4
-rw-r--r--src/main/java/bloodasp/galacticgreg/ModRegisterer.java51
-rw-r--r--src/main/java/bloodasp/galacticgreg/api/ModDimensionDef.java17
5 files changed, 96 insertions, 78 deletions
diff --git a/src/main/java/bloodasp/galacticgreg/GT_TileEntity_Ores_Space.java b/src/main/java/bloodasp/galacticgreg/GT_TileEntity_Ores_Space.java
index 5bd3a8cbb9..d2c1e3e113 100644
--- a/src/main/java/bloodasp/galacticgreg/GT_TileEntity_Ores_Space.java
+++ b/src/main/java/bloodasp/galacticgreg/GT_TileEntity_Ores_Space.java
@@ -74,58 +74,64 @@ public class GT_TileEntity_Ores_Space {
GalacticGreg.Logger.warn("Unknown DimensionID: %d. Will not set anything here", pWorld.provider.dimensionId);
return false;
}
-
- Block tBlock = pWorld.getBlock(pX, pY, pZ);
- // If the meta is non-zero, and the target block is either non-air or the air-override is active
- if ((pMetaData > 0) && ((tBlock != Blocks.air) || pAir))
+ try
{
- // make sure we're either going with normal ore-metas, or small ores.
- // Probably should do another check for <= 1700
- if (pMetaData < 1000 || pMetaData >= 16000)
+ Block tBlock = pWorld.getBlock(pX, pY, pZ);
+ // If the meta is non-zero, and the target block is either non-air or the air-override is active
+ if ((pMetaData > 0) && ((tBlock != Blocks.air) || pAir))
{
- ReplaceState tRS = CheckForReplaceableBlock(pWorld, pX, pY, pZ, pDimensionDef);
-
- // Unable to lookup replacement state. Means: The block is unknown, and shall not be replaced
- if (tRS == ReplaceState.Unknown)
- {
- GalacticGreg.Logger.trace("Not placing ore Meta %d, as target block is unknown", pMetaData);
- return false;
- }
- else if(tRS == ReplaceState.Airblock && !pAir)
+ // make sure we're either going with normal ore-metas, or small ores.
+ // Probably should do another check for <= 1700
+ if (pMetaData < 1000 || pMetaData >= 16000)
{
- GalacticGreg.Logger.trace("Not placing ore Meta %d in midair, as AIR is FALSE", pMetaData);
- return false;
- }
- if (tRS == ReplaceState.CannotReplace)
- {
- // wrong metaData ID for target block
- GalacticGreg.Logger.trace("Not placing ore Meta %d, as the state is CANNOTREPLACE", pMetaData);
- return false;
- }
-
- if (pCustomGTOreOffset == -1)
- pMetaData += pDimensionDef.getStoneType().getOffset();
- else
- pMetaData += pCustomGTOreOffset;
-
- pWorld.setBlock(pX, pY, pZ, GregTech_API.sBlockOres1, GT_TileEntity_Ores.getHarvestData((short) pMetaData), 0);
- TileEntity tTileEntity = pWorld.getTileEntity(pX, pY, pZ);
- if ((tTileEntity instanceof GT_TileEntity_Ores)) {
- ((GT_TileEntity_Ores) tTileEntity).mMetaData = ((short) pMetaData);
- ((GT_TileEntity_Ores) tTileEntity).mNatural = true;
+ ReplaceState tRS = CheckForReplaceableBlock(pWorld, pX, pY, pZ, pDimensionDef);
+
+ // Unable to lookup replacement state. Means: The block is unknown, and shall not be replaced
+ if (tRS == ReplaceState.Unknown)
+ {
+ GalacticGreg.Logger.trace("Not placing ore Meta %d, as target block is unknown", pMetaData);
+ return false;
+ }
+ else if(tRS == ReplaceState.Airblock && !pAir)
+ {
+ GalacticGreg.Logger.trace("Not placing ore Meta %d in midair, as AIR is FALSE", pMetaData);
+ return false;
+ }
+ if (tRS == ReplaceState.CannotReplace)
+ {
+ // wrong metaData ID for target block
+ GalacticGreg.Logger.trace("Not placing ore Meta %d, as the state is CANNOTREPLACE", pMetaData);
+ return false;
+ }
+
+ if (pCustomGTOreOffset == -1)
+ pMetaData += pDimensionDef.getStoneType().getOffset();
+ else
+ pMetaData += pCustomGTOreOffset;
+
+ pWorld.setBlock(pX, pY, pZ, GregTech_API.sBlockOres1, GT_TileEntity_Ores.getHarvestData((short) pMetaData), 0);
+ TileEntity tTileEntity = pWorld.getTileEntity(pX, pY, pZ);
+ if ((tTileEntity instanceof GT_TileEntity_Ores)) {
+ ((GT_TileEntity_Ores) tTileEntity).mMetaData = ((short) pMetaData);
+ ((GT_TileEntity_Ores) tTileEntity).mNatural = true;
+ }
+ else
+ {
+ // This is somehow triggered randomly, and most times the target block is air, which should never happen as we check for air...
+ // That's why I put this behind a debug config option. If you ever find the reason for it, please tell me what caused this
+ if (GalacticGreg.GalacticConfig.ReportOreGenFailures)
+ GalacticGreg.Logger.warn("Something went wrong while placing GT OreTileEntity. Meta: %d X [%d] Y [%d] Z [%d]", pMetaData, pX, pY, pZ);
+ }
+
+ return true;
}
else
- {
- // This is somehow triggered randomly, and most times the target block is air, which should never happen as we check for air...
- // That's why I put this behind a debug config option. If you ever find the reason for it, please tell me what caused this
- if (GalacticGreg.GalacticConfig.ReportOreGenFailures)
- GalacticGreg.Logger.warn("Something went wrong while placing GT OreTileEntity. Meta: %d X [%d] Y [%d] Z [%d]", pMetaData, pX, pY, pZ);
- }
-
- return true;
+ GalacticGreg.Logger.warn("Not replacing block at pos %d %d %d due unexpected metaData for OreBlock: %d", pX, pY, pZ, pMetaData);
}
- else
- GalacticGreg.Logger.warn("Not replacing block at pos %d %d %d due unexpected metaData for OreBlock: %d", pX, pY, pZ, pMetaData);
+ } catch (Exception e)
+ {
+ if (GalacticGreg.GalacticConfig.ReportOreGenFailures)
+ e.printStackTrace();
}
return false;
}
diff --git a/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_Layer_Space.java b/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_Layer_Space.java
index fb3f9a13ea..a97255f59c 100644
--- a/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_Layer_Space.java
+++ b/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_Layer_Space.java
@@ -122,10 +122,10 @@ public class GT_Worldgen_GT_Ore_Layer_Space extends GT_Worldgen {
public boolean executeWorldgen(World pWorld, Random pRandom, String pBiome, int pDimensionType, int pChunkX, int pChunkZ, IChunkProvider pChunkGenerator, IChunkProvider pChunkProvider)
{
GalacticGreg.Logger.trace("Entering executeWorldgen for [%s]", mWorldGenName);
- ModDimensionDef tMDD = GalacticGregRegistry.getDimensionTypeByChunkGenerator(pChunkProvider);
+ ModDimensionDef tMDD = GalacticGregRegistry.getDimensionTypeByChunkGenerator(pChunkGenerator);
if (tMDD == null)
{
- GalacticGreg.Logger.trace("Can't find dimension definition for ChunkProvider %s, skipping", pChunkProvider.toString());
+ GalacticGreg.Logger.trace("Can't find dimension definition for ChunkProvider %s, skipping", pChunkGenerator.toString());
return false;
}
diff --git a/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_SmallPieces_Space.java b/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_SmallPieces_Space.java
index eaf07907ed..a3be499ffd 100644
--- a/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_SmallPieces_Space.java
+++ b/src/main/java/bloodasp/galacticgreg/GT_Worldgen_GT_Ore_SmallPieces_Space.java
@@ -51,10 +51,10 @@ public class GT_Worldgen_GT_Ore_SmallPieces_Space extends GT_Worldgen {
public boolean executeWorldgen(World pWorld, Random pRandom, String pBiome, int pDimensionType, int pChunkX, int pChunkZ, IChunkProvider pChunkGenerator, IChunkProvider pChunkProvider)
{
GalacticGreg.Logger.trace("Entering executeWorldgen for [%s]", mWorldGenName);
- ModDimensionDef tMDD = GalacticGregRegistry.getDimensionTypeByChunkGenerator(pChunkProvider);
+ ModDimensionDef tMDD = GalacticGregRegistry.getDimensionTypeByChunkGenerator(pChunkGenerator);
if (tMDD == null)
{
- GalacticGreg.Logger.trace("Can't find dimension definition for ChunkProvider %s, skipping", pChunkProvider.toString());
+ GalacticGreg.Logger.trace("Can't find dimension definition for ChunkProvider %s, skipping", pChunkGenerator.toString());
return false;
}
diff --git a/src/main/java/bloodasp/galacticgreg/ModRegisterer.java b/src/main/java/bloodasp/galacticgreg/ModRegisterer.java
index 99e7c10aa4..57048a8354 100644
--- a/src/main/java/bloodasp/galacticgreg/ModRegisterer.java
+++ b/src/main/java/bloodasp/galacticgreg/ModRegisterer.java
@@ -92,9 +92,8 @@ public class ModRegisterer
// If you happen to have an asteroid dim, just skip the blocklist, and setDimensionType() to DimensionType.Asteroid
// also don't forget to add at least one asteroid type, or nothing will generate!
- ModDimensionDef dimEndAsteroids = new ModDimensionDef("EndAsteroids", ChunkProviderEnd.class);
+ ModDimensionDef dimEndAsteroids = new ModDimensionDef("EndAsteroids", ChunkProviderEnd.class, DimensionType.Asteroid);
- dimEndAsteroids.setDimensionType(DimensionType.Asteroid);
dimEndAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.Netherrack));
dimEndAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.RedGranite));
dimEndAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.BlackGranite));
@@ -118,7 +117,8 @@ public class ModRegisterer
ModContainer modGCraftCore = new ModContainer("GalacticraftCore");
ModDBMDef DBMMoon = new ModDBMDef(GCBlocks.blockMoon, 4);
- modGCraftCore.addDimensionDef(new ModDimensionDef("Moon", ChunkProviderMoon.class, singleToList(DBMMoon)));
+ ModDimensionDef tMoonDim = new ModDimensionDef("Moon", ChunkProviderMoon.class, DimensionType.Planet, singleToList(DBMMoon));
+ modGCraftCore.addDimensionDef(tMoonDim);
return modGCraftCore;
}
@@ -132,11 +132,13 @@ public class ModRegisterer
{
ModContainer modGCraftPlanets = new ModContainer("GalacticraftMars");
ModDBMDef DBMMars = new ModDBMDef("tile.mars", 9);
+ ModDimensionDef dimMars = new ModDimensionDef("Mars", "micdoodle8.mods.galacticraft.planets.mars.world.gen.ChunkProviderMars", DimensionType.Planet, singleToList(DBMMars));
- modGCraftPlanets.addDimensionDef(new ModDimensionDef("Mars", "micdoodle8.mods.galacticraft.planets.mars.world.gen.ChunkProviderMars", singleToList(DBMMars)));
+ // Overwrite ore blocks on mars with red granite ones. This will default to regular stone if not set
+ dimMars.setStoneType(GTOreTypes.RedGranite);
+ modGCraftPlanets.addDimensionDef(dimMars);
- ModDimensionDef dimAsteroids = new ModDimensionDef("Asteroids", "micdoodle8.mods.galacticraft.planets.asteroids.world.gen.ChunkProviderAsteroids");
- dimAsteroids.setDimensionType(DimensionType.Asteroid);
+ ModDimensionDef dimAsteroids = new ModDimensionDef("Asteroids", "micdoodle8.mods.galacticraft.planets.asteroids.world.gen.ChunkProviderAsteroids", DimensionType.Asteroid);
dimAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.BlackGranite));
dimAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.RedGranite));
dimAsteroids.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.Netherrack));
@@ -178,21 +180,28 @@ public class ModRegisterer
// But it's better to use the actual ChunkProvider class. The Name is used for the GalacticGreg config file.
// The resulting config setting will be: <ModID>_<Name you give here as arg0>_false = false
// make sure to never change this name once you've generated your config files, as it will overwrite everything!
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Pluto", "blessentumble.planets.pluto.dimension.ChunkProviderPluto", singleToList(DBMPluto)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Triton", "blessentumble.moons.triton.dimension.ChunkProviderTriton", singleToList(DBMTriton)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Proteus", "blessentumble.moons.proteus.dimension.ChunkProviderProteus", singleToList(DBMProteus)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Oberon", "blessentumble.moons.oberon.dimension.ChunkProviderOberon", singleToList(DBMOberon)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Titan", "blessentumble.moons.titan.dimension.ChunkProviderTitan", singleToList(DBMTitan)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Callisto", "blessentumble.moons.callisto.dimension.ChunkProviderCallisto", singleToList(DBMCallisto)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Ganymede", "blessentumble.moons.ganymede.dimension.ChunkProviderGanymede", singleToList(DBMGanymede)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Ceres", "blessentumble.planets.ceres.dimension.ChunkProviderCeres", singleToList(DBMCeres)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Deimos", "blessentumble.moons.deimos.dimension.ChunkProviderDeimos", singleToList(DBMDeimos)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Enceladus", "blessentumble.moons.enceladus.dimension.ChunkProviderEnceladus", singleToList(DBMEnceladus)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Io", "blessentumble.moons.io.dimension.ChunkProviderIo", singleToList(DBMIO)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Europa", "blessentumble.moons.europa.dimension.ChunkProviderEuropa", singleToList(DBMEurpoa)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Phobos", "blessentumble.moons.phobos.dimension.ChunkProviderPhobos", singleToList(DBMPhobos)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Venus", "blessentumble.planets.venus.dimension.ChunkProviderVenus", singleToList(DBMVenus)));
- modCGalaxySpace.addDimensionDef(new ModDimensionDef("Mercury", "blessentumble.planets.mercury.dimension.ChunkProviderMercury", singleToList(DBMMercury)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Pluto", "blessentumble.planets.SolarSystem.pluto.dimension.ChunkProviderPluto", DimensionType.Planet, singleToList(DBMPluto)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Triton", "blessentumble.moons.triton.dimension.ChunkProviderTriton", DimensionType.Planet, singleToList(DBMTriton)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Proteus", "blessentumble.moons.proteus.dimension.ChunkProviderProteus", DimensionType.Planet, singleToList(DBMProteus)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Oberon", "blessentumble.moons.oberon.dimension.ChunkProviderOberon", DimensionType.Planet, singleToList(DBMOberon)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Titan", "blessentumble.moons.titan.dimension.ChunkProviderTitan", DimensionType.Planet, singleToList(DBMTitan)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Callisto", "blessentumble.moons.callisto.dimension.ChunkProviderCallisto", DimensionType.Planet, singleToList(DBMCallisto)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Ganymede", "blessentumble.moons.ganymede.dimension.ChunkProviderGanymede", DimensionType.Planet, singleToList(DBMGanymede)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Ceres", "blessentumble.planets.SolarSystem.ceres.dimension.ChunkProviderCeres", DimensionType.Planet, singleToList(DBMCeres)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Deimos", "blessentumble.moons.deimos.dimension.ChunkProviderDeimos", DimensionType.Planet, singleToList(DBMDeimos)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Enceladus", "blessentumble.moons.enceladus.dimension.ChunkProviderEnceladus", DimensionType.Planet, singleToList(DBMEnceladus)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Io", "blessentumble.moons.io.dimension.ChunkProviderIo", DimensionType.Planet, singleToList(DBMIO)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Europa", "blessentumble.moons.europa.dimension.ChunkProviderEuropa", DimensionType.Planet, singleToList(DBMEurpoa)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Phobos", "blessentumble.moons.phobos.dimension.ChunkProviderPhobos", DimensionType.Planet, singleToList(DBMPhobos)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Venus", "blessentumble.planets.SolarSystem.venus.dimension.ChunkProviderVenus", DimensionType.Planet, singleToList(DBMVenus)));
+ modCGalaxySpace.addDimensionDef(new ModDimensionDef("Mercury", "blessentumble.planets.SolarSystem.mercury.dimension.ChunkProviderMercury", DimensionType.Planet, singleToList(DBMMercury)));
+
+ // GSpace 2.2-Beta: Kupierbelt
+ ModDimensionDef dimKupierBelt = new ModDimensionDef("Kuiperbelt", "blessentumble.planets.SolarSystem.kuiperbelt.dimension.ChunkProviderKuiper", DimensionType.Asteroid);
+ dimKupierBelt.setDimensionType(DimensionType.Asteroid);
+ dimKupierBelt.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.RedGranite));
+ dimKupierBelt.addAsteroidMaterial(new AsteroidBlockComb(GTOreTypes.BlackGranite));
+ modCGalaxySpace.addDimensionDef(dimKupierBelt);
return modCGalaxySpace;
}
diff --git a/src/main/java/bloodasp/galacticgreg/api/ModDimensionDef.java b/src/main/java/bloodasp/galacticgreg/api/ModDimensionDef.java
index 8c2ef5c3e8..af1a456866 100644
--- a/src/main/java/bloodasp/galacticgreg/api/ModDimensionDef.java
+++ b/src/main/java/bloodasp/galacticgreg/api/ModDimensionDef.java
@@ -289,9 +289,9 @@ public class ModDimensionDef {
* @param pDimensionName The human-readable. Spaces will be removed
* @param pChunkProvider The chunkprovider class that shall be observed for the oregen
*/
- public ModDimensionDef(String pDimensionName, Class <? extends IChunkProvider> pChunkProvider)
+ public ModDimensionDef(String pDimensionName, Class <? extends IChunkProvider> pChunkProvider, DimensionType pDimType)
{
- this(pDimensionName, pChunkProvider.toString().substring(6), null);
+ this(pDimensionName, pChunkProvider.toString().substring(6), pDimType, null);
}
/** Define a new dimension
@@ -299,18 +299,18 @@ public class ModDimensionDef {
* @param pChunkProvider The chunkprovider class that shall be observed for the oregen
* @param pBlockDefinitions The list of predefined blocks to be replaced by ores
*/
- public ModDimensionDef(String pDimensionName, Class <? extends IChunkProvider> pChunkProvider, List<ModDBMDef> pBlockDefinitions)
+ public ModDimensionDef(String pDimensionName, Class <? extends IChunkProvider> pChunkProvider, DimensionType pDimType, List<ModDBMDef> pBlockDefinitions)
{
- this(pDimensionName, pChunkProvider.toString().substring(6), pBlockDefinitions);
+ this(pDimensionName, pChunkProvider.toString().substring(6), pDimType, pBlockDefinitions);
}
/** Define a new dimension
* @param pDimensionName The human-readable DimensionName. Spaces will be removed
* @param pChunkProviderName The human-readable, full-qualified classname for the chunkprovider
*/
- public ModDimensionDef(String pDimensionName, String pChunkProviderName)
+ public ModDimensionDef(String pDimensionName, String pChunkProviderName, DimensionType pDimType)
{
- this(pDimensionName, pChunkProviderName, null);
+ this(pDimensionName, pChunkProviderName, pDimType, null);
}
/** Define a new dimension
@@ -318,11 +318,12 @@ public class ModDimensionDef {
* @param pChunkProviderName The human-readable, full-qualified classname for the chunkprovider
* @param pBlockDefinitions The list of predefined blocks to be replaced by ores
*/
- public ModDimensionDef(String pDimensionName, String pChunkProviderName, List<ModDBMDef> pBlockDefinitions)
+ public ModDimensionDef(String pDimensionName, String pChunkProviderName, DimensionType pDimType, List<ModDBMDef> pBlockDefinitions)
{
_mInternalDimIdentifier = STR_NOTDEFINED;
_mDimensionName = pDimensionName;
_mChunkProvider = pChunkProviderName;
+ _mDimensionType = pDimType;
_mReplaceableBlocks = new ArrayList<ModDBMDef>();
if (pBlockDefinitions != null)
@@ -463,6 +464,8 @@ public class ModDimensionDef {
try
{
rpb.updateBlockName(pParentModName);
+ if (_mStoneType == null)
+ _mStoneType = GTOreTypes.NormalOres;
}
catch(Exception e)
{