#(TUTORIAL) Etalon 1.19.2 plugin with Java 17 on Eclipse

1 messages · Page 1 of 1 (latest)

abstract stag
#

Etalon POM.XML and plugin.yml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>me.carefall</groupId>
    <artifactId>Etalon</artifactId>
    <version>1.0</version>
    <name>Etalon</name>
    <description>Standard minecraft plugin</description>
    <!-- BASICALLY COPY + PASTE FROM THIS LINE --->
    <properties>
        <maven.compiler.target>17</maven.compiler.target>
        <maven.compiler.source>17</maven.compiler.source>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <repositories>
        <repository>
            <id>spigot-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.19.2-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
    <!-- TO THIS LINE --->
</project>```
```yml
name: Etalon
version: 1.0
author: carefall
api-version: 1.19
main: me.carefall.etalon.Etalon
description: Standart minecraft plugin
commands:
  troll:
#

Etalon Main Class

package me.carefall.etalon;

import org.bukkit.plugin.java.JavaPlugin;
import me.carefall.etalon.commands.TrollCommand;
import me.carefall.etalon.listeners.ChatListener;
import static me.carefall.etalon.util.Colorizer.colorize;

public class Etalon extends JavaPlugin {
    
    public void onEnable() {
        saveDefaultConfig();
        registerListeners();
        registerExecutors();
        send("&aPlugin enabled!");
    }
    
    private void registerExecutors() {
        var troll = new TrollCommand(this);
        getCommand("troll").setExecutor(troll);
        getCommand("troll").setTabCompleter(troll);
    }

    public void onDisable() {
        send("&bPlugin disabled!");
    }
    
    public void send(String s) {
        getServer().getConsoleSender().sendMessage("["+ getDescription().getName() + "] " + colorize(s));
    }
    
    
    private void registerListeners() {
        getServer().getPluginManager().registerEvents(new ChatListener(this), this);
    }

}```
#

Etalon Legacy text colorizer

package me.carefall.etalon.util;

import net.md_5.bungee.api.ChatColor;

public class Colorizer {
    
    public static String colorize(String input) {
        return ChatColor.translateAlternateColorCodes('&', input);
    }

}```
#

Etalon Command Executor

package me.carefall.etalon.commands;

import me.carefall.etalon.Etalon;
import static me.carefall.etalon.util.Colorizer.colorize;

public class TrollCommand implements CommandExecutor, TabCompleter {

    private Etalon plugin;

    public TrollCommand(Etalon plugin) {
        this.plugin = plugin;
    }

    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (!(sender instanceof Player p)) {
            sender.sendMessage(colorize(plugin.getConfig().getString("only-for-players")));
            return false;
        }
        switch (args.length) {
            case 0 -> p.sendMessage(colorize(plugin.getConfig().getString("specify-player")));
            case 1 -> {
                var target = plugin.getServer().getPlayerExact(args[0]);
                if (target == null) {
                    p.sendMessage(colorize(plugin.getConfig().getString("player-not-found")));
                    return false;
                }
                MyOwnTrollHandler.troll(p, target);
            }
            default -> p.sendMessage(colorize(plugin.getConfig().getString("too-much-arguments")));
        }
        return false;
    }

    @Override
    public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
        if (args.length == 1) return null; // when return null in tabcompleter, minecraft auto-suggests all online players' names
        if (args.length == 2) return List.of("today", "tomorrow", "now");
        return Collections.emptyList();
    }
}```
onyx spindle
#

oh hell naw that tab complete

abstract stag
#

Etalon Listener

package me.carefall.etalon.listeners;

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import me.carefall.etalon.Etalon;
import static me.carefall.etalon.util.Colorizer.colorize;

public class ChatListener implements Listener {

    private Etalon plugin;

    public ChatListener(Etalon plugin) {
        this.plugin = plugin;
    }

    @EventHandler
    public void onChat(AsyncPlayerChatEvent event) {
        event.setCancelled(true);
        String format = colorize(plugin.getConfig().getString("message-format").replace("%player%", event.getPlayer().getName()).replace("%message%", event.getMessage()));
        if (plugin.getConfig().getBoolean("log-chat")) plugin.getServer().broadcastMessage(format);
        else plugin.getServer().getOnlinePlayers().forEach(p -> p.sendMessage(format));
    }
}
onyx spindle
#

stream

#

1 liner

#

List.of

#

instead of emptyList

#

more like why tf do you need it

abstract stag
#

i map online players to list of their names

onyx spindle
#

it's stupid

abstract stag
#

basically pass every playername as tabcomplete option

onyx spindle
#

it's dumb

#

just like

#

fuckin

#

for loop

#

instead of doing all those convertions and wrapper class

#

is it really that hard to have 3 short lines instead of 1 very large one

abstract stag
#

4 basically

#

also breaks my ternary

onyx spindle
#

your ternary is stupid

abstract stag
#

that's 1000 times shorter than for loop solution

#

it's kinda same length as list declaration

onyx spindle
#

eh no

#

it's 3x more garbage

#

runs twice as much code beneath

abstract stag
#

easier to write

abstract stag
#

BUILD GUIDE

STEP 1: OPEN RUN CONFIGURATIONS

#

STEP 2: CREATE NEW MAVEN LAUNCH CONFIGURATION

#

STEP 3: SELECT BASE DIRECTORY

#

STEP 4: CHANGE THE NAME AND OTHER STUFF YOU NEED

#

STEP 5:
type clean package or package in Goals section

#

STEP 6: CLICK RUN

#

NOW YOU CAN BUILD YOUR PROJECT WITH PRESET EVERYTIME

#
  • right button(you need arrow)
#

Etalon 1.19 plugin with Java 17

#

Etalon 1.19 plugin with Java 17 on Eclipse

thorn moth
#

(TUTORIAL) Etalon 1.19 plugin with Java 17 on Eclipse

abstract stag
#

Project creation:

abstract stag
#

(TUTORIAL) Etalon 1.19.2 plugin with Java 17 on Eclipse

abstract stag
#

bump to not have this topic buried

formal ember
#

ea

r

abstract stag
#

stayin alive

abstract stag
#

bump

gleaming jolt
#

Wtf did my eyes see

abstract stag
#

?

abstract stag
#

bump

formal ember
#

pmub

gleaming jolt
#

Num

abstract stag
#

fava lessons

gleaming jolt
#

levo semo fava lessons

abstract stag
#

okay dude

gleaming jolt
#

for real what is the advanced stuff on java?

data streams?

pseudo crag
#

Idk how to use this

ripe lily
#

Thanks

mellow thicket
#

W

abstract stag
#

@twin elbow

junior blaze
#

❤️

abstract stag
#

@proven parcel

proven parcel
abstract stag
#

guide how to code basic spigot stuff

if you also need java lessons, feel free to call me in vc

proven parcel
#

okay thank you