#(TUTORIAL) Etalon 1.19.2 plugin with Java 17 on Eclipse
1 messages · Page 1 of 1 (latest)
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();
}
}```
oh hell naw that tab complete
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));
}
}
i map online players to list of their names
it's stupid
basically pass every playername as tabcomplete option
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
your ternary is stupid
that's 1000 times shorter than for loop solution
it's kinda same length as list declaration
easier to write
PROJECT STRUCTURE
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
(TUTORIAL) Etalon 1.19 plugin with Java 17 on Eclipse
(TUTORIAL) Etalon 1.19.2 plugin with Java 17 on Eclipse
bump to not have this topic buried
ea
r
stayin alive
bump
Wtf did my eyes see
?
bump
pmub
Num
fava lessons
levo semo fava lessons
okay dude
for real what is the advanced stuff on java?
data streams?
Idk how to use this
Thanks
W
Standard* minecraft plugin
@twin elbow
❤️
@proven parcel
Yea?
guide how to code basic spigot stuff
if you also need java lessons, feel free to call me in vc
okay thank you