dynmap support
This commit is contained in:
parent
fc76c147cc
commit
83acb77647
@ -1,3 +1,7 @@
|
||||
Flan 1.7.8
|
||||
================
|
||||
- Add dynmap support for claims
|
||||
|
||||
Flan 1.7.7
|
||||
================
|
||||
- Prevent moss/grassblock/nylium bonemealing if too close to a claim without permission
|
||||
|
@ -6,12 +6,21 @@ configurations {
|
||||
shadowCommon // Don't use shadow from the shadow plugin because we don't want IDEA to index this.
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
name = "CurseMaven"
|
||||
url "https://www.cursemaven.com"
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// We depend on fabric loader here to use the fabric @Environment annotations and get the mixin dependencies
|
||||
// Do NOT use other classes from fabric loader
|
||||
modImplementation "net.fabricmc:fabric-loader:${rootProject.loader_version}"
|
||||
implementation group: 'org.yaml', name: 'snakeyaml', version: '1.25'
|
||||
shadowCommon group: 'org.yaml', name: 'snakeyaml', version: '1.25'
|
||||
|
||||
modImplementation dynmap_fabric
|
||||
}
|
||||
|
||||
architectury {
|
||||
|
@ -14,6 +14,7 @@ import io.github.flemmli97.flan.config.Config;
|
||||
import io.github.flemmli97.flan.config.ConfigHandler;
|
||||
import io.github.flemmli97.flan.platform.ClaimPermissionCheck;
|
||||
import io.github.flemmli97.flan.platform.CrossPlatformStuff;
|
||||
import io.github.flemmli97.flan.platform.integration.dynmap.DynmapCalls;
|
||||
import io.github.flemmli97.flan.player.LogoutTracker;
|
||||
import io.github.flemmli97.flan.player.PlayerClaimData;
|
||||
import net.minecraft.ChatFormatting;
|
||||
@ -164,6 +165,7 @@ public class Claim implements IPermissionContainer {
|
||||
public void setClaimName(String name) {
|
||||
this.claimName = name;
|
||||
this.setDirty(true);
|
||||
DynmapCalls.changeClaimName(this);
|
||||
}
|
||||
|
||||
public UUID getOwner() {
|
||||
|
@ -14,6 +14,7 @@ import io.github.flemmli97.flan.api.data.IPlayerData;
|
||||
import io.github.flemmli97.flan.api.permission.ClaimPermission;
|
||||
import io.github.flemmli97.flan.api.permission.PermissionRegistry;
|
||||
import io.github.flemmli97.flan.config.ConfigHandler;
|
||||
import io.github.flemmli97.flan.platform.integration.dynmap.DynmapCalls;
|
||||
import io.github.flemmli97.flan.platform.integration.permissions.PermissionNodeHandler;
|
||||
import io.github.flemmli97.flan.player.EnumDisplayType;
|
||||
import io.github.flemmli97.flan.player.EnumEditMode;
|
||||
@ -154,6 +155,7 @@ public class ClaimStorage implements IPermissionStorage {
|
||||
claim.remove();
|
||||
claim.getOwnerPlayer().ifPresent(o -> PlayerClaimData.get(o).updateScoreboard());
|
||||
}
|
||||
DynmapCalls.removeMarker(claim);
|
||||
return this.claimUUIDMap.remove(claim.getClaimID()) != null;
|
||||
}
|
||||
|
||||
@ -275,6 +277,7 @@ public class ClaimStorage implements IPermissionStorage {
|
||||
old.add(claim);
|
||||
return old;
|
||||
});
|
||||
DynmapCalls.addClaimMarker(claim);
|
||||
}
|
||||
|
||||
public boolean transferOwner(Claim claim, ServerPlayer player, UUID newOwner) {
|
||||
@ -292,6 +295,7 @@ public class ClaimStorage implements IPermissionStorage {
|
||||
return old;
|
||||
});
|
||||
this.dirty.add(claim.getOwner());
|
||||
DynmapCalls.changeClaimOwner(claim);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,28 @@
|
||||
package io.github.flemmli97.flan.platform.integration.dynmap;
|
||||
|
||||
import io.github.flemmli97.flan.claim.Claim;
|
||||
|
||||
public class DynmapCalls {
|
||||
|
||||
public static boolean dynmapLoaded;
|
||||
|
||||
public static void addClaimMarker(Claim claim) {
|
||||
if (dynmapLoaded)
|
||||
DynmapIntegration.addClaimMarker(claim);
|
||||
}
|
||||
|
||||
public static void removeMarker(Claim claim) {
|
||||
if (dynmapLoaded)
|
||||
DynmapIntegration.removeMarker(claim);
|
||||
}
|
||||
|
||||
public static void changeClaimName(Claim claim) {
|
||||
if (dynmapLoaded)
|
||||
DynmapIntegration.changeClaimName(claim);
|
||||
}
|
||||
|
||||
public static void changeClaimOwner(Claim claim) {
|
||||
if (dynmapLoaded)
|
||||
DynmapIntegration.changeClaimOwner(claim);
|
||||
}
|
||||
}
|
@ -0,0 +1,93 @@
|
||||
package io.github.flemmli97.flan.platform.integration.dynmap;
|
||||
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import io.github.flemmli97.flan.claim.Claim;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.world.level.Level;
|
||||
import org.dynmap.DynmapCommonAPI;
|
||||
import org.dynmap.DynmapCommonAPIListener;
|
||||
import org.dynmap.markers.AreaMarker;
|
||||
import org.dynmap.markers.MarkerAPI;
|
||||
import org.dynmap.markers.MarkerSet;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class DynmapIntegration {
|
||||
|
||||
private static MarkerSet markerSet;
|
||||
private static final String markerID = "flan.claims", markerLabel = "Claims";
|
||||
|
||||
public static void reg() {
|
||||
DynmapCommonAPIListener.register(new DynmapCommonAPIListener() {
|
||||
@Override
|
||||
public void apiEnabled(DynmapCommonAPI dynmapCommonAPI) {
|
||||
MarkerAPI markerAPI = dynmapCommonAPI.getMarkerAPI();
|
||||
markerSet = markerAPI.createMarkerSet(markerID, markerLabel, dynmapCommonAPI.getMarkerAPI().getMarkerIcons(), false);
|
||||
DynmapCalls.dynmapLoaded = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
static void addClaimMarker(Claim claim) {
|
||||
if (markerSet == null)
|
||||
return;
|
||||
int[] dim = claim.getDimensions();
|
||||
AreaMarker marker = markerSet.createAreaMarker(claim.getClaimID().toString(), claimLabel(claim), true, getWorldName(claim.getWorld()), new double[]{dim[0], dim[1]}, new double[]{dim[2], dim[3]}, false);
|
||||
marker.setLineStyle(3, 0.8, lineColor(claim.isAdminClaim()));
|
||||
marker.setFillStyle(0.2, fillColor(claim.isAdminClaim()));
|
||||
}
|
||||
|
||||
static void removeMarker(Claim claim) {
|
||||
if (markerSet == null)
|
||||
return;
|
||||
AreaMarker marker = markerSet.findAreaMarker(claim.getClaimID().toString());
|
||||
if (marker != null)
|
||||
marker.deleteMarker();
|
||||
}
|
||||
|
||||
static void changeClaimName(Claim claim) {
|
||||
if (markerSet == null)
|
||||
return;
|
||||
markerSet.findAreaMarker(claim.getClaimID().toString())
|
||||
.setLabel(claimLabel(claim));
|
||||
}
|
||||
|
||||
static void changeClaimOwner(Claim claim) {
|
||||
if (markerSet == null)
|
||||
return;
|
||||
if (claim.getClaimName() == null || claim.getClaimName().isEmpty())
|
||||
markerSet.findAreaMarker(claim.getClaimID().toString())
|
||||
.setLabel(claimLabel(claim));
|
||||
}
|
||||
|
||||
private static String getWorldName(Level level) {
|
||||
ResourceKey<Level> key = level.dimension();
|
||||
if (key == Level.OVERWORLD) {
|
||||
return level.getServer().getWorldData().getLevelName();
|
||||
} else if (key == Level.END) {
|
||||
return "DIM1";
|
||||
} else if (key == Level.NETHER) {
|
||||
return "DIM-1";
|
||||
}
|
||||
return key.location().getNamespace() + "_" + key.location().getPath();
|
||||
}
|
||||
|
||||
private static int lineColor(boolean admin) {
|
||||
return admin ? 0xb50909 : 0xffa200;
|
||||
}
|
||||
|
||||
private static int fillColor(boolean admin) {
|
||||
return admin ? 0xff0000 : 0xe0e01d;
|
||||
}
|
||||
|
||||
private static String claimLabel(Claim claim) {
|
||||
String name = claim.getClaimName();
|
||||
if (name == null || name.isEmpty()) {
|
||||
if (claim.isAdminClaim())
|
||||
return "Admin Claim";
|
||||
Optional<GameProfile> prof = claim.getWorld().getServer().getProfileCache().get(claim.getOwner());
|
||||
return prof.map(GameProfile::getName).orElse("UNKOWN") + "'s Claim";
|
||||
}
|
||||
return name;
|
||||
}
|
||||
}
|
@ -9,6 +9,7 @@ import io.github.flemmli97.flan.event.ItemInteractEvents;
|
||||
import io.github.flemmli97.flan.event.PlayerEvents;
|
||||
import io.github.flemmli97.flan.event.WorldEvents;
|
||||
import io.github.flemmli97.flan.fabric.platform.integration.playerability.PlayerAbilityEvents;
|
||||
import io.github.flemmli97.flan.platform.integration.dynmap.DynmapIntegration;
|
||||
import io.github.flemmli97.flan.player.PlayerDataHandler;
|
||||
import io.github.flemmli97.flan.scoreboard.ClaimCriterias;
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
@ -60,6 +61,8 @@ public class FlanFabric implements ModInitializer {
|
||||
Flan.octoEconomy = FabricLoader.getInstance().isModLoaded("octo-economy-api");
|
||||
if (Flan.playerAbilityLib)
|
||||
PlayerAbilityEvents.register();
|
||||
if (FabricLoader.getInstance().isModLoaded("dynmap"))
|
||||
DynmapIntegration.reg();
|
||||
ClaimCriterias.init();
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import io.github.flemmli97.flan.forge.forgeevent.EntityInteractEventsForge;
|
||||
import io.github.flemmli97.flan.forge.forgeevent.ItemInteractEventsForge;
|
||||
import io.github.flemmli97.flan.forge.forgeevent.ServerEvents;
|
||||
import io.github.flemmli97.flan.forge.forgeevent.WorldEventsForge;
|
||||
import io.github.flemmli97.flan.platform.integration.dynmap.DynmapIntegration;
|
||||
import io.github.flemmli97.flan.scoreboard.ClaimCriterias;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.eventbus.api.EventPriority;
|
||||
@ -50,6 +51,9 @@ public class FlanForge {
|
||||
forge.addListener(ServerEvents::disconnect);
|
||||
forge.addListener(ServerEvents::serverTick);
|
||||
|
||||
if (ModList.get().isLoaded("dynmap"))
|
||||
DynmapIntegration.reg();
|
||||
|
||||
ClaimCriterias.init();
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ forge_version=1.18.2-40.0.3
|
||||
loader_version=0.13.2
|
||||
|
||||
# Mod Properties
|
||||
mod_version=1.7.7
|
||||
mod_version=1.7.8
|
||||
maven_group=io.github.flemmli97
|
||||
archives_base_name=flan
|
||||
|
||||
@ -24,6 +24,7 @@ fabric_permissions_api=0.1-SNAPSHOT
|
||||
player_ability_lib=1.2.2
|
||||
ftb_ranks=1801.1.6-build.20
|
||||
dicemcmm=curse.maven:dicemcmoney-406972:3548047
|
||||
dynmap_fabric=curse.maven:dynmap-59433:3724084
|
||||
|
||||
# Curse properties
|
||||
curse_versions=1.18.2, Java 17
|
||||
|
Loading…
Reference in New Issue
Block a user