Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 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
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ plugins {
}

// Core versioning
version = "0.5.2b2"
version = "0.5.2b3"

allprojects {
apply from: "${rootDir}/gradle/tasks.gradle"
Expand Down
3 changes: 2 additions & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,5 @@ deploy.imanityLibraries = true

# Minecraft
adventure.version = 4.9.3
netty.version = 4.1.69.Final
netty.version = 4.1.69.Final
packetevents.version = 2.0-SNAPSHOT
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public class GameModeArgTransformer extends BukkitArgTransformer<GameMode> {
MAP.put("adventure", GameMode.ADVENTURE);
MAP.put("2", GameMode.ADVENTURE);

if (MCProtocol.INSTANCE.getProtocolMapping().getVersion().isOrAbove(MCVersion.V1_8)) {
if (MCProtocol.INSTANCE.version().isOrAbove(MCVersion.V1_8)) {
MAP.put("spectator", GameMode.SPECTATOR);
MAP.put("3", GameMode.SPECTATOR);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version = "0.0.1b1"
version = "0.0.1b2"

dependencies {
compileOnly project.spigot()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version = "0.0.1b1"
version = "0.0.1b2"

module {
platform("mc")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,9 @@ public void onPlayerQuit(MCPlayerQuitEvent event) {
if (nameTag != null) {
nameTag.removeName(name);
list.removeNameTag(name);

other.sendPacket(PacketPlay.Out.ScoreboardTeam.builder()
.player(nameTag.getName())
.players(nameTag.getName())
.players(Collections.singleton(name))
.teamAction(TeamAction.LEAVE)
.build());
Expand Down Expand Up @@ -154,7 +155,7 @@ private void updateForInternal(MCPlayer player, MCPlayer target) {

list.addNameTag(target.getName(), nametag);
player.sendPacket(PacketPlay.Out.ScoreboardTeam.builder()
.player(nametag.getName())
.players(nametag.getName())
.players(Collections.singleton(target.getName()))
.teamAction(TeamAction.JOIN)
.build());
Expand Down Expand Up @@ -185,7 +186,7 @@ protected NameTag getOrCreate(Component prefix, Component suffix) {

private void sendPacket(MCPlayer mcPlayer, NameTag info) {
mcPlayer.sendPacket(PacketPlay.Out.ScoreboardTeam.builder()
.player(info.getName())
.players(info.getName())
.teamAction(TeamAction.ADD)
.parameters(Optional.of(PacketPlay.Out.ScoreboardTeam.Parameters.builder()
.playerPrefix(info.getPrefix())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version = "0.0.1b3"
version = "0.0.1b4"

module {
platform("mc")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public Sidebar(MCPlayer player) {
.displaySlot(ObjectiveDisplaySlot.SIDEBAR)
.objectiveName(player.getName())
.build());

}

public void setTitle(Component title) {
Expand Down Expand Up @@ -163,7 +164,7 @@ public void remove() {
}

private PacketPlay.Out.ScoreboardTeam getOrRegisterTeam(int line) {
final PacketPlay.Out.ScoreboardTeam.ScoreboardTeamBuilder builder = PacketPlay.Out.ScoreboardTeam.builder();
final PacketPlay.Out.ScoreboardTeam.Factory builder = PacketPlay.Out.ScoreboardTeam.builder();
builder.name("-sb" + line);
builder.teamAction(TeamAction.ADD);

Expand All @@ -182,7 +183,7 @@ private PacketPlay.Out.ScoreboardTeam getOrRegisterTeam(int line) {
.build();

builder.teamAction(TeamAction.ADD);
builder.player(getEntry(line));
builder.players(getEntry(line));
this.player.sendPacket(score);

return builder.build();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version = "0.0.2b2"
version = "0.0.2b3"

module {
platform("mc")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ private void setup() {
.playerPrefix(Component.empty())
.playerSuffix(Component.empty())
.build()))
.player(LegacyClientUtil.entry(i - 1))
.players(LegacyClientUtil.entry(i - 1))
.build();

player.sendPacket(packet);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public class MainTablistImpl implements TablistImpl {
public void removeSelf(MCPlayer player) {
final PacketPlay.Out.PlayerInfo playerInfo = PacketPlay.Out.PlayerInfo.builder()
.action(io.fairyproject.mc.protocol.item.PlayerInfoAction.REMOVE_PLAYER)
.entry(MCPlayer.from(player).asInfoData())
.entries(MCPlayer.from(player).asInfoData())
.build();

MCPlayer.all().forEach(mcPlayer -> mcPlayer.sendPacket(playerInfo));
Expand All @@ -72,7 +72,7 @@ public TabEntry createFakePlayer(Tablist tablist, String string, TabColumn colum

final PacketPlay.Out.PlayerInfo packet = PacketPlay.Out.PlayerInfo.builder()
.action(io.fairyproject.mc.protocol.item.PlayerInfoAction.ADD_PLAYER)
.entry(new PlayerInfoData(1, profile, io.fairyproject.mc.GameMode.SURVIVAL, Component.empty()))
.entries(new PlayerInfoData(1, profile, io.fairyproject.mc.GameMode.SURVIVAL, Component.empty()))
.build();
player.sendPacket(packet);
return new TabEntry(string, profile.getUuid(), Component.empty(), tablist, Skin.GRAY, column, slot, rawSlot, 0);
Expand All @@ -96,15 +96,15 @@ public void updateFakeName(Tablist tablist, TabEntry tabEntry, Component text) {
.playerPrefix(MCAdventure.LEGACY.deserialize(newStrings[0]))
.playerPrefix(MCAdventure.LEGACY.deserialize(newStrings.length > 1 ? CC.translate(newStrings[1]) : ""))
.build()))
.player(LegacyClientUtil.entry(tabEntry.getRawSlot() - 1))
.players(LegacyClientUtil.entry(tabEntry.getRawSlot() - 1))
.teamAction(TeamAction.CHANGE)
.build();

player.sendPacket(packet);
} else {
final PacketPlay.Out.PlayerInfo packet = PacketPlay.Out.PlayerInfo.builder()
.action(PlayerInfoAction.UPDATE_DISPLAY_NAME)
.entry(new PlayerInfoData(tabEntry.getLatency(), this.getGameProfile(version, tabEntry), GameMode.SURVIVAL, text))
.entries(new PlayerInfoData(tabEntry.getLatency(), this.getGameProfile(version, tabEntry), GameMode.SURVIVAL, text))
.build();

player.sendPacket(packet);
Expand All @@ -120,7 +120,7 @@ public void updateFakeLatency(Tablist tablist, TabEntry tabEntry, int latency) {
final MCVersion version = tablist.getPlayer().getVersion();
final PacketPlay.Out.PlayerInfo packet = PacketPlay.Out.PlayerInfo.builder()
.action(PlayerInfoAction.UPDATE_LATENCY)
.entry(new PlayerInfoData(tabEntry.getLatency(), this.getGameProfile(version, tabEntry), GameMode.SURVIVAL, tabEntry.getText()))
.entries(new PlayerInfoData(tabEntry.getLatency(), this.getGameProfile(version, tabEntry), GameMode.SURVIVAL, tabEntry.getText()))
.build();

tablist.getPlayer().sendPacket(packet);
Expand All @@ -147,11 +147,11 @@ public void updateFakeSkin(Tablist tablist, TabEntry tabEntry, Skin skin) {
final PlayerInfoData playerInfoData = new PlayerInfoData(tabEntry.getLatency(), gameProfile, GameMode.SURVIVAL, tabEntry.getText());
final PacketPlay.Out.PlayerInfo remove = PacketPlay.Out.PlayerInfo.builder()
.action(PlayerInfoAction.REMOVE_PLAYER)
.entry(playerInfoData)
.entries(playerInfoData)
.build();
final PacketPlay.Out.PlayerInfo add = PacketPlay.Out.PlayerInfo.builder()
.action(PlayerInfoAction.ADD_PLAYER)
.entry(playerInfoData)
.entries(playerInfoData)
.build();

tablist.getPlayer().sendPacket(remove);
Expand Down
1 change: 1 addition & 0 deletions io.fairyproject.platforms/bukkit-platform/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import org.apache.tools.ant.filters.ReplaceTokens
dependencies {
api project(":io.fairyproject.platforms:mc-platform")

implementation 'com.github.retrooper.packetevents:spigot:' + findProperty("packetevents.version")
implementation "net.kyori:adventure-platform-bukkit:4.0.1"

compileOnly "com.destroystokyo.paper:paper-api:" + findProperty("bukkit.version")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

package io.fairyproject.bukkit;

import com.github.retrooper.packetevents.PacketEvents;
import io.fairyproject.ExtendedClassLoader;
import io.fairyproject.FairyPlatform;
import io.fairyproject.bukkit.events.PostServicesInitialEvent;
Expand Down Expand Up @@ -87,6 +88,7 @@ public void load() {
ModuleService.init();
MinecraftReflection.init();
this.createMCInitializer().apply();
PacketEvents.getAPI().load();
}

@Override
Expand All @@ -98,10 +100,14 @@ public void enable() {

super.enable();
ModuleService.INSTANCE.enable();
PacketEvents.getAPI().getSettings().debug(false).bStats(false).checkForUpdates(true);
PacketEvents.getAPI().init();
}

@Override
public void disable() {
PacketEvents.getAPI().terminate();

super.disable();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package io.fairyproject.bukkit.mc;

import com.github.retrooper.packetevents.PacketEventsAPI;
import io.fairyproject.bukkit.FairyBukkitPlatform;
import io.fairyproject.bukkit.protocol.BukkitNettyInjector;
import io.fairyproject.bukkit.util.Players;
import io.fairyproject.mc.*;
import io.fairyproject.mc.protocol.mapping.MCProtocolMapping;
import io.fairyproject.mc.protocol.mapping.MCProtocolMapping1_8;
import io.fairyproject.mc.protocol.netty.NettyInjector;
import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

Expand All @@ -21,8 +22,8 @@ public NettyInjector createNettyInjector() {
}

@Override
public MCProtocolMapping createProtocolMapping() {
return new MCProtocolMapping1_8(); // TODO
public PacketEventsAPI<?> createPacketEvents() {
return SpigotPacketEventsBuilder.build(FairyBukkitPlatform.PLUGIN);
}

@Override
Expand Down
3 changes: 3 additions & 0 deletions io.fairyproject.platforms/mc-platform/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
dependencies {
compileOnly "io.netty:netty-all:" + findProperty("netty.version")

// PacketEvents, for packets
api 'com.github.retrooper.packetevents:api:' + findProperty("packetevents.version")

// Adventure, for user-interface
api "net.kyori:adventure-api:" + findProperty("adventure.version")
api "net.kyori:adventure-text-minimessage:4.2.0-SNAPSHOT"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ public class MCAdventure {

public void initialize() {
final GsonComponentSerializer.Builder builder = GsonComponentSerializer.builder();
if (!MCProtocol.INSTANCE.getProtocolMapping().getVersion().isHexColorSupport()) {
if (!MCProtocol.INSTANCE.version().isHexColorSupport()) {
builder.downsampleColors();
}

final LegacyComponentSerializer.Builder legacyBuilder = LegacyComponentSerializer.builder();
if (MCProtocol.INSTANCE.getProtocolMapping().getVersion().isHexColorSupport()) {
if (MCProtocol.INSTANCE.version().isHexColorSupport()) {
legacyBuilder.hexColors();
}

Expand All @@ -44,7 +44,7 @@ public String asLegacyString(Component component, Locale locale) {
}

public String asItemString(Component component, Locale locale) {
if (MCProtocol.INSTANCE.getProtocolMapping().getVersion().isOrAbove(MCVersion.V1_13)) {
if (MCProtocol.INSTANCE.version().isOrAbove(MCVersion.V1_13)) {
return asJsonString(component, locale);
} else {
return asLegacyString(component, locale);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package io.fairyproject.mc;

import com.github.retrooper.packetevents.PacketEventsAPI;
import io.fairyproject.mc.protocol.MCProtocol;
import io.fairyproject.mc.protocol.mapping.MCProtocolMapping;
import io.fairyproject.mc.protocol.netty.NettyInjector;

public interface MCInitializer {

default void apply() {
MCProtocol.initialize(this.createNettyInjector(), this.createProtocolMapping());
MCProtocol.initialize(this.createNettyInjector(), this.createPacketEvents());
MCServer.Companion.CURRENT = this.createMCServer();
MCEntity.Companion.BRIDGE = this.createEntityBridge();
MCWorld.Companion.BRIDGE = this.createWorldBridge();
Expand All @@ -16,7 +16,7 @@ default void apply() {
}

NettyInjector createNettyInjector();
MCProtocolMapping createProtocolMapping();
PacketEventsAPI<?> createPacketEvents();
MCServer createMCServer();
MCEntity.Bridge createEntityBridge();
MCWorld.Bridge createWorldBridge();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.fairyproject.mc;

import com.github.retrooper.packetevents.PacketEvents;
import com.github.retrooper.packetevents.wrapper.PacketWrapper;
import io.fairyproject.mc.protocol.MCPacket;
import io.fairyproject.mc.protocol.MCProtocol;
import io.fairyproject.mc.protocol.MCVersion;
Expand Down Expand Up @@ -218,19 +220,8 @@ default void sendMessage(char colorCode, Iterable<String> messages) {
*
* @param packet the packet
*/
default void sendPacket(MCPacket packet) {
final int id = MCProtocol.INSTANCE.getProtocolMapping()
.getProtocol(getProtocolId())
.fromPacketClass(packet.getClass());

final ByteBuf buffer = this.getChannel().alloc().buffer();
final FriendlyByteBuf friendlyByteBuf = new FriendlyByteBuf(buffer);
friendlyByteBuf.setLocale(Locale.forLanguageTag(this.getGameLocale()));

friendlyByteBuf.writeVarInt(id);
packet.write(friendlyByteBuf);

sendRawPacket(friendlyByteBuf);
default void sendPacket(PacketWrapper<?> packet) {
PacketEvents.getAPI().getProtocolManager().sendPacket(this.getChannel(), packet);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,35 @@
package io.fairyproject.mc.protocol;

import com.github.retrooper.packetevents.PacketEvents;
import com.github.retrooper.packetevents.PacketEventsAPI;
import io.fairyproject.mc.MCAdventure;
import lombok.Getter;
import io.fairyproject.mc.protocol.mapping.MCProtocolMapping;
import io.fairyproject.mc.protocol.netty.NettyInjector;

@Getter
public class MCProtocol {

public static MCProtocol INSTANCE;
public static void initialize(NettyInjector injector, MCProtocolMapping protocolMapping) {
new MCProtocol(injector, protocolMapping);

private final NettyInjector injector;
private final PacketEventsAPI<?> packetEvents;

public static void initialize(NettyInjector injector, PacketEventsAPI<?> packetEvents) {
new MCProtocol(injector, packetEvents);

MCAdventure.initialize();
}

private final NettyInjector injector;
private final MCProtocolMapping protocolMapping;

private MCProtocol(NettyInjector injector, MCProtocolMapping protocolMapping) {
private MCProtocol(NettyInjector injector, PacketEventsAPI<?> packetEvents) {
INSTANCE = this;

this.injector = injector;
this.protocolMapping = protocolMapping;
this.packetEvents = packetEvents;
}

public MCVersion version() {
return this.protocolMapping.getVersion();
return MCVersion.getVersionFromRaw(
PacketEvents.getAPI().getServerManager().getVersion().getProtocolVersion()
);
}

}
Loading