Skip to content

Commit

Permalink
Merge branch 'master' into backup-only-claimed-chunks
Browse files Browse the repository at this point in the history
  • Loading branch information
Dream-Master authored Sep 6, 2024
2 parents 8377ee1 + 2e2a13e commit 6bc4060
Show file tree
Hide file tree
Showing 11 changed files with 168 additions and 79 deletions.
9 changes: 0 additions & 9 deletions src/main/java/serverutils/data/ClaimedChunks.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import serverutils.ServerUtilitiesNotifications;
import serverutils.ServerUtilitiesPermissions;
import serverutils.events.chunks.ChunkModifiedEvent;
import serverutils.lib.OtherMods;
import serverutils.lib.data.ForgePlayer;
import serverutils.lib.data.ForgeTeam;
import serverutils.lib.data.Universe;
Expand All @@ -30,7 +29,6 @@
import serverutils.lib.math.Ticks;
import serverutils.lib.util.permission.PermissionAPI;
import serverutils.net.MessageClaimedChunksUpdate;
import serverutils.net.MessageJourneyMapRemove;

public class ClaimedChunks {

Expand Down Expand Up @@ -153,13 +151,6 @@ public void removeChunk(ChunkDimPos pos) {
prevChunk.setInvalid();
markDirty();
}
if (OtherMods.isNavigatorLoaded()) {
for (EntityPlayerMP player : instance.universe.server.getConfigurationManager().playerEntityList) {
if (PermissionAPI.hasPermission(player, ServerUtilitiesPermissions.CLAIMS_JOURNEYMAP)) {
new MessageJourneyMapRemove(pos).sendTo(player);
}
}
}
}

public void addChunk(ClaimedChunk chunk) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package serverutils.integration.navigator;

import java.util.Collection;
import java.util.concurrent.TimeUnit;

import javax.annotation.Nullable;
Expand All @@ -9,15 +10,19 @@
import com.gtnewhorizons.navigator.api.model.layers.LayerRenderer;
import com.gtnewhorizons.navigator.api.model.layers.UniversalInteractableRenderer;
import com.gtnewhorizons.navigator.api.model.locations.ILocationProvider;
import com.gtnewhorizons.navigator.api.model.locations.IWaypointAndLocationProvider;
import com.gtnewhorizons.navigator.api.model.waypoints.Waypoint;

import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
import it.unimi.dsi.fastutil.longs.LongSet;
import serverutils.client.gui.ClientClaimedChunks;
import serverutils.net.MessageJourneyMapRequest;
import serverutils.net.MessageNavigatorRequest;
import serverutils.net.MessageNavigatorValidateKnown;

public class ClaimsLayerManager extends InteractableLayerManager {

public static final ClaimsLayerManager INSTANCE = new ClaimsLayerManager();
private long lastRequest = 0;
private long lastRequest, lastValidateRequest;

public ClaimsLayerManager() {
super(ClaimsButtonManager.INSTANCE);
Expand Down Expand Up @@ -53,9 +58,24 @@ protected ILocationProvider generateLocation(int chunkX, int chunkZ, int dim) {

@Override
public void onUpdatePre(int minX, int maxX, int minZ, int maxZ) {
if (System.currentTimeMillis() - lastRequest >= TimeUnit.SECONDS.toMillis(2)) {
lastRequest = System.currentTimeMillis();
new MessageJourneyMapRequest(minX, maxX, minZ, maxZ).sendToServer();
long now = System.currentTimeMillis();
if (now - lastRequest >= TimeUnit.SECONDS.toMillis(2)) {
lastRequest = now;
new MessageNavigatorRequest(minX, maxX, minZ, maxZ).sendToServer();
}
}

@Override
public void onUpdatePost(int minX, int maxX, int minZ, int maxZ) {
long now = System.currentTimeMillis();
if (now - lastValidateRequest >= TimeUnit.SECONDS.toMillis(10)) {
lastValidateRequest = now;
Collection<IWaypointAndLocationProvider> visibleLocations = getVisibleLocations();
if (visibleLocations.isEmpty()) return;

LongSet positions = new LongOpenHashSet();
visibleLocations.forEach(location -> positions.add(location.toLong()));
new MessageNavigatorValidateKnown(positions).sendToServer();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import serverutils.client.gui.ClientClaimedChunks;
import serverutils.lib.EnumTeamColor;
import serverutils.net.MessageClaimedChunksModify;
import serverutils.net.MessageJourneyMapRequest;
import serverutils.net.MessageNavigatorRequest;

public class ClaimsLocation implements IWaypointAndLocationProvider {

Expand Down Expand Up @@ -103,7 +103,7 @@ public void toggleLoaded() {
int chunkZ = getChunkZ();
Collection<ChunkCoordIntPair> chunks = Collections.singleton(new ChunkCoordIntPair(chunkX, chunkZ));
new MessageClaimedChunksModify(chunkX, chunkZ, selectionMode, chunks).sendToServer();
new MessageJourneyMapRequest(chunkX, chunkX, chunkZ, chunkZ).sendToServer();
new MessageNavigatorRequest(chunkX, chunkX, chunkZ, chunkZ).sendToServer();
chunkData.setLoaded(!isLoaded());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
import serverutils.lib.math.ChunkDimPos;
import serverutils.net.MessageClaimedChunksModify;
import serverutils.net.MessageClaimedChunksUpdate;
import serverutils.net.MessageJourneyMapRequest;
import serverutils.net.MessageJourneyMapUpdate;
import serverutils.net.MessageNavigatorRequest;
import serverutils.net.MessageNavigatorUpdate;

public class NavigatorIntegration {

Expand All @@ -29,7 +29,7 @@ public static void init() {
NavigatorApi.registerLayerManager(ClaimsLayerManager.INSTANCE);
}

public static void updateMap(MessageJourneyMapUpdate message) {
public static void updateMap(MessageNavigatorUpdate message) {
for (ClientClaimedChunks.Team team : message.teams.values()) {
for (Object2ObjectMap.Entry<ChunkDimPos, ClientClaimedChunks.ChunkData> pos : team.chunkPos
.object2ObjectEntrySet()) {
Expand Down Expand Up @@ -61,7 +61,8 @@ public static void addToOwnTeam(int chunkX, int chunkZ) {
ClaimsLayerManager.INSTANCE.forceRefresh();
}

public static void removeChunk(int chunkX, int chunkZ, int dim) {
public static void removeChunk(int chunkX, int chunkZ) {
int dim = Minecraft.getMinecraft().thePlayer.dimension;
ClaimsLayerManager.INSTANCE.removeLocation(chunkX, chunkZ);
CLAIMS.remove(mutablePos.set(chunkX, chunkZ, dim));
}
Expand All @@ -74,7 +75,7 @@ public static void unclaimChunk(ClaimsLocation location) {

Collection<ChunkCoordIntPair> chunks = Collections.singleton(new ChunkCoordIntPair(chunkX, chunkZ));
new MessageClaimedChunksModify(chunkX, chunkZ, selectionMode, chunks).sendToServer();
removeChunk(location.getChunkX(), location.getChunkZ(), location.getDimensionId());
removeChunk(location.getChunkX(), location.getChunkZ());
}

public static void onChunkDataUpdate(MessageClaimedChunksUpdate message) {
Expand All @@ -91,7 +92,7 @@ public static boolean claimChunk(ClickPos pos) {
new MessageClaimedChunksModify(chunkX, chunkZ, selectionMode, chunk).sendToServer();

if (OWNTEAM == null) {
new MessageJourneyMapRequest(chunkX, chunkX, chunkZ, chunkZ).sendToServer();
new MessageNavigatorRequest(chunkX, chunkX, chunkZ, chunkZ).sendToServer();
} else {
addToOwnTeam(chunkX, chunkZ);
}
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/serverutils/lib/io/DataIn.java
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,10 @@ public int getPosition() {
return byteBuf.readerIndex();
}

public boolean isReadable() {
return byteBuf.isReadable();
}

public boolean readBoolean() {
return byteBuf.readBoolean();
}
Expand Down
44 changes: 0 additions & 44 deletions src/main/java/serverutils/net/MessageJourneyMapRemove.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@
import serverutils.lib.net.NetworkWrapper;
import serverutils.lib.util.permission.PermissionAPI;

public class MessageJourneyMapRequest extends MessageToServer {
public class MessageNavigatorRequest extends MessageToServer {

private int minX, maxX, minZ, maxZ;

public MessageJourneyMapRequest() {}
public MessageNavigatorRequest() {}

public MessageJourneyMapRequest(int minX, int maxX, int minZ, int maxZ) {
public MessageNavigatorRequest(int minX, int maxX, int minZ, int maxZ) {
this.minX = minX;
this.maxX = maxX;
this.minZ = minZ;
Expand Down Expand Up @@ -48,7 +48,7 @@ public void readData(DataIn data) {
public void onMessage(EntityPlayerMP player) {
if (ClaimedChunks.isActive()
&& PermissionAPI.hasPermission(player, ServerUtilitiesPermissions.CLAIMS_JOURNEYMAP)) {
new MessageJourneyMapUpdate(minX, maxX, minZ, maxZ, player).sendTo(player);
new MessageNavigatorUpdate(minX, maxX, minZ, maxZ, player).sendTo(player);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@
import serverutils.lib.net.NetworkWrapper;
import serverutils.lib.util.permission.PermissionAPI;

public class MessageJourneyMapUpdate extends MessageToClient {
public class MessageNavigatorUpdate extends MessageToClient {

public Short2ObjectMap<ClientClaimedChunks.Team> teams;

public MessageJourneyMapUpdate() {}
public MessageNavigatorUpdate() {}

public MessageJourneyMapUpdate(int minX, int maxX, int minZ, int maxZ, EntityPlayer player) {
public MessageNavigatorUpdate(int minX, int maxX, int minZ, int maxZ, EntityPlayer player) {
ForgePlayer p = Universe.get().getPlayer(player);
boolean canSeeChunkInfo = PermissionAPI.hasPermission(player, ServerUtilitiesPermissions.CLAIMS_OTHER_SEE_INFO);
boolean canSeeOtherJourneymap = PermissionAPI
Expand Down
54 changes: 54 additions & 0 deletions src/main/java/serverutils/net/MessageNavigatorUpdateKnown.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package serverutils.net;

import javax.annotation.Nonnull;

import com.gtnewhorizon.gtnhlib.util.CoordinatePacker;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
import it.unimi.dsi.fastutil.longs.LongSet;
import serverutils.integration.navigator.NavigatorIntegration;
import serverutils.lib.io.DataIn;
import serverutils.lib.io.DataOut;
import serverutils.lib.net.MessageToClient;
import serverutils.lib.net.NetworkWrapper;

public class MessageNavigatorUpdateKnown extends MessageToClient {

private LongSet toRemove;

public MessageNavigatorUpdateKnown() {}

public MessageNavigatorUpdateKnown(@Nonnull LongSet toRemove) {
this.toRemove = toRemove;
}

@Override
public NetworkWrapper getWrapper() {
return ServerUtilitiesNetHandler.CLAIMS;
}

@Override
public void writeData(DataOut data) {
for (long pos : toRemove) {
data.writeLong(pos);
}
}

@Override
public void readData(DataIn data) {
toRemove = new LongOpenHashSet();
while (data.isReadable()) {
toRemove.add(data.readLong());
}
}

@Override
@SideOnly(Side.CLIENT)
public void onMessage() {
for (long pos : toRemove) {
NavigatorIntegration.removeChunk(CoordinatePacker.unpackX(pos), CoordinatePacker.unpackZ(pos));
}
}
}
65 changes: 65 additions & 0 deletions src/main/java/serverutils/net/MessageNavigatorValidateKnown.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package serverutils.net;

import net.minecraft.entity.player.EntityPlayerMP;

import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
import it.unimi.dsi.fastutil.longs.LongSet;
import serverutils.ServerUtilitiesPermissions;
import serverutils.data.ClaimedChunk;
import serverutils.data.ClaimedChunks;
import serverutils.lib.io.DataIn;
import serverutils.lib.io.DataOut;
import serverutils.lib.math.ChunkDimPos;
import serverutils.lib.net.MessageToServer;
import serverutils.lib.net.NetworkWrapper;
import serverutils.lib.util.permission.PermissionAPI;

public class MessageNavigatorValidateKnown extends MessageToServer {

private LongSet knownPositions;

public MessageNavigatorValidateKnown() {}

public MessageNavigatorValidateKnown(LongSet knownPositions) {
this.knownPositions = knownPositions;
}

@Override
public NetworkWrapper getWrapper() {
return ServerUtilitiesNetHandler.CLAIMS;
}

@Override
public void writeData(DataOut data) {
for (long pos : knownPositions) {
data.writeLong(pos);
}
}

@Override
public void readData(DataIn data) {
knownPositions = new LongOpenHashSet();
while (data.isReadable()) {
knownPositions.add(data.readLong());
}
}

@Override
public void onMessage(EntityPlayerMP player) {
if (knownPositions.isEmpty()) return;
if (ClaimedChunks.isActive()
&& PermissionAPI.hasPermission(player, ServerUtilitiesPermissions.CLAIMS_JOURNEYMAP)) {
LongSet toRemove = new LongOpenHashSet();
ChunkDimPos mut = new ChunkDimPos();
for (long pos : knownPositions) {
ClaimedChunk chunk = ClaimedChunks.instance.getChunk(mut.set(pos, player.dimension));

if (chunk == null) {
toRemove.add(pos);
}
}
if (toRemove.isEmpty()) return;
new MessageNavigatorUpdateKnown(toRemove).sendTo(player);
}
}
}
10 changes: 4 additions & 6 deletions src/main/java/serverutils/net/ServerUtilitiesNetHandler.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package serverutils.net;

import serverutils.lib.OtherMods;
import serverutils.lib.net.NetworkWrapper;

public class ServerUtilitiesNetHandler {
Expand All @@ -27,11 +26,10 @@ public static void init() {
CLAIMS.register(new MessageClaimedChunksRequest());
CLAIMS.register(new MessageClaimedChunksUpdate());
CLAIMS.register(new MessageClaimedChunksModify());
if (OtherMods.isNavigatorLoaded()) {
CLAIMS.register(new MessageJourneyMapUpdate());
CLAIMS.register(new MessageJourneyMapRequest());
CLAIMS.register(new MessageJourneyMapRemove());
}
CLAIMS.register(new MessageNavigatorUpdate());
CLAIMS.register(new MessageNavigatorRequest());
CLAIMS.register(new MessageNavigatorUpdateKnown());
CLAIMS.register(new MessageNavigatorValidateKnown());

EDIT_CONFIG.register(new MessageEditConfig());
EDIT_CONFIG.register(new MessageEditConfigResponse());
Expand Down

0 comments on commit 6bc4060

Please sign in to comment.