Asynchronous, high-performance Minecraft Hologram library for 1.8-1.18 servers.

Overview

Hologram-Lib

Asynchronous, high-performance Minecraft Hologram library for 1.8-1.18 servers.

Requirements

This library can only be used on spigot servers higher or on version 1.8.8. The plugin ProtocolLib is required on your server.

How to use

Add the repository and dependency to your plugin: Maven

<repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
</repository>

<dependency>
    <groupId>com.github.unldenis</groupId>
    <artifactId>Hologram-Lib</artifactId>
    <version>master-SNAPSHOT</version>
</dependency>

Gradle

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
    implementation 'com.github.unldenis:Hologram-Lib:master-SNAPSHOT'
}

Add ProtocolLib as dependency to your plugin.yml. It could look like this:

name: Hub
version: 1.0-SNAPSHOT
api-version: "1.13"
depend: [ProtocolLib]
author: unldenis
main: com.github.unldenis.server.hub.ServerHub

Example usage

public class ExampleHolograms {

    private final Plugin plugin;
    private final HologramPool hologramPool;
    /**
     * @param plugin The plugin which uses the lib
     */
    public ExampleHolograms(@NotNull Plugin plugin) {
        this.plugin = plugin;
        this.hologramPool = new HologramPool(plugin, 70);
    }

    /**
     * Appends a new Hologram to the pool.
     *
     * @param location  The location the Hologram will be spawned at
     */
    public void appendHOLO(@NotNull Location location) {
        // building the NPC
        Hologram hologram = Hologram.builder()
                .location(location)
                .addLine("Hello World!")
                .addLine("Using Hologram-Lib")
                .addLine("Hello %%player%%")
                .addLine(new ItemStack(Material.IRON_BLOCK))
                .addPlaceholder("%%player%%", Player::getName)
                .build(hologramPool);

        hologram.setAnimation(3, AnimationType.CIRCLE);

        // simple changing animating block and text
        timingBlock(hologram);
    }
    
    private final static Material[] materials = new Material[] { Material.IRON_BLOCK, Material.GOLD_BLOCK, Material.DIAMOND_BLOCK, Material.EMERALD_BLOCK};
    
    /**
     * Update the block and the first line of text of the hologram
     * @param hologram The hologram to update
     */
    private void timingBlock(Hologram hologram) {
        new BukkitRunnable() {
            int j=1;
            @Override
            public void run() {
                if(j==materials.length) j=0;
                hologram.setLine(0, String.valueOf(j));
                hologram.setLine(3, new ItemStack(materials[j++]));
            }
        }
        .runTaskTimer(plugin, 30L, 30L);
    }
}

Preview

20220102-213927_Trim.mp4

Placeholder Preview

2022-01-03_22 11 34

Comments
  • Issue with click and empty lines

    Issue with click and empty lines

    Hi,

    Is it possible to hide those unsightly lines when there is no content? https://prnt.sc/Nj7_R5Gl2_8A

    I have a hologram in my head, I can't click on the head, is this fixable? https://prnt.sc/5WRv9FK6WwCS

    Best regards.

    opened by AerWyn81 6
  • java.lang.IllegalArgumentException: Registry has no elements!

    java.lang.IllegalArgumentException: Registry has no elements!

    I Have tried the ExampleHolograms class from the readme, and it shows a error.

    Version: 1.8.8

    [HologramLib] Task #6 for HologramLib v1.0.0 generated an exception
    java.lang.IllegalArgumentException: Registry has no elements!
            at org.apache.commons.lang.Validate.notEmpty(Validate.java:248) ~[patched.jar:git-PaperSpigot-"4c7641d"]
            at com.comphenix.protocol.wrappers.WrappedDataWatcher$Registry.get(WrappedDataWatcher.java:966) ~[?:?]
            at com.comphenix.protocol.wrappers.WrappedDataWatcher$Registry.getChatComponentSerializer(WrappedDataWatcher.java:1057) ~[?:?]
            at com.github.unldenis.hologram.line.TextLine.update(TextLine.java:64) ~[?:?]
            at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:895) ~[?:1.8.0_312]
            at java.util.concurrent.CopyOnWriteArraySet.forEach(CopyOnWriteArraySet.java:404) ~[?:1.8.0_312]
            at com.github.unldenis.hologram.Hologram.setLine(Hologram.java:87) ~[?:?]
            at com.github.unldenis.hologram.ExampleHolograms$1.run(ExampleHolograms.java:61) ~[?:?]
            at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:59) ~[patched.jar:git-PaperSpigot-"4c7641d"]
            at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:352) [patched.jar:git-PaperSpigot-"4c7641d"]
            at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:783) [patched.jar:git-PaperSpigot-"4c7641d"]
            at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:378) [patched.jar:git-PaperSpigot-"4c7641d"]
            at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:713) [patched.jar:git-PaperSpigot-"4c7641d"]
            at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:616) [patched.jar:git-PaperSpigot-"4c7641d"]
            at java.lang.Thread.run(Thread.java:748) [?:1.8.0_312]       
    
    opened by sasuked 4
  • Ability to hide the hologram from all players

    Ability to hide the hologram from all players

    Hello, great resource!

    Is there any way to add a method in Hologram to choose to hide or show the hologram to all players by default (ex: hologram.setVisibleByDefault(false)) ?

    In my case, I want to create a hologram, hide it from all players (and those who will join later) and under certain conditions display it to some players.

    Is this kind of functionality implementable?

    Thanks :)

    enhancement 
    opened by AerWyn81 3
  • warn spam in console when changing world

    warn spam in console when changing world

    Hi, i use the Hologram-Lib version 1.2.1. But its spam a error in console when somebody change the world. HydroGame is the overworld and HydroGame_nether the nether. I don't know why its spamming like this. By the way its only spamming, when a player, no matter who, is in the nether.

    I use the Hologram-Lib for my ChestShop system. when a ChestShop is created, it displays the item above the chest that the player is selling. Here is a screen: hologram

    Somebody has a idea?

    bug 
    opened by SchweizerDev 3
  • NoClassDefFoundError

    NoClassDefFoundError

    image

    Whenever I attempt to run my sever, my plugin is stopped with the above error. ProtocolLib is added to my plugins folder and added as a dependency for my plugin.

    Gradle Build File

    plugins {
        id("java")
    }
    
    group = "org.example"
    version = "1.0-SNAPSHOT"
    
    repositories {
        mavenCentral()
        maven("https://repo.papermc.io/repository/maven-public/")
        maven("https://jitpack.io")
    }
    
    dependencies {
        compileOnly("io.papermc.paper:paper-api:1.19.2-R0.1-SNAPSHOT")
        implementation("com.github.unldenis:Hologram-Lib:master-SNAPSHOT")
    }
    
    tasks.getByName<Test>("test") {
        useJUnitPlatform()
    }
    
    java {
        toolchain.languageVersion.set(JavaLanguageVersion.of(17))
    }
    
    opened by boppescripting 1
  • fixed issues with VersionUtil on 1.18.2

    fixed issues with VersionUtil on 1.18.2

    I'm using the library on 1.18.2. I was getting the IllegalArgumentException in VersionUtil line 58 (When it was using VersionEnum#valueOf). The string that was being passed through was "v1.18" instead of "V1.18". Fixed this by ensuring that the string is always uppercased. Also fixed VersionEnum 1.19 constant (Changed from "v1.19" to "V1.19" to mimic the rest of the constants)

    opened by its-c10 1
  • Hologram API change

    Hologram API change

    Changed some methods from protected to public in order to allow to show/hide holograms to certain players OR to get more info about what players are seeing the hologram

    opened by GeorgeV220 1
  • 1.8-1.8.9 version support

    1.8-1.8.9 version support

    With the last commit I implemented version 1.8-1.8.9 seen the difference in the packets compared to the later versions.

    However the ItemLines seem to have some problem with the position in these older versions. (Not the armorstands but just the head slot).

    Preview

    enhancement 
    opened by unldenis 1
  • Exception with the latest ProtocolLib version #608

    Exception with the latest ProtocolLib version #608

    Hi,

    Having issue with the latest ProtocolLib and papermc latest versions. ProtocolLib : #608 Papermc : #347

    As long as holograms are enabled on my plugin, I can't connect, I crash with the exception below. If I disable them, I can connect.

    Packet encoding of packet ID 78 threw (skippable? false)
    java.lang.ClassCastException: class net.minecraft.network.syncher.DataWatcher$Item cannot be cast to class net.minecraft.network.syncher.DataWatcher$b (net.minecraft.network.syncher.DataWatcher$Item and net.minecraft.network.syncher.DataWatcher$b are in unnamed module of loader java.net.URLClassLoader @36aa7bc2)
    	at net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket.pack(ClientboundSetEntityDataPacket.java:17) ~[?:?]
    	at net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket.write(ClientboundSetEntityDataPacket.java:38) ~[?:?]
    	at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:41) ~[paper-1.19.3.jar:git-Paper-347]
    	at net.minecraft.network.PacketEncoder.encode(PacketEncoder.java:14) ~[paper-1.19.3.jar:git-Paper-347]
    	at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:107) ~[netty-codec-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:120) ~[netty-codec-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:717) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:709) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:792) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:702) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.channel.DefaultChannelPipeline.write(DefaultChannelPipeline.java:1015) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.channel.AbstractChannel.write(AbstractChannel.java:301) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
    	at com.comphenix.protocol.injector.netty.channel.NettyChannelProxy.write(NettyChannelProxy.java:210) ~[ProtocolLib.jar:?]
    	at com.comphenix.protocol.injector.netty.channel.NettyChannelProxy.write(NettyChannelProxy.java:199) ~[ProtocolLib.jar:?]
    	at net.minecraft.network.Connection.doSendPacket(Connection.java:459) ~[?:?]
    	at net.minecraft.network.Connection.lambda$sendPacket$10(Connection.java:428) ~[?:?]
    	at com.comphenix.protocol.injector.netty.channel.NettyEventLoopProxy.lambda$proxyRunnable$2(NettyEventLoopProxy.java:48) ~[ProtocolLib.jar:?]
    	at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[netty-common-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167) ~[netty-common-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java) ~[netty-common-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[netty-common-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.82.Final.jar:4.1.82.Final]
    	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.82.Final.jar:4.1.82.Final]
    	at java.lang.Thread.run(Thread.java:833) ~[?:?]
    `` 
    opened by AerWyn81 0
  • Getting a hologram

    Getting a hologram

    How can I get some hologram, I was looking at the library code and I can't find any method to get this unless I modify it.

    ex:

    public void moveHologram(Player player, ???? ???) {
        hologramPool.getHologram(???).teleport(player.getLocation());
    }
    
    opened by Enoughsdv 1
  • Crash

    Crash

    I tried to test the library but putting it to show the player when entering simply crashes the game.

    // Why is it breaking :(
    
    Time: 03/11/22 10:45 PM
    Description: Ticking entity
    
    java.lang.ClassCastException: java.lang.Byte cannot be cast to dc
    	at pz.h(DataWatcher.java:149)
    	at um.t_(SourceFile:538)
    	at adm.a(SourceFile:1408)
    	at adm.g(SourceFile:1386)
    	at adm.i(SourceFile:1279)
    	at ave.s(SourceFile:1850)
    	at ave.av(SourceFile:889)
    	at ave.a(SourceFile:325)
    	at net.minecraft.client.main.Main.main(SourceFile:124)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
    	at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
    
    
    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------
    
    -- Head --
    Stacktrace:
    	at pz.h(DataWatcher.java:149)
    	at um.t_(SourceFile:538)
    	at adm.a(SourceFile:1408)
    	at adm.g(SourceFile:1386)
    
    -- Entity being ticked --
    Details:
    	Entity Type: ArmorStand (um)
    	Entity ID: -2146099896
    	Entity Name: Hello World!
    	Entity's Exact location: 0,84, 88,88, 0,38
    	Entity's Block location: 0,00,88,00,0,00 - World: (0,88,0), Chunk: (at 0,5,0 in 0,0; contains blocks 0,0,0 to 15,255,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511)
    	Entity's Momentum: 0,00, 0,00, 0,00
    	Entity's Rider: ~~ERROR~~ NullPointerException: null
    	Entity's Vehicle: ~~ERROR~~ NullPointerException: null
    Stacktrace:
    	at adm.i(SourceFile:1279)
    

    Code:

    public class ExampleHolograms implements Listener {
    
        private final Plugin plugin;
        private final HologramPool hologramPool;
    
        public ExampleHolograms(Plugin plugin) {
            this.plugin = plugin;
            this.hologramPool = new HologramPool(plugin, 70, 0.5f, 5f);
            Bukkit.getPluginManager().registerEvents(this, plugin);
        }
    
        /**
         * Appends a new Hologram to the pool.
         *
         * @param location The location the Hologram will be spawned at
         * @param excludedPlayer A player which will not see the Hologram for 10
         * seconds
         */
        public void appendHOLO(Location location, Player excludedPlayer) {
            Hologram hologram = Hologram.builder()
                    .location(location)
                    .addLine("Hello World!", false)
                    .addLine("Using Hologram-Lib", false)
                    .addLine("Hello %%player%%", true)
                    .addLine(new ItemStack(Material.IRON_BLOCK))
                    .addPlaceholder("%%player%%", Player::getName)
                    .build(hologramPool);
    
            hologram.getLines().get(3).setAnimation(Animation.AnimationType.CIRCLE);
    
            if (excludedPlayer != null) {
                // adding the excluded player which will not see the Hologram
                hologram.addExcludedPlayer(excludedPlayer);
    
                // shows 10 seconds after theHologram
                Bukkit.getScheduler().runTaskLater(plugin, () -> hologram.removeExcludedPlayer(excludedPlayer), 20L * 10);
            }
        }
    
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent event) {
            Player player = event.getPlayer();
            appendHOLO(player.getLocation(), null);
        }
    
        @EventHandler
        public void onHologramInteract(PlayerHologramInteractEvent e) {
            Player player = e.getPlayer();
            TextLine line = e.getLine();
            player.sendMessage("Click at " + line.parse(player));
        }
    }
    
    opened by Enoughsdv 3
  • IllegalArgumentException when joining world with some hologram near to me

    IllegalArgumentException when joining world with some hologram near to me

    Hi,

    Having this exception when I join the world with an hologram near to me

    [15:57:50 WARN]: [HeadBlocks] Plugin HeadBlocks v2.0.7 generated an exception while executing task 31 java.lang.IllegalArgumentException: No serializer found for class java.lang.Byte at com.comphenix.protocol.wrappers.WrappedDataWatcher$Registry.get(WrappedDataWatcher.java:939) ~[ProtocolLib (2).jar:?] at com.github.unldenis.hologram.packet.IPackets$PacketsV1_9V1_18.metadataPacket(IPackets.java:205) ~[HeadBlocks-2.0.7.jar:?] at com.github.unldenis.hologram.TextLine.show(TextLine.java:42) ~[HeadBlocks-2.0.7.jar:?] at com.github.unldenis.hologram.Hologram.show(Hologram.java:131) ~[HeadBlocks-2.0.7.jar:?] at com.github.unldenis.hologram.HologramPool.lambda$hologramTick$5(HologramPool.java:150) ~[HeadBlocks-2.0.7.jar:?] at org.bukkit.craftbukkit.v1_19_R1.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.19.jar:git-Paper-17] at org.bukkit.craftbukkit.v1_19_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[paper-1.19.jar:git-Paper-17] at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[paper-1.19.jar:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?] at java.lang.Thread.run(Thread.java:833) ~[?:?]

    What should I do to correct the problem? Thank you! Best regards,

    opened by AerWyn81 7
  • Individual Hologram player

    Individual Hologram player

    Hello, I am setting up a ranking and need to make holograms in individual for each player, the player will be able to switch the ranking depending on types and because of this I need the hologram to be unique.

    I tested the placeholders and it seems to be very complex to use them for this case, could you show me an example of how to do this ?

    documentation 
    opened by mateusneresrb 1
Releases(1.4.0)
Owner
imma change the world someday
null
The project is an example of using the http web client to promote synchronous and asynchronous https calls.

Web Client Consumer Java Sample The project is an example of using the http web client to promote synchronous and asynchronous https calls. Requiremen

null 2 Jan 12, 2022
Cadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way.

Cadence This repo contains the source code of the Cadence server and other tooling including CLI, schema tools, bench and canary. You can implement yo

Uber Open Source 6.5k Jan 4, 2023
High performance RPC framework based on netty

RPC(Remote Procedure Call)实战 @desc: 仅用于个人学习、了解RPC @date: 2021/01/16 技术组成: 版本一 版本二 版本三 传输层 Netty4 * * 编码层 Kryo * * 应用层 JDK动态代理 * * 服务注册与发现 手动注册+guava缓存

XDD 10 Nov 22, 2022
Universal, flexible, high-performance distributed ID generator

CosId Universal, flexible, high-performance distributed ID generator 中文文档 Introduction CosId aims to provide a universal, flexible and high-performanc

Ahoo Wang 256 Dec 27, 2022
✈A high-performance RPC based on Java & Netty.

bRPC README 中文版本 一个基于netty的RPC框架 基于netty NIO、IO多路复用。 client与server端建立心跳包保活机制。发生未知断连时,重连保证可靠长连接。 使用kryo序列化,自定义传输包,及传输格式,避免TCP沾包问题。 支持zookeeper或nacos做服务

vincent 238 Dec 16, 2022
Clivia is a scalable, high-performance, elastic and responsive API gateway based on spring weblux

clivia是一款基于spring webflux的可扩展、高性能、高弹性、响应式的 API 网关 clivia_V0.0.1 架构概览 模块介绍 clivia-admin-core : 网关配置管理后台核心模块 clivia-client-core : 网关核心模块 clivia-example

palading 14 Jan 9, 2023
ActiveJ is an alternative Java platform built from the ground up. ActiveJ redefines web, high load, and cloud programming in Java, featuring ultimate performance and scalability!

Introduction ActiveJ is a full-featured modern Java platform, created from the ground up as an alternative to Spring/Micronauts/Netty/Jetty. It is des

ActiveJ LLC 579 Jan 7, 2023
High Performance data structures and utility methods for Java

Agrona Agrona provides a library of data structures and utility methods that are a common need when building high-performance applications in Java. Ma

Real Logic 2.5k Jan 7, 2023
ShenYu is High-Performance Java API Gateway.

Scalable, High Performance, Responsive API Gateway Solution for all MicroServices https://shenyu.apache.org/ English | 简体中文 Architecture Features Shen

The Apache Software Foundation 7.5k Jan 4, 2023
A modular, high performance, headless e-commerce(ecommerce) platform built with Java,Springboot, Vue.

What is Shopfly? Shopfly is modular, high performance, headless e-commerce(ecommerce) platform built with Java,Springboot, Vue. Architecture Shopfly i

Shopfly 31 Jul 17, 2022
A modular, high performance, headless e-commerce(ecommerce) platform built with Java,Springboot, Vue.

What is Shopfly? Shopfly is modular, high performance, headless e-commerce(ecommerce) platform built with Java,Springboot, Vue. Architecture Shopfly i

Shopfly 29 Apr 25, 2022
The High-Performance Java Persistence book and video course code examples

High-Performance Java Persistence The High-Performance Java Persistence book and video course code examples. I wrote this article about this repositor

Vlad Mihalcea 1.1k Jan 9, 2023
This is a plugin for Minecraft Server (Spigot API) introduces a sector system which connects a single world across multiple servers.

OpenSourceSectors ?? ??️ This is a plugin for Minecraft Server (Spigot API) introduces a sector system which connects a single world across multiple s

null 20 Dec 28, 2022
A singular file to protect as many Minecraft servers and clients as possible from the Log4j exploit (CVE-2021-44228).

MC-Log4J-Patcher The goal of this project is to provide Minecraft players, and server owners, peace of mind in regards to the recently discovered Log4

Koupa Taylor 4 Jan 4, 2022
A Velocity proxy plugin for Minecraft server discovery in k8s. All discovered servers are automatically added to the Velocity proxy.

kryo-server-discovery This plugin connects minecraft servers to a velocity proxy within Kubernetes. The service account in the namespace which the pro

Kryonite 9 Sep 13, 2022
A guild plugin for Minecraft Servers that supports 1.13 and above

OasisGuild Description A guild plugin for Minecraft Servers that supports 1.13 and above Languages zh_cn(简体中文) en_us(English) Placeholders %oasisguild

ChiyodaXiaoYi 2 Apr 6, 2022
GreenMail is an open source, intuitive and easy-to-use test suite of email servers for testing purposes.

GreenMail GreenMail is an open source, intuitive and easy-to-use test suite of email servers for testing purposes. Supports SMTP, POP3, IMAP with SSL

null 529 Dec 28, 2022
A webshell application and interactive shell for pentesting Apache Tomcat servers.

Apache Tomcat webshell application for RCE A webshell application and interactive shell for pentesting Apache Tomcat servers. Features Webshell plugin

Podalirius 61 Jan 1, 2023
Distribute players across multiple servers while syncing packets

ShardMC Distribute players across multiple servers while syncing packets ShardMC aims to be a simple plugin that allows multiple servers to sync playe

Jacob Bashista 5 Nov 28, 2022