Skip to content

Commit

Permalink
Adds Worldguard NPC properties for Wander Provider (#419)
Browse files Browse the repository at this point in the history
* Adds Worldguard NPC properties for Wander Provider

* Switch modern tag format

* Props -> Extension
  • Loading branch information
j4c3 committed Oct 20, 2023
1 parent c475a81 commit 394ea4c
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.denizenscript.depenizen.bukkit.objects.worldguard.WorldGuardRegionTag;
import com.denizenscript.depenizen.bukkit.properties.worldguard.WorldGuardCuboidProperties;
import com.denizenscript.depenizen.bukkit.properties.worldguard.WorldGuardLocationProperties;
import com.denizenscript.depenizen.bukkit.properties.worldguard.WorldGuardNPCExtensions;
import com.denizenscript.depenizen.bukkit.properties.worldguard.WorldGuardPlayerProperties;
import com.denizenscript.depenizen.bukkit.properties.worldguard.WorldGuardWorldProperties;
import com.sk89q.worldedit.bukkit.BukkitAdapter;
Expand All @@ -32,6 +33,7 @@ public void init() {
PropertyParser.registerProperty(WorldGuardPlayerProperties.class, PlayerTag.class);
PropertyParser.registerProperty(WorldGuardCuboidProperties.class, CuboidTag.class);
PropertyParser.registerProperty(WorldGuardWorldProperties.class, WorldTag.class);
WorldGuardNPCExtensions.register();
DenizenCore.commandRegistry.registerCommand(RegionCommand.class);

// <--[tag]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.denizenscript.depenizen.bukkit.properties.worldguard;

import com.denizenscript.denizen.objects.NPCTag;
import com.denizenscript.denizencore.objects.core.ElementTag;
import com.denizenscript.depenizen.bukkit.objects.worldguard.WorldGuardRegionTag;
import net.citizensnpcs.trait.waypoint.WanderWaypointProvider;
import net.citizensnpcs.trait.waypoint.Waypoints;
import com.sk89q.worldguard.protection.regions.ProtectedRegion;

public class WorldGuardNPCExtensions {

public static void register() {

// <--[tag]
// @attribute <NPCTag.worldguard_wanderregion>
// @returns WorldGuardRegionTag
// @plugin Depenizen, WorldGuard
// @description
// Returns the worldguardRegion for the NPC's wander Waypoint Provider, if that provider is in use.
// -->
NPCTag.tagProcessor.registerTag(WorldGuardRegionTag.class, "worldguard_wanderregion", (attribute, object) -> {
Waypoints waypoints = object.npc.getOrAddTrait(Waypoints.class);
if (waypoints.getCurrentProvider() instanceof WanderWaypointProvider wanderWaypointProvider) {
Object worldGuardRegion = wanderWaypointProvider.getWorldGuardRegion();
org.bukkit.World world = object.getWorld();
if ((worldGuardRegion != null) && (world != null)) {
return new WorldGuardRegionTag((ProtectedRegion) worldGuardRegion, world);
}
}
return null;
});

// <--[mechanism]
// @object NPCTag
// @name wander_worldguardregion
// @input ElementTag
// @plugin Depenizen, WorldGuard
// @description
// Sets the worldguardRegion for an NPC's wander Waypoints Provider, if that provider is in use.
// @tags
// <NPCTag.wander_worldguardregion>
// -->
NPCTag.tagProcessor.registerMechanism("wander_worldguardregion", false, ElementTag.class, (object, mechanism, input) -> {
Waypoints waypoints = object.npc.getOrAddTrait(Waypoints.class);
if (waypoints.getCurrentProvider() instanceof WanderWaypointProvider wanderWaypointProvider) {
wanderWaypointProvider.setWorldGuardRegion(input.asString());
}
});
}
}

0 comments on commit 394ea4c

Please sign in to comment.