Create project

master
落雨楓 5 months ago
commit ae6defc7e7

19
.gitignore vendored

@ -0,0 +1,19 @@
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
# https://github.com/takari/maven-wrapper#usage-without-binary-jar
.mvn/wrapper/maven-wrapper.jar
# Eclipse m2e generated files
# Eclipse Core
.project
# JDT-specific (Eclipse Java Development Tools)
.classpath
.idea

@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.isekai.mcp</groupId>
<artifactId>isekai-world-guard-flags</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>15</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spigot.version>1.18-R0.1-SNAPSHOT</spigot.version>
<worldGuard.version>7.0.6</worldGuard.version>
</properties>
<build>
<finalName>isekai-world-guard-flags</finalName>
<resources>
<resource>
<directory>src/main/resources/</directory>
</resource>
</resources>
<plugins>
<!-- Clean the target folder content -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<!-- Include resource files -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.0</version>
</plugin>
<!-- Maven Java compiler -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- Generate a jar containing classes and resources -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>sk89q-repo</id>
<url>https://maven.enginehub.org/repo/</url>
</repository>
<repository>
<id>dmulloy2-repo</id>
<url>https://repo.dmulloy2.net/nexus/repository/public/</url>
</repository>
<repository>
<id>CodeMC</id>
<url>https://repo.codemc.org/repository/maven-public</url>
</repository>
</repositories>
<dependencies>
<!-- Spigot API, http://www.spigotmc.org/ or http://bukkit.org/ -->
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>${spigot.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sk89q.worldguard</groupId>
<artifactId>worldguard-core</artifactId>
<version>${worldGuard.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.sk89q.worldguard</groupId>
<artifactId>worldguard-bukkit</artifactId>
<version>${worldGuard.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

@ -0,0 +1,27 @@
package cn.isekai.mcp.worldGuardFlags;
import java.util.logging.Logger;
public class PluginLogger {
private static Logger logger;
private PluginLogger() {
// Class only has static methods and should not be instantiated
}
public static void setLogger(Logger logger) {
PluginLogger.logger = logger;
}
public static void info(String message) {
logger.info(message);
}
public static void warning(String message) {
logger.warning(message);
}
public static void severe(String message) {
logger.severe(message);
}
}

@ -0,0 +1,56 @@
package cn.isekai.mcp.worldGuardFlags;
import cn.isekai.mcp.worldGuardFlags.flags.Flags;
import cn.isekai.mcp.worldGuardFlags.handlers.ExpFlag;
import com.sk89q.worldguard.WorldGuard;
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
import com.sk89q.worldguard.protection.regions.RegionContainer;
import com.sk89q.worldguard.session.SessionManager;
import lombok.Getter;
import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
public class PluginMain extends JavaPlugin {
@Getter
private WorldGuardPlugin worldGuardPlugin;
@Getter
private WorldGuard worldGuard;
@Getter
private RegionContainer regionContainer;
@Getter
private SessionManager sessionManager;
@Override
public void onLoad() {
PluginLogger.setLogger(getLogger());
final PluginManager pluginManager = getServer().getPluginManager();
this.worldGuardPlugin = (WorldGuardPlugin) pluginManager.getPlugin("WorldGuard");
this.worldGuard = WorldGuard.getInstance();
try {
FlagRegistry flagRegistry = this.worldGuard.getFlagRegistry();
flagRegistry.register(Flags.EXP_AMOUNT);
flagRegistry.register(Flags.EXP_DELAY);
} catch (Exception e) {
this.getServer().getPluginManager().disablePlugin(this);
throw new RuntimeException(e instanceof IllegalStateException ?
"WorldGuard prevented flag registration. Did you reload the plugin? This is not supported!" :
"Flag registration failed!", e);
}
}
@Override
public void onEnable() {
this.regionContainer = this.worldGuard.getPlatform().getRegionContainer();
this.sessionManager = this.worldGuard.getPlatform().getSessionManager();
this.sessionManager.registerHandler(ExpFlag.FACTORY, null);
}
}

@ -0,0 +1,8 @@
package cn.isekai.mcp.worldGuardFlags.flags;
import com.sk89q.worldguard.protection.flags.IntegerFlag;
public final class Flags {
public final static IntegerFlag EXP_AMOUNT = new IntegerFlag("exp-amount");
public final static IntegerFlag EXP_DELAY = new IntegerFlag("exp-delay");
}

@ -0,0 +1,73 @@
/*
* WorldGuard, a suite of tools for Minecraft
* Copyright (C) sk89q <http://www.sk89q.com>
* Copyright (C) WorldGuard team and contributors
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by the
* Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package cn.isekai.mcp.worldGuardFlags.handlers;
import cn.isekai.mcp.worldGuardFlags.flags.Flags;
import com.sk89q.worldedit.bukkit.BukkitPlayer;
import com.sk89q.worldguard.LocalPlayer;
import com.sk89q.worldguard.protection.ApplicableRegionSet;
import com.sk89q.worldguard.session.Session;
import com.sk89q.worldguard.session.handler.Handler;
import org.bukkit.Bukkit;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import java.util.UUID;
public class ExpFlag extends Handler {
public static final Factory FACTORY = new Factory();
public static class Factory extends Handler.Factory<ExpFlag> {
@Override
public ExpFlag create(Session session) {
return new ExpFlag(session);
}
}
private long lastGiveExp = 0;
public ExpFlag(Session session) {
super(session);
}
@Override
public void tick(LocalPlayer player, ApplicableRegionSet set) {
if (player.getHealth() <= 0) {
return;
}
long now = System.currentTimeMillis();
Integer expAmount = set.queryValue(player, Flags.EXP_AMOUNT);
Integer expDelay = set.queryValue(player, Flags.EXP_DELAY);
if (expAmount == null || expDelay == null) {
return;
}
if (now - lastGiveExp > expDelay * 1000) {
Player bukkitPlayer = ((BukkitPlayer) player).getPlayer();
if (bukkitPlayer != null) {
bukkitPlayer.giveExp(expAmount);
}
lastGiveExp = now;
}
}
}

@ -0,0 +1,6 @@
name: IsekaiWorldGuardFlags
main: cn.isekai.mcp.worldGuardFlags.PluginMain
api-version: 1.18
version: 1.0
depend:
- WorldGuard
Loading…
Cancel
Save