Dieser Commit ist enthalten in:
Ursprung
e9bbb724b3
Commit
6c311ae691
@ -1 +1 @@
|
|||||||
Subproject commit 1237a699ba244ecfac65478df34e714afbe2366e
|
Subproject commit d000b8687d93eb43520bbf6685281099055eab9f
|
51
SpigotCore_21/build.gradle
Normale Datei
51
SpigotCore_21/build.gradle
Normale Datei
@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2024 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id 'base'
|
||||||
|
id 'java'
|
||||||
|
}
|
||||||
|
|
||||||
|
group 'steamwar'
|
||||||
|
version '1.0'
|
||||||
|
|
||||||
|
compileJava.options.encoding = 'UTF-8'
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
main {
|
||||||
|
java {
|
||||||
|
srcDirs = ['src/']
|
||||||
|
}
|
||||||
|
resources {
|
||||||
|
srcDirs = ['src/']
|
||||||
|
exclude '**/*.java', '**/*.kt'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compileOnly project(":SpigotCore_Main")
|
||||||
|
|
||||||
|
compileOnly 'io.papermc.paper:paper-api:1.21-R0.1-SNAPSHOT'
|
||||||
|
}
|
||||||
|
|
||||||
|
java {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_21
|
||||||
|
targetCompatibility = JavaVersion.VERSION_21
|
||||||
|
}
|
75
SpigotCore_21/src/de/steamwar/scoreboard/SWScoreboard21.java
Normale Datei
75
SpigotCore_21/src/de/steamwar/scoreboard/SWScoreboard21.java
Normale Datei
@ -0,0 +1,75 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2024 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.scoreboard;
|
||||||
|
|
||||||
|
import com.comphenix.tinyprotocol.TinyProtocol;
|
||||||
|
import de.steamwar.core.Core;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scoreboard.DisplaySlot;
|
||||||
|
import org.bukkit.scoreboard.Objective;
|
||||||
|
import org.bukkit.scoreboard.Scoreboard;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class SWScoreboard21 implements SWScoreboard.ISWScoreboard {
|
||||||
|
|
||||||
|
private static final HashMap<Player, ScoreboardCallback> playerBoards = new HashMap<>();
|
||||||
|
private static final String SIDEBAR = "sw-sidebar";
|
||||||
|
|
||||||
|
static {
|
||||||
|
Bukkit.getScheduler().runTaskTimer(Core.getInstance(), () -> {
|
||||||
|
for(Map.Entry<Player, ScoreboardCallback> scoreboard : playerBoards.entrySet()) {
|
||||||
|
render(scoreboard.getKey(), scoreboard.getValue());
|
||||||
|
}
|
||||||
|
}, 5, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void render(Player player, ScoreboardCallback callback) {
|
||||||
|
if (player.getScoreboard().getObjective(SIDEBAR) != null) {
|
||||||
|
player.getScoreboard().getObjective(SIDEBAR).unregister();
|
||||||
|
}
|
||||||
|
|
||||||
|
Objective objective = player.getScoreboard().registerNewObjective(SIDEBAR, "dummy", Component.text(callback.getTitle()));
|
||||||
|
objective.setAutoUpdateDisplay(true);
|
||||||
|
objective.setDisplaySlot(DisplaySlot.SIDEBAR);
|
||||||
|
|
||||||
|
callback.getData().forEach((text, score) -> objective.getScore(text).setScore(score));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean createScoreboard(Player player, ScoreboardCallback callback) {
|
||||||
|
Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
|
||||||
|
player.setScoreboard(scoreboard);
|
||||||
|
|
||||||
|
render(player, callback);
|
||||||
|
|
||||||
|
playerBoards.put(player, callback);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeScoreboard(Player player) {
|
||||||
|
player.getScoreboard().getObjective(SIDEBAR).unregister();
|
||||||
|
playerBoards.remove(player);
|
||||||
|
}
|
||||||
|
}
|
115
SpigotCore_8/src/de/steamwar/scoreboard/SWScoreboard8.java
Normale Datei
115
SpigotCore_8/src/de/steamwar/scoreboard/SWScoreboard8.java
Normale Datei
@ -0,0 +1,115 @@
|
|||||||
|
/*
|
||||||
|
* This file is a part of the SteamWar software.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2024 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.scoreboard;
|
||||||
|
|
||||||
|
import com.comphenix.tinyprotocol.Reflection;
|
||||||
|
import com.comphenix.tinyprotocol.TinyProtocol;
|
||||||
|
import de.steamwar.core.Core;
|
||||||
|
import de.steamwar.core.FlatteningWrapper;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class SWScoreboard8 implements SWScoreboard.ISWScoreboard {
|
||||||
|
private static final Reflection.FieldAccessor<String> scoreboardName = Reflection.getField(FlatteningWrapper.scoreboardObjective, String.class, 0);
|
||||||
|
private static final Reflection.FieldAccessor<Integer> scoreboardAction = Reflection.getField(FlatteningWrapper.scoreboardObjective, int.class, Core.getVersion() > 15 ? 3 : 0);
|
||||||
|
private static final Class<?> scoreboardDisplayEnum = Reflection.getClass("{nms.world.scores.criteria}.IScoreboardCriteria$EnumScoreboardHealthDisplay");
|
||||||
|
private static final Reflection.FieldAccessor<?> scoreboardDisplayType = Reflection.getField(FlatteningWrapper.scoreboardObjective, scoreboardDisplayEnum, 0);
|
||||||
|
private static final Object displayTypeIntegers = scoreboardDisplayEnum.getEnumConstants()[0];
|
||||||
|
|
||||||
|
private static final Reflection.FieldAccessor<String> scoreName = Reflection.getField(FlatteningWrapper.scoreboardScore, String.class, 0);
|
||||||
|
private static final Reflection.FieldAccessor<String> scoreScoreboardName = Reflection.getField(FlatteningWrapper.scoreboardScore, String.class, 1);
|
||||||
|
private static final Reflection.FieldAccessor<Integer> scoreValue = Reflection.getField(FlatteningWrapper.scoreboardScore, int.class, 0);
|
||||||
|
|
||||||
|
private static final HashMap<Player, ScoreboardCallback> playerBoards = new HashMap<>(); //Object -> Scoreboard | Alle Versionen in der Map!
|
||||||
|
private static int toggle = 0; // Scoreboard 0 updates while scoreboard 1 is presenting. toggle marks the current active scoreboard
|
||||||
|
|
||||||
|
private static final String SIDEBAR = "Sidebar";
|
||||||
|
private static final Object[] DELETE_SCOREBOARD = new Object[2];
|
||||||
|
private static final Object[] DISPLAY_SIDEBAR = new Object[2];
|
||||||
|
|
||||||
|
static {
|
||||||
|
Class<?> scoreboardDisplayObjective = Reflection.getClass("{nms.network.protocol.game}.PacketPlayOutScoreboardDisplayObjective");
|
||||||
|
Reflection.FieldAccessor<String> scoreboardDisplayName = Reflection.getField(scoreboardDisplayObjective, String.class, 0);
|
||||||
|
Reflection.FieldAccessor<Integer> scoreboardDisplaySlot = Reflection.getField(scoreboardDisplayObjective, int.class, 0);
|
||||||
|
for(int id = 0; id < 2; id++) {
|
||||||
|
DELETE_SCOREBOARD[id] = Reflection.newInstance(FlatteningWrapper.scoreboardObjective);
|
||||||
|
scoreboardName.set(DELETE_SCOREBOARD[id], SIDEBAR + id);
|
||||||
|
scoreboardAction.set(DELETE_SCOREBOARD[id], 1); //1 to remove
|
||||||
|
|
||||||
|
DISPLAY_SIDEBAR[id] = Reflection.newInstance(scoreboardDisplayObjective);
|
||||||
|
scoreboardDisplayName.set(DISPLAY_SIDEBAR[id], SIDEBAR + id);
|
||||||
|
scoreboardDisplaySlot.set(DISPLAY_SIDEBAR[id], 1); // 1 = Sidebar
|
||||||
|
}
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTaskTimer(Core.getInstance(), () -> {
|
||||||
|
toggle ^= 1; // Toggle between 0 and 1
|
||||||
|
|
||||||
|
for(Map.Entry<Player, ScoreboardCallback> scoreboard : playerBoards.entrySet()) {
|
||||||
|
Player player = scoreboard.getKey();
|
||||||
|
ScoreboardCallback callback = scoreboard.getValue();
|
||||||
|
|
||||||
|
TinyProtocol.instance.sendPacket(player, DELETE_SCOREBOARD[toggle]);
|
||||||
|
TinyProtocol.instance.sendPacket(player, createSidebarPacket(callback.getTitle()));
|
||||||
|
for(Map.Entry<String, Integer> score : callback.getData().entrySet()){
|
||||||
|
TinyProtocol.instance.sendPacket(player, createScorePacket(score.getKey(), score.getValue()));
|
||||||
|
}
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTaskLater(Core.getInstance(), () -> {
|
||||||
|
if(!player.isOnline())
|
||||||
|
return;
|
||||||
|
TinyProtocol.instance.sendPacket(player, DISPLAY_SIDEBAR[toggle]);
|
||||||
|
}, 2);
|
||||||
|
}
|
||||||
|
}, 10, 5);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean createScoreboard(Player player, ScoreboardCallback callback) {
|
||||||
|
playerBoards.put(player, callback);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeScoreboard(Player player) {
|
||||||
|
if(playerBoards.remove(player) == null || !player.isOnline())
|
||||||
|
return;
|
||||||
|
|
||||||
|
TinyProtocol.instance.sendPacket(player, DELETE_SCOREBOARD[toggle]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Object createSidebarPacket(String name){
|
||||||
|
Object packet = Reflection.newInstance(FlatteningWrapper.scoreboardObjective);
|
||||||
|
scoreboardName.set(packet, SIDEBAR + toggle);
|
||||||
|
scoreboardAction.set(packet, 0); //0 to create
|
||||||
|
FlatteningWrapper.impl.setScoreboardTitle(packet, name);
|
||||||
|
scoreboardDisplayType.set(packet, displayTypeIntegers);
|
||||||
|
return packet;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Object createScorePacket(String name, int value){
|
||||||
|
Object packet = Reflection.newInstance(FlatteningWrapper.scoreboardScore);
|
||||||
|
scoreName.set(packet, name);
|
||||||
|
scoreScoreboardName.set(packet, SIDEBAR + toggle);
|
||||||
|
scoreValue.set(packet, value);
|
||||||
|
FlatteningWrapper.impl.setScoreAction(packet);
|
||||||
|
return packet;
|
||||||
|
}
|
||||||
|
}
|
@ -44,16 +44,16 @@ sourceSets {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly 'org.spigotmc:spigot-api:1.19-R0.1-SNAPSHOT'
|
compileOnly 'org.spigotmc:spigot-api:1.19-R0.1-SNAPSHOT'
|
||||||
compileOnly 'io.netty:netty-all:4.1.68.Final'
|
compileOnly 'io.netty:netty-all:4.1.107.Final'
|
||||||
compileOnly 'com.mojang:authlib:1.5.25'
|
compileOnly 'com.mojang:authlib:1.5.25'
|
||||||
compileOnly 'mysql:mysql-connector-java:5.1.49'
|
compileOnly 'com.mysql:mysql-connector-j:8.3.0'
|
||||||
compileOnly 'com.viaversion:viaversion-api:4.3.1'
|
compileOnly 'com.viaversion:viaversion-api:4.3.1'
|
||||||
compileOnly 'it.unimi.dsi:fastutil:8.5.6'
|
compileOnly 'it.unimi.dsi:fastutil:8.5.6'
|
||||||
compileOnly swdep("WorldEdit-1.12")
|
compileOnly swdep("WorldEdit-1.12")
|
||||||
implementation 'net.wesjd:anvilgui:1.7.0-SNAPSHOT'
|
implementation 'net.wesjd:anvilgui:1.7.0-SNAPSHOT'
|
||||||
|
|
||||||
compileOnly 'org.projectlombok:lombok:1.18.22'
|
compileOnly 'org.projectlombok:lombok:1.18.34'
|
||||||
annotationProcessor 'org.projectlombok:lombok:1.18.22'
|
annotationProcessor 'org.projectlombok:lombok:1.18.34'
|
||||||
|
|
||||||
compileOnly project(":CommonCore")
|
compileOnly project(":CommonCore")
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,8 @@ public class Core extends JavaPlugin{
|
|||||||
|
|
||||||
public static final Message MESSAGE = new Message("SpigotCore", Core.class.getClassLoader());
|
public static final Message MESSAGE = new Message("SpigotCore", Core.class.getClassLoader());
|
||||||
|
|
||||||
private static final int VERSION = Integer.parseInt(Bukkit.getServer().getClass().getPackage().getName().split("_", 3)[1]);
|
private static final String[] version = Bukkit.getServer().getBukkitVersion().split("-")[0].split("\\.");
|
||||||
|
private static final int VERSION = Integer.parseInt(version[1]);
|
||||||
|
|
||||||
public static int getVersion(){
|
public static int getVersion(){
|
||||||
return VERSION;
|
return VERSION;
|
||||||
|
@ -19,99 +19,25 @@
|
|||||||
|
|
||||||
package de.steamwar.scoreboard;
|
package de.steamwar.scoreboard;
|
||||||
|
|
||||||
import com.comphenix.tinyprotocol.Reflection;
|
|
||||||
import com.comphenix.tinyprotocol.TinyProtocol;
|
|
||||||
import de.steamwar.core.Core;
|
import de.steamwar.core.Core;
|
||||||
import de.steamwar.core.FlatteningWrapper;
|
import de.steamwar.core.VersionDependent;
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class SWScoreboard {
|
public class SWScoreboard {
|
||||||
private SWScoreboard() {}
|
private SWScoreboard() {}
|
||||||
|
|
||||||
private static final Reflection.FieldAccessor<String> scoreboardName = Reflection.getField(FlatteningWrapper.scoreboardObjective, String.class, 0);
|
private static final ISWScoreboard impl = VersionDependent.getVersionImpl(Core.getInstance());
|
||||||
private static final Reflection.FieldAccessor<Integer> scoreboardAction = Reflection.getField(FlatteningWrapper.scoreboardObjective, int.class, Core.getVersion() > 15 ? 3 : 0);
|
|
||||||
private static final Class<?> scoreboardDisplayEnum = Reflection.getClass("{nms.world.scores.criteria}.IScoreboardCriteria$EnumScoreboardHealthDisplay");
|
|
||||||
private static final Reflection.FieldAccessor<?> scoreboardDisplayType = Reflection.getField(FlatteningWrapper.scoreboardObjective, scoreboardDisplayEnum, 0);
|
|
||||||
private static final Object displayTypeIntegers = scoreboardDisplayEnum.getEnumConstants()[0];
|
|
||||||
|
|
||||||
private static final Reflection.FieldAccessor<String> scoreName = Reflection.getField(FlatteningWrapper.scoreboardScore, String.class, 0);
|
|
||||||
private static final Reflection.FieldAccessor<String> scoreScoreboardName = Reflection.getField(FlatteningWrapper.scoreboardScore, String.class, 1);
|
|
||||||
private static final Reflection.FieldAccessor<Integer> scoreValue = Reflection.getField(FlatteningWrapper.scoreboardScore, int.class, 0);
|
|
||||||
|
|
||||||
private static final HashMap<Player, ScoreboardCallback> playerBoards = new HashMap<>(); //Object -> Scoreboard | Alle Versionen in der Map!
|
|
||||||
private static int toggle = 0; // Scoreboard 0 updates while scoreboard 1 is presenting. toggle marks the current active scoreboard
|
|
||||||
|
|
||||||
private static final String SIDEBAR = "Sidebar";
|
|
||||||
private static final Object[] DELETE_SCOREBOARD = new Object[2];
|
|
||||||
private static final Object[] DISPLAY_SIDEBAR = new Object[2];
|
|
||||||
|
|
||||||
static {
|
|
||||||
Class<?> scoreboardDisplayObjective = Reflection.getClass("{nms.network.protocol.game}.PacketPlayOutScoreboardDisplayObjective");
|
|
||||||
Reflection.FieldAccessor<String> scoreboardDisplayName = Reflection.getField(scoreboardDisplayObjective, String.class, 0);
|
|
||||||
Reflection.FieldAccessor<Integer> scoreboardDisplaySlot = Reflection.getField(scoreboardDisplayObjective, int.class, 0);
|
|
||||||
for(int id = 0; id < 2; id++) {
|
|
||||||
DELETE_SCOREBOARD[id] = Reflection.newInstance(FlatteningWrapper.scoreboardObjective);
|
|
||||||
scoreboardName.set(DELETE_SCOREBOARD[id], SIDEBAR + id);
|
|
||||||
scoreboardAction.set(DELETE_SCOREBOARD[id], 1); //1 to remove
|
|
||||||
|
|
||||||
DISPLAY_SIDEBAR[id] = Reflection.newInstance(scoreboardDisplayObjective);
|
|
||||||
scoreboardDisplayName.set(DISPLAY_SIDEBAR[id], SIDEBAR + id);
|
|
||||||
scoreboardDisplaySlot.set(DISPLAY_SIDEBAR[id], 1); // 1 = Sidebar
|
|
||||||
}
|
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskTimer(Core.getInstance(), () -> {
|
|
||||||
toggle ^= 1; // Toggle between 0 and 1
|
|
||||||
|
|
||||||
for(Map.Entry<Player, ScoreboardCallback> scoreboard : playerBoards.entrySet()) {
|
|
||||||
Player player = scoreboard.getKey();
|
|
||||||
ScoreboardCallback callback = scoreboard.getValue();
|
|
||||||
|
|
||||||
TinyProtocol.instance.sendPacket(player, DELETE_SCOREBOARD[toggle]);
|
|
||||||
TinyProtocol.instance.sendPacket(player, createSidebarPacket(callback.getTitle()));
|
|
||||||
for(Map.Entry<String, Integer> score : callback.getData().entrySet()){
|
|
||||||
TinyProtocol.instance.sendPacket(player, createScorePacket(score.getKey(), score.getValue()));
|
|
||||||
}
|
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskLater(Core.getInstance(), () -> {
|
|
||||||
if(!player.isOnline())
|
|
||||||
return;
|
|
||||||
TinyProtocol.instance.sendPacket(player, DISPLAY_SIDEBAR[toggle]);
|
|
||||||
}, 2);
|
|
||||||
}
|
|
||||||
}, 10, 5);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean createScoreboard(Player player, ScoreboardCallback callback) {
|
public static boolean createScoreboard(Player player, ScoreboardCallback callback) {
|
||||||
playerBoards.put(player, callback);
|
return impl.createScoreboard(player, callback);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void removeScoreboard(Player player) {
|
public static void removeScoreboard(Player player) {
|
||||||
if(playerBoards.remove(player) == null || !player.isOnline())
|
impl.removeScoreboard(player);
|
||||||
return;
|
|
||||||
|
|
||||||
TinyProtocol.instance.sendPacket(player, DELETE_SCOREBOARD[toggle]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Object createSidebarPacket(String name){
|
public interface ISWScoreboard {
|
||||||
Object packet = Reflection.newInstance(FlatteningWrapper.scoreboardObjective);
|
boolean createScoreboard(Player player, ScoreboardCallback callback);
|
||||||
scoreboardName.set(packet, SIDEBAR + toggle);
|
void removeScoreboard(Player player);
|
||||||
scoreboardAction.set(packet, 0); //0 to create
|
|
||||||
FlatteningWrapper.impl.setScoreboardTitle(packet, name);
|
|
||||||
scoreboardDisplayType.set(packet, displayTypeIntegers);
|
|
||||||
return packet;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Object createScorePacket(String name, int value){
|
|
||||||
Object packet = Reflection.newInstance(FlatteningWrapper.scoreboardScore);
|
|
||||||
scoreName.set(packet, name);
|
|
||||||
scoreScoreboardName.set(packet, SIDEBAR + toggle);
|
|
||||||
scoreValue.set(packet, value);
|
|
||||||
FlatteningWrapper.impl.setScoreAction(packet);
|
|
||||||
return packet;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
21
build.gradle
21
build.gradle
@ -28,7 +28,7 @@ plugins {
|
|||||||
id 'base'
|
id 'base'
|
||||||
id 'application'
|
id 'application'
|
||||||
|
|
||||||
id 'com.github.johnrengelman.shadow' version '5.0.0'
|
id 'com.github.johnrengelman.shadow' version '8.0.0'
|
||||||
id 'de.steamwar.gradle' version 'RELEASE'
|
id 'de.steamwar.gradle' version 'RELEASE'
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,11 +37,6 @@ version ''
|
|||||||
|
|
||||||
compileJava.options.encoding = 'UTF-8'
|
compileJava.options.encoding = 'UTF-8'
|
||||||
|
|
||||||
sourceCompatibility = 1.8
|
|
||||||
targetCompatibility = 1.8
|
|
||||||
|
|
||||||
mainClassName = ''
|
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
@ -70,6 +65,10 @@ allprojects {
|
|||||||
includeGroup('com.viaversion')
|
includeGroup('com.viaversion')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maven {
|
||||||
|
url = uri("https://repo.papermc.io/repository/maven-public/")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,6 +83,7 @@ dependencies {
|
|||||||
implementation project(":SpigotCore_18")
|
implementation project(":SpigotCore_18")
|
||||||
implementation project(":SpigotCore_19")
|
implementation project(":SpigotCore_19")
|
||||||
implementation project(":SpigotCore_20")
|
implementation project(":SpigotCore_20")
|
||||||
|
implementation project(":SpigotCore_21")
|
||||||
|
|
||||||
implementation project(":CommonCore")
|
implementation project(":CommonCore")
|
||||||
}
|
}
|
||||||
@ -91,3 +91,12 @@ dependencies {
|
|||||||
steamwar {
|
steamwar {
|
||||||
publishing = true
|
publishing = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
java {
|
||||||
|
targetCompatibility = JavaVersion.VERSION_21
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
}
|
||||||
|
|
||||||
|
shadowJar {
|
||||||
|
mainClassName = ''
|
||||||
|
}
|
||||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,5 @@
|
|||||||
#Wed May 05 10:45:33 CEST 2021
|
#Wed May 05 10:45:33 CEST 2021
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.1-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
@ -29,6 +29,7 @@ pluginManagement {
|
|||||||
rootProject.name = 'SpigotCore'
|
rootProject.name = 'SpigotCore'
|
||||||
|
|
||||||
include 'SpigotCore_Main'
|
include 'SpigotCore_Main'
|
||||||
|
include 'SpigotCore_21'
|
||||||
include 'SpigotCore_20'
|
include 'SpigotCore_20'
|
||||||
include 'SpigotCore_19'
|
include 'SpigotCore_19'
|
||||||
include 'SpigotCore_18'
|
include 'SpigotCore_18'
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren