Skip to content

Commit

Permalink
Merge pull request #168 from kejonaMC/dev
Browse files Browse the repository at this point in the history
Skulls, custom model data, single spigot release
  • Loading branch information
Konicai committed May 10, 2023
2 parents b4cc151 + 38fac73 commit 06dd3f4
Show file tree
Hide file tree
Showing 169 changed files with 2,643 additions and 2,259 deletions.
1 change: 0 additions & 1 deletion Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ pipeline {
post {
success {
archiveArtifacts 'spigot/build/libs/CrossplatForms-Spigot.jar'
archiveArtifacts 'spigot-legacy/build/libs/CrossplatForms-SpigotLegacy.jar'
archiveArtifacts 'bungeecord/build/libs/CrossplatForms-BungeeCord.jar'
archiveArtifacts 'velocity/build/libs/CrossplatForms-Velocity.jar'
}
Expand Down
5 changes: 2 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<img alt="CrossplatForms" width="500" src="https://github.com/kejonaMC/CrossplatForms/blob/main/images/crossplatForms.svg" />

[![Build Status](https://ci.kejona.dev/job/CrossplatForms/job/main/badge/icon)](https://ci.kejona.dev/job/CrossplatForms/job/main/)
[![Version](https://img.shields.io/badge/version-1.4.0-blue)](https://github.com/kejonaMC/CrossplatForms/releases)
[![Version](https://img.shields.io/badge/version-1.5.0-blue)](https://github.com/kejonaMC/CrossplatForms/releases)
[![License](https://img.shields.io/badge/License-GPL-orange)](https://github.com/kejonaMC/CrossplatForms/blob/master/LICENSE)
[![Discord](https://img.shields.io/discord/853331530004299807?color=7289da&label=discord&logo=discord&logoColor=white)](https://discord.gg/M2SvqCu4e9)
[![bStats](https://img.shields.io/badge/bStats-click%20me-yellow)](https://bstats.org/author/Konicai)
Expand Down Expand Up @@ -38,8 +38,7 @@ BungeeCord and Velocity do not support Access Items.

---

* [`CrossplatForms-Spigot.jar`](https://ci.kejona.dev/job/CrossplatForms/job/main/) :&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp; Spigot 1.14.4 - 1.19.1
* [`CrossplatForms-SpigotLegacy.jar`](https://ci.kejona.dev/job/CrossplatForms/job/main/) :&ensp; Spigot 1.8.8 - 1.13.2
* [`CrossplatForms-Spigot.jar`](https://ci.kejona.dev/job/CrossplatForms/job/main/) :&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp; Spigot 1.8.8 - 1.19.4
* [`CrossplatForms-BungeeCord.jar`](https://ci.kejona.dev/job/CrossplatForms/job/main/) :&ensp;&ensp;&ensp; BungeeCord
* [`CrossplatForms-Velocity.jar`](https://ci.kejona.dev/job/CrossplatForms/job/main/) :&ensp;&ensp;&ensp;&ensp;&ensp; Velocity 3.x

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import dev.kejona.crossplatforms.handler.BedrockHandler;
import dev.kejona.crossplatforms.handler.FormPlayer;
import dev.kejona.crossplatforms.handler.Placeholders;
import dev.kejona.crossplatforms.inventory.ConfiguredItem;
import dev.kejona.crossplatforms.permission.Permission;
import dev.kejona.crossplatforms.permission.PermissionDefault;
import dev.kejona.crossplatforms.resolver.Resolver;
Expand All @@ -27,7 +28,7 @@
@Getter
@ConfigSerializable
@SuppressWarnings("FieldMayBeFinal")
public class AccessItem {
public class AccessItem extends ConfiguredItem {

public static final String STATIC_IDENTIFIER = "crossplatformsaccessitem"; // changing this will break existing setups
private static final String PERMISSION_BASE = Constants.Id() + ".item";
Expand All @@ -49,20 +50,6 @@ public class AccessItem {
private List<Action<? super AccessItem>> bedrockActions = Collections.emptyList();
private List<Action<? super AccessItem>> javaActions = Collections.emptyList();

@Required
private String material = null;

/**
* Display name of the itemstack
*/
@Required
private String displayName = null;

/**
* Itemstack lore
*/
private List<String> lore = Collections.emptyList();

/**
* The inventory slot to be placed in
*/
Expand Down Expand Up @@ -108,7 +95,7 @@ public void trigger(FormPlayer player) {

public void generatePermissions(AccessItemRegistry registry) {
if (permissions != null) {
Logger.get().severe("Permissions in Access Item '" + identifier + "' have already been generated!");
Logger.get().warn("Permissions in Access Item '" + identifier + "' have already been generated!");
}

String mainPermission = PERMISSION_BASE + "." + identifier;
Expand Down Expand Up @@ -142,18 +129,6 @@ public enum Limit {
PRESERVE(".preserve", "Stop the Access Item from being destroyed when it is dropped. This includes death, regardless of drop permission.", PermissionDefault.FALSE),
MOVE(".move", "Ability to move the Access Item around and to inventories", PermissionDefault.FALSE);

/**
* Map of {@link PermissionDefault} to fallback to if the user does not define their own.
*/
public static final Map<Limit, PermissionDefault> FALLBACK_DEFAULTS;

static {
FALLBACK_DEFAULTS = new HashMap<>();
for (Limit limit : Limit.values()) {
FALLBACK_DEFAULTS.put(limit, limit.fallbackDefault);
}
}

public final String permissionSuffix;
public final String description;
public final PermissionDefault fallbackDefault;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@

import dev.kejona.crossplatforms.config.ConfigManager;
import dev.kejona.crossplatforms.handler.FormPlayer;
import dev.kejona.crossplatforms.handler.ServerHandler;
import dev.kejona.crossplatforms.permission.Permission;
import dev.kejona.crossplatforms.permission.PermissionDefault;
import dev.kejona.crossplatforms.permission.Permissions;
import dev.kejona.crossplatforms.reloadable.Reloadable;
import dev.kejona.crossplatforms.reloadable.ReloadableRegistry;
import lombok.Getter;
Expand All @@ -15,12 +15,17 @@
import javax.annotation.Nullable;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public abstract class AccessItemRegistry implements Reloadable {

private final ConfigManager configManager;
private final ServerHandler serverHandler;
private final Permissions permissions;

@Getter
private final Map<String, AccessItem> items = new HashMap<>();

@Getter
private boolean enabled = false;
Expand All @@ -35,12 +40,9 @@ public abstract class AccessItemRegistry implements Reloadable {
@Getter
private Map<AccessItem.Limit, PermissionDefault> globalPermissionDefaults = Collections.emptyMap();

@Getter
private final Map<String, AccessItem> items = new HashMap<>();

public AccessItemRegistry(ConfigManager configManager, ServerHandler serverHandler) {
public AccessItemRegistry(ConfigManager configManager, Permissions permissions) {
this.configManager = configManager;
this.serverHandler = serverHandler;
this.permissions = permissions;
ReloadableRegistry.register(this);
load();
}
Expand All @@ -63,30 +65,23 @@ private void load() {
setHeldSlot = config.isSetHeldSlot();
globalPermissionDefaults = config.getGlobalPermissionDefaults();

Set<Permission> permissions = new HashSet<>();

for (String identifier : config.getItems().keySet()) {
AccessItem item = config.getItems().get(identifier);
items.put(identifier, item);

// Register permissions with the server
item.generatePermissions(this);
for (Permission entry : item.getPermissions().values()) {
serverHandler.registerPermission(entry);
}
permissions.addAll(item.getPermissions().values());
}

this.permissions.registerPermissions(permissions);
}
}

@Override
public boolean reload() {
// Unregister permissions
if (enabled) {
for (AccessItem accessItem : items.values()) {
for (Permission permission : accessItem.getPermissions().values()) {
serverHandler.unregisterPermission(permission.key());
}
}
}

load();
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public void register(CommandManager<CommandOrigin> manager, Command.Builder<Comm
// Base open command
manager.command(defaultBuilder
.literal(NAME)
.argument(StringArgument.<CommandOrigin>newBuilder(ARGUMENT)
.argument(StringArgument.<CommandOrigin>builder(ARGUMENT)
.withSuggestionsProvider((context, s) -> itemSuggestions(context))
.build())
.permission(origin -> origin.hasPermission(PERMISSION) && origin.isPlayer())
Expand Down Expand Up @@ -70,10 +70,10 @@ public void register(CommandManager<CommandOrigin> manager, Command.Builder<Comm
// Additional command to make other players open a form or menu
manager.command(defaultBuilder
.literal(NAME)
.argument(StringArgument.<CommandOrigin>newBuilder(ARGUMENT)
.argument(StringArgument.<CommandOrigin>builder(ARGUMENT)
.withSuggestionsProvider((context, s) -> itemSuggestions(context))
.build())
.argument(StringArgument.<CommandOrigin>newBuilder("player")
.argument(StringArgument.<CommandOrigin>builder("player")
.withSuggestionsProvider(((context, s) -> playerSuggestions(context)))
.build())
.permission(PERMISSION_OTHER)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ public void register(CommandManager<CommandOrigin> manager, Command.Builder<Comm
.literal(InspectCommand.NAME)
.permission(InspectCommand.PERMISSION)
.literal("item")
.argument(StringArgument.<CommandOrigin>newBuilder("item")
.argument(StringArgument.<CommandOrigin>builder("item")
.withSuggestionsProvider(((context, s) -> itemRegistry.getItems().values()
.stream()
.map(AccessItem::getIdentifier)
Expand Down
12 changes: 6 additions & 6 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ allprojects{
apply(plugin = "net.kyori.indra.git")

group = "dev.kejona"
version = "1.4.0"
version = "1.5.0"

tasks.withType<JavaCompile> {
options.encoding = "UTF-8"
Expand Down Expand Up @@ -57,12 +57,12 @@ allprojects{

subprojects {
dependencies {
testAnnotationProcessor("org.projectlombok:lombok:1.18.24")
testCompileOnly("org.projectlombok:lombok:1.18.22")
testImplementation("org.junit.jupiter:junit-jupiter:5.9.1")
testAnnotationProcessor("org.projectlombok:lombok:1.18.26")
testCompileOnly("org.projectlombok:lombok:1.18.26")
testImplementation("org.junit.jupiter:junit-jupiter:5.9.2")

annotationProcessor("org.projectlombok:lombok:1.18.22")
compileOnly("org.projectlombok:lombok:1.18.22")
annotationProcessor("org.projectlombok:lombok:1.18.26")
compileOnly("org.projectlombok:lombok:1.18.26")
compileOnly("com.google.code.findbugs:jsr305:3.0.2") // nullability annotations
}
}
Expand Down
10 changes: 5 additions & 5 deletions bungeecord/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ plugins {
}

dependencies {
compileOnly("net.md-5:bungeecord-api:1.18-R0.1-SNAPSHOT")
compileOnly("com.github.SpigotMC.BungeeCord:bungeecord-proxy:2d369e8") // through jitpack
api("cloud.commandframework:cloud-bungee:1.7.1")
api("net.kyori:adventure-platform-bungeecord:4.1.2")
implementation("org.bstats:bstats-bungeecord:3.0.0")
compileOnly("net.md-5:bungeecord-api:1.19-R0.1-SNAPSHOT")
compileOnly("com.github.SpigotMC.BungeeCord:bungeecord-proxy:9e5ed82") // For getting skins (dependency through jitpack)
api("cloud.commandframework:cloud-bungee:1.8.3")
api("net.kyori:adventure-platform-bungeecord:4.3.0")
implementation("org.bstats:bstats-bungeecord:3.0.2")
api(projects.proxy)
api(projects.core)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import cloud.commandframework.bungee.BungeeCommandManager;
import cloud.commandframework.execution.CommandExecutionCoordinator;
import com.google.inject.Module;
import dev.kejona.crossplatforms.Constants;
import dev.kejona.crossplatforms.CrossplatForms;
import dev.kejona.crossplatforms.CrossplatFormsBootstrap;
Expand All @@ -16,19 +17,20 @@
import dev.kejona.crossplatforms.config.ConfigManager;
import dev.kejona.crossplatforms.handler.BasicPlaceholders;
import dev.kejona.crossplatforms.handler.Placeholders;
import dev.kejona.crossplatforms.interfacing.Interfacer;
import dev.kejona.crossplatforms.interfacing.NoMenusInterfacer;
import dev.kejona.crossplatforms.permission.LuckPermsHook;
import dev.kejona.crossplatforms.permission.Permissions;
import dev.kejona.crossplatforms.proxy.CloseMenuAction;
import dev.kejona.crossplatforms.proxy.LuckPermsHook;
import dev.kejona.crossplatforms.proxy.PermissionHook;
import dev.kejona.crossplatforms.proxy.ProtocolizeInterfacer;
import dev.kejona.crossplatforms.proxy.ProtocolizeModule;
import net.kyori.adventure.platform.bungeecord.BungeeAudiences;
import net.kyori.adventure.text.serializer.bungeecord.BungeeComponentSerializer;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Plugin;
import org.bstats.bungeecord.Metrics;
import org.bstats.charts.CustomChart;

import java.util.ArrayList;
import java.util.List;

public class CrossplatFormsBungeeCord extends Plugin implements CrossplatFormsBootstrap {

private static final int BSTATS_ID = 14706;
Expand All @@ -54,11 +56,8 @@ public void onEnable() {
metrics = new Metrics(this, BSTATS_ID);
audiences = BungeeAudiences.create(this);

BungeeCordHandler serverHandler = new BungeeCordHandler(
this,
audiences,
pluginPresent("LuckPerms") ? new LuckPermsHook() : PermissionHook.empty()
);
BungeeCordHandler serverHandler = new BungeeCordHandler(this, audiences);
Permissions permissions = pluginPresent("LuckPerms") ? new LuckPermsHook() : Permissions.empty();

BungeeCommandManager<CommandOrigin> commandManager;
try {
Expand All @@ -83,17 +82,25 @@ public void onEnable() {
logger,
getDataFolder().toPath(),
serverHandler,
permissions,
"formsb",
commandManager,
placeholders,
this
);

if (!crossplatForms.isSuccess()) {
return;
getProxy().getPluginManager().registerListener(this, serverHandler); // events for catching proxy commands
}

@Override
public List<Module> configModules() {
List<Module> modules = new ArrayList<>();

if (protocolizePresent) {
modules.add(new ProtocolizeModule());
}

getProxy().getPluginManager().registerListener(this, serverHandler); // events for catching proxy commands
return modules;
}

@Override
Expand All @@ -107,15 +114,6 @@ public void preConfigLoad(ConfigManager configManager) {
}
}

@Override
public Interfacer interfaceManager() {
if (protocolizePresent) {
return new ProtocolizeInterfacer();
} else {
return new NoMenusInterfacer();
}
}

@Override
public void onDisable() {
if (audiences != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@
import dev.kejona.crossplatforms.command.CommandType;
import dev.kejona.crossplatforms.command.DispatchableCommand;
import dev.kejona.crossplatforms.command.custom.InterceptCommand;
import dev.kejona.crossplatforms.command.custom.InterceptCommandCache;
import dev.kejona.crossplatforms.handler.BedrockHandler;
import dev.kejona.crossplatforms.handler.FormPlayer;
import dev.kejona.crossplatforms.handler.ServerHandler;
import dev.kejona.crossplatforms.proxy.PermissionHook;
import dev.kejona.crossplatforms.proxy.ProxyHandler;
import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.platform.bungeecord.BungeeAudiences;
import net.md_5.bungee.api.CommandSender;
Expand All @@ -29,7 +28,7 @@
import java.util.UUID;
import java.util.stream.Stream;

public class BungeeCordHandler extends ProxyHandler implements ServerHandler, Listener {
public class BungeeCordHandler extends InterceptCommandCache implements ServerHandler, Listener {

private static final String OP_GROUP = "op";

Expand All @@ -38,8 +37,7 @@ public class BungeeCordHandler extends ProxyHandler implements ServerHandler, Li
private final BungeeAudiences audiences;
private final CommandSender console;

public BungeeCordHandler(Plugin plugin, BungeeAudiences audiences, PermissionHook permissionHook) {
super(permissionHook);
public BungeeCordHandler(Plugin plugin, BungeeAudiences audiences) {
this.server = plugin.getProxy();
this.pluginManager = server.getPluginManager();
this.audiences = audiences;
Expand Down
Loading

0 comments on commit 06dd3f4

Please sign in to comment.