-
-
Notifications
You must be signed in to change notification settings - Fork 44
/
PatchPlayerInstance.java
46 lines (39 loc) · 1.26 KB
/
PatchPlayerInstance.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package me.nallar.patched.world.tracking;
import java.util.ArrayList;
import java.util.List;
import me.nallar.tickthreading.patcher.Declare;
import net.minecraft.server.management.PlayerInstance;
import net.minecraft.server.management.PlayerManager;
import net.minecraft.tileentity.TileEntity;
public abstract class PatchPlayerInstance extends PlayerInstance {
private List<TileEntity> tilesToUpdate;
private static java.lang.reflect.Method getChunkWatcherWithPlayers;
public PatchPlayerInstance(PlayerManager par1PlayerManager, int par2, int par3) {
super(par1PlayerManager, par2, par3);
}
public void construct() {
tilesToUpdate = new ArrayList<TileEntity>();
}
public void sendTiles() {
for (TileEntity tileEntity : tilesToUpdate) {
sendTileToAllPlayersWatchingChunk(tileEntity);
}
tilesToUpdate.clear();
}
@Override
@Declare
public void updateTile(TileEntity tileEntity) {
if (numberOfTilesToUpdate == 0) {
this.myManager.playerUpdateLock.lock();
try {
this.myManager.getChunkWatcherWithPlayers().add(this);
} finally {
this.myManager.playerUpdateLock.unlock();
}
numberOfTilesToUpdate++;
}
if (!tilesToUpdate.contains(tileEntity)) {
tilesToUpdate.add(tileEntity);
}
}
}