Update VelocityCore to use Linkage

This commit is contained in:
2025-09-29 15:26:26 +02:00
parent ca589bd07c
commit d850894a00
75 changed files with 246 additions and 109 deletions
@@ -71,6 +71,8 @@ public abstract class AbstractLinker<T> {
MinVersion minVersion = clazz.getAnnotation(MinVersion.class);
MaxVersion maxVersion = clazz.getAnnotation(MaxVersion.class);
if (!versionCheck(clazz, minVersion, maxVersion)) return;
EventMode eventMode = clazz.getAnnotation(EventMode.class);
if (!eventModeCheck(clazz, eventMode)) return;
PluginCheck[] pluginChecks = clazz.getAnnotationsByType(PluginCheck.class);
for (PluginCheck pluginCheck : pluginChecks) {
if (!pluginCheck(clazz, pluginCheck)) return;
@@ -140,13 +142,22 @@ public abstract class AbstractLinker<T> {
return true;
}
/**
* @return {@code true} if the clazz passes the checks {@code false} otherwise
*/
protected boolean eventModeCheck(@NonNull Class<?> clazz, EventMode eventMode) {
return true;
}
/**
* There is no need in calling {@link Enable#enable()} by this method.
*/
protected abstract void linkObject(Object any);
protected void linkObject(Object any) {
}
/**
* There is no need in calling {@link Disable#disable()} ()} by this method.
*/
protected abstract void unlinkObject(Object any);
protected void unlinkObject(Object any) {
}
}
@@ -0,0 +1,31 @@
/*
* This file is a part of the SteamWar software.
*
* Copyright (C) 2020 SteamWar.de-Serverteam
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.linkage;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface EventMode {
boolean value();
}