Skip to content

Commit

Permalink
viaversion support
Browse files Browse the repository at this point in the history
  • Loading branch information
corentingosselin committed Jul 3, 2024
1 parent 643df35 commit 8f930f9
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 36 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>fr.cocoraid.prodigycape</groupId>
<artifactId>ProdigyCape</artifactId>
<version>1.0.31-SNAPSHOT</version>
<version>1.0.32-SNAPSHOT</version>
<name>ProdigyCape</name>

<properties>
Expand Down Expand Up @@ -39,7 +39,7 @@
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<outputDirectory>/Users/prodigy/Documents/minecraft/serveur/1.21/plugins</outputDirectory>
<outputDirectory>/Users/prodigy/Documents/minecraft/serveur/1.20.1/plugins</outputDirectory>
</configuration>
</plugin>

Expand Down
65 changes: 45 additions & 20 deletions src/main/java/fr/cocoraid/prodigycape/cape/PlayerCape.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

import fr.cocoraid.prodigycape.utils.ItemEditor;

import fr.cocoraid.prodigycape.utils.ProtocolVersionOffset;
import fr.cocoraid.prodigycape.utils.VersionChecker;
import io.github.retrooper.packetevents.util.SpigotConversionUtil;
import io.github.retrooper.packetevents.util.viaversion.ViaVersionUtil;
Expand Down Expand Up @@ -73,23 +74,35 @@ public PlayerCape(Cape cape) {
}

public void forceSpawn(Player player) {
player.getWorld().getPlayers().stream()
.filter(p -> p.getLocation().distanceSquared(player.getLocation()) < Bukkit.getViewDistance() * Bukkit.getViewDistance()
).forEach(p -> {
capeDisplay.addViewer(p.getUniqueId());
});

ItemDisplayMeta meta = (ItemDisplayMeta) capeDisplay.getEntityMeta();
meta.setItem(SpigotConversionUtil.fromBukkitItemStack(capeItem));
float height = 1.8f;
meta.setScale(new com.github.retrooper.packetevents.util.Vector3f(1.1f, height, 0.12F));
Location l = player.getLocation();
l.setYaw(0);
l.setPitch(0);
capeDisplay.spawn(SpigotConversionUtil.fromBukkitLocation(l));
//working as well
WrapperPlayServerSetPassengers setPassengers = new WrapperPlayServerSetPassengers(player.getEntityId(), new int[]{capeDisplay.getEntityId()});
playerManager.sendPacket(player, setPassengers);
//passengerActions.addPassenger(player.getEntityId(), capeDisplay.getEntityId());
player.getWorld().getPlayers().stream()
.filter(p -> p.getLocation().distanceSquared(player.getLocation()) < Bukkit.getViewDistance() * Bukkit.getViewDistance()
).forEach(p -> {
WrapperPlayServerSpawnEntity spawnEntity = new WrapperPlayServerSpawnEntity(
capeDisplay.getEntityId(),
capeDisplay.getUuid(),
capeDisplay.getEntityType(),
SpigotConversionUtil.fromBukkitLocation(l),
0,
0,
null);
playerManager.sendPacket(p, spawnEntity);

//working as well
WrapperPlayServerSetPassengers setPassengers = new WrapperPlayServerSetPassengers(player.getEntityId(), new int[]{capeDisplay.getEntityId()});
playerManager.sendPacket(p, setPassengers);
//passengerActions.addPassenger(player.getEntityId(), capeDisplay.getEntityId());
});

capeDisplay.setLocation(SpigotConversionUtil.fromBukkitLocation(l));


}

Expand Down Expand Up @@ -202,7 +215,14 @@ public void despawn() {
task = null;
}
if (capeDisplay != null) {
capeDisplay.despawn();
player.getWorld().getPlayers().stream()
.filter(p -> p.getLocation().distanceSquared(player.getLocation()) < 100)
.forEach(p -> {
WrapperPlayServerDestroyEntities destroyEntities = new WrapperPlayServerDestroyEntities(new int[]{capeDisplay.getEntityId()});
playerManager.sendPacket(p, destroyEntities);
});


capeDisplay = null;
}

Expand Down Expand Up @@ -245,13 +265,6 @@ public void update(float bodyYaw) {
// This ensures the offset moves directly backwards from the player's current facing direction.
backwardOffset.rotateY(yawRadians);

// Now, apply this rotated offset to the translation vector.

// if(ViaVersionUtil.isAvailable()) {
// int version = ViaVersionUtil.getProtocolVersion(player);
// player.sendMessage("Version: " + version);
// }
Vector3f translationVector = new Vector3f(0, Y_OFFSET_TRANSLATION, 0).add(backwardOffset);

// Update cape's transformation with the new rotation and adjusted translation

Expand All @@ -260,11 +273,23 @@ public void update(float bodyYaw) {
Quaternion4f quaternion4f = new Quaternion4f(combinedRotation.x, combinedRotation.y, combinedRotation.z, combinedRotation.w);

meta.setLeftRotation(quaternion4f);
meta.setTranslation(new com.github.retrooper.packetevents.util.Vector3f(translationVector.x, translationVector.y, translationVector.z));
WrapperPlayServerEntityMetadata metadata = new WrapperPlayServerEntityMetadata(capeDisplay.getEntityId(), meta.entityData());

player.getWorld().getPlayers().stream()
.filter(p -> p.getLocation().distanceSquared(player.getLocation()) < Bukkit.getViewDistance() * Bukkit.getViewDistance()
).forEach(p -> {

// Now, apply this rotated offset to the translation vector.
float y_offset = Y_OFFSET_TRANSLATION;
if (ViaVersionUtil.isAvailable()) {
int version = ViaVersionUtil.getProtocolVersion(p);
y_offset = ProtocolVersionOffset.getOffsetByVersion(version);
}
Vector3f translationVector = new Vector3f(0, y_offset, 0).add(backwardOffset);

meta.setTranslation(new com.github.retrooper.packetevents.util.Vector3f(translationVector.x, translationVector.y, translationVector.z));
WrapperPlayServerEntityMetadata metadata = new WrapperPlayServerEntityMetadata(capeDisplay.getEntityId(), meta.entityData());


playerManager.sendPacket(p, metadata);
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public void onJoin(PlayerJoinEvent event) {
new BukkitRunnable() {
@Override
public void run() {
EntityData data = new EntityData(17, EntityDataTypes.BYTE, (byte)126);
EntityData data = new EntityData(17, EntityDataTypes.BYTE, (byte) 126);
WrapperPlayServerEntityMetadata metadata = new WrapperPlayServerEntityMetadata(player.getEntityId(), List.of(data));
Bukkit.getOnlinePlayers().forEach(cur -> {
playerManager.sendPacket(cur, metadata);
Expand All @@ -54,18 +54,25 @@ public void run() {
}
}.runTaskLaterAsynchronously(instance, 10L);

Cape contributorCape = capeManager.getCapeContributors().getCape(player.getUniqueId());
if (contributorCape != null && !capeManager.hasCape(player)) {
capeManager.applyCape(player, contributorCape);
return;
}
if (!capeManager.hasCape(player)) {
return;
}
if (!capeManager.ownsCape(player, capeManager.getCurrentCape(player).getCape())) {
return;
}
capeManager.getCurrentCape(player).spawn(player);

new BukkitRunnable() {
@Override
public void run() {
Cape contributorCape = capeManager.getCapeContributors().getCape(player.getUniqueId());
if (contributorCape != null && !capeManager.hasCape(player)) {
capeManager.applyCape(player, contributorCape);
return;
}
if (!capeManager.hasCape(player)) {
return;
}
if (!capeManager.ownsCape(player, capeManager.getCurrentCape(player).getCape())) {
return;
}

capeManager.getCurrentCape(player).spawn(player);
}
}.runTaskLaterAsynchronously(instance, 10L);

}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package fr.cocoraid.prodigycape.utils;

public enum ProtocolVersionOffset {

V1_21(767, -0.4F),
V1_20_5_to_6(766, -0.4F),
V1_20_3_to_4(765, -0.4F),
V1_20_2(764, -0.4F),
V1_20_1(763, 0F),
V1_19_4(762, 0F);

private final int version;
private final float offset;

ProtocolVersionOffset(int version, float offset) {
this.version = version;
this.offset = offset;
}

public float getOffset() {
return offset;
}

public int getVersion() {
return version;
}

public static float getOffsetByVersion(int version) {
for (ProtocolVersionOffset offset : values()) {
if (offset.getVersion() == version) {
return offset.getOffset();
}
}
return 0F;
}
}
2 changes: 1 addition & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: ProdigyCape
version: '1.0.31-SNAPSHOT'
version: '1.0.32-SNAPSHOT'
main: fr.cocoraid.prodigycape.ProdigyCape
api-version: 1.19
softdepend: [Vault,PassengerAPI]
Expand Down

0 comments on commit 8f930f9

Please sign in to comment.