blob: b11eb5948eab21c286192efb1b75390062a43393 [file] [log] [blame] [raw]
package us.myles.ViaVersion.sponge;
import lombok.AllArgsConstructor;
import org.spongepowered.api.Sponge;
import us.myles.ViaVersion.SpongePlugin;
import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.api.platform.ViaPlatformLoader;
import us.myles.ViaVersion.protocols.protocol1_9to1_8.providers.BulkChunkTranslatorProvider;
import us.myles.ViaVersion.protocols.protocol1_9to1_8.providers.MovementTransmitterProvider;
import us.myles.ViaVersion.sponge.listeners.ClientLeaveListener;
import us.myles.ViaVersion.sponge.listeners.UpdateListener;
import us.myles.ViaVersion.sponge.providers.SpongeViaBulkChunkTranslator;
import us.myles.ViaVersion.sponge.providers.SpongeViaMovementTransmitter;
@AllArgsConstructor
public class SpongeViaLoader implements ViaPlatformLoader {
private SpongePlugin plugin;
@Override
public void load() {
// Update Listener
Sponge.getEventManager().registerListeners(plugin, new UpdateListener());
//
/* Base Protocol */
Sponge.getEventManager().registerListeners(plugin, new ClientLeaveListener());
// /* 1.9 client to 1.8 server */
//
// new ArmorListener(plugin).register();
// new CommandBlockListener(plugin).register();
// new DeathListener(plugin).register();
// new BlockListener(plugin).register();
//
// if (Bukkit.getVersion().toLowerCase().contains("paper") || Bukkit.getVersion().toLowerCase().contains("taco")) {
// plugin.getLogger().info("Enabling PaperSpigot/TacoSpigot patch: Fixes block placement.");
// new PaperPatch(plugin).register();
// }
// if (plugin.getConf().isItemCache()) {
// new HandItemCache().runTaskTimerAsynchronously(plugin, 2L, 2L); // Updates player's items :)
// HandItemCache.CACHE = true;
// }
//
// /* Providers */
Via.getManager().getProviders().use(BulkChunkTranslatorProvider.class, new SpongeViaBulkChunkTranslator());
Via.getManager().getProviders().use(MovementTransmitterProvider.class, new SpongeViaMovementTransmitter());
// Via.getManager().getProviders().use(HandItemProvider.class, new HandItemProvider() {
// @Override
// public Item getHandItem(final UserConnection info) {
// if (HandItemCache.CACHE) {
// return HandItemCache.getHandItem(info.get(ProtocolInfo.class).getUuid());
// } else {
// try {
// return Bukkit.getScheduler().callSyncMethod(Bukkit.getPluginManager().getPlugin("ViaVersion"), new Callable<Item>() {
// @Override
// public Item call() throws Exception {
// UUID playerUUID = info.get(ProtocolInfo.class).getUuid();
// if (Bukkit.getPlayer(playerUUID) != null) {
// return HandItemCache.convert(Bukkit.getPlayer(playerUUID).getItemInHand());
// }
// return null;
// }
// }).get(10, TimeUnit.SECONDS);
// } catch (Exception e) {
// System.out.println("Error fetching hand item: " + e.getClass().getName());
// if (Via.getManager().isDebug())
// e.printStackTrace();
// return null;
// }
// }
// }
// });
}
}