Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ repositories {
}

dependencies {
compileOnly "org.spigotmc:spigot-api:1.19.4-R0.1-SNAPSHOT"
compileOnly "org.spigotmc:spigot-api:1.20.2-R0.1-SNAPSHOT"
}

def targetJavaVersion = 17
Expand All @@ -31,6 +31,10 @@ java {
}
}

jar {
destinationDirectory.set(file("/Users/linusglimm/Desktop/mineopoly stuff/servers/spigotTest/plugins"))
}

tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8'

Expand All @@ -46,4 +50,4 @@ processResources {
filesMatching('plugin.yml') {
expand props
}
}
}
17 changes: 0 additions & 17 deletions src/main/java/de/littleprogrammer/guiapi/Api.java

This file was deleted.

93 changes: 93 additions & 0 deletions src/main/java/de/littleprogrammer/guiapi/GuiApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package de.littleprogrammer.guiapi;

import de.littleprogrammer.guiapi.enums.ServerVersion;
import de.littleprogrammer.guiapi.listeners.GuiEvents;
import de.littleprogrammer.guiapi.listeners.MoveListener;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler;

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

public final class GuiApi {

private JavaPlugin plugin;
private static GuiApi instance;
private ServerVersion version;
private final Listener listener = new GuiEvents();
private final Listener moveListener = new MoveListener();
private Map<UUID, SimpleGui> guis = new HashMap<>();

public GuiApi(JavaPlugin plugin) {
this.plugin = plugin;
instance = this;
}

/*@Override
public void onEnable() {
// Plugin startup logic
this.plugin = this;
instance = this;

init();
}

@Override
public void onDisable() {
// Plugin shutdown logic
}*/

public void init() {
//This method checks the server version, to determine weather it should use the new 1.20.2 teleport interpolation or my own teleport interpolation
String secIndicator = plugin.getServer().getBukkitVersion().split("\\.")[1];
String preTrdIndicator = plugin.getServer().getBukkitVersion().split("\\.")[2];
String trdIndicator = preTrdIndicator.split("-")[0];

if (Integer.parseInt(secIndicator) == 20) {
if (Integer.parseInt(trdIndicator) >= 2) {
version = ServerVersion.POST_1_20_2;
} else {
version = ServerVersion.PRE_1_20_2;
}
} else {
if (Integer.parseInt(secIndicator) > 20) {
version = ServerVersion.POST_1_20_2;
} else {
version = ServerVersion.PRE_1_20_2;
}
}

//register the two listeners needed
getPlugin().getServer().getPluginManager().registerEvents(this.listener, this.plugin);
getPlugin().getServer().getPluginManager().registerEvents(this.moveListener, this.plugin);
}

public JavaPlugin getPlugin() {return this.plugin;}
public static GuiApi getInstance() {return instance;}
public ServerVersion getVersion() {
return version;
}
public static BukkitScheduler getScheduler() {
return GuiApi.getInstance().getPlugin().getServer().getScheduler();
}

public SimpleGui getGUI(UUID uuid) {
return guis.get(uuid);
}

public SimpleGui getGUI(Player player) {
return guis.get(player.getUniqueId());
}

public Map<UUID, SimpleGui> getGuis() {
return guis;
}

public Listener getListener() {
return listener;
}
}
125 changes: 125 additions & 0 deletions src/main/java/de/littleprogrammer/guiapi/SimpleGui.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
package de.littleprogrammer.guiapi;

import de.littleprogrammer.guiapi.components.Button;
import de.littleprogrammer.guiapi.components.Component;
import de.littleprogrammer.guiapi.components.Text;
import de.littleprogrammer.guiapi.enums.ServerVersion;
import de.littleprogrammer.guiapi.utils.Calculations;
import de.littleprogrammer.guiapi.utils.TeleportInterpolator;
import org.bukkit.Location;
import org.bukkit.entity.Player;

import java.util.*;

public class SimpleGui {

private Player player;
private final UUID uuid;
private final Map<UUID, Component> components;
private final Map<UUID, Button> buttons;
private final String title;
private Component content;
private Location centerLocation;
private boolean open;

public SimpleGui(String title) {
this.title = title;
this.uuid = UUID.randomUUID();
this.components = new HashMap<>();
this.buttons = new HashMap<>();
}

public void updatePosition(Location playerLoc) {
if (player != null) {
centerLocation = Calculations.calculateInventoryCenter(playerLoc);

if (GuiApi.getInstance().getVersion().equals(ServerVersion.PRE_1_20_2)) {
for (Component component : components.values()) {
Location newComponentLocation = Calculations.calculateComponentLocation(this, component, buttons.size());

TeleportInterpolator teleportInterpolator = new TeleportInterpolator(component.getEntity(), newComponentLocation, 5, 1);
teleportInterpolator.startInterpolation();
}
} else {
for (Component component : components.values()) {
Location newComponentLocation = Calculations.calculateComponentLocation(this, component, buttons.size());

component.getDisplay().setTeleportDuration(5);
component.getDisplay().teleport(newComponentLocation);
}
}
}
}

public void close() {
//close GUI
GuiApi.getInstance().getGuis().remove(player.getUniqueId());

for (Component component : components.values()) {
component.hide(player);
component.remove();
}
open = false;
}

public SimpleGui open(Player player) {
if (this.player != null && this.player.getUniqueId().equals(player.getUniqueId())) {
//close GUI and open for the new player
close();
}
this.player = player;
GuiApi.getInstance().getGuis().put(player.getUniqueId(), this);
centerLocation = new Location(player.getWorld(), 0, 0, 0);

for (Component component : components.values()) {
component.spawn();
component.show(player);
}
open = true;
return this;
}

public Component getComponent(UUID uuid) {
return components.get(uuid);
}

public Location getCenterLocation() {
return centerLocation;
}

public Player getPlayer() {
return player;
}

public List<Component> getComponents() {
return new ArrayList<>(components.values());
}

public int getButtonAmount() {
return buttons.size();
}

public boolean isOpen() {
return open;
}

public SimpleGui addButton(Button button) {
if (buttons.size() < 3) {
components.put(button.getUniqueId(), button);
buttons.put(button.getUniqueId(), button);
button.setGui(this);
}
return this;
}

public SimpleGui addContent(Text content) {
if (this.content != null) {
components.remove(this.content.getUniqueId());
this.content.remove();
}
this.content = content;
components.put(content.getUniqueId(), content);
content.setGui(this);
return this;
}
}
Loading