diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 15d248634..56273c34d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -21,7 +21,7 @@ checkerQual = "3.18.0" paper = "1.16.5-R0.1-SNAPSHOT" legacyBukkit = "1.8.8-R0.1-SNAPSHOT" bungee = "1.17-R0.1-SNAPSHOT" -sponge = "5.0.0" +sponge = "8.0.0-SNAPSHOT" legacySponge = "4.0.0" velocity = "3.0.0-SNAPSHOT" diff --git a/sponge/src/main/java/com/viaversion/viaversion/SpongePlugin.java b/sponge/src/main/java/com/viaversion/viaversion/SpongePlugin.java index 8279141e7..c8ef9a7d3 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/SpongePlugin.java +++ b/sponge/src/main/java/com/viaversion/viaversion/SpongePlugin.java @@ -37,31 +37,32 @@ import com.viaversion.viaversion.sponge.platform.SpongeViaLoader; import com.viaversion.viaversion.sponge.util.LoggerWrapper; import com.viaversion.viaversion.util.ChatColorUtil; import com.viaversion.viaversion.util.GsonUtil; -import com.viaversion.viaversion.util.VersionInfo; +import org.apache.maven.artifact.versioning.ArtifactVersion; import org.spongepowered.api.Game; +import org.spongepowered.api.Platform; import org.spongepowered.api.config.DefaultConfig; import org.spongepowered.api.entity.living.player.Player; import org.spongepowered.api.event.Listener; import org.spongepowered.api.event.game.state.GameAboutToStartServerEvent; import org.spongepowered.api.event.game.state.GameInitializationEvent; import org.spongepowered.api.event.game.state.GameStoppingServerEvent; +import org.spongepowered.api.event.lifecycle.StoppingEngineEvent; import org.spongepowered.api.plugin.Plugin; -import org.spongepowered.api.plugin.PluginContainer; import org.spongepowered.api.scheduler.Task; import org.spongepowered.api.text.serializer.TextSerializers; +import org.spongepowered.plugin.PluginContainer; +import org.spongepowered.plugin.builtin.jvm.Plugin; +import org.spongepowered.plugin.metadata.PluginMetadata; +import org.spongepowered.plugin.metadata.model.PluginContributor; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.logging.Logger; +import java.util.stream.Collectors; -@Plugin(id = "viaversion", - name = "ViaVersion", - version = VersionInfo.VERSION, - authors = {"_MylesC", "creeper123123321", "Gerrygames", "kennytv", "Matsv"}, - description = "Allow newer Minecraft versions to connect to an older server version." -) +@Plugin("viaversion") public class SpongePlugin implements ViaPlatform { @Inject private Game game; @@ -79,7 +80,7 @@ public class SpongePlugin implements ViaPlatform { @Listener public void onGameStart(GameInitializationEvent event) { // Setup Logger - logger = new LoggerWrapper(container.getLogger()); + logger = new LoggerWrapper(container.logger()); // Setup Plugin conf = new SpongeViaConfig(container, spongeConfig.getParentFile()); SpongeCommandHandler commandHandler = new SpongeCommandHandler(); @@ -97,7 +98,7 @@ public class SpongePlugin implements ViaPlatform { @Listener public void onServerStart(GameAboutToStartServerEvent event) { - if (game.getPluginManager().getPlugin("viabackwards").isPresent()) { + if (game.pluginManager().plugin("viabackwards").isPresent()) { MappingDataLoader.enableMappingsCache(); } @@ -107,23 +108,30 @@ public class SpongePlugin implements ViaPlatform { } @Listener - public void onServerStop(GameStoppingServerEvent event) { + public void onServerStop(StoppingEngineEvent event) { ((ViaManagerImpl) Via.getManager()).destroy(); } @Override public String getPlatformName() { - return game.getPlatform().getImplementation().getName(); + return game.platform().container(Platform.Component.IMPLEMENTATION).metadata().name().orElse("unknown"); } @Override public String getPlatformVersion() { - return game.getPlatform().getImplementation().getVersion().orElse("Unknown Version"); + return readVersion(game.platform().container(Platform.Component.IMPLEMENTATION).metadata().version()); } @Override public String getPluginVersion() { - return container.getVersion().orElse("Unknown Version"); + return readVersion(container.metadata().version()); + } + + private static String readVersion(ArtifactVersion version) { + String qualifier = version.getQualifier(); + qualifier = (qualifier == null || qualifier.isEmpty()) ? "" : "-" + qualifier; + + return version.getMajorVersion() + "." + version.getMinorVersion() + "." + version.getIncrementalVersion() + qualifier; } @Override @@ -167,9 +175,9 @@ public class SpongePlugin implements ViaPlatform { @Override public ViaCommandSender[] getOnlinePlayers() { - ViaCommandSender[] array = new ViaCommandSender[game.getServer().getOnlinePlayers().size()]; + ViaCommandSender[] array = new ViaCommandSender[game.server().onlinePlayers().size()]; int i = 0; - for (Player player : game.getServer().getOnlinePlayers()) { + for (Player player : game.server().onlinePlayers()) { array[i++] = new SpongeCommandSender(player); } return array; @@ -178,12 +186,12 @@ public class SpongePlugin implements ViaPlatform { @Override public void sendMessage(UUID uuid, String message) { String serialized = SpongePlugin.COMPONENT_SERIALIZER.serialize(SpongePlugin.COMPONENT_SERIALIZER.deserialize(message)); - game.getServer().getPlayer(uuid).ifPresent(player -> player.sendMessage(TextSerializers.JSON.deserialize(serialized))); // Hacky way to fix links + game.server().player(uuid).ifPresent(player -> player.sendMessage(TextSerializers.JSON.deserialize(serialized))); // Hacky way to fix links } @Override public boolean kickPlayer(UUID uuid, String message) { - return game.getServer().getPlayer(uuid).map(player -> { + return game.server().player(uuid).map(player -> { player.kick(TextSerializers.formattingCode(ChatColorUtil.COLOR_CHAR).deserialize(message)); return true; }).orElse(false); @@ -214,13 +222,14 @@ public class SpongePlugin implements ViaPlatform { JsonObject platformSpecific = new JsonObject(); List plugins = new ArrayList<>(); - for (PluginContainer p : game.getPluginManager().getPlugins()) { + for (PluginContainer p : game.pluginManager().plugins()) { + PluginMetadata meta = p.metadata(); plugins.add(new PluginInfo( true, - p.getName(), - p.getVersion().orElse("Unknown Version"), - p.getInstance().isPresent() ? p.getInstance().get().getClass().getCanonicalName() : "Unknown", - p.getAuthors() + meta.name().orElse("Unknown"), + readVersion(meta.version()), + p.instance() != null ? p.instance().getClass().getCanonicalName() : "Unknown", + meta.contributors().stream().map(PluginContributor::name).collect(Collectors.toList()) )); } platformSpecific.add("plugins", GsonUtil.getGson().toJsonTree(plugins)); @@ -247,4 +256,9 @@ public class SpongePlugin implements ViaPlatform { public Logger getLogger() { return logger; } + + public PluginContainer getPluginContainer() { + return container; + } + } diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandHandler.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandHandler.java index 399d13588..93d113a42 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandHandler.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandHandler.java @@ -18,53 +18,55 @@ package com.viaversion.viaversion.sponge.commands; import com.viaversion.viaversion.commands.ViaCommandHandler; -import org.checkerframework.checker.nullness.qual.Nullable; -import org.spongepowered.api.command.CommandCallable; -import org.spongepowered.api.command.CommandException; +import net.kyori.adventure.text.Component; +import org.jetbrains.annotations.NotNull; +import org.spongepowered.api.command.Command; +import org.spongepowered.api.command.CommandCompletion; import org.spongepowered.api.command.CommandResult; -import org.spongepowered.api.command.CommandSource; -import org.spongepowered.api.text.Text; -import org.spongepowered.api.world.Location; -import org.spongepowered.api.world.World; +import org.spongepowered.api.command.CommandCause; +import org.spongepowered.api.command.parameter.ArgumentReader; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; -public class SpongeCommandHandler extends ViaCommandHandler implements CommandCallable { +public class SpongeCommandHandler extends ViaCommandHandler implements Command.Raw { @Override - public CommandResult process(CommandSource source, String arguments) throws CommandException { - String[] args = arguments.length() > 0 ? arguments.split(" ") : new String[0]; - onCommand(new SpongeCommandSender(source), args); + public CommandResult process(CommandCause cause, ArgumentReader.Mutable arguments) { + String[] args = arguments.input().length() > 0 ? arguments.input().split(" ") : new String[0]; + onCommand(new SpongeCommandSender(cause), args); return CommandResult.success(); } - public List getSuggestions(CommandSource commandSource, String s, @Nullable Location location) throws CommandException { - return getSuggestions(commandSource, s); - } - - public List getSuggestions(CommandSource source, String arguments) throws CommandException { - String[] args = arguments.split(" ", -1); // ViaCommandHandler handles empty String in array. -1: do not discard empty strings - return onTabComplete(new SpongeCommandSender(source), args); + @Override + public List complete(CommandCause cause, ArgumentReader.Mutable arguments) { + String[] args = arguments.input().split(" ", -1); // ViaCommandHandler handles empty String in array. -1: do not discard empty strings + return onTabComplete(new SpongeCommandSender(cause), args).stream().map(CommandCompletion::of).collect(Collectors.toList()); } @Override - public boolean testPermission(CommandSource source) { - return source.hasPermission("viaversion.admin"); + public boolean canExecute(CommandCause cause) { + return cause.hasPermission("viaversion.admin"); } @Override - public Optional getShortDescription(CommandSource source) { - return Optional.of(Text.of("Shows ViaVersion Version and more.")); + public Optional shortDescription(CommandCause cause) { + return Optional.of(Component.text("Shows ViaVersion Version and more.")); } @Override - public Optional getHelp(CommandSource source) { + public Optional extendedDescription(CommandCause cause) { + return shortDescription(cause); + } + + @Override + public Optional help(@NotNull CommandCause cause) { return Optional.empty(); } @Override - public Text getUsage(CommandSource source) { - return Text.of("Usage /viaversion"); + public Component usage(CommandCause cause) { + return Component.text("Usage /viaversion"); } } diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandSender.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandSender.java index 8798a4290..455ef692a 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandSender.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/commands/SpongeCommandSender.java @@ -19,16 +19,15 @@ package com.viaversion.viaversion.sponge.commands; import com.viaversion.viaversion.SpongePlugin; import com.viaversion.viaversion.api.command.ViaCommandSender; -import org.spongepowered.api.command.CommandSource; -import org.spongepowered.api.text.serializer.TextSerializers; +import org.spongepowered.api.command.CommandCause; import org.spongepowered.api.util.Identifiable; import java.util.UUID; public class SpongeCommandSender implements ViaCommandSender { - private final CommandSource source; + private final CommandCause source; - public SpongeCommandSender(CommandSource source) { + public SpongeCommandSender(CommandCause source) { this.source = source; } @@ -46,7 +45,7 @@ public class SpongeCommandSender implements ViaCommandSender { @Override public UUID getUUID() { if (source instanceof Identifiable) { - return ((Identifiable) source).getUniqueId(); + return ((Identifiable) source).uniqueId(); } else { return UUID.fromString(getName()); } @@ -55,6 +54,6 @@ public class SpongeCommandSender implements ViaCommandSender { @Override public String getName() { - return source.getName(); + return source.friendlyIdentifier().orElse(source.identifier()); } } diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/UpdateListener.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/UpdateListener.java index b00e81572..7f7827568 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/UpdateListener.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/UpdateListener.java @@ -20,14 +20,13 @@ package com.viaversion.viaversion.sponge.listeners; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.update.UpdateUtil; import org.spongepowered.api.event.Listener; -import org.spongepowered.api.event.network.ClientConnectionEvent; +import org.spongepowered.api.event.network.ServerSideConnectionEvent; public class UpdateListener { @Listener - public void onJoin(ClientConnectionEvent.Join join) { - if (join.getTargetEntity().hasPermission("viaversion.update") - && Via.getConfig().isCheckForUpdates()) { - UpdateUtil.sendUpdateMessage(join.getTargetEntity().getUniqueId()); + public void onJoin(ServerSideConnectionEvent.Join join) { + if (join.player().hasPermission("viaversion.update") && Via.getConfig().isCheckForUpdates()) { + UpdateUtil.sendUpdateMessage(join.player().uniqueId()); } } } diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/ViaSpongeListener.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/ViaSpongeListener.java index 6786ce5fe..20ad1dead 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/ViaSpongeListener.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/ViaSpongeListener.java @@ -40,7 +40,7 @@ public class ViaSpongeListener extends ViaListener { public void register() { if (isRegistered()) return; - Sponge.getEventManager().registerListeners(plugin, this); + Sponge.eventManager().registerListeners(plugin.getPluginContainer(), this); setRegistered(true); } @@ -61,8 +61,4 @@ public class ViaSpongeListener extends ViaListener { Via.getPlatform().getLogger().severe("Could not get the entity id, please report this on our Github"); return -1; } - - public SpongePlugin getPlugin() { - return plugin; - } } diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/BlockListener.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/BlockListener.java index 71146eb6a..9927752b7 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/BlockListener.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/BlockListener.java @@ -18,16 +18,19 @@ package com.viaversion.viaversion.sponge.listeners.protocol1_9to1_8; import com.viaversion.viaversion.SpongePlugin; -import com.viaversion.viaversion.api.data.entity.EntityTracker; import com.viaversion.viaversion.api.minecraft.Position; import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; import com.viaversion.viaversion.protocols.protocol1_9to1_8.storage.EntityTracker1_9; import com.viaversion.viaversion.sponge.listeners.ViaSpongeListener; +import org.spongepowered.api.block.transaction.BlockTransaction; +import org.spongepowered.api.block.transaction.Operations; import org.spongepowered.api.entity.living.player.Player; import org.spongepowered.api.event.Listener; import org.spongepowered.api.event.block.ChangeBlockEvent; import org.spongepowered.api.event.filter.cause.Root; -import org.spongepowered.api.world.Location; +import org.spongepowered.api.world.server.ServerLocation; + +import java.util.Optional; public class BlockListener extends ViaSpongeListener { @@ -36,11 +39,17 @@ public class BlockListener extends ViaSpongeListener { } @Listener - public void placeBlock(ChangeBlockEvent.Place e, @Root Player player) { - if (isOnPipe(player.getUniqueId())) { - Location loc = e.getTransactions().get(0).getFinal().getLocation().get(); - EntityTracker1_9 tracker = getUserConnection(player.getUniqueId()).getEntityTracker(Protocol1_9To1_8.class); - tracker.addBlockInteraction(new Position(loc.getBlockX(), (short) loc.getBlockY(), loc.getBlockZ())); + public void placeBlock(ChangeBlockEvent.All e, @Root Player player) { + BlockTransaction transaction = e.transactions().get(0); + if (transaction.operation().equals(Operations.PLACE.get())) { + if (isOnPipe(player.uniqueId())) { + Optional optional = transaction.finalReplacement().location(); + if (optional.isPresent()) { + ServerLocation loc = optional.get(); + EntityTracker1_9 tracker = getUserConnection(player.uniqueId()).getEntityTracker(Protocol1_9To1_8.class); + tracker.addBlockInteraction(new Position(loc.blockX(), loc.blockY(), loc.blockZ())); + } + } } } } diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/DeathListener.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/DeathListener.java index 9b73b09af..5b836e2ff 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/DeathListener.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/DeathListener.java @@ -24,6 +24,7 @@ import com.viaversion.viaversion.api.type.Type; import com.viaversion.viaversion.protocols.protocol1_9to1_8.ClientboundPackets1_9; import com.viaversion.viaversion.protocols.protocol1_9to1_8.Protocol1_9To1_8; import com.viaversion.viaversion.sponge.listeners.ViaSpongeListener; +import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.spongepowered.api.entity.living.player.Player; import org.spongepowered.api.event.Listener; import org.spongepowered.api.event.Order; @@ -39,17 +40,17 @@ public class DeathListener extends ViaSpongeListener { @Listener(order = Order.LAST) public void onDeath(DestructEntityEvent.Death e) { - if (!(e.getTargetEntity() instanceof Player)) + if (!(e.entity() instanceof Player)) return; - Player p = (Player) e.getTargetEntity(); - if (isOnPipe(p.getUniqueId()) && Via.getConfig().isShowNewDeathMessages() && checkGamerule(p.getWorld())) { - sendPacket(p, e.getMessage().toPlain()); + Player p = (Player) e.entity(); + if (isOnPipe(p.uniqueId()) && Via.getConfig().isShowNewDeathMessages() && checkGamerule(p.getWorld())) { + sendPacket(p, PlainTextComponentSerializer.plainText().serialize(e.message())); } } public boolean checkGamerule(World w) { - Optional gamerule = w.getGameRule("showDeathMessages"); + Optional gamerule = w.gameRule("showDeathMessages"); if (gamerule.isPresent()) { try { diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/HandItemCache.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/HandItemCache.java index a65695be8..17d93e7e7 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/HandItemCache.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/HandItemCache.java @@ -58,9 +58,9 @@ public class HandItemCache implements Runnable { public void run() { List players = new ArrayList<>(handCache.keySet()); - for (Player p : Sponge.getServer().getOnlinePlayers()) { - handCache.put(p.getUniqueId(), convert(grabber.getItem(p))); - players.remove(p.getUniqueId()); + for (Player p : Sponge.server().onlinePlayers()) { + handCache.put(p.uniqueId(), convert(grabber.getItem(p))); + players.remove(p.uniqueId()); } // Remove offline players for (UUID uuid : players) { @@ -105,7 +105,7 @@ public class HandItemCache implements Runnable { e.printStackTrace(); } } - return new DataItem(id, (byte) itemInHand.getQuantity(), (short) damage, null); + return new DataItem(id, (byte) itemInHand.quantity(), (short) damage, null); } } diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/sponge5/Sponge5ArmorListener.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/sponge5/Sponge5ArmorListener.java index 180ae9d72..158abaf4d 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/sponge5/Sponge5ArmorListener.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/sponge5/Sponge5ArmorListener.java @@ -29,15 +29,15 @@ import org.spongepowered.api.data.type.HandTypes; import org.spongepowered.api.entity.living.player.Player; import org.spongepowered.api.event.Listener; import org.spongepowered.api.event.action.InteractEvent; +import org.spongepowered.api.event.cause.entity.MovementTypes; import org.spongepowered.api.event.entity.MoveEntityEvent; -import org.spongepowered.api.event.entity.living.humanoid.player.RespawnPlayerEvent; +import org.spongepowered.api.event.entity.living.player.RespawnPlayerEvent; import org.spongepowered.api.event.filter.cause.Root; -import org.spongepowered.api.event.item.inventory.ClickInventoryEvent; -import org.spongepowered.api.event.network.ClientConnectionEvent; +import org.spongepowered.api.event.item.inventory.container.ClickContainerEvent; +import org.spongepowered.api.event.network.ServerSideConnectionEvent; import org.spongepowered.api.item.inventory.ItemStack; import org.spongepowered.api.item.inventory.transaction.SlotTransaction; -import java.util.Optional; import java.util.UUID; public class Sponge5ArmorListener extends ViaSpongeListener { @@ -50,14 +50,14 @@ public class Sponge5ArmorListener extends ViaSpongeListener { // public void sendArmorUpdate(Player player) { // Ensure that the player is on our pipe - if (!isOnPipe(player.getUniqueId())) return; + if (!isOnPipe(player.uniqueId())) return; int armor = 0; - armor += calculate(player.getHelmet()); - armor += calculate(player.getChestplate()); - armor += calculate(player.getLeggings()); - armor += calculate(player.getBoots()); + armor += calculate(player.head()); + armor += calculate(player.chest()); + armor += calculate(player.legs()); + armor += calculate(player.feet()); PacketWrapper wrapper = PacketWrapper.create(ClientboundPackets1_9.ENTITY_PROPERTIES, null, getUserConnection(player.getUniqueId())); try { @@ -76,18 +76,19 @@ public class Sponge5ArmorListener extends ViaSpongeListener { } } - private int calculate(Optional itemStack) { - if (itemStack.isPresent()) - return ArmorType.findByType(itemStack.get().getItem().getType().getId()).getArmorPoints(); - + private int calculate(ItemStack itemStack) { + if (itemStack != null) { + // todo + return ArmorType.findByType(itemStack.type()).getArmorPoints(); + } return 0; } @Listener - public void onInventoryClick(ClickInventoryEvent e, @Root Player player) { - for (SlotTransaction transaction : e.getTransactions()) { - if (ArmorType.isArmor(transaction.getFinal().getType().getId()) || - ArmorType.isArmor(e.getCursorTransaction().getFinal().getType().getId())) { + public void onContainerClick(ClickContainerEvent e, @Root Player player) { + for (SlotTransaction transaction : e.transactions()) { + if (ArmorType.isArmor(transaction.finalReplacement().type()) || + ArmorType.isArmor(e.cursorTransaction().finalReplacement().type())) { sendDelayedArmorUpdate(player); break; } @@ -96,32 +97,34 @@ public class Sponge5ArmorListener extends ViaSpongeListener { @Listener public void onInteract(InteractEvent event, @Root Player player) { - if (player.getItemInHand(HandTypes.MAIN_HAND).isPresent()) { - if (ArmorType.isArmor(player.getItemInHand(HandTypes.MAIN_HAND).get().getItem().getId())) + if (player.itemInHand(HandTypes.MAIN_HAND) != null) { + if (ArmorType.isArmor(player.itemInHand(HandTypes.MAIN_HAND).type())) sendDelayedArmorUpdate(player); } } @Listener - public void onJoin(ClientConnectionEvent.Join e) { - sendArmorUpdate(e.getTargetEntity()); + public void onJoin(ServerSideConnectionEvent.Join e) { + sendArmorUpdate(e.player()); } @Listener public void onRespawn(RespawnPlayerEvent e) { - sendDelayedArmorUpdate(e.getTargetEntity()); + sendDelayedArmorUpdate(e.entity()); } @Listener - public void onWorldChange(MoveEntityEvent.Teleport e) { - if (!(e.getTargetEntity() instanceof Player)) return; - if (!e.getFromTransform().getExtent().getUniqueId().equals(e.getToTransform().getExtent().getUniqueId())) { - sendArmorUpdate((Player) e.getTargetEntity()); + public void onWorldChange(MoveEntityEvent e) { + if (!(e.entity() instanceof Player)) return; + if (!e.cause().contains(MovementTypes.ENTITY_TELEPORT)) return; //todo: probably doesn't work + + if (!e.originalDestinationPosition().getExtent().getUniqueId().equals(e.destinationPosition().getExtent().getUniqueId())) { + sendArmorUpdate((Player) e.entity()); } } public void sendDelayedArmorUpdate(final Player player) { - if (!isOnPipe(player.getUniqueId())) return; // Don't start a task if the player is not on the pipe + if (!isOnPipe(player.uniqueId())) return; // Don't start a task if the player is not on the pipe Via.getPlatform().runSync(new Runnable() { @Override public void run() { diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/sponge5/Sponge5ItemGrabber.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/sponge5/Sponge5ItemGrabber.java index faaadbefc..1629fe849 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/sponge5/Sponge5ItemGrabber.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/listeners/protocol1_9to1_8/sponge5/Sponge5ItemGrabber.java @@ -25,6 +25,6 @@ import org.spongepowered.api.item.inventory.ItemStack; public class Sponge5ItemGrabber implements ItemGrabber { @Override public ItemStack getItem(Player player) { - return player.getItemInHand(HandTypes.MAIN_HAND).orElse(null); + return player.itemInHand(HandTypes.MAIN_HAND); } } diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaAPI.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaAPI.java index 1595d2239..f386ba9b9 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaAPI.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaAPI.java @@ -25,11 +25,11 @@ public class SpongeViaAPI extends ViaAPIBase { @Override public int getPlayerVersion(Player player) { - return getPlayerVersion(player.getUniqueId()); + return getPlayerVersion(player.uniqueId()); } @Override public void sendRawPacket(Player player, ByteBuf packet) throws IllegalArgumentException { - sendRawPacket(player.getUniqueId(), packet); + sendRawPacket(player.uniqueId(), packet); } } diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaConfig.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaConfig.java index c5bb29076..2fd853dae 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaConfig.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaConfig.java @@ -19,7 +19,7 @@ package com.viaversion.viaversion.sponge.platform; import com.viaversion.viaversion.configuration.AbstractViaConfig; import org.spongepowered.api.asset.Asset; -import org.spongepowered.api.plugin.PluginContainer; +import org.spongepowered.plugin.PluginContainer; import java.io.File; import java.net.URL; @@ -46,7 +46,7 @@ public class SpongeViaConfig extends AbstractViaConfig { if (!config.isPresent()) { throw new IllegalArgumentException("Default config is missing from jar"); } - return config.get().getUrl(); + return config.get().url(); } @Override diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaInjector.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaInjector.java index 3b45defad..670c94f58 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaInjector.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/platform/SpongeViaInjector.java @@ -33,7 +33,7 @@ public class SpongeViaInjector extends LegacyViaInjector { @Override public int getServerProtocolVersion() throws ReflectiveOperationException { - MinecraftVersion version = Sponge.getPlatform().getMinecraftVersion(); + MinecraftVersion version = Sponge.platform().minecraftVersion(); return (int) version.getClass().getDeclaredMethod("getProtocol").invoke(version); } @@ -42,7 +42,7 @@ public class SpongeViaInjector extends LegacyViaInjector { Class serverClazz = Class.forName("net.minecraft.server.MinecraftServer"); for (Method method : serverClazz.getDeclaredMethods()) { if (method.getReturnType().getSimpleName().equals("NetworkSystem") && method.getParameterTypes().length == 0) { - Object connection = method.invoke(Sponge.getServer()); + Object connection = method.invoke(Sponge.server()); if (connection != null) { return connection; } diff --git a/sponge/src/main/java/com/viaversion/viaversion/sponge/util/LoggerWrapper.java b/sponge/src/main/java/com/viaversion/viaversion/sponge/util/LoggerWrapper.java index 118ac393a..a05864be5 100644 --- a/sponge/src/main/java/com/viaversion/viaversion/sponge/util/LoggerWrapper.java +++ b/sponge/src/main/java/com/viaversion/viaversion/sponge/util/LoggerWrapper.java @@ -17,7 +17,7 @@ */ package com.viaversion.viaversion.sponge.util; -import org.slf4j.Logger; +import org.apache.logging.log4j.Logger; import java.text.MessageFormat; import java.util.logging.Level; diff --git a/sponge/src/main/resources/META-INF/sponge_plugins.json b/sponge/src/main/resources/META-INF/sponge_plugins.json new file mode 100644 index 000000000..3bb848466 --- /dev/null +++ b/sponge/src/main/resources/META-INF/sponge_plugins.json @@ -0,0 +1,48 @@ +{ + "loader": { + "name": "java_plain", + "version": "1.0" + }, + "license": "GNU GPLv3", + "plugins": [ + { + "id": "viaversion", + "name": "ViaVersion", + "version": "${version}", + "description": "${description}", + "entrypoint": "com.viaversion.viaversion.SpongePlugin", + "branding": { + "logo": "assets/viaversion/textures/logo.png", + "icon": "assets/viaversion/textures/logo.png" + }, + "links": { + "homepage": "https://www.spigotmc.org/resources/viaversion.19254/", + "source": "https://github.com/ViaVersion/ViaVersion", + "issues": "https://github.com/ViaVersion/ViaVersion" + }, + "contributors": [ + { + "name": "_MylesC" + }, + { + "name": "creeper123123321" + }, + { + "name": "Gerrygames" + }, + { + "name": "kennytv" + }, + { + "name": "Matsv" + } + ], + "dependencies": [ + { + "id": "spongeapi", + "version": "8.0.0" + } + ] + } + ] +} \ No newline at end of file