mirror of
https://github.com/ryderbelserion/SimpleFlags.git
synced 2026-11-06 01:42:32 -05:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dea24dd805 |
No files matched your search
+4
-2
@@ -13,17 +13,19 @@ rootProject.description = "A plugin that adds simple worldguard flags."
|
||||
repositories {
|
||||
maven("https://repo.papermc.io/repository/maven-public")
|
||||
|
||||
maven("https://repo.crazycrew.us/libraries")
|
||||
maven("https://repo.crazycrew.us/releases")
|
||||
|
||||
maven("https://maven.enginehub.org/repo")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly(libs.vital.paper)
|
||||
compileOnly(libs.fusion.paper)
|
||||
|
||||
compileOnly(libs.worldguard)
|
||||
|
||||
compileOnly(libs.paper)
|
||||
|
||||
compileOnly(libs.jalu)
|
||||
}
|
||||
|
||||
java {
|
||||
|
||||
@@ -6,14 +6,16 @@ shadow = { id = "com.gradleup.shadow", version.ref = "shadow" }
|
||||
|
||||
[versions]
|
||||
# Paper API
|
||||
paper = "1.21.1-R0.1-SNAPSHOT"
|
||||
paper = "1.21.4-R0.1-SNAPSHOT"
|
||||
velocity = "3.3.0-SNAPSHOT"
|
||||
minecraft = "1.21.1"
|
||||
minecraft = "1.21.4"
|
||||
brigadier = "1.3.10"
|
||||
|
||||
# Vital API
|
||||
vital-common = "0.0.6"
|
||||
vital-paper = "1.0.6"
|
||||
# Fusion API
|
||||
fusion = "0.18.1"
|
||||
|
||||
# Other API
|
||||
jalu = "1.4.3"
|
||||
|
||||
# Gradle Plugins
|
||||
runPaper = "2.3.0"
|
||||
@@ -33,6 +35,9 @@ paper = { module = "io.papermc.paper:paper-api", version.ref = "paper" }
|
||||
|
||||
worldguard = { group = "com.sk89q.worldguard", name = "worldguard-bukkit", version = "7.1.0-SNAPSHOT" }
|
||||
|
||||
# Vital API
|
||||
vital-common = { module = "com.ryderbelserion.vital:common", version.ref = "vital-common" }
|
||||
vital-paper = { module = "com.ryderbelserion.vital:paper", version.ref = "vital-paper" }
|
||||
# Fusion API
|
||||
fusion-paper = { module = "com.ryderbelserion.fusion:fusion-paper", version.ref = "fusion" }
|
||||
fusion-core = { module = "com.ryderbelserion.fusion:fusion-core", version.ref = "fusion" }
|
||||
|
||||
# Other API
|
||||
jalu = { module = "ch.jalu:configme", version.ref = "jalu" }
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.ryderbelserion.simpleflags;
|
||||
|
||||
import com.ryderbelserion.simpleflags.enums.Plugins;
|
||||
import io.papermc.paper.plugin.loader.PluginClasspathBuilder;
|
||||
import io.papermc.paper.plugin.loader.PluginLoader;
|
||||
import io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver;
|
||||
@@ -14,11 +15,13 @@ public class LibraryLoader implements PluginLoader {
|
||||
public void classloader(@NotNull PluginClasspathBuilder classpathBuilder) {
|
||||
MavenLibraryResolver resolver = new MavenLibraryResolver();
|
||||
|
||||
resolver.addDependency(new Dependency(new DefaultArtifact("com.ryderbelserion.vital:paper:1.0.6"), null));
|
||||
|
||||
resolver.addRepository(new RemoteRepository.Builder("crazycrew-libraries", "default", "https://repo.crazycrew.us/libraries").build());
|
||||
resolver.addRepository(new RemoteRepository.Builder("paper", "default", "https://repo.papermc.io/repository/maven-public").build());
|
||||
|
||||
resolver.addRepository(new RemoteRepository.Builder("crazycrewReleases", "default", "https://repo.crazycrew.us/releases/").build());
|
||||
|
||||
resolver.addDependency(Plugins.configme.asDependency());
|
||||
resolver.addDependency(Plugins.fusion.asDependency());
|
||||
|
||||
classpathBuilder.addLibrary(resolver);
|
||||
}
|
||||
}
|
||||
@@ -6,8 +6,10 @@ import com.ryderbelserion.simpleflags.commands.types.CommandHelp;
|
||||
import com.ryderbelserion.simpleflags.commands.types.CommandReload;
|
||||
import com.ryderbelserion.simpleflags.config.ConfigManager;
|
||||
import com.ryderbelserion.simpleflags.flags.FlagManager;
|
||||
import com.ryderbelserion.simpleflags.flags.types.BlockFlag;
|
||||
import com.ryderbelserion.simpleflags.flags.types.DrownFlag;
|
||||
import com.ryderbelserion.simpleflags.flags.types.NaturalFlag;
|
||||
import com.ryderbelserion.simpleflags.listeners.BlockListener;
|
||||
import com.ryderbelserion.simpleflags.listeners.DrowningListener;
|
||||
import com.ryderbelserion.simpleflags.listeners.NaturalListener;
|
||||
import com.ryderbelserion.vital.paper.Vital;
|
||||
@@ -34,7 +36,8 @@ public class SimpleFlags extends Vital {
|
||||
|
||||
List.of(
|
||||
new DrownFlag(),
|
||||
new NaturalFlag()
|
||||
new NaturalFlag(),
|
||||
new BlockFlag()
|
||||
).forEach(this.flagManager::addFlag);
|
||||
}
|
||||
|
||||
@@ -42,6 +45,7 @@ public class SimpleFlags extends Vital {
|
||||
public void onEnable() {
|
||||
getServer().getPluginManager().registerEvents(new NaturalListener(), this);
|
||||
getServer().getPluginManager().registerEvents(new DrowningListener(), this);
|
||||
getServer().getPluginManager().registerEvents(new BlockListener(), this);
|
||||
|
||||
// Register commands.
|
||||
getLifecycleManager().registerEventHandler(LifecycleEvents.COMMANDS, event -> {
|
||||
@@ -52,7 +56,7 @@ public class SimpleFlags extends Vital {
|
||||
new CommandHelp()
|
||||
).forEach(command -> root.then(command.registerPermission().literal()));
|
||||
|
||||
event.registrar().register(root.build(), "the base command for RedstonePvP");
|
||||
event.registrar().register(root.build(), "the base command for SimpleFlags");
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,9 @@ public class Config implements SettingsHolder {
|
||||
@Comment("The flag prevent_drowning as you guessed it, it prevents drowning if enabled.")
|
||||
public static final Property<Boolean> drowning_flag = newProperty("flags.drowning-flag", false);
|
||||
|
||||
@Comment("The flag prevent_block_placement allows you to pick blocks that can't be placed.")
|
||||
public static final Property<Boolean> block_placement_flag = newProperty("flags.prevent_block_placement-flag", false);
|
||||
|
||||
@Comment("The flag prevent_natural_spawning prevents natural mob spawns in regions.")
|
||||
public static final Property<Boolean> natural_spawning_flag = newProperty("flags.natural-spawning-flag", false);
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.ryderbelserion.simpleflags.enums;
|
||||
|
||||
import org.eclipse.aether.artifact.DefaultArtifact;
|
||||
import org.eclipse.aether.graph.Dependency;
|
||||
|
||||
public enum Plugins {
|
||||
|
||||
fusion("com.ryderbelserion.fusion", "fusion-paper", "0.18.1"),
|
||||
configme("ch.jalu", "configme", "1.4.3");
|
||||
|
||||
private final String group;
|
||||
private final String id;
|
||||
private final String version;
|
||||
|
||||
Plugins(final String group, final String id, final String version) {
|
||||
this.group = group;
|
||||
this.id = id;
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public Dependency asDependency() {
|
||||
return new Dependency(new DefaultArtifact(String.format("%s:%s:%s", this.group, this.id, this.version)), null);
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,7 @@ public abstract class FlagBuilder<T extends Flag> {
|
||||
/**
|
||||
* @return A query of regions.
|
||||
*/
|
||||
protected RegionQuery getQuery() {
|
||||
public RegionQuery getQuery() {
|
||||
return this.plugin.getRegions().createQuery();
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.bukkit.damage.DamageType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||
|
||||
@SuppressWarnings("UnstableApiUsage")
|
||||
public abstract class StateFlagBuilder extends FlagBuilder<StateFlag> {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package com.ryderbelserion.simpleflags.flags.builders;
|
||||
|
||||
import com.ryderbelserion.simpleflags.flags.FlagBuilder;
|
||||
import com.sk89q.worldguard.protection.flags.SetFlag;
|
||||
|
||||
public abstract class StringFlagBuilder extends FlagBuilder<SetFlag<?>> {
|
||||
|
||||
@Override
|
||||
public abstract SetFlag<?> getFlag();
|
||||
|
||||
}
|
||||
@@ -3,6 +3,7 @@ package com.ryderbelserion.simpleflags.flags.enums;
|
||||
public enum CustomFlags {
|
||||
|
||||
NATURAL_FLAG("prevent_natural_spawning"),
|
||||
PREVENT_BLOCK_PLACEMENT("prevent_block_placement"),
|
||||
DROWN_FLAG("prevent_drowning"),
|
||||
CAPACITY_FLAG("max_players");
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.ryderbelserion.simpleflags.flags.types;
|
||||
|
||||
import com.ryderbelserion.simpleflags.config.impl.Config;
|
||||
import com.ryderbelserion.simpleflags.flags.builders.StringFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.flags.enums.CustomFlags;
|
||||
import com.sk89q.worldguard.protection.flags.CommandStringFlag;
|
||||
import com.sk89q.worldguard.protection.flags.Flag;
|
||||
import com.sk89q.worldguard.protection.flags.SetFlag;
|
||||
import com.sk89q.worldguard.protection.flags.registry.FlagConflictException;
|
||||
import java.util.logging.Level;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public class BlockFlag extends StringFlagBuilder {
|
||||
|
||||
private SetFlag<String> flag;
|
||||
|
||||
@Override
|
||||
public void register() {
|
||||
if (!isEnabled()) return;
|
||||
|
||||
try {
|
||||
getRegistry().register(this.flag = new SetFlag<>("prevent-block-placement", new CommandStringFlag(null)));
|
||||
} catch (FlagConflictException exception) {
|
||||
Flag<?> existingFlag = getRegistry().get("prevent-block-placement");
|
||||
|
||||
if (existingFlag != null) {
|
||||
this.flag = (SetFlag<String>) getRegistry().get("prevent-block-placement");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this.plugin.getLogger().log(Level.WARNING, "An error has occurred registering " + getName() + " flag.", exception);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return CustomFlags.PREVENT_BLOCK_PLACEMENT.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SetFlag<String> getFlag() {
|
||||
return this.flag;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled() {
|
||||
return this.config.getProperty(Config.drowning_flag);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.ryderbelserion.simpleflags.listeners;
|
||||
|
||||
import com.ryderbelserion.simpleflags.SimpleFlags;
|
||||
import com.ryderbelserion.simpleflags.flags.FlagManager;
|
||||
import com.ryderbelserion.simpleflags.flags.builders.StringFlagBuilder;
|
||||
import com.ryderbelserion.simpleflags.flags.enums.CustomFlags;
|
||||
import com.sk89q.worldedit.bukkit.BukkitAdapter;
|
||||
import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
|
||||
import com.sk89q.worldguard.protection.flags.SetFlag;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import java.util.Set;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public class BlockListener implements Listener {
|
||||
|
||||
private final SimpleFlags plugin = JavaPlugin.getPlugin(SimpleFlags.class);
|
||||
|
||||
private final FlagManager flagManager = this.plugin.getFlagManager();
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onBlockPlace(BlockPlaceEvent event) {
|
||||
final String flagName = CustomFlags.PREVENT_BLOCK_PLACEMENT.getName();
|
||||
|
||||
if (!this.flagManager.hasFlag(flagName)) return;
|
||||
|
||||
final StringFlagBuilder builder = (StringFlagBuilder) this.flagManager.getFlag(flagName);
|
||||
|
||||
if (!builder.isEnabled()) return;
|
||||
|
||||
final SetFlag<String> flag = (SetFlag<String>) builder.getFlag();
|
||||
|
||||
if (flag == null) return;
|
||||
|
||||
final Block block = event.getBlock();
|
||||
|
||||
if (block.isEmpty()) return;
|
||||
|
||||
final String material = block.getType().getKey().value();
|
||||
|
||||
this.plugin.getLogger().warning("Block placement for " + material);
|
||||
|
||||
final Set<String> materialTypes = builder.getQuery().queryValue(BukkitAdapter.adapt(block.getLocation()), WorldGuardPlugin.inst().wrapPlayer(event.getPlayer()), flag);
|
||||
|
||||
if (materialTypes != null && materialTypes.contains(material)) {
|
||||
this.plugin.getLogger().warning("Block placement for " + material + " cancelled.");
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user