Skip to content

Commit d9df698

Browse files
committed
Add option to hide players if they are in the shadows *mystic sound here*
1 parent 37c125c commit d9df698

File tree

20 files changed

+283
-1
lines changed

20 files changed

+283
-1
lines changed

BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/config/PluginConfig.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ public class PluginConfig {
1818
private boolean hideInvisible = true;
1919
private boolean hideSneaking = false;
2020
private boolean hideDifferentWorld = false;
21+
private int hideBelowSkyLight = 0;
22+
private int hideBelowBlockLight = 0;
2123

2224
private int writeMarkersInterval = 0;
2325
private int writePlayersInterval = 0;
@@ -52,6 +54,14 @@ public boolean isHideDifferentWorld() {
5254
return hideDifferentWorld;
5355
}
5456

57+
public int getHideBelowSkyLight() {
58+
return hideBelowSkyLight;
59+
}
60+
61+
public int getHideBelowBlockLight() {
62+
return hideBelowBlockLight;
63+
}
64+
5565
public int getWriteMarkersInterval() {
5666
return writeMarkersInterval;
5767
}

BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/live/LivePlayersDataSupplier.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ public String get() {
4646
if (config.isHideSneaking() && player.isSneaking()) continue;
4747
if (config.getHiddenGameModes().contains(player.getGamemode().getId())) continue;
4848
if (config.isHideDifferentWorld() && !isCorrectWorld) continue;
49+
if (player.getSkyLight() < config.getHideBelowSkyLight()) continue;
50+
if (player.getBlockLight() < config.getHideBelowBlockLight()) continue;
4951
if (!this.playerFilter.test(player.getUuid())) continue;
5052

5153
json.beginObject();

BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/serverinterface/Player.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ public interface Player {
4444
*/
4545
Vector3d getRotation();
4646

47+
int getSkyLight();
48+
49+
int getBlockLight();
50+
4751
boolean isOnline();
4852

4953
/**

BlueMapCommon/src/main/resources/de/bluecolored/bluemap/config/plugin.conf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ hide-invisible: true
2727
# Default is false
2828
hide-sneaking: false
2929

30+
# Hides the player if they are in a sky or block-light level below the given number.
31+
# E.g. if you set this to 1, then the player will be hidden on the map if they are in absolute darkness
32+
# Default is 0 (don't hide the player)
33+
hide-below-sky-light: 0
34+
hide-below-block-light: 0
35+
3036
# If this is true, players that are on a different world than the viewed map will not appear on the player-list.
3137
# Default is false
3238
hide-different-world: false

implementations/fabric-1.15.2/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import net.minecraft.server.network.ServerPlayerEntity;
3636
import net.minecraft.util.math.Vec3d;
3737
import net.minecraft.world.GameMode;
38+
import net.minecraft.world.LightType;
3839

3940
import java.io.IOException;
4041
import java.util.EnumMap;
@@ -57,6 +58,8 @@ public class FabricPlayer implements Player {
5758
private String world;
5859
private Vector3d position;
5960
private Vector3d rotation;
61+
private int skyLight;
62+
private int blockLight;
6063
private boolean online;
6164
private boolean sneaking;
6265
private boolean invisible;
@@ -98,6 +101,16 @@ public Vector3d getRotation() {
98101
return rotation;
99102
}
100103

104+
@Override
105+
public int getSkyLight() {
106+
return skyLight;
107+
}
108+
109+
@Override
110+
public int getBlockLight() {
111+
return blockLight;
112+
}
113+
101114
@Override
102115
public boolean isOnline() {
103116
return this.online;
@@ -148,6 +161,9 @@ public void update() {
148161
this.rotation = new Vector3d(player.pitch, player.headYaw, 0);
149162
this.sneaking = player.isSneaking();
150163

164+
this.skyLight = player.getServerWorld().getLightingProvider().get(LightType.SKY).getLightLevel(player.getBlockPos());
165+
this.blockLight = player.getServerWorld().getLightingProvider().get(LightType.BLOCK).getLightLevel(player.getBlockPos());
166+
151167
try {
152168
var world = mod.getWorld(player.getServerWorld());
153169
this.world = blueMap.getWorldId(world.getSaveFolder());

implementations/fabric-1.16.1/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import net.minecraft.server.network.ServerPlayerEntity;
3636
import net.minecraft.util.math.Vec3d;
3737
import net.minecraft.world.GameMode;
38+
import net.minecraft.world.LightType;
3839

3940
import java.io.IOException;
4041
import java.util.EnumMap;
@@ -57,6 +58,8 @@ public class FabricPlayer implements Player {
5758
private String world;
5859
private Vector3d position;
5960
private Vector3d rotation;
61+
private int skyLight;
62+
private int blockLight;
6063
private boolean online;
6164
private boolean sneaking;
6265
private boolean invisible;
@@ -98,6 +101,16 @@ public Vector3d getRotation() {
98101
return rotation;
99102
}
100103

104+
@Override
105+
public int getSkyLight() {
106+
return skyLight;
107+
}
108+
109+
@Override
110+
public int getBlockLight() {
111+
return blockLight;
112+
}
113+
101114
@Override
102115
public boolean isOnline() {
103116
return this.online;
@@ -148,6 +161,9 @@ public void update() {
148161
this.rotation = new Vector3d(player.pitch, player.headYaw, 0);
149162
this.sneaking = player.isSneaking();
150163

164+
this.skyLight = player.getServerWorld().getLightingProvider().get(LightType.SKY).getLightLevel(player.getBlockPos());
165+
this.blockLight = player.getServerWorld().getLightingProvider().get(LightType.BLOCK).getLightLevel(player.getBlockPos());
166+
151167
try {
152168
var world = mod.getWorld(player.getServerWorld());
153169
this.world = blueMap.getWorldId(world.getSaveFolder());

implementations/fabric-1.16.2/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import net.minecraft.server.network.ServerPlayerEntity;
3636
import net.minecraft.util.math.Vec3d;
3737
import net.minecraft.world.GameMode;
38+
import net.minecraft.world.LightType;
3839

3940
import java.io.IOException;
4041
import java.util.EnumMap;
@@ -57,6 +58,8 @@ public class FabricPlayer implements Player {
5758
private String world;
5859
private Vector3d position;
5960
private Vector3d rotation;
61+
private int skyLight;
62+
private int blockLight;
6063
private boolean online;
6164
private boolean sneaking;
6265
private boolean invisible;
@@ -98,6 +101,16 @@ public Vector3d getRotation() {
98101
return rotation;
99102
}
100103

104+
@Override
105+
public int getSkyLight() {
106+
return skyLight;
107+
}
108+
109+
@Override
110+
public int getBlockLight() {
111+
return blockLight;
112+
}
113+
101114
@Override
102115
public boolean isOnline() {
103116
return this.online;
@@ -148,6 +161,9 @@ public void update() {
148161
this.rotation = new Vector3d(player.pitch, player.headYaw, 0);
149162
this.sneaking = player.isSneaking();
150163

164+
this.skyLight = player.getServerWorld().getLightingProvider().get(LightType.SKY).getLightLevel(player.getBlockPos());
165+
this.blockLight = player.getServerWorld().getLightingProvider().get(LightType.BLOCK).getLightLevel(player.getBlockPos());
166+
151167
try {
152168
var world = mod.getWorld(player.getServerWorld());
153169
this.world = blueMap.getWorldId(world.getSaveFolder());

implementations/fabric-1.17/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import net.minecraft.server.network.ServerPlayerEntity;
3636
import net.minecraft.util.math.Vec3d;
3737
import net.minecraft.world.GameMode;
38+
import net.minecraft.world.LightType;
3839

3940
import java.io.IOException;
4041
import java.util.EnumMap;
@@ -56,6 +57,8 @@ public class FabricPlayer implements Player {
5657
private String world;
5758
private Vector3d position;
5859
private Vector3d rotation;
60+
private int skyLight;
61+
private int blockLight;
5962
private boolean online;
6063
private boolean sneaking;
6164
private boolean invisible;
@@ -97,6 +100,16 @@ public Vector3d getRotation() {
97100
return rotation;
98101
}
99102

103+
@Override
104+
public int getSkyLight() {
105+
return skyLight;
106+
}
107+
108+
@Override
109+
public int getBlockLight() {
110+
return blockLight;
111+
}
112+
100113
@Override
101114
public boolean isOnline() {
102115
return this.online;
@@ -147,6 +160,9 @@ public void update() {
147160
this.rotation = new Vector3d(player.getPitch(), player.getHeadYaw(), 0);
148161
this.sneaking = player.isSneaking();
149162

163+
this.skyLight = player.getServerWorld().getLightingProvider().get(LightType.SKY).getLightLevel(player.getBlockPos());
164+
this.blockLight = player.getServerWorld().getLightingProvider().get(LightType.BLOCK).getLightLevel(player.getBlockPos());
165+
150166
try {
151167
var world = mod.getWorld(player.getServerWorld());
152168
this.world = blueMap.getWorldId(world.getSaveFolder());

implementations/fabric-1.18/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import net.minecraft.server.network.ServerPlayerEntity;
3636
import net.minecraft.util.math.Vec3d;
3737
import net.minecraft.world.GameMode;
38+
import net.minecraft.world.LightType;
3839

3940
import java.io.IOException;
4041
import java.util.EnumMap;
@@ -56,6 +57,8 @@ public class FabricPlayer implements Player {
5657
private String world;
5758
private Vector3d position;
5859
private Vector3d rotation;
60+
private int skyLight;
61+
private int blockLight;
5962
private boolean online;
6063
private boolean sneaking;
6164
private boolean invisible;
@@ -97,6 +100,16 @@ public Vector3d getRotation() {
97100
return this.rotation;
98101
}
99102

103+
@Override
104+
public int getSkyLight() {
105+
return skyLight;
106+
}
107+
108+
@Override
109+
public int getBlockLight() {
110+
return blockLight;
111+
}
112+
100113
@Override
101114
public boolean isOnline() {
102115
return this.online;
@@ -147,6 +160,9 @@ public void update() {
147160
this.rotation = new Vector3d(player.getPitch(), player.getHeadYaw(), 0);
148161
this.sneaking = player.isSneaking();
149162

163+
this.skyLight = player.getWorld().getLightingProvider().get(LightType.SKY).getLightLevel(player.getBlockPos());
164+
this.blockLight = player.getWorld().getLightingProvider().get(LightType.BLOCK).getLightLevel(player.getBlockPos());
165+
150166
try {
151167
var world = mod.getWorld(player.getWorld());
152168
this.world = blueMap.getWorldId(world.getSaveFolder());

implementations/fabric-1.19/src/main/java/de/bluecolored/bluemap/fabric/FabricPlayer.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import net.minecraft.server.network.ServerPlayerEntity;
3636
import net.minecraft.util.math.Vec3d;
3737
import net.minecraft.world.GameMode;
38+
import net.minecraft.world.LightType;
3839

3940
import java.io.IOException;
4041
import java.util.EnumMap;
@@ -56,6 +57,8 @@ public class FabricPlayer implements Player {
5657
private String world;
5758
private Vector3d position;
5859
private Vector3d rotation;
60+
private int skyLight;
61+
private int blockLight;
5962
private boolean online;
6063
private boolean sneaking;
6164
private boolean invisible;
@@ -97,6 +100,16 @@ public Vector3d getRotation() {
97100
return rotation;
98101
}
99102

103+
@Override
104+
public int getSkyLight() {
105+
return skyLight;
106+
}
107+
108+
@Override
109+
public int getBlockLight() {
110+
return blockLight;
111+
}
112+
100113
@Override
101114
public boolean isOnline() {
102115
return this.online;
@@ -147,6 +160,9 @@ public void update() {
147160
this.rotation = new Vector3d(player.getPitch(), player.getHeadYaw(), 0);
148161
this.sneaking = player.isSneaking();
149162

163+
this.skyLight = player.getWorld().getLightingProvider().get(LightType.SKY).getLightLevel(player.getBlockPos());
164+
this.blockLight = player.getWorld().getLightingProvider().get(LightType.BLOCK).getLightLevel(player.getBlockPos());
165+
150166
try {
151167
var world = mod.getWorld(player.getWorld());
152168
this.world = blueMap.getWorldId(world.getSaveFolder());

0 commit comments

Comments
 (0)