Skip to content
Open
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
41 changes: 34 additions & 7 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,53 @@
<parent>
<groupId>com.github.civclassic</groupId>
<artifactId>civclassic-parent</artifactId>
<version>1.0.0</version>
<version>1.0.1</version>
</parent>

<groupId>com.github.maxopoly</groupId>
<artifactId>artemis</artifactId>
<name>Artemis</name>
<version>1.0.1</version>
<version>1.1.0</version>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.3.0-SNAPSHOT</version>
<executions>
<execution>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<relocations>
<relocation>
<pattern>org.json</pattern>
<shadedPattern>com.github.maxopoly.artemis.json</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>com.destroystokyo.paper</groupId>
<groupId>io.papermc.paper</groupId>
<artifactId>paper</artifactId>
<version>1.16.5-R0.1-SNAPSHOT</version>
<version>1.17-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.maxopoly</groupId>
<artifactId>zeus</artifactId>
<version>1.1</version>
<version>1.2</version>
</dependency>
<dependency>
<groupId>vg.civcraft.mc.civmodcore</groupId>
<groupId>com.github.civclassic</groupId>
<artifactId>CivModCore</artifactId>
<version>1.8.2D</version>
<version>1.9.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
Expand All @@ -40,6 +63,10 @@
<id>civ-github-repo</id>
<url>https://raw.githubusercontent.com/CivClassic/artifacts/master/</url>
</repository>
<repository>
<id>papermc</id>
<url>https://papermc.io/repo/repository/maven-public/</url>
</repository>
</repositories>

</project>
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.github.maxopoly.artemis;

import static vg.civcraft.mc.civmodcore.config.ConfigHelper.parseMaterialList;


import java.util.ArrayList;
import java.util.List;

Expand All @@ -13,9 +16,9 @@
import com.rabbitmq.client.ConnectionFactory;

import vg.civcraft.mc.civmodcore.ACivMod;
import vg.civcraft.mc.civmodcore.CoreConfigManager;
import vg.civcraft.mc.civmodcore.config.ConfigParser;

public class ArtemisConfigManager extends CoreConfigManager {
public class ArtemisConfigManager extends ConfigParser {

private ConfigurationSection config;
private ConnectionFactory connectionFactory;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import java.util.Map;
import java.util.UUID;

import net.kyori.adventure.text.Component;
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;

import com.github.maxopoly.zeus.model.ZeusLocation;
Expand Down Expand Up @@ -38,10 +39,10 @@ public synchronized void completeSession(PlayerDataTransferSession session) {
}
// we abuse the kick message to deliver the result
if (session.getData() == null) {
event.setKickMessage("D"); //deny
event.kickMessage(Component.text("D")); //deny
} else {
sessions.put(uuid, session);
event.setKickMessage("A"); //accept
event.kickMessage(Component.text("A")); //accept
}
//if player was sent from another server, this will contain where the originating server wanted the player to go
ZeusLocation cachedLocation = targetLocations.remove(uuid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public UUID getUUID(String name) {
* If the player is not found in the cache, Zeus is queried for the players name
* (blocking)
*
* @param uuid UUID of the player to look up
* @param playerUUID UUID of the player to look up
* @return Name of the given player or null if no such player is known
*/
public String getName(UUID playerUUID) {
Expand Down
18 changes: 11 additions & 7 deletions src/main/java/com/github/maxopoly/artemis/ArtemisPlugin.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
package com.github.maxopoly.artemis;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

import com.github.maxopoly.artemis.commands.ArtemisCommandManager;
import com.github.maxopoly.artemis.listeners.PlayerDataListener;
import com.github.maxopoly.artemis.listeners.RespawnListener;
import com.github.maxopoly.artemis.listeners.ShardBorderListener;
Expand All @@ -15,7 +10,11 @@
import com.github.maxopoly.artemis.rabbit.outgoing.ArtemisStartup;
import com.github.maxopoly.zeus.model.TransactionIdManager;
import com.github.maxopoly.zeus.servers.ZeusServer;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import vg.civcraft.mc.civmodcore.ACivMod;

public final class ArtemisPlugin extends ACivMod {
Expand All @@ -37,6 +36,7 @@ public static ArtemisPlugin getInstance() {
private ZeusServer zeus;
private CustomWorldNBTStorage customNBTHandler;
private RandomSpawnHandler randomSpawnHandler;
private ArtemisCommandManager commandManager;
private ScheduledExecutorService transactionIdCleanup; // can't be a bukkit thread, because those are disable before
// onDisable and we
// still need it there
Expand All @@ -59,6 +59,7 @@ public void onEnable() {
this.globalPlayerTracker = new ArtemisPlayerManager();
this.randomSpawnHandler = new RandomSpawnHandler(this.configManager);
this.rabbitInputHandler = new ArtemisRabbitInputHandler(getLogger(), transactionIdManager);
this.commandManager = new ArtemisCommandManager(this);
this.rabbitHandler = new RabbitHandler(configManager.getConnectionFactory(),
configManager.getIncomingRabbitQueue(), configManager.getOutgoingRabbitQueue(), transactionIdManager,
getLogger(), zeus, rabbitInputHandler);
Expand Down Expand Up @@ -146,4 +147,7 @@ public TransactionIdManager getTransactionIdManager() {
return transactionIdManager;
}

public ArtemisCommandManager getCommandManager() {
return commandManager;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.github.maxopoly.artemis;

import java.util.EnumSet;
import com.github.maxopoly.zeus.model.ConnectedMapState;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
Expand All @@ -10,18 +10,14 @@
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.logging.Level;

import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import vg.civcraft.mc.civmodcore.inventory.items.MaterialUtils;

import com.destroystokyo.paper.MaterialTags;
import com.github.maxopoly.zeus.model.ConnectedMapState;

import vg.civcraft.mc.civmodcore.api.MaterialAPI;

public class RandomSpawnHandler {

Expand Down Expand Up @@ -103,7 +99,7 @@ private Location calcSpawnLocation(boolean sync) {
int z = pos.getBlockZ() & 0xF;
for (int y = maxY; y >= minY; y--) {
Block block = chunk.getBlock(x, y, z);
if (MaterialAPI.isAir(block.getType())) {
if (MaterialUtils.isAir(block.getType())) {
airCount++;
continue;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.github.maxopoly.artemis.commands;

import co.aikar.commands.BukkitCommandCompletionContext;
import co.aikar.commands.CommandCompletions;
import javax.annotation.Nonnull;
import org.bukkit.plugin.Plugin;
import vg.civcraft.mc.civmodcore.commands.CommandManager;

public class ArtemisCommandManager extends CommandManager {

public ArtemisCommandManager(Plugin plugin) {
super(plugin);
init();
}

@Override
public void registerCommands() {
registerCommand(new ShardTeleportCommand());
}

@Override
public void registerCompletions(@Nonnull CommandCompletions<BukkitCommandCompletionContext> completions) {
super.registerCompletions(completions);
}
}
Original file line number Diff line number Diff line change
@@ -1,87 +1,46 @@
package com.github.maxopoly.artemis.commands;

import java.util.List;
import java.util.UUID;
import java.util.function.Consumer;

import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import co.aikar.commands.BaseCommand;
import co.aikar.commands.annotation.CommandAlias;
import co.aikar.commands.annotation.CommandPermission;
import co.aikar.commands.annotation.Description;
import co.aikar.commands.annotation.Optional;
import co.aikar.commands.annotation.Syntax;
import com.github.maxopoly.artemis.ArtemisPlugin;
import com.github.maxopoly.artemis.rabbit.outgoing.RequestPlayerLocation;
import com.github.maxopoly.artemis.rabbit.session.ALocationRequestSession;
import com.github.maxopoly.zeus.model.PlayerData;
import com.github.maxopoly.zeus.model.TransactionIdManager;
import com.github.maxopoly.zeus.model.ZeusLocation;
import java.util.UUID;
import java.util.function.Consumer;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import vg.civcraft.mc.civmodcore.command.CivCommand;
import vg.civcraft.mc.civmodcore.command.StandaloneCommand;

@CivCommand(id = "stp")
public class ShardTeleportCommand extends StandaloneCommand {
public class ShardTeleportCommand extends BaseCommand {

@Override
public boolean execute(CommandSender sender, String[] args) {
if (args.length <= 4 && args.length != 2) {
if (!(sender instanceof Player)) {
sender.sendMessage("Fuck off");
return true;
}
}
switch (args.length) {
case 1: { // TP Sender to player
UUID playerToTpTo = getPlayerUUID(sender, args[0]);
@CommandAlias("stp")
@Syntax("[player] [optional_player]")
@Description("Teleport to a player across any shard")
@CommandPermission("artemis.tp")
public void execute(Player sender, @Optional String targetPlayer, @Optional String optionalPlayer) {// TP Sender to player
if (targetPlayer != null && optionalPlayer == null) {
UUID playerToTpTo = getPlayerUUID(sender, targetPlayer);
if (playerToTpTo == null) {
return true;
return;
}
setupLocationRequestForPlayer(playerToTpTo, l -> teleportToLocation(((Player) sender).getUniqueId(), l));
break;
}
case 2: // Tp First player to second one
UUID playerToTp = getPlayerUUID(sender, args[0]);
UUID playerToTpTo = getPlayerUUID(sender, args[1]);
if (targetPlayer != null && optionalPlayer != null) {
// Tp First player to second one
UUID playerToTp = getPlayerUUID(sender, targetPlayer);
UUID playerToTpTo = getPlayerUUID(sender, optionalPlayer);
if (playerToTp == null || playerToTpTo == null) {
return true;
return;
}
setupLocationRequestForPlayer(playerToTpTo, l -> teleportToLocation(playerToTp, l));
break;
case 3: // Tp sender to coords
case 4: {
String world;
if (args.length == 3) {
world = ArtemisPlugin.getInstance().getConfigManager().getWorldName();
} else {
world = args[0];
}
Integer x = parseInt(sender, args[args.length - 3]);
Integer y = parseInt(sender, args[args.length - 2]);
Integer z = parseInt(sender, args[args.length - 1]);
if (x == null || y == null || z == null) {
return true;
}
ZeusLocation location = new ZeusLocation(world, x, y, z);
teleportToLocation(((Player) sender).getUniqueId(), location);
break;}
case 5:
UUID targetPlayer = getPlayerUUID(sender, args[0]);
if (targetPlayer == null) {
return true;
}
String world = args[1];
Integer x = parseInt(sender, args[2]);
Integer y = parseInt(sender, args[3]);
Integer z = parseInt(sender, args[4]);
if (x == null || y == null || z == null) {
return true;
}
ZeusLocation location = new ZeusLocation(world, x, y, z);
teleportToLocation(targetPlayer, location);
break;
default:
return false;
}
return true;
}

private void setupLocationRequestForPlayer(UUID player, Consumer<ZeusLocation> callback) {
Expand All @@ -106,12 +65,6 @@ private UUID getPlayerUUID(CommandSender requester, String name) {
return data.getUUID();
}

@Override
public List<String> tabComplete(CommandSender sender, String[] args) {
// TODO Auto-generated method stub
return null;
}

private Integer parseInt(CommandSender sender, String toParse) {
try {
return Integer.parseInt(toParse);
Expand Down
Loading