Skip to content

Commit ef69d6c

Browse files
committed
Revert "Add populators at a later stage. Fixes #325."
This reverts commit 1277029.
1 parent 8757160 commit ef69d6c

File tree

2 files changed

+42
-19
lines changed

2 files changed

+42
-19
lines changed

platforms/bukkit/src/main/java/com/khorn/terraincontrol/bukkit/TCPlugin.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44
import com.khorn.terraincontrol.bukkit.commands.TCCommandExecutor;
55
import com.khorn.terraincontrol.bukkit.events.TCListener;
66
import com.khorn.terraincontrol.bukkit.generator.BukkitVanillaBiomeGenerator;
7-
import com.khorn.terraincontrol.bukkit.generator.TCBlockPopulator;
87
import com.khorn.terraincontrol.bukkit.generator.TCChunkGenerator;
98
import com.khorn.terraincontrol.bukkit.generator.structures.RareBuildingStart;
109
import com.khorn.terraincontrol.bukkit.generator.structures.VillageStart;
1110
import com.khorn.terraincontrol.bukkit.metrics.BukkitMetricsHelper;
12-
import com.khorn.terraincontrol.configuration.WorldConfig.TerrainMode;
1311
import com.khorn.terraincontrol.configuration.WorldSettings;
1412
import com.khorn.terraincontrol.configuration.standard.PluginStandardValues;
1513
import com.khorn.terraincontrol.generator.biome.VanillaBiomeGenerator;
@@ -121,7 +119,7 @@ public ChunkGenerator getDefaultWorldGenerator(String worldName, String id)
121119
if (worldName.isEmpty())
122120
{
123121
TerrainControl.log(LogMarker.DEBUG, "Ignoring empty world name. Is some generator plugin checking if \"TerrainControl\" is a valid world name?");
124-
return new TCChunkGenerator();
122+
return new TCChunkGenerator(this);
125123
}
126124

127125
// Check if not already enabled
@@ -158,7 +156,7 @@ public ChunkGenerator getDefaultWorldGenerator(String worldName, String id)
158156
case TerrainTest:
159157
case OldGenerator:
160158
case NotGenerate:
161-
generator = new TCChunkGenerator();
159+
generator = new TCChunkGenerator(this);
162160
break;
163161
case Default:
164162
break;
@@ -190,22 +188,12 @@ public void onWorldInit(World world)
190188
// Enable and register the world
191189
bukkitWorld.enable(world);
192190
this.worlds.put(world.getName(), bukkitWorld);
193-
addPopulator(world, bukkitWorld);
194191

195192
// Show message
196193
TerrainControl.log(LogMarker.INFO, "World {} is now enabled!", (Object) bukkitWorld.getName());
197194
}
198195
}
199196

200-
private void addPopulator(World world, BukkitWorld bukkitWorld)
201-
{
202-
TerrainMode terrainMode = bukkitWorld.getConfigs().getWorldConfig().ModeTerrain;
203-
if (terrainMode != TerrainMode.TerrainTest && terrainMode != TerrainMode.NotGenerate)
204-
{
205-
world.getPopulators().add(new TCBlockPopulator(bukkitWorld));
206-
}
207-
}
208-
209197
public void onWorldUnload(World world)
210198
{
211199
if (this.notInitedWorlds.containsKey(world.getName()))

platforms/bukkit/src/main/java/com/khorn/terraincontrol/bukkit/generator/TCChunkGenerator.java

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,45 @@
11
package com.khorn.terraincontrol.bukkit.generator;
22

3-
import com.google.common.base.Preconditions;
43
import com.khorn.terraincontrol.bukkit.BukkitWorld;
4+
import com.khorn.terraincontrol.bukkit.TCPlugin;
55
import com.khorn.terraincontrol.configuration.WorldConfig;
66
import com.khorn.terraincontrol.generator.ChunkProviderTC;
77
import com.khorn.terraincontrol.util.ChunkCoordinate;
88
import org.bukkit.Material;
99
import org.bukkit.World;
10+
import org.bukkit.generator.BlockPopulator;
1011
import org.bukkit.generator.ChunkGenerator;
1112

13+
import java.util.ArrayList;
14+
import java.util.List;
1215
import java.util.Random;
1316

1417
public class TCChunkGenerator extends ChunkGenerator
1518
{
1619
private ChunkProviderTC chunkProviderTC;
20+
private ArrayList<BlockPopulator> BlockPopulator = new ArrayList<BlockPopulator>();
1721
private boolean NotGenerate = false;
18-
private boolean initialized = false;
22+
private TCPlugin plugin;
23+
24+
public TCChunkGenerator(TCPlugin _plugin)
25+
{
26+
this.plugin = _plugin;
27+
}
28+
29+
/**
30+
* Initializes the world if it hasn't already been initialized.
31+
*
32+
* @param world
33+
* The world of this generator.
34+
*/
35+
private void makeSureWorldIsInitialized(World world)
36+
{
37+
if (this.chunkProviderTC == null)
38+
{
39+
// Not yet initialized, do it now
40+
this.plugin.onWorldInit(world);
41+
}
42+
}
1943

2044
/**
2145
* Called whenever a BukkitWorld instance becomes available.
@@ -25,28 +49,39 @@ public class TCChunkGenerator extends ChunkGenerator
2549
*/
2650
public void onInitialize(BukkitWorld _world)
2751
{
28-
Preconditions.checkState(!this.initialized, "Already initialized");
29-
3052
this.chunkProviderTC = new ChunkProviderTC(_world.getConfigs(), _world);
3153

3254
WorldConfig.TerrainMode mode = _world.getConfigs().getWorldConfig().ModeTerrain;
3355

56+
if (mode == WorldConfig.TerrainMode.Normal || mode == WorldConfig.TerrainMode.OldGenerator)
57+
this.BlockPopulator.add(new TCBlockPopulator(_world));
58+
3459
if (mode == WorldConfig.TerrainMode.NotGenerate)
3560
this.NotGenerate = true;
61+
}
62+
63+
@Override
64+
public List<BlockPopulator> getDefaultPopulators(World world)
65+
{
66+
makeSureWorldIsInitialized(world);
3667

37-
this.initialized = true;
68+
return this.BlockPopulator;
3869
}
3970

4071
@Override
4172
public boolean canSpawn(World world, int x, int z)
4273
{
74+
makeSureWorldIsInitialized(world);
75+
4376
Material material = world.getHighestBlockAt(x, z).getType();
4477
return material.isSolid();
4578
}
4679

4780
@Override
4881
public short[][] generateExtBlockSections(World world, Random random, int chunkX, int chunkZ, BiomeGrid biomes)
4982
{
83+
makeSureWorldIsInitialized(world);
84+
5085
if (this.NotGenerate)
5186
return new short[16][];
5287
ChunkCoordinate chunkCoord = ChunkCoordinate.fromChunkCoords(chunkX, chunkZ);

0 commit comments

Comments
 (0)