diff --git a/Core.iml b/Core.iml index dff817f..07cf8c4 100644 --- a/Core.iml +++ b/Core.iml @@ -16,7 +16,7 @@ - + @@ -25,11 +25,23 @@ - + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index b12116c..9c1b146 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,6 @@ org.apache.maven.plugins maven-compiler-plugin - 3.5.1 1.8 1.8 @@ -50,13 +49,15 @@ - - spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + inventive-repo + https://repo.inventivetalent.org/content/groups/public/ + @@ -68,12 +69,12 @@ org.mongodb mongodb-driver-async - 3.2.2 + LATEST io.netty netty-all - 4.0.31.Final + LATEST org.projectlombok @@ -98,6 +99,11 @@ 1.9.2-R0.1-SNAPSHOT provided + + org.inventivetalent.npclib + api + RELEASE + \ No newline at end of file diff --git a/src/eu/univento/core/api/map/CustomPlayerHead.java b/src/eu/univento/core/api/map/CustomPlayerHead.java deleted file mode 100644 index b6a8714..0000000 --- a/src/eu/univento/core/api/map/CustomPlayerHead.java +++ /dev/null @@ -1,8 +0,0 @@ -package eu.univento.core.api.map; - -/** - * @author joethei - * @version 0.1 - */ -public class CustomPlayerHead { -} diff --git a/src/main/java/eu/univento/core/Core.java b/src/main/java/eu/univento/core/Core.java index 2f53d90..bd71458 100644 --- a/src/main/java/eu/univento/core/Core.java +++ b/src/main/java/eu/univento/core/Core.java @@ -103,10 +103,6 @@ public class Core extends JavaPlugin{ new Stats(this, "stats", "statistics"); new Nick(this, "nick", "nick"); } - if(!ServerSettings.isBuild()) { - new Build(this, "build", "build", "b"); - pm.registerEvents(new Blocks(), this); - } AntiHack.registerListeners(); new RunAs(this, "RunAs", "runas"); @@ -120,9 +116,13 @@ public class Core extends JavaPlugin{ new ChatClear(this, "chatclear", "chatclear", "cc"); log(Level.INFO, "registered all commands"); - + + PluginMessenger pluginMessenger = new PluginMessenger(); Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); Bukkit.getMessenger().registerOutgoingPluginChannel(this, "LABYMOD"); + Bukkit.getMessenger().registerIncomingPluginChannel(this, "WDL|INIT", pluginMessenger); + Bukkit.getMessenger().registerOutgoingPluginChannel(this, "WDL|CONTROL"); + Bukkit.getMessenger().registerIncomingPluginChannel(this, "PERMISSIONSREPL", pluginMessenger); Blackscreen.setupUtil(getInstance()); mongoDB = new MongoDB(Config.readString("MongoDB.Host"), Config.readInt("MongoDB.Port"), Config.readString("MongoDB.User"), Config.readString("MongoDB.Password"), Config.readString("MongoDB.Database")); @@ -133,6 +133,11 @@ public class Core extends JavaPlugin{ @Override public void onDisable() { mongoDB.getClient().close(); + Bukkit.getMessenger().unregisterOutgoingPluginChannel(this, "BungeeCord"); + Bukkit.getMessenger().unregisterOutgoingPluginChannel(this, "LABYMOD"); + Bukkit.getMessenger().unregisterIncomingPluginChannel(this, "WDL_INIT"); + Bukkit.getMessenger().unregisterOutgoingPluginChannel(this, "WDL|CONTROL"); + log(Level.INFO, "Plugin stoped"); } diff --git a/src/main/java/eu/univento/core/antihack/AntiHack.java b/src/main/java/eu/univento/core/antihack/AntiHack.java index 71b0fd8..e4dcf69 100644 --- a/src/main/java/eu/univento/core/antihack/AntiHack.java +++ b/src/main/java/eu/univento/core/antihack/AntiHack.java @@ -29,7 +29,7 @@ public class AntiHack implements Listener{ pm.registerEvents(new Regen(), Core.getInstance()); pm.registerEvents(new AutoRespawn(), Core.getInstance()); pm.registerEvents(new FastPlace(), Core.getInstance()); - pm.registerEvents(new KillAura(), Core.getInstance()); + //pm.registerEvents(new KillAura(), Core.getInstance()); for(Map.Entry entry : AutoClicker.clicks.entrySet()) { if(entry.getValue() > 16) { diff --git a/src/main/java/eu/univento/core/antihack/Hack.java b/src/main/java/eu/univento/core/antihack/Hack.java index 6ba5a08..9aac7b0 100644 --- a/src/main/java/eu/univento/core/antihack/Hack.java +++ b/src/main/java/eu/univento/core/antihack/Hack.java @@ -11,7 +11,8 @@ public enum Hack { AUTORESPAWN(10), FASTPLACE(10), KILLAURA(10), - FLY(10); + FLY(10), + WDL(10); private int id; private Hack(int id) { diff --git a/src/main/java/eu/univento/core/antihack/modules/Reach.java b/src/main/java/eu/univento/core/antihack/modules/Reach.java index 83b748a..1172837 100644 --- a/src/main/java/eu/univento/core/antihack/modules/Reach.java +++ b/src/main/java/eu/univento/core/antihack/modules/Reach.java @@ -26,9 +26,10 @@ public class Reach implements Listener{ } @EventHandler - public void onBlockBreak(BlockBreakEvent e ) { + public void onBlockBreak(BlockBreakEvent e) { CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); Block b = e.getBlock(); + if(p.getWorld() != b.getWorld()) return; if(p.getLocation().distance(b.getLocation()) > 6.1) { e.setCancelled(true); CloudMessenger.sendHackMessage(Hack.REACH, p); diff --git a/src/main/java/eu/univento/core/api/languages/Language.java b/src/main/java/eu/univento/core/api/languages/Language.java new file mode 100644 index 0000000..ba75c0c --- /dev/null +++ b/src/main/java/eu/univento/core/api/languages/Language.java @@ -0,0 +1,25 @@ +package eu.univento.core.api.languages; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.ResourceBundle; + +public class Language { + + + private Map languages; + private ResourceBundle translation; + + public Language(String language) { + languages = new HashMap<>(); + languages.put("DE", Locale.GERMAN); + languages.put("EN", Locale.ENGLISH); + languages.put("IT", Locale.ITALY); + translation = ResourceBundle.getBundle("language", languages.get(language)); + } + + public String getWord(String keyword) { + return translation.getString(keyword); + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/languages/Language_DE.java b/src/main/java/eu/univento/core/api/languages/Language_DE.java index e715542..0f332d9 100644 --- a/src/main/java/eu/univento/core/api/languages/Language_DE.java +++ b/src/main/java/eu/univento/core/api/languages/Language_DE.java @@ -8,7 +8,7 @@ import eu.univento.core.api.player.Ranks; * @version 1.0 */ -public class Language_DE implements Languages{ +class Language_DE implements Languages{ @Override public String UNKNOWN_ERROR() { diff --git a/src/main/java/eu/univento/core/api/player/BetterPvP.java b/src/main/java/eu/univento/core/api/player/BetterPvP.java new file mode 100644 index 0000000..1ed9bda --- /dev/null +++ b/src/main/java/eu/univento/core/api/player/BetterPvP.java @@ -0,0 +1,97 @@ +package eu.univento.core.api.player; + +public class BetterPvP { + + public BetterPvP() { + } + + private boolean minimap = false; + private boolean armourStatus = true; + private boolean potionStatus = true; + private boolean archeryStatus = true; + private boolean notifications = true; + private boolean xpDrops = true; + private boolean betterSprint = true; + private boolean toggleSneak = true; + private boolean quickItemUse = true; + private boolean armourStatusShowEnchants = true; + private boolean minimapDisplayPlayers = false; + private boolean minimapDisplayMobs =false; + private boolean minimapDisplayItems = false; + private boolean minimapDisplayOther = false; + private boolean caveMaps = false; + private boolean minimapDisplayOtherTeam = false; + private boolean minimapDisplayWaypoints = false; + private boolean notificationHunger = true; + private boolean notificationHp = false; + private boolean notificationTnt = false; + private boolean notificationArrow = false; + private boolean deathpoints = true; + private boolean notificationAir = true; + private boolean entityInfo = true; + + private int minimapMask = 1; + private int armourStatusMask = 2; + private int potionStatusMask = 4; + private int archeryStatusMask = 8; + private int notificationsMask = 16; + private int xpDropsMask = 32; + private int betterSprintMask = 64; + private int toggleSneakMask = 128; + private int quickItemUseMask = 256; + private int armourStatusShowEnchantsMask = 512; + private int minimapDisplayPlayersMask = 1024; + private int minimapDisplayMobsMask = 2048; + private int minimapDisplayItemsMask = 4096; + private int minimapDisplayOtherMask = 8192; + private int caveMapsMask = 16384; + private int minimapDisplayOtherTeamMask = 32768; + private int minimapDisplayWaypointsMask = 65536; + private int notificationHungerMask = 131072; + private int notificationHpMask = 262144; + private int notificationTntMask = 524288; + private int notificationArrowMask = 1048576; + private int deathpointsMask = 2097152; + private int notificationAirMask = 4194304; + private int entityInfoMask = 8388608; + + public String getCodeString() { + String toReturn = "§c §r§5 §r§1 §r§f"; + String code = String.valueOf(getCodeToSend()); + int size = code.length(); + for (int i = 0; i < size; i++) + toReturn = toReturn + " " + "§r§" + code.substring(i, i + 1); + toReturn = toReturn + " "; + + return toReturn; + } + + private int getCodeToSend() { + int code = 0; + code |= (minimap ? minimapMask : 0); + code |= (armourStatus ? armourStatusMask : 0); + code |= (potionStatus ? potionStatusMask : 0); + code |= (archeryStatus ? archeryStatusMask : 0); + code |= (notifications ? notificationsMask : 0); + code |= (xpDrops ? xpDropsMask : 0); + code |= (betterSprint ? betterSprintMask : 0); + code |= (toggleSneak ? toggleSneakMask : 0); + code |= (quickItemUse ? quickItemUseMask : 0); + code |= (armourStatusShowEnchants ? armourStatusShowEnchantsMask : 0); + code |= (minimapDisplayPlayers ? minimapDisplayPlayersMask : 0); + code |= (minimapDisplayMobs ? minimapDisplayMobsMask : 0); + code |= (minimapDisplayItems ? minimapDisplayItemsMask : 0); + code |= (minimapDisplayOther ? minimapDisplayOtherMask : 0); + code |= (caveMaps ? caveMapsMask : 0); + code |= (minimapDisplayOtherTeam ? minimapDisplayOtherTeamMask : 0); + code |= (minimapDisplayWaypoints ? minimapDisplayWaypointsMask : 0); + code |= (notificationHunger ? notificationHungerMask : 0); + code |= (notificationHp ? notificationHpMask : 0); + code |= (notificationTnt ? notificationTntMask : 0); + code |= (notificationArrow ? notificationArrowMask : 0); + code |= (deathpoints ? deathpointsMask : 0); + code |= (notificationAir ? notificationAirMask : 0); + code |= (entityInfo ? entityInfoMask : 0); + return code; + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/CustomPlayer.java b/src/main/java/eu/univento/core/api/player/CustomPlayer.java index 427941f..e745670 100644 --- a/src/main/java/eu/univento/core/api/player/CustomPlayer.java +++ b/src/main/java/eu/univento/core/api/player/CustomPlayer.java @@ -10,17 +10,16 @@ import eu.univento.core.api.Actionbar; import eu.univento.core.api.Utils; import eu.univento.core.api.database.MongoDB; import eu.univento.core.api.effects.Effects; +import eu.univento.core.api.languages.Language; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.server.Game; +import eu.univento.core.api.server.ServerSettings; import eu.univento.core.api.server.Servers; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import net.minecraft.server.v1_9_R1.*; import org.bson.Document; -import org.bukkit.Bukkit; -import org.bukkit.Color; -import org.bukkit.Location; -import org.bukkit.Sound; +import org.bukkit.*; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeInstance; import org.bukkit.attribute.AttributeModifier; @@ -33,6 +32,7 @@ import org.bukkit.scoreboard.Team; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; +import java.lang.reflect.Field; import java.util.*; public class CustomPlayer extends CraftPlayer { @@ -40,23 +40,26 @@ public class CustomPlayer extends CraftPlayer { private static final HashMap PLAYERS = new HashMap<>(); private final Player PLAYER; + private String customPrefix; private String customSuffix; private String customColor; - + private String nickname; private boolean openInventory; - private MongoDB mongoDB = Core.getMongoDB(); - private MongoCollection userCollection; + private MongoCollection playerCollection; private MongoCollection friendCollection; + private MongoCollection onlinePlayerCollection; private CustomPlayer(Player player) { super((CraftServer) Bukkit.getServer(), ((CraftPlayer) player).getHandle()); PLAYERS.put(player.getName().toLowerCase(), this); PLAYER = player; - userCollection = mongoDB.getDatabase().getCollection("users"); + MongoDB mongoDB = Core.getMongoDB(); + playerCollection = mongoDB.getDatabase().getCollection("players"); friendCollection = mongoDB.getDatabase().getCollection("friends"); + onlinePlayerCollection = mongoDB.getDatabase().getCollection("online-players"); } public void onLeave() { @@ -70,7 +73,9 @@ public class CustomPlayer extends CraftPlayer { location.put("Yaw", getLocation().getYaw()); location.put("Pitch", getLocation().getPitch()); - if(Bukkit.getServerName().contains("Lobby")) setInDatabase("Pos", new BasicDBObject(location)); + if(ServerSettings.isLobby()) setInDatabase("Pos", new BasicDBObject(location)); + + onlinePlayerCollection.deleteOne(new Document("uuid", getUniqueId().toString())); if (PLAYERS.containsKey(getName().toLowerCase())) PLAYERS.remove(getName().toLowerCase()); } @@ -119,9 +124,12 @@ public class CustomPlayer extends CraftPlayer { settings.put("friendRequests", true); settings.put("friendJump", true); settings.put("chatSounds", true); + settings.put("tsMove", false); + settings.put("scoreboard", true); settings.put("effects", true); settings.put("storyMode", true); - settings.put("language", "EN"); + settings.put("nicked", false); + settings.put("language", "DE"); doc.put("Settings", new BasicDBObject(settings)); @@ -133,12 +141,12 @@ public class CustomPlayer extends CraftPlayer { location.put("Pitch", getLocation().getPitch()); doc.put("Pos", new BasicDBObject(location)); - userCollection.insertOne(doc); + playerCollection.insertOne(doc); } @Override public boolean hasPlayedBefore() { - FindIterable cursor = userCollection.find(new Document("uuid", getUniqueId().toString())); + FindIterable cursor = playerCollection.find(new Document("uuid", getUniqueId().toString())); cursor.cursorType(CursorType.NonTailable); Object obj = cursor.first(); @@ -148,9 +156,17 @@ public class CustomPlayer extends CraftPlayer { } public void updateDatabaseEntry() { + setInDatabase("lastName", getName()); setInDatabase("lastLogin", new Date()); setInDatabase("lastIP", getAddress().getHostName()); setInDatabase("timesJoined", getTimesJoined() + 1); + + Document doc = new Document("uuid", getUniqueId().toString()); + + doc.put("name", getName()); + doc.put("server", getServer().getServerName()); + + onlinePlayerCollection.insertOne(doc); } public void setRank(Ranks rank) { @@ -296,6 +312,14 @@ public class CustomPlayer extends CraftPlayer { return (String) getSettings().get("language"); } + public boolean hasTsMove() { + return (boolean) getSettings().get("tsMove"); + } + + public boolean hasScoreboard() { + return (boolean) getSettings().get("scoreboard"); + } + public void setPlayerVisibility(String visibility) { setSetting("playerVisibility", visibility); } @@ -336,8 +360,12 @@ public class CustomPlayer extends CraftPlayer { setSetting("language", language); } - public boolean isJoined() { - return true; + public void setTsMove(boolean tsMove) { + setSetting("tsMove", tsMove); + } + + public void setScoreboard(boolean scoreboard) { + setSetting("scoreboard", scoreboard); } public void connectToServer(String server) { @@ -348,6 +376,7 @@ public class CustomPlayer extends CraftPlayer { return getRank().value >= rank.value; } + public ArrayList getFriends() { FindIterable cursor = friendCollection.find(new Document("uuid", getUniqueId().toString())); cursor.cursorType(CursorType.NonTailable); @@ -376,49 +405,6 @@ public class CustomPlayer extends CraftPlayer { //TODO: add actual function } - - - /** - public boolean isAllowed(Ranks.Ranks rank) { - try { - return Ranks.isAllowed(this, rank); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - return false; - } - } - - /** - - public Ranks.Ranks getRank() { - try { - return Ranks.getRank(this); - } catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - return Ranks.Ranks.Player; - } - } - - public Ranks.Ranks getFreshRank() { - try{ - return Ranks.getRankFresh(this); - }catch (ClassNotFoundException | SQLException e) { - e.printStackTrace(); - return Ranks.Ranks.Player; - } - } - - public void setRank(Ranks.Ranks r) { - try { - Ranks.setRank(this, r); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } catch (SQLException e) { - e.printStackTrace(); - } - } - - */ public String getPrefix() { if(customPrefix != null) return customPrefix; if(isNicked()) return getPrefix(Ranks.Premium); @@ -440,19 +426,6 @@ public class CustomPlayer extends CraftPlayer { public Team getTeam() { if(isNicked()) return getTeam(Ranks.Premium); return getTeam(getRank()); - } - - //TODO: add function back in - public boolean isNicked() { - return false; - } - - public boolean isNickedReal() { - return false; - } - - public void setNicked(boolean nick) { - } public Color getArmorColor() { @@ -544,16 +517,54 @@ public class CustomPlayer extends CraftPlayer { return new Messages(this); } + public String getMessage(String message) { + Language lang = new Language(getLanguage()); + return lang.getWord(message); + } + public Statistics getStatistics(Game game) { return new Statistics(this, game); } + public boolean isNicked() { + return (boolean) getSettings().get("nicked"); + } + + public void setNicked(boolean nicked) { + setSetting("nicked", nicked); + } + + public void removeNick() { + //NickNamerAPI.getNickManager().removeNick(getUniqueId()); + //NickNamerAPI.getNickManager().removeSkin(getUniqueId()); + //NickNamerAPI.getNickManager().refreshPlayer(this); + } + + public String getNick() { + if(nickname != null) return nickname; + return ""; + } + + public void setNick(String name) { + //NickNamerAPI.getNickManager().setNick(getUniqueId(), name); + //NickNamerAPI.getNickManager().setSkin(getUniqueId(), "md_5"); + //NickNamerAPI.getNickManager().refreshPlayer(this); + } + + @Override + public boolean isOnline() { + FindIterable cursor = onlinePlayerCollection.find(new Document("uuid", getUniqueId().toString())); + cursor.cursorType(CursorType.NonTailable); + Document doc = cursor.first(); + return doc != null; + } + private void setInDatabase(String name, Object obj) { - userCollection.updateOne(new Document("uuid", getUniqueId().toString()), new Document("$set", new Document(name, obj))); + playerCollection.updateOne(new Document("uuid", getUniqueId().toString()), new Document("$set", new Document(name, obj))); } private Object getObjectFromDatbase(String name) { - FindIterable cursor = userCollection.find(new Document("uuid", getUniqueId().toString())); + FindIterable cursor = playerCollection.find(new Document("uuid", getUniqueId().toString())); cursor.cursorType(CursorType.NonTailable); Document doc = cursor.first(); @@ -563,7 +574,7 @@ public class CustomPlayer extends CraftPlayer { } private int getIntegerFromDatabase(String name) { - FindIterable cursor = userCollection.find(new Document("uuid", getUniqueId().toString())); + FindIterable cursor = playerCollection.find(new Document("uuid", getUniqueId().toString())); cursor.cursorType(CursorType.NonTailable); Document doc = cursor.first(); @@ -573,7 +584,7 @@ public class CustomPlayer extends CraftPlayer { } private String getStringFromDatabase(String name) { - FindIterable cursor = userCollection.find(new Document("uuid", getUniqueId().toString())); + FindIterable cursor = playerCollection.find(new Document("uuid", getUniqueId().toString())); cursor.cursorType(CursorType.NonTailable); Document doc = cursor.first(); @@ -583,7 +594,7 @@ public class CustomPlayer extends CraftPlayer { } private Date getDateFromDatabase(String name) { - FindIterable cursor = userCollection.find(new Document("uuid", getUniqueId().toString())); + FindIterable cursor = playerCollection.find(new Document("uuid", getUniqueId().toString())); cursor.cursorType(CursorType.NonTailable); Document doc = cursor.first(); @@ -620,7 +631,7 @@ public class CustomPlayer extends CraftPlayer { private String getSuffix(Ranks r) { switch(r) { case Admin: return "§8 Ȥ7 "; - case SrDeveloper: return "§8 Ȥ7"; + case SrDeveloper: return "§8 Ȥ7 "; case Developer: return "§8 Ȥ7 "; case SrModerator: return "§8 Ȥ7 "; case HeadBuilder: return "§8 Ȥ7 "; @@ -726,9 +737,9 @@ public class CustomPlayer extends CraftPlayer { } - public void setLabyModFeatures(HashMap list) { + public void setLabyModFeatures(HashMap list) { HashMap temp = new HashMap<>(); - for(LabyModFeature feature : list.keySet()) { + for(LabyMod feature : list.keySet()) { temp.put(feature.name(), list.get(feature)); } ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); @@ -746,28 +757,26 @@ public class CustomPlayer extends CraftPlayer { } - public enum LabyModFeature{ - FOOD("FOOD", 0), - GUI("GUI", 1), - NICK("NICK", 2), - BLOCKBUILD("BLOCKBUILD", 3), - CHAT("CHAT", 4), - EXTRAS("EXTRAS", 5), - ANIMATIONS("ANIMATIONS", 6), - POTIONS("POTIONS", 7), - ARMOR("ARMOR", 8), - DAMAGEINDICATOR("DAMAGEINDICATOR", 9), - MINIMAP_RADAR("MINIMAP_RADAR", 10); - - private LabyModFeature(String s, int n) { - - } - } - public void crashClient() { getHandle().playerConnection.sendPacket(new PacketPlayOutExplosion(9999999999D, 9999999999D, 9999999999D, 9999999999F, new ArrayList<>(), new Vec3D(9999999999D, 9999999999D, 9999999999D))); } + + public void sendPacket(Packet packet) { + getHandle().playerConnection.sendPacket(packet); + } + + private Field getField(Class clazz, String name) { + try { + Field field = clazz.getDeclaredField(name); + field.setAccessible(true); + return field; + } catch (Exception ex) { + ex.printStackTrace(); + } + return null; + } + } \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/LabyMod.java b/src/main/java/eu/univento/core/api/player/LabyMod.java new file mode 100644 index 0000000..db12616 --- /dev/null +++ b/src/main/java/eu/univento/core/api/player/LabyMod.java @@ -0,0 +1,19 @@ +package eu.univento.core.api.player; + +public enum LabyMod { + FOOD("FOOD", 0), + GUI("GUI", 1), + NICK("NICK", 2), + BLOCKBUILD("BLOCKBUILD", 3), + CHAT("CHAT", 4), + EXTRAS("EXTRAS", 5), + ANIMATIONS("ANIMATIONS", 6), + POTIONS("POTIONS", 7), + ARMOR("ARMOR", 8), + DAMAGEINDICATOR("DAMAGEINDICATOR", 9), + MINIMAP_RADAR("MINIMAP_RADAR", 10); + + LabyMod(String s, int n) { + + } +} \ No newline at end of file diff --git a/src/main/java/eu/univento/core/api/player/NickName.java b/src/main/java/eu/univento/core/api/player/NickName.java index fd4f966..5c52453 100644 --- a/src/main/java/eu/univento/core/api/player/NickName.java +++ b/src/main/java/eu/univento/core/api/player/NickName.java @@ -1,7 +1,6 @@ package eu.univento.core.api.player; import com.mojang.authlib.GameProfile; -import com.mojang.authlib.properties.Property; import eu.univento.core.Core; import eu.univento.core.api.database.MySQL; import net.minecraft.server.v1_9_R1.Packet; @@ -95,7 +94,7 @@ public class NickName { * gets random Nickname * @return String */ - private static String getRandomNick() { + public static String getRandomNick() { ArrayList names = new ArrayList<>(); names.add("GommeHD"); names.add("Notch"); @@ -146,25 +145,6 @@ public class NickName { return names.get(i); } - static void changeSkin(CustomPlayer p, String name) { - Skin skin = new Skin(Bukkit.getOfflinePlayer(name).getUniqueId().toString().replace("_", "")); - if(skin.getName() != null) { - GameProfile profile = p.getProfile(); - profile.getProperties().clear(); - profile.getProperties().put(skin.getName(), new Property(skin.getName(), skin.getValue(), skin.getSignature())); - Bukkit.getScheduler().runTaskLater(Core.getInstance(), () -> { - for(Player players : Bukkit.getOnlinePlayers()) { - players.hidePlayer(p); - } - }, 1L); - Bukkit.getScheduler().runTaskLater(Core.getInstance(), () -> { - for(Player players : Bukkit.getOnlinePlayers()) { - players.showPlayer(p); - } - }, 1L); - } - } - static void setName(CustomPlayer p, String name) { p.setDisplayName(name); try { diff --git a/src/main/java/eu/univento/core/api/player/Skin.java b/src/main/java/eu/univento/core/api/player/Skin.java deleted file mode 100644 index 12324b1..0000000 --- a/src/main/java/eu/univento/core/api/player/Skin.java +++ /dev/null @@ -1,73 +0,0 @@ -package eu.univento.core.api.player; - -import eu.univento.core.Core; -import org.json.simple.JSONArray; -import org.json.simple.JSONObject; -import org.json.simple.parser.JSONParser; - -import java.net.URL; -import java.net.URLConnection; -import java.util.Scanner; -import java.util.logging.Level; - -/** - * @author joethei - * @version 1.0 - */ - -public class Skin { - - String uuid; - String name; - String value; - String signature; - - public Skin(final String uuid) { - this.uuid = uuid; - this.load(); - } - - private void load() { - try { - URL url = new URL("https://sessionserver.mojang.com/session/minecraft/profile/" + this.uuid + "?unsigned=false"); - URLConnection uc = url.openConnection(); - uc.setUseCaches(false); - uc.setDefaultUseCaches(false); - uc.addRequestProperty("User-Agent", "Mozilla/5.0"); - uc.addRequestProperty("Cache-Control", "no-cache, no-store, must-revalidate"); - uc.addRequestProperty("Pragma", "no-cache"); - String json = new Scanner(uc.getInputStream(), "UTF-8").useDelimiter("\\A").next(); - JSONParser parser = new JSONParser(); - Object obj = parser.parse(json); - JSONArray properties = (JSONArray)((JSONObject)obj).get("properties"); - for (int i = 0; i < properties.size(); ++i) { - try { - JSONObject property = (JSONObject)properties.get(i); - String name = (String)property.get("name"); - String value = (String)property.get("value"); - String signature = property.containsKey("signature") ? ((String)property.get("signature")) : null; - this.name = name; - this.value = value; - this.signature = signature; - } - catch (Exception e) { - Core.log(Level.WARNING, "Failed to apply auth property"); - e.printStackTrace(); - } - } - } - catch (Exception ex) {} - } - - public String getValue() { - return this.value; - } - - public String getName() { - return this.name; - } - - public String getSignature() { - return this.signature; - } -} diff --git a/src/main/java/eu/univento/core/api/player/Spectator.java b/src/main/java/eu/univento/core/api/player/Spectator.java index 7c28315..6c768d0 100644 --- a/src/main/java/eu/univento/core/api/player/Spectator.java +++ b/src/main/java/eu/univento/core/api/player/Spectator.java @@ -1,7 +1,7 @@ package eu.univento.core.api.player; +import eu.univento.core.Core; import eu.univento.core.api.server.ServerSettings; -import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.entity.Player; @@ -24,7 +24,7 @@ public class Spectator { * @param p CustomPlayer */ public static void add(CustomPlayer p) { - for (Player on : Bukkit.getOnlinePlayers()) { + for (Player on : Core.getOnlinePlayers()) { on.hidePlayer(p); } spectators.add(p); @@ -38,7 +38,7 @@ public class Spectator { * @param p CustomPlayer */ public static void remove(CustomPlayer p) { - for (Player on : Bukkit.getOnlinePlayers()) { + for (Player on : Core.getOnlinePlayers()) { on.showPlayer(p); } spectators.remove(p); diff --git a/src/main/java/eu/univento/core/api/server/ServerSettings.java b/src/main/java/eu/univento/core/api/server/ServerSettings.java index faf0450..9cf13d8 100644 --- a/src/main/java/eu/univento/core/api/server/ServerSettings.java +++ b/src/main/java/eu/univento/core/api/server/ServerSettings.java @@ -1,6 +1,13 @@ package eu.univento.core.api.server; +import eu.univento.core.Core; +import eu.univento.core.commands.Build; +import eu.univento.core.listeners.Blocks; +import org.bukkit.Bukkit; import org.bukkit.GameMode; +import org.bukkit.plugin.PluginManager; + +import java.util.logging.Level; /** * @author joethei @@ -47,6 +54,12 @@ public class ServerSettings { public static void setBuild(boolean build) { ServerSettings.build = build; + if(!build) { + PluginManager pm = Bukkit.getPluginManager(); + new Build(Core.getInstance(), "build", "build", "b"); + pm.registerEvents(new Blocks(), Core.getInstance()); + Core.log(Level.INFO, "Build Modus aktiviert"); + } } public static boolean isLobby() { diff --git a/src/main/java/eu/univento/core/api/utils/reflection/Reflection.java b/src/main/java/eu/univento/core/api/utils/reflection/Reflection.java index 6c4dd1d..c07997e 100644 --- a/src/main/java/eu/univento/core/api/utils/reflection/Reflection.java +++ b/src/main/java/eu/univento/core/api/utils/reflection/Reflection.java @@ -1,141 +1,78 @@ package eu.univento.core.api.utils.reflection; -import org.bukkit.Bukkit; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - -import java.lang.reflect.Constructor; import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -public class Reflection -{ - public static final Class CLASS_CRAFTITEMSTACK = getCraftBukkitClass("inventory.CraftItemStack"); - public static final Method METHOD_ASNMSCOPY = getMethod(CLASS_CRAFTITEMSTACK, "asNMSCopy"); +import org.bukkit.Bukkit; - public static void sendPacket(Player p, Object packet) { - try { - Object nmsPlayer = getNMSPlayer(p); - Object connection = nmsPlayer.getClass() - .getField("playerConnection").get(nmsPlayer); - connection.getClass() - .getMethod("sendPacket", new Class[] { getNMSClass("Packet") }) - .invoke(connection, new Object[] { packet }); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static Field getField(Class clazz, String field) { - Field re = null; - try { - re = clazz.getDeclaredField(field); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } catch (SecurityException e) { - e.printStackTrace(); - } - return re; - } - - public static void sendPacket(Player p, String packetName, Class[] parameterclass, Object[] parameters) { - try { - Object nmsPlayer = getNMSPlayer(p); - Object connection = nmsPlayer.getClass() - .getField("playerConnection").get(nmsPlayer); - Object packet = - Class.forName( - nmsPlayer.getClass().getPackage().getName() + "." + - packetName) - .getConstructor(parameterclass).newInstance(parameters); - connection.getClass() - .getMethod("sendPacket", new Class[] { getNMSClass("Packet") }) - .invoke(connection, new Object[] { packet }); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public static String getVersion() { - String name = Bukkit.getServer().getClass().getPackage().getName(); - String version = name.substring(name.lastIndexOf('.') + 1) + "."; - return version; - } - - public static Class getNMSClass(String className) { - String fullName = "net.minecraft.server." + getVersion() + className; - Class clazz = null; - try { - clazz = Class.forName(fullName); - } catch (Exception e) { - e.printStackTrace(); - } - return clazz; - } - public static Class getCraftBukkitClass(String className) { - String fullName = "org.bukkit.craftbukkit." + getVersion() + className; - Class clazz = null; - try { - clazz = Class.forName(fullName); - } catch (Exception e) { - e.printStackTrace(); - } - return clazz; - } - - public static Object asNMSCopy(ItemStack i) throws IllegalAccessException, InvocationTargetException { - Object re = null; - try - { - METHOD_ASNMSCOPY.invoke(null, new Object[] { i }); - } - catch (java.lang.IllegalArgumentException e) { - e.printStackTrace(); +public class Reflection { + public static String getVersion() { + String name = Bukkit.getServer().getClass().getPackage().getName(); + String version = name.substring(name.lastIndexOf('.') + 1) + "."; + return version; } - return re; - } - - public static Field getField(Field f) { - f.setAccessible(true); - return f; - } - public static Constructor getConstructor(Class clazz, Class[] param) { - Constructor re = null; - try { - re = clazz.getConstructor(param); - } catch (Exception e) { - e.printStackTrace(); - } - return re; - } - public static Object getHandle(Entity entity) { - Object object = null; - try - { - object = getMethod(entity.getClass(), "getHandle").invoke(entity, new Object[0]); - } catch (Exception e) { - e.printStackTrace(); + public static Class getNMSClass(String className) { + String fullName = "net.minecraft.server." + getVersion() + className; + Class clazz = null; + try { + clazz = Class.forName(fullName); + } catch (Exception e) { + e.printStackTrace(); + } + return clazz; } - return object; - } - - public static Object getNMSPlayer(Player player) { - return getHandle(player); - } - - public static Method getMethod(Class c, String methodName) { - Method returnMethod = null; - - for (Method m : c.getDeclaredMethods()) { - if (m.getName().equals(methodName)) { - returnMethod = m; - } + public static Class getOBCClass(String className) { + String fullName = "org.bukkit.craftbukkit." + getVersion() + className; + Class clazz = null; + try { + clazz = Class.forName(fullName); + } catch (Exception e) { + e.printStackTrace(); + } + return clazz; } - return returnMethod; - } + public static Object getHandle(Object obj) { + try { + return getMethod(obj.getClass(), "getHandle", new Class[0]).invoke(obj, new Object[0]); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static Field getField(Class clazz, String name) { + try { + Field field = clazz.getDeclaredField(name); + field.setAccessible(true); + return field; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static Method getMethod(Class clazz, String name, Class[] args) { + for (Method m : clazz.getMethods()) { + if ((m.getName().equals(name)) && ((args.length == 0) || (ClassListEqual(args, m.getParameterTypes())))) { + m.setAccessible(true); + return m; + } + } + return null; + } + + public static boolean ClassListEqual(Class[] l1, Class[] l2) { + boolean equal = true; + if (l1.length != l2.length) return false; + for (int i = 0; i < l1.length; i++) { + if (l1[i] != l2[i]) { + equal = false; + break; + } + } + return equal; + } } \ No newline at end of file diff --git a/src/main/java/eu/univento/core/commands/Nick.java b/src/main/java/eu/univento/core/commands/Nick.java index f6926f2..49a31e3 100644 --- a/src/main/java/eu/univento/core/commands/Nick.java +++ b/src/main/java/eu/univento/core/commands/Nick.java @@ -4,6 +4,7 @@ import eu.univento.core.Core; import eu.univento.core.api.AutoCommand; import eu.univento.core.api.languages.Messages; import eu.univento.core.api.player.CustomPlayer; +import eu.univento.core.api.player.NickName; import eu.univento.core.api.player.Ranks; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -37,17 +38,15 @@ public class Nick extends AutoCommand{ if(p.isNicked()) { p.getTeam().removeEntry(p.getDisplayName()); p.setNicked(false); - p.setDisplayName(p.getName()); p.getTeam().addEntry(p.getDisplayName()); p.sendMessage(msgs.PREFIX() + msgs.Core_NICK_OFF()); - //p.unnick(); + p.removeNick(); }else { p.getTeam().removeEntry(p.getDisplayName()); p.setNicked(true); - //p.setDisplayName(p.getNick()); p.getTeam().addEntry(p.getDisplayName()); p.sendMessage(msgs.PREFIX() + msgs.Core_NICK_ON()); - //p.nick(p.getNick()); + p.setNick(NickName.getRandomNick()); } }else { p.sendMessage(msgs.NO_PERMS()); diff --git a/src/main/java/eu/univento/core/listeners/Events.java b/src/main/java/eu/univento/core/listeners/Events.java index 6afab8a..a9cf524 100644 --- a/src/main/java/eu/univento/core/listeners/Events.java +++ b/src/main/java/eu/univento/core/listeners/Events.java @@ -2,14 +2,11 @@ package eu.univento.core.listeners; import eu.univento.core.api.player.CustomPlayer; import eu.univento.core.api.server.ServerSettings; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryAction; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.server.ServerListPingEvent; -import org.bukkit.inventory.Inventory; /** * some basic events @@ -18,43 +15,16 @@ import org.bukkit.inventory.Inventory; */ public class Events implements Listener{ - @EventHandler - public void onInventoryClose(InventoryCloseEvent e) { - CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer().getName()); - if(e.getInventory().getName().equals(JoinQuit.getLanguageChooser(p).getName())) { - p.openInventory(JoinQuit.getLanguageChooser(p)); - p.sendMessage("§cPlease choose a language"); - return; - } - p.setOpenInventory(false); - } - - @EventHandler(priority = EventPriority.HIGHEST) - public void onInventoryClick(InventoryClickEvent e) { - Inventory inv = e.getInventory(); - if(e.getWhoClicked() instanceof Player) { - CustomPlayer p = CustomPlayer.getPlayer(e.getWhoClicked().getName()); - if(inv.getName().equals(JoinQuit.getLanguageChooser(p).getName())) { - if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§6english")) { - p.setLanguage("EN"); - p.closeInventory(); - } - if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§6Deutsch")) { - p.setLanguage("DE"); - p.closeInventory(); - } - if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§6Italiano")) { - p.setLanguage("IT"); - p.closeInventory(); - } - } - } - } - @EventHandler public void onServerListPing(ServerListPingEvent e) { if(ServerSettings.isGame()) e.setMotd(ServerSettings.getPlayedGame().toString() + ";" + ServerSettings.getGameState()); } + @EventHandler + public void onInventoryClose(InventoryCloseEvent e) { + CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer().getName()); + p.setOpenInventory(false); + } + } \ No newline at end of file diff --git a/src/main/java/eu/univento/core/listeners/JoinQuit.java b/src/main/java/eu/univento/core/listeners/JoinQuit.java index 9219641..52e51e9 100644 --- a/src/main/java/eu/univento/core/listeners/JoinQuit.java +++ b/src/main/java/eu/univento/core/listeners/JoinQuit.java @@ -1,16 +1,12 @@ package eu.univento.core.listeners; import eu.univento.core.Core; -import eu.univento.core.api.Title; import eu.univento.core.api.Utils; -import eu.univento.core.api.player.CustomPlayer; -import eu.univento.core.api.player.NickName; -import eu.univento.core.api.player.Spectator; +import eu.univento.core.api.player.*; import eu.univento.core.api.server.ServerSettings; import eu.univento.core.commands.Build; import eu.univento.core.commands.Vanish; import org.bukkit.Bukkit; -import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -19,123 +15,79 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.scoreboard.Team; +import java.util.HashMap; + /** * @author joethei * @version 1.0 */ -public class JoinQuit implements Listener{ - - /** - * Handles JoinMessage and vanished players - * @param e event - */ - @EventHandler - public void onJoin(PlayerJoinEvent e) { - CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); +public class JoinQuit implements Listener { - for(Player players : Bukkit.getOnlinePlayers()) { + @EventHandler + public void onJoin(PlayerJoinEvent e) { + CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); + + for (Player players : Bukkit.getOnlinePlayers()) { CustomPlayer player = CustomPlayer.getPlayer(players); - if(Vanish.getPlayers().contains(player)) { + if (Vanish.getPlayers().contains(player)) { p.hidePlayer(player); } - if(Spectator.is(player)) { + if (Spectator.is(player)) { p.hidePlayer(player); } } - if(!p.hasPlayedBefore()) { - p.insertToDatabase(); - for(int i = 0; i <= 15; i++) { - Utils.randomFirework(p.getEyeLocation()); - } - Title.sendTitle(p, 0, 100, 0, "§6Welcome", "§aPlease choose a language"); - Bukkit.getScheduler().scheduleSyncDelayedTask(Core.getInstance(), () -> p.openInventory(getLanguageChooser(p)), 100L); - } + if (!p.hasPlayedBefore()) { + p.insertToDatabase(); + for (int i = 0; i <= 15; i++) { + Utils.randomFirework(p.getEyeLocation()); + } + } + if(!p.isOnline()) { + HashMap labyModFeatures = new HashMap<>(); + labyModFeatures.put(LabyMod.DAMAGEINDICATOR, false); + labyModFeatures.put(LabyMod.MINIMAP_RADAR, false); + labyModFeatures.put(LabyMod.ARMOR, false); + labyModFeatures.put(LabyMod.POTIONS, false); + labyModFeatures.put(LabyMod.ANIMATIONS, false); + p.setLabyModFeatures(labyModFeatures); + + p.sendMessage(new BetterPvP().getCodeString()); + } p.updateDatabaseEntry(); - Title.sendTabTitle(p, p.getMessages().Core_TAB_TITLE() + Bukkit.getServerName() , p.getMessages().TAB_PREFIX()); - p.setGameMode(ServerSettings.getGameMode()); + p.setGameMode(ServerSettings.getGameMode()); p.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard()); p.initScoreboard(); - if(p.isNicked()) { - //TODO: add nicking back in + if (p.isNicked() && !ServerSettings.isLobby()) { + p.setNick(NickName.getRandomNick()); } - - for(Player players : Bukkit.getOnlinePlayers()){ - CustomPlayer player = CustomPlayer.getPlayer(players); + for (CustomPlayer player : Core.getOnlinePlayers()) { p.getScoreboard().getTeam(player.getTeam().getName()).addEntry(player.getDisplayName()); player.getScoreboard().getTeam(p.getTeam().getName()).addEntry(p.getDisplayName()); } - - } + + + } @EventHandler - public void onLogin(PlayerLoginEvent e) { - //CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); - //Core.log(Level.INFO, "PlayerLogin " + p.getName() + " | " + p.isBanned()); - //if(p.isBanned()) { - // e.disallow(PlayerLoginEvent.Result.KICK_BANNED, "§cYou have been banned. §6Reason: " + p.getBanReason() + "\nUntil: " + p.getBanTime()); - //} - } - - - - /** - * Handles QuitMessage and other needed stuff - * @param e event - */ - @EventHandler - public void onQuit(PlayerQuitEvent e) { - CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); - if(Build.getPlayers().containsKey(p)) - Build.getPlayers().remove(p); - if(ServerSettings.isGame()) { - p.setDisplayName(p.getName()); - NickName.remove(p); + public void onQuit(PlayerQuitEvent e) { + CustomPlayer p = CustomPlayer.getPlayer(e.getPlayer()); + if (Build.getPlayers().containsKey(p)) + Build.getPlayers().remove(p); + if (p.isNicked() && !ServerSettings.isLobby()) { + p.removeNick(); } - for(Team team : p.getScoreboard().getTeams()) { + for (Team team : p.getScoreboard().getTeams()) { team.removeEntry(p.getDisplayName()); } - p.onLeave(); - } - - - /** - * Handles KickMessage - * @param e event - */ - @EventHandler(priority=EventPriority.HIGHEST) - public void onKick(PlayerKickEvent e) { - e.setLeaveMessage(null); - } - - static Inventory getLanguageChooser(CustomPlayer p) { - Inventory inv = Bukkit.createInventory(p, 9, "§6Language Chooser"); - - ItemStack en = new ItemStack(Material.PAPER); - ItemMeta enMeta = en.getItemMeta(); - enMeta.setDisplayName("§6english"); - en.setItemMeta(enMeta); - - ItemStack de = new ItemStack(Material.PAPER); - ItemMeta deMeta = de.getItemMeta(); - deMeta.setDisplayName("§6Deutsch"); - de.setItemMeta(deMeta); - - - ItemStack it = new ItemStack(Material.PAPER); - ItemMeta itMeta = it.getItemMeta(); - itMeta.setDisplayName("§6Italiano"); - it.setItemMeta(itMeta); - - inv.setItem(0, en); - inv.setItem(1, de); - inv.setItem(2, it); - - return inv; + p.onLeave(); } + + @EventHandler(priority = EventPriority.HIGHEST) + public void onKick(PlayerKickEvent e) { + e.setLeaveMessage(null); + } + } \ No newline at end of file diff --git a/src/main/java/eu/univento/core/listeners/PluginMessenger.java b/src/main/java/eu/univento/core/listeners/PluginMessenger.java new file mode 100644 index 0000000..f53191c --- /dev/null +++ b/src/main/java/eu/univento/core/listeners/PluginMessenger.java @@ -0,0 +1,22 @@ +package eu.univento.core.listeners; + +import eu.univento.core.antihack.Hack; +import eu.univento.core.api.player.CustomPlayer; +import org.bukkit.entity.Player; +import org.bukkit.plugin.messaging.PluginMessageListener; + +public class PluginMessenger implements PluginMessageListener{ + + @Override + public void onPluginMessageReceived(String channel, Player player, byte[] data) { + CustomPlayer p = CustomPlayer.getPlayer(player); + if(channel.equals("WDL|INIT")) { + p.warn(Hack.WDL); + p.kickPlayer(p.getMessage("Prefix") + p.getMessage("Hack.WorldDownloader")); + } + if(channel.equals("PERMISSIONSREPL") && new String(data).contains("mod.worlddownloader")) { + p.warn(Hack.WDL); + p.kickPlayer(p.getMessage("Prefix") + p.getMessage("Hack.WorldDownloader")); + } + } +} diff --git a/src/main/resources/language.properties b/src/main/resources/language.properties new file mode 100644 index 0000000..a37adf2 --- /dev/null +++ b/src/main/resources/language.properties @@ -0,0 +1,4 @@ +Prefix = undefined +Tab_Prefix = §8• §6U N I V E N T O §8• +Not_a_player = You are not a valid player +No_perms = diff --git a/src/main/resources/language_de.properties b/src/main/resources/language_de.properties new file mode 100644 index 0000000..1194657 --- /dev/null +++ b/src/main/resources/language_de.properties @@ -0,0 +1,11 @@ +Prefix = §6univento §8» +Tab_Prefix = §8• §6U N I V E N T O §8• +Unknown_error = §cEs ist ein unbekannter Fehler aufgetreten +No_perms = §cDu hast keine Berechtigung diesen Befehl auszuführen +Error = §cFehler: +Not_online = §7Der angegebene Spieler ist §cnicht §7 online +Kick_restart = §cDer Server wurde neu gestartet +Kick_full = §cDieser Server ist bereits voll +Command_no_found = §cDieser Befehl konnte nicht gefunden werden + +Core.fix_own = §7Du wurdest §egefixt