Commit d9352e4f authored by Ashijin's avatar Ashijin
Browse files

added R2

parent cc9b1548
......@@ -41,6 +41,12 @@
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.lumine</groupId>
<artifactId>MCCosmetics-v1_18_R2</artifactId>
<version>${project.parent.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.lumine</groupId>
<artifactId>MCCosmetics-v1_18</artifactId>
......
......@@ -29,6 +29,7 @@
<module>api</module>
<module>plugin</module>
<module>v1_18</module>
<module>v1_18_R2</module>
<module>dist</module>
</modules>
......
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>MCCosmetics-v1_18_R2</artifactId>
<parent>
<groupId>io.lumine</groupId>
<artifactId>MCCosmetics-Plugin</artifactId>
<version>${mccosmetics.version}</version>
</parent>
<build>
<plugins>
<plugin>
<groupId>net.md-5</groupId>
<artifactId>specialsource-maven-plugin</artifactId>
<version>1.2.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>remap</goal>
</goals>
<id>remap-obf</id>
<configuration>
<srgIn>org.spigotmc:minecraft-server:1.18-R0.1-SNAPSHOT:txt:maps-mojang</srgIn>
<reverse>true</reverse>
<remappedDependencies>org.spigotmc:spigot:1.18-R0.1-SNAPSHOT:jar:remapped-mojang</remappedDependencies>
<remappedArtifactAttached>true</remappedArtifactAttached>
<remappedClassifierName>remapped-obf</remappedClassifierName>
</configuration>
</execution>
<execution>
<phase>package</phase>
<goals>
<goal>remap</goal>
</goals>
<id>remap-spigot</id>
<configuration>
<inputFile>${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar</inputFile>
<srgIn>org.spigotmc:minecraft-server:1.18-R0.1-SNAPSHOT:csrg:maps-spigot</srgIn>
<remappedDependencies>org.spigotmc:spigot:1.18-R0.1-SNAPSHOT:jar:remapped-obf</remappedDependencies>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
<repository>
<id>nexus</id>
<url>https://mvn.lumine.io/repository/maven/</url>
</repository>
<repository>
<id>lumine</id>
<url>https://mvn.lumine.io/repository/maven-private/</url>
</repository>
<repository>
<id>lumine-snapshots</id>
<url>https://mvn.lumine.io/repository/maven-snapshots/</url>
</repository>
<repository>
<id>lumine-test</id>
<url>https://mvn.lumine.io/repository/maven-test/</url>
</repository>
<repository>
<id>minecraft-libraries</id>
<name>Minecraft Libraries</name>
<url>https://libraries.minecraft.net</url>
</repository>
</repositories>
<dependencies>
<!-- Modules -->
<dependency>
<groupId>io.lumine</groupId>
<artifactId>MCCosmetics-API</artifactId>
<version>${mccosmetics.version}</version>
<scope>provided</scope>
</dependency>
<!-- Main dependencies -->
<dependency>
<groupId>io.lumine</groupId>
<artifactId>LumineUtils</artifactId>
<version>${lumineutils.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.lumine</groupId>
<artifactId>MCCosmetics</artifactId>
<version>${project.parent.version}</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<!-- Spigot API -->
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.18.2-R0.1-SNAPSHOT</version>
<classifier>shaded</classifier>
<scope>provided</scope>
</dependency>
<!-- Spigot NMS version -->
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot</artifactId>
<version>1.18.2-R0.1-SNAPSHOT</version>
<classifier>remapped-mojang</classifier>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.mojang</groupId>
<artifactId>datafixerupper</artifactId>
<version>1.0.20</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.25.Final</version>
<scope>provided</scope>
</dependency>
<!-- Other -->
<dependency>
<groupId>com.comphenix.protocol</groupId>
<artifactId>ProtocolLib</artifactId>
<version>4.6.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package io.lumine.cosmetics.nms;
import io.lumine.cosmetics.MCCosmeticsPlugin;
import io.lumine.cosmetics.nms.v1_18_R2.network.VolatileChannelHandler;
import io.lumine.cosmetics.nms.v1_18_R2.VolatileHatImpl;
import io.netty.channel.Channel;
import io.netty.channel.ChannelPipeline;
import lombok.Getter;
import net.minecraft.network.Connection;
import net.minecraft.server.level.ServerPlayer;
import org.bukkit.craftbukkit.v1_18_R2.entity.CraftPlayer;
import org.bukkit.entity.Player;
public class VolatileCodeEnabled_v1_18_R1 implements VolatileCodeHandler {
@Getter private final MCCosmeticsPlugin plugin;
@Getter private final VolatileHatHelper hatHelper;
public VolatileCodeEnabled_v1_18_R1(MCCosmeticsPlugin plugin) {
this.plugin = plugin;
this.hatHelper = new VolatileHatImpl(plugin);
}
@Override
public void injectPlayer(Player player) {
ServerPlayer ply = ((CraftPlayer) player).getHandle();
VolatileChannelHandler cdh = new VolatileChannelHandler(player);
ChannelPipeline pipeline = ply.connection.getConnection().channel.pipeline();
for (String name : pipeline.toMap().keySet()) {
if (pipeline.get(name) instanceof Connection) {
pipeline.addBefore(name, "mc_cosmetics_packet_handler", cdh);
break;
}
}
}
@Override
public void removePlayer(Player player) {
Channel channel = ((CraftPlayer) player).getHandle().connection.getConnection().channel;
channel.eventLoop().submit(() -> {
channel.pipeline().remove("mc_cosmetics_packet_handler");
return null;
});
}
}
package io.lumine.cosmetics.nms.v1_18_R2;
import java.util.List;
import org.bukkit.craftbukkit.v1_18_R2.inventory.CraftItemStack;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.events.PacketContainer;
import com.google.common.collect.Lists;
import com.mojang.datafixers.util.Pair;
import io.lumine.cosmetics.MCCosmeticsPlugin;
import io.lumine.cosmetics.nms.VolatileHatHelper;
import io.lumine.cosmetics.players.Profile;
import io.lumine.utils.protocol.Protocol;
import lombok.Getter;
import net.minecraft.world.entity.EquipmentSlot;
public class VolatileHatImpl implements VolatileHatHelper {
@Getter private final MCCosmeticsPlugin plugin;
public VolatileHatImpl(MCCosmeticsPlugin plugin) {
this.plugin = plugin;
}
@Override
public void applyHatPacket(Profile profile) {
if(profile == null) {
return;
}
final var player = profile.getPlayer();
final var packet = Protocol.manager().createPacket(PacketType.Play.Server.ENTITY_EQUIPMENT);
packet.getEntityModifier(player.getWorld()).write(0, player);
/*
if(profile.getHat().isPresent()) {
profile.setHatIsActive(true);
writeHeadItem(packet, profile.getEquippedHat());
Protocol.broadcastPacket(packet);
} else if(profile.getHatIsActive()) {
writeHeadItem(packet, player.getInventory().getHelmet());
Protocol.broadcastPacket(packet);
}*/
}
public boolean writeHeadItem(PacketContainer packet, ItemStack item) {
List<Pair<EquipmentSlot,net.minecraft.world.item.ItemStack>> slots = (List<Pair<EquipmentSlot,net.minecraft.world.item.ItemStack>>) packet.getModifier().read(1);
List<Pair<EquipmentSlot,net.minecraft.world.item.ItemStack>> newSlots = Lists.newArrayList();
boolean foundHead = false;
for(Pair<EquipmentSlot,net.minecraft.world.item.ItemStack> pair : slots) {
final EquipmentSlot slot = pair.getFirst();
if(slot == EquipmentSlot.HEAD) {
foundHead = true;
newSlots.add(Pair.of(pair.getFirst(), CraftItemStack.asNMSCopy(item)));
} else {
newSlots.add(pair);
}
}
if(!foundHead) {
newSlots.add(Pair.of(EquipmentSlot.HEAD, CraftItemStack.asNMSCopy(item)));
}
packet.getModifier().write(1, newSlots);
return true;
}
}
package io.lumine.cosmetics.nms.v1_18_R2.network;
import io.netty.channel.ChannelDuplexHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelPromise;
import lombok.Getter;
import org.bukkit.entity.Player;
public class VolatileChannelHandler extends ChannelDuplexHandler {
@Getter private final Player player;
public VolatileChannelHandler(Player player) {
this.player = player;
}
@Override
public void write(ChannelHandlerContext ctx, Object packet, ChannelPromise promise) throws Exception {
super.write(ctx, packet, promise);
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object packet) throws Exception {
super.channelRead(ctx, packet);
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment