|
21 | 21 |
|
22 | 22 | public class WorldServer extends World
|
23 | 23 | {
|
24 |
| -@@ -45,6 +52,9 @@ |
| 24 | +@@ -45,6 +52,10 @@ |
25 | 25 | /** An IntHashMap of entity IDs (integers) to their Entity objects. */
|
26 | 26 | private IntHashMap entityIdMap;
|
27 | 27 |
|
28 | 28 | + /** Stores the recently processed (lighting) chunks */
|
29 | 29 | + protected Set<ChunkCoordIntPair> doneChunks = new HashSet<ChunkCoordIntPair>();
|
| 30 | ++ public List<Teleporter> customTeleporters = new ArrayList<Teleporter>(); |
30 | 31 | +
|
31 | 32 | public WorldServer(MinecraftServer par1MinecraftServer, ISaveHandler par2ISaveHandler, String par3Str, int par4, WorldSettings par5WorldSettings, Profiler par6Profiler)
|
32 | 33 | {
|
33 | 34 | super(par2ISaveHandler, par3Str, par5WorldSettings, WorldProvider.getProviderForDimension(par4), par6Profiler);
|
34 |
| -@@ -68,6 +78,7 @@ |
| 35 | +@@ -68,6 +79,7 @@ |
35 | 36 | }
|
36 | 37 |
|
37 | 38 | this.field_85177_Q = new Teleporter(this);
|
38 | 39 | + DimensionManager.setWorld(par4, this);
|
39 | 40 | }
|
40 | 41 |
|
41 | 42 | /**
|
42 |
| -@@ -184,10 +195,7 @@ |
| 43 | +@@ -131,6 +143,10 @@ |
| 44 | + this.villageSiegeObj.tick(); |
| 45 | + this.theProfiler.endStartSection("portalForcer"); |
| 46 | + this.field_85177_Q.func_85189_a(this.getTotalWorldTime()); |
| 47 | ++ for (Teleporter tele : customTeleporters) |
| 48 | ++ { |
| 49 | ++ tele.func_85189_a(getTotalWorldTime()); |
| 50 | ++ } |
| 51 | + this.theProfiler.endSection(); |
| 52 | + this.sendAndApplyBlockEvents(); |
| 53 | + } |
| 54 | +@@ -184,10 +200,7 @@ |
43 | 55 |
|
44 | 56 | private void resetRainAndThunder()
|
45 | 57 | {
|
|
51 | 63 | }
|
52 | 64 |
|
53 | 65 | public boolean areAllPlayersAsleep()
|
54 |
| -@@ -258,6 +266,14 @@ |
| 66 | +@@ -258,6 +271,14 @@ |
55 | 67 | int var1 = 0;
|
56 | 68 | int var2 = 0;
|
57 | 69 | Iterator var3 = this.activeChunkSet.iterator();
|
|
66 | 78 |
|
67 | 79 | while (var3.hasNext())
|
68 | 80 | {
|
69 |
| -@@ -268,14 +284,16 @@ |
| 81 | +@@ -268,14 +289,16 @@ |
70 | 82 | Chunk var7 = this.getChunkFromChunkCoords(var4.chunkXPos, var4.chunkZPos);
|
71 | 83 | this.moodSoundAndLightCheck(var5, var6, var7);
|
72 | 84 | this.theProfiler.endStartSection("tickChunk");
|
|
85 | 97 | {
|
86 | 98 | this.updateLCG = this.updateLCG * 3 + 1013904223;
|
87 | 99 | var8 = this.updateLCG >> 2;
|
88 |
| -@@ -293,7 +311,7 @@ |
| 100 | +@@ -293,7 +316,7 @@ |
89 | 101 | this.theProfiler.endStartSection("iceandsnow");
|
90 | 102 | int var13;
|
91 | 103 |
|
|
94 | 106 | {
|
95 | 107 | this.updateLCG = this.updateLCG * 3 + 1013904223;
|
96 | 108 | var8 = this.updateLCG >> 2;
|
97 |
| -@@ -372,7 +390,8 @@ |
| 109 | +@@ -372,7 +395,8 @@ |
98 | 110 | public void func_82740_a(int par1, int par2, int par3, int par4, int par5, int par6)
|
99 | 111 | {
|
100 | 112 | NextTickListEntry var7 = new NextTickListEntry(par1, par2, par3, par4);
|
|
104 | 116 |
|
105 | 117 | if (this.scheduledUpdatesAreImmediate && par4 > 0)
|
106 | 118 | {
|
107 |
| -@@ -434,7 +453,7 @@ |
| 119 | +@@ -434,7 +458,7 @@ |
108 | 120 | */
|
109 | 121 | public void updateEntities()
|
110 | 122 | {
|
|
113 | 125 | {
|
114 | 126 | if (this.updateEntityTick++ >= 1200)
|
115 | 127 | {
|
116 |
| -@@ -483,7 +502,8 @@ |
| 128 | +@@ -483,7 +507,8 @@ |
117 | 129 |
|
118 | 130 | this.pendingTickListEntries.remove(var4);
|
119 | 131 | this.field_73064_N.remove(var4);
|
|
123 | 135 |
|
124 | 136 | if (this.checkChunksExist(var4.xCoord - var5, var4.yCoord - var5, var4.zCoord - var5, var4.xCoord + var5, var4.yCoord + var5, var4.zCoord + var5))
|
125 | 137 | {
|
126 |
| -@@ -601,15 +621,27 @@ |
| 138 | +@@ -601,15 +626,27 @@ |
127 | 139 | public List getAllTileEntityInBox(int par1, int par2, int par3, int par4, int par5, int par6)
|
128 | 140 | {
|
129 | 141 | ArrayList var7 = new ArrayList();
|
|
160 | 172 | }
|
161 | 173 | }
|
162 | 174 |
|
163 |
| -@@ -620,6 +652,11 @@ |
| 175 | +@@ -620,6 +657,11 @@ |
164 | 176 | * Called when checking if a certain block can be mined or not. The 'spawn safe zone' check is located here.
|
165 | 177 | */
|
166 | 178 | public boolean canMineBlock(EntityPlayer par1EntityPlayer, int par2, int par3, int par4)
|
|
172 | 184 | {
|
173 | 185 | int var5 = MathHelper.abs_int(par2 - this.worldInfo.getSpawnX());
|
174 | 186 | int var6 = MathHelper.abs_int(par4 - this.worldInfo.getSpawnZ());
|
175 |
| -@@ -629,7 +666,7 @@ |
| 187 | +@@ -629,7 +671,7 @@ |
176 | 188 | var6 = var5;
|
177 | 189 | }
|
178 | 190 |
|
|
181 | 193 | }
|
182 | 194 |
|
183 | 195 | protected void initialize(WorldSettings par1WorldSettings)
|
184 |
| -@@ -712,7 +749,7 @@ |
| 196 | +@@ -712,7 +754,7 @@ |
185 | 197 | */
|
186 | 198 | protected void createBonusChest()
|
187 | 199 | {
|
|
190 | 202 |
|
191 | 203 | for (int var2 = 0; var2 < 10; ++var2)
|
192 | 204 | {
|
193 |
| -@@ -755,6 +792,7 @@ |
| 205 | +@@ -755,6 +797,7 @@ |
194 | 206 | }
|
195 | 207 |
|
196 | 208 | this.chunkProvider.saveChunks(par1, par2IProgressUpdate);
|
197 | 209 | + MinecraftForge.EVENT_BUS.post(new WorldEvent.Save(this));
|
198 | 210 | }
|
199 | 211 | }
|
200 | 212 |
|
201 |
| -@@ -766,6 +804,7 @@ |
| 213 | +@@ -766,6 +809,7 @@ |
202 | 214 | this.checkSessionLock();
|
203 | 215 | this.saveHandler.saveWorldInfoWithPlayer(this.worldInfo, this.mcServer.getConfigurationManager().getTagsFromLastWrite());
|
204 | 216 | this.mapStorage.saveAllData();
|
205 | 217 | + this.perWorldStorage.saveAllData();
|
206 | 218 | }
|
207 | 219 |
|
208 | 220 | /**
|
209 |
| -@@ -996,4 +1035,9 @@ |
| 221 | +@@ -996,4 +1040,9 @@ |
210 | 222 | {
|
211 | 223 | return this.field_85177_Q;
|
212 | 224 | }
|
|
0 commit comments