aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java
diff options
context:
space:
mode:
authorBuildTools <james.jenour@protonmail.com>2021-02-20 23:37:59 +0800
committerBuildTools <james.jenour@protonmail.com>2021-02-20 23:37:59 +0800
commit06cb4d208801e276a0e4d96252c00ae01d9e522d (patch)
treeedb9ea57e98398c004433be0b9a7fd7ce324b385 /src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java
parentde834a97505c66b5655ee7ff91e78e84da3f81f3 (diff)
downloadnotenoughupdates-06cb4d208801e276a0e4d96252c00ae01d9e522d.tar.gz
notenoughupdates-06cb4d208801e276a0e4d96252c00ae01d9e522d.tar.bz2
notenoughupdates-06cb4d208801e276a0e4d96252c00ae01d9e522d.zip
charzard just 4 u
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java101
1 files changed, 57 insertions, 44 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java b/src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java
index 019fe9ee..8a591398 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java
@@ -19,6 +19,7 @@ import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.resources.DefaultPlayerSkin;
import net.minecraft.client.shader.Framebuffer;
import net.minecraft.client.shader.Shader;
+import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemMap;
@@ -88,6 +89,7 @@ public class DungeonMap {
private Map<String, MapPosition> playerMarkerMapPositions = new HashMap<>();
private Set<MapPosition> rawPlayerMarkerMapPositions = new HashSet<>();
private Map<String, MapPosition> playerMarkerMapPositionsLast = new HashMap<>();
+ private HashMap<String, Integer> playerIdMap = new HashMap<>();
private Map<String, ResourceLocation> playerSkinMap = new HashMap<>();
@@ -655,7 +657,7 @@ public class DungeonMap {
pixelWidth = pixelHeight = 12;
}
GlStateManager.color(1, 1, 1, 1);
- if((!NotEnoughUpdates.INSTANCE.config.dungeonMapOpen.showOwnHeadAsMarker ||
+ if((!NotEnoughUpdates.INSTANCE.config.dungeons.showOwnHeadAsMarker ||
playerMarkerMapPositions.size() <= 1 || minU != 1/4f) &&
NotEnoughUpdates.INSTANCE.config.dungeonMap.dmPlayerHeads >= 1 &&
playerSkinMap.containsKey(entry.getKey())) {
@@ -818,6 +820,7 @@ public class DungeonMap {
GlStateManager.enableBlend();
GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
GlStateManager.enableDepth();
+ GlStateManager.disableLighting();
}
@@ -1013,8 +1016,10 @@ public class DungeonMap {
if(colourMap[0].length != 128) return;
this.colourMap = colourMap;
+ boolean searchForPlayers = false;
if(System.currentTimeMillis() - lastClearCache > 1000) {
roomMap.clear();
+ searchForPlayers = true;
startRoomX = -1;
startRoomY = -1;
connectorSize = -1;
@@ -1140,58 +1145,66 @@ public class DungeonMap {
}
}
- for(EntityPlayer player : Minecraft.getMinecraft().theWorld.playerEntities) {
- if(player instanceof AbstractClientPlayer && actualPlayers.contains(player.getName())) {
- AbstractClientPlayer aplayer = (AbstractClientPlayer) player;
- ResourceLocation skin = aplayer.getLocationSkin();
- if(skin != DefaultPlayerSkin.getDefaultSkin(aplayer.getUniqueID())) {
- playerSkinMap.put(player.getName(), skin);
+ actualPlayers.add(Minecraft.getMinecraft().thePlayer.getName());
+ if(searchForPlayers) {
+ for(EntityPlayer player : Minecraft.getMinecraft().theWorld.playerEntities) {
+ if(player instanceof AbstractClientPlayer && actualPlayers.contains(player.getName())) {
+ AbstractClientPlayer aplayer = (AbstractClientPlayer) player;
+ ResourceLocation skin = aplayer.getLocationSkin();
+ if(skin != DefaultPlayerSkin.getDefaultSkin(aplayer.getUniqueID())) {
+ playerSkinMap.put(player.getName(), skin);
+ playerIdMap.put(player.getName(), player.getEntityId());
+ }
}
}
}
- actualPlayers.add(Minecraft.getMinecraft().thePlayer.getName());
playerEntityMapPositions.clear();
if(usePlayerPositions) {
- for(EntityPlayer player : Minecraft.getMinecraft().theWorld.playerEntities) {
- if(actualPlayers.contains(player.getName())) {
- float roomX = (float)player.posX / (roomSizeBlocks+1);
- float roomY = (float)player.posZ / (roomSizeBlocks+1);
-
- float playerRoomOffsetX = (float) Math.floor(roomX);
- float playerConnOffsetX = (float) Math.floor(roomX);
- float playerRoomOffsetY = (float) Math.floor(roomY);
- float playerConnOffsetY = (float) Math.floor(roomY);
-
- float roomXInBlocks = (float)player.posX % (roomSizeBlocks+1);
- if(roomXInBlocks < 2) { //0,1
- playerConnOffsetX -= 2/5f-roomXInBlocks/5f;
- } else if(roomXInBlocks > roomSizeBlocks-2) { //31,30,29
- playerRoomOffsetX++;
- playerConnOffsetX += (roomXInBlocks - (roomSizeBlocks-2))/5f;
- } else {
- playerRoomOffsetX += (roomXInBlocks-2) / (roomSizeBlocks-4);
- }
+ for(String playerName : actualPlayers) {
+ if(playerIdMap.containsKey(playerName)) {
+ Entity entity = Minecraft.getMinecraft().theWorld.getEntityByID(playerIdMap.get(playerName));
+ if(entity instanceof EntityPlayer) {
+ EntityPlayer player = (EntityPlayer) entity;
+
+ float roomX = (float)player.posX / (roomSizeBlocks+1);
+ float roomY = (float)player.posZ / (roomSizeBlocks+1);
+
+ float playerRoomOffsetX = (float) Math.floor(roomX);
+ float playerConnOffsetX = (float) Math.floor(roomX);
+ float playerRoomOffsetY = (float) Math.floor(roomY);
+ float playerConnOffsetY = (float) Math.floor(roomY);
+
+ float roomXInBlocks = (float)player.posX % (roomSizeBlocks+1);
+ if(roomXInBlocks < 2) { //0,1
+ playerConnOffsetX -= 2/5f-roomXInBlocks/5f;
+ } else if(roomXInBlocks > roomSizeBlocks-2) { //31,30,29
+ playerRoomOffsetX++;
+ playerConnOffsetX += (roomXInBlocks - (roomSizeBlocks-2))/5f;
+ } else {
+ playerRoomOffsetX += (roomXInBlocks-2) / (roomSizeBlocks-4);
+ }
- float roomYInBlocks = (float)player.posZ % (roomSizeBlocks+1);
- if(roomYInBlocks < 2) { //0,1
- playerConnOffsetY -= 2/5f-roomYInBlocks/5f;
- } else if(roomYInBlocks > roomSizeBlocks-2) { //31,30,29
- playerRoomOffsetY++;
- playerConnOffsetY += (roomYInBlocks - (roomSizeBlocks-2))/5f;
- } else {
- playerRoomOffsetY += (roomYInBlocks-2) / (roomSizeBlocks-4);
- }
+ float roomYInBlocks = (float)player.posZ % (roomSizeBlocks+1);
+ if(roomYInBlocks < 2) { //0,1
+ playerConnOffsetY -= 2/5f-roomYInBlocks/5f;
+ } else if(roomYInBlocks > roomSizeBlocks-2) { //31,30,29
+ playerRoomOffsetY++;
+ playerConnOffsetY += (roomYInBlocks - (roomSizeBlocks-2))/5f;
+ } else {
+ playerRoomOffsetY += (roomYInBlocks-2) / (roomSizeBlocks-4);
+ }
- playerRoomOffsetX -= startRoomX/(roomSize+connectorSize);
- playerRoomOffsetY -= startRoomY/(roomSize+connectorSize);
- playerConnOffsetX -= startRoomX/(roomSize+connectorSize);
- playerConnOffsetY -= startRoomY/(roomSize+connectorSize);
+ playerRoomOffsetX -= startRoomX/(roomSize+connectorSize);
+ playerRoomOffsetY -= startRoomY/(roomSize+connectorSize);
+ playerConnOffsetX -= startRoomX/(roomSize+connectorSize);
+ playerConnOffsetY -= startRoomY/(roomSize+connectorSize);
- MapPosition pos = new MapPosition(playerRoomOffsetX, playerConnOffsetX, playerRoomOffsetY, playerConnOffsetY);
- pos.rotation = (player.prevRotationYawHead + (player.rotationYawHead-player.prevRotationYawHead)*partialTicks) % 360;
- if(pos.rotation < 0) pos.rotation += 360;
- playerEntityMapPositions.put(player.getName(), pos);
+ MapPosition pos = new MapPosition(playerRoomOffsetX, playerConnOffsetX, playerRoomOffsetY, playerConnOffsetY);
+ pos.rotation = (player.prevRotationYawHead + (player.rotationYawHead-player.prevRotationYawHead)*partialTicks) % 360;
+ if(pos.rotation < 0) pos.rotation += 360;
+ playerEntityMapPositions.put(player.getName(), pos);
+ }
}
}
}