From 5f1d60910ea20067fa3b1b4f19e58fcf019ce158 Mon Sep 17 00:00:00 2001 From: Patbox <39821509+Patbox@users.noreply.github.com> Date: Sun, 5 Jun 2022 14:09:20 +0200 Subject: [PATCH] Update to 1.19 --- .github/FUNDING.yml | 1 + build.gradle | 40 ++++++++-------- gradle.properties | 13 ++--- .../clickable/CubeHitboxHologramElement.java | 28 +++-------- .../EntityHitboxHologramElement.java | 27 +++-------- .../clickable/EntityHologramElement.java | 10 ++-- .../item/SpinningItemHologramElement.java | 24 +++++----- .../item/StaticItemHologramElement.java | 13 +++-- .../text/AbstractTextHologramElement.java | 24 +++------- .../text/MovingTextHologramElement.java | 41 ++++++---------- .../text/StaticTextHologramElement.java | 14 +++--- .../api/holograms/AbstractHologram.java | 6 +-- .../api/holograms/EntityHologram.java | 10 ++-- .../api/holograms/WorldHologram.java | 2 +- .../holograms/{ => impl}/HologramAPIMod.java | 2 +- .../{utils => impl}/HologramHelper.java | 24 +++++++--- .../impl/interfaces/EntityHologramHolder.java | 11 +++++ .../impl/interfaces/HologramHolder.java | 11 +++++ .../impl/interfaces/WorldHologramHolder.java | 12 +++++ .../interfaces/EntityHologramHolder.java | 11 ----- .../holograms/interfaces/HologramHolder.java | 11 ----- .../interfaces/WorldHologramHolder.java | 12 ----- .../eu/pb4/holograms/mixin/EntityMixin.java | 10 ++-- .../holograms/mixin/PlayerManagerMixin.java | 2 +- .../mixin/ServerPlayNetworkHandlerMixin.java | 9 ++-- .../mixin/ServerPlayerEntityMixin.java | 8 ++-- .../pb4/holograms/mixin/ServerWorldMixin.java | 12 ++--- .../mixin/ThreadedAnvilChunkStorageMixin.java | 13 +++-- .../pb4/holograms/mixin/WorldChunkMixin.java | 8 ++-- .../accessors/MobSpawnS2CPacketAccessor.java | 47 ------------------- .../eu/pb4/holograms/utils/PacketHelpers.java | 44 ----------------- src/main/resources/fabric.mod.json | 2 +- src/main/resources/hologramapi.mixins.json | 1 - .../java/eu/pb4/holograms/TestMod.java | 33 +++++++------ 34 files changed, 197 insertions(+), 339 deletions(-) create mode 100644 .github/FUNDING.yml rename src/main/java/eu/pb4/holograms/{ => impl}/HologramAPIMod.java (97%) rename src/main/java/eu/pb4/holograms/{utils => impl}/HologramHelper.java (67%) create mode 100644 src/main/java/eu/pb4/holograms/impl/interfaces/EntityHologramHolder.java create mode 100644 src/main/java/eu/pb4/holograms/impl/interfaces/HologramHolder.java create mode 100644 src/main/java/eu/pb4/holograms/impl/interfaces/WorldHologramHolder.java delete mode 100644 src/main/java/eu/pb4/holograms/interfaces/EntityHologramHolder.java delete mode 100644 src/main/java/eu/pb4/holograms/interfaces/HologramHolder.java delete mode 100644 src/main/java/eu/pb4/holograms/interfaces/WorldHologramHolder.java delete mode 100644 src/main/java/eu/pb4/holograms/mixin/accessors/MobSpawnS2CPacketAccessor.java delete mode 100644 src/main/java/eu/pb4/holograms/utils/PacketHelpers.java diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..b86584a --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +ko_fi: Patbox diff --git a/build.gradle b/build.gradle index 5a0e640..296ab2b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.10-SNAPSHOT' + id 'fabric-loom' version '0.12-SNAPSHOT' id 'maven-publish' } @@ -10,10 +10,6 @@ archivesBaseName = project.archives_base_name version = project.mod_version group = project.maven_group -minecraft { - accessWidener = file("src/main/resources/hologramapi.accesswidener") -} - repositories { // Add repositories to retrieve artifacts from in here. // You should only use this when depending on other mods because @@ -31,6 +27,24 @@ sourceSets { } } + +dependencies { + // To change the versions see the gradle.properties file + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + + // Fabric API. This is technically optional, but you probably want it anyway. + modLocalRuntime "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + modCompileOnly "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + //modRuntime "com.github.SuperCoder7979:databreaker:0.2.6" + + // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs. + // You may need to force-disable transitiveness on them. + testmodImplementation sourceSets.main.output +} + loom { runs { testmodClient { @@ -46,22 +60,8 @@ loom { source sourceSets.testmod } } -} - -dependencies { - // To change the versions see the gradle.properties file - minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - - // Fabric API. This is technically optional, but you probably want it anyway. - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - - //modRuntime "com.github.SuperCoder7979:databreaker:0.2.6" - // PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs. - // You may need to force-disable transitiveness on them. - testmodImplementation sourceSets.main.output + accessWidenerPath = file("src/main/resources/hologramapi.accesswidener") } processResources { diff --git a/gradle.properties b/gradle.properties index 18a5ccc..2c32e43 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,15 +3,16 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/use - minecraft_version=1.18-pre5 - yarn_mappings=1.18-pre5+build.2 - loader_version=0.12.5 +minecraft_version=1.19-rc2 +yarn_mappings=1.19-rc2+build.1 +loader_version=0.14.6 + +#Fabric api +fabric_version=0.55.0+1.19 - #Fabric api - fabric_version=0.42.8+1.18 # Mod Properties - mod_version = 0.2.1+1.18-pre5 + mod_version = 0.2.2+1.19 maven_group = eu.pb4 archives_base_name = hologram-api diff --git a/src/main/java/eu/pb4/holograms/api/elements/clickable/CubeHitboxHologramElement.java b/src/main/java/eu/pb4/holograms/api/elements/clickable/CubeHitboxHologramElement.java index fde7869..39c7a65 100644 --- a/src/main/java/eu/pb4/holograms/api/elements/clickable/CubeHitboxHologramElement.java +++ b/src/main/java/eu/pb4/holograms/api/elements/clickable/CubeHitboxHologramElement.java @@ -3,17 +3,15 @@ import eu.pb4.holograms.api.elements.AbstractHologramElement; import eu.pb4.holograms.api.holograms.AbstractHologram; import eu.pb4.holograms.mixin.accessors.*; -import eu.pb4.holograms.utils.HologramHelper; -import eu.pb4.holograms.utils.PacketHelpers; +import eu.pb4.holograms.impl.HologramHelper; import net.minecraft.entity.EntityType; import net.minecraft.entity.data.DataTracker; import net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket; +import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket; import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket; -import net.minecraft.network.packet.s2c.play.MobSpawnS2CPacket; import net.minecraft.network.packet.s2c.play.TeamS2CPacket; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.math.Vec3d; -import net.minecraft.util.registry.Registry; import java.util.ArrayList; import java.util.List; @@ -37,23 +35,11 @@ public CubeHitboxHologramElement(int size, Vec3d offset) { public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram hologram) { Vec3d pos = hologram.getElementPosition(this).add(this.offset); - { - MobSpawnS2CPacket packet = PacketHelpers.createMobSpawn(); - MobSpawnS2CPacketAccessor accessor = (MobSpawnS2CPacketAccessor) packet; - accessor.setId(this.entityId); - accessor.setPitch((byte) 0); - accessor.setYaw((byte) 0); - accessor.setHeadYaw((byte) 0); - accessor.setX(pos.x); - accessor.setY(pos.y); - accessor.setZ(pos.z); - accessor.setEntityType(Registry.ENTITY_TYPE.getRawId(EntityType.SLIME)); - accessor.setUUID(uuid); - player.networkHandler.sendPacket(packet); - } + player.networkHandler.sendPacket(new EntitySpawnS2CPacket(this.entityId, this.uuid, pos.x, pos.y, pos.z, 0, 0, EntityType.SLIME, 0, Vec3d.ZERO, 0)); + { - EntityTrackerUpdateS2CPacket packet = PacketHelpers.createEntityTrackerUpdate(); + EntityTrackerUpdateS2CPacket packet = HologramHelper.createUnsafe(EntityTrackerUpdateS2CPacket.class); EntityTrackerUpdateS2CPacketAccessor accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; accessor.setId(this.entityId); @@ -79,8 +65,8 @@ public void createRemovePackets(ServerPlayerEntity player, AbstractHologram holo public void updatePosition(ServerPlayerEntity player, AbstractHologram hologram) { Vec3d pos = hologram.getElementPosition(this).add(this.offset); - EntityPositionS2CPacket packet = PacketHelpers.createEntityPosition(); - EntityPositionS2CPacketAccessor accessor = (EntityPositionS2CPacketAccessor) packet; + var packet = HologramHelper.createUnsafe(EntityPositionS2CPacket.class); + var accessor = (EntityPositionS2CPacketAccessor) packet; accessor.setId(this.entityId); accessor.setX(pos.x); accessor.setY(pos.y); diff --git a/src/main/java/eu/pb4/holograms/api/elements/clickable/EntityHitboxHologramElement.java b/src/main/java/eu/pb4/holograms/api/elements/clickable/EntityHitboxHologramElement.java index 886a155..5aacf28 100644 --- a/src/main/java/eu/pb4/holograms/api/elements/clickable/EntityHitboxHologramElement.java +++ b/src/main/java/eu/pb4/holograms/api/elements/clickable/EntityHitboxHologramElement.java @@ -3,13 +3,12 @@ import eu.pb4.holograms.api.elements.AbstractHologramElement; import eu.pb4.holograms.api.holograms.AbstractHologram; import eu.pb4.holograms.mixin.accessors.*; -import eu.pb4.holograms.utils.HologramHelper; -import eu.pb4.holograms.utils.PacketHelpers; +import eu.pb4.holograms.impl.HologramHelper; import net.minecraft.entity.EntityType; import net.minecraft.entity.data.DataTracker; import net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket; +import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket; import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket; -import net.minecraft.network.packet.s2c.play.MobSpawnS2CPacket; import net.minecraft.network.packet.s2c.play.TeamS2CPacket; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.util.math.Vec3d; @@ -38,23 +37,11 @@ public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram holog Vec3d pos = hologram.getElementPosition(this).add(this.offset); { - MobSpawnS2CPacket packet = PacketHelpers.createMobSpawn(); - MobSpawnS2CPacketAccessor accessor = (MobSpawnS2CPacketAccessor) packet; - accessor.setId(this.entityId); - accessor.setPitch((byte) 0); - accessor.setYaw((byte) 0); - accessor.setHeadYaw((byte) 0); - accessor.setX(pos.x); - accessor.setY(pos.y); - accessor.setZ(pos.z); - accessor.setEntityType(Registry.ENTITY_TYPE.getRawId(this.entityType)); - accessor.setUUID(uuid); - - player.networkHandler.sendPacket(packet); + player.networkHandler.sendPacket(new EntitySpawnS2CPacket(this.entityId, this.uuid, pos.x, pos.y, pos.z, 0, 0, this.entityType, 0, Vec3d.ZERO, 0)); } { - EntityTrackerUpdateS2CPacket packet = PacketHelpers.createEntityTrackerUpdate(); - EntityTrackerUpdateS2CPacketAccessor accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; + var packet = HologramHelper.createUnsafe(EntityTrackerUpdateS2CPacket.class); + var accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; accessor.setId(this.entityId); List> data = new ArrayList<>(); @@ -79,8 +66,8 @@ public void createRemovePackets(ServerPlayerEntity player, AbstractHologram holo public void updatePosition(ServerPlayerEntity player, AbstractHologram hologram) { Vec3d pos = hologram.getElementPosition(this).add(this.offset); - EntityPositionS2CPacket packet = PacketHelpers.createEntityPosition(); - EntityPositionS2CPacketAccessor accessor = (EntityPositionS2CPacketAccessor) packet; + var packet = HologramHelper.createUnsafe(EntityPositionS2CPacket.class); + var accessor = (EntityPositionS2CPacketAccessor) packet; accessor.setId(this.entityId); accessor.setX(pos.x); accessor.setY(pos.y); diff --git a/src/main/java/eu/pb4/holograms/api/elements/clickable/EntityHologramElement.java b/src/main/java/eu/pb4/holograms/api/elements/clickable/EntityHologramElement.java index 5af5e2d..b5bb1dc 100644 --- a/src/main/java/eu/pb4/holograms/api/elements/clickable/EntityHologramElement.java +++ b/src/main/java/eu/pb4/holograms/api/elements/clickable/EntityHologramElement.java @@ -3,13 +3,10 @@ import eu.pb4.holograms.api.elements.AbstractHologramElement; import eu.pb4.holograms.api.holograms.AbstractHologram; import eu.pb4.holograms.mixin.accessors.EntityAccessor; -import eu.pb4.holograms.mixin.accessors.EntityPositionS2CPacketAccessor; import eu.pb4.holograms.mixin.accessors.EntityTrackerUpdateS2CPacketAccessor; -import eu.pb4.holograms.utils.HologramHelper; -import eu.pb4.holograms.utils.PacketHelpers; +import eu.pb4.holograms.impl.HologramHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.data.DataTracker; -import net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket; import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket; import net.minecraft.network.packet.s2c.play.TeamS2CPacket; import net.minecraft.server.network.ServerPlayerEntity; @@ -17,7 +14,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.UUID; public class EntityHologramElement extends AbstractHologramElement { protected final Entity entity; @@ -40,8 +36,8 @@ public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram holog player.networkHandler.sendPacket(this.entity.createSpawnPacket()); - EntityTrackerUpdateS2CPacket packet = PacketHelpers.createEntityTrackerUpdate(); - EntityTrackerUpdateS2CPacketAccessor accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; + var packet = HologramHelper.createUnsafe(EntityTrackerUpdateS2CPacket.class); + var accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; accessor.setId(this.entity.getId()); List> data = new ArrayList<>(); diff --git a/src/main/java/eu/pb4/holograms/api/elements/item/SpinningItemHologramElement.java b/src/main/java/eu/pb4/holograms/api/elements/item/SpinningItemHologramElement.java index 0d76a25..6a2c0cb 100644 --- a/src/main/java/eu/pb4/holograms/api/elements/item/SpinningItemHologramElement.java +++ b/src/main/java/eu/pb4/holograms/api/elements/item/SpinningItemHologramElement.java @@ -2,8 +2,7 @@ import eu.pb4.holograms.api.holograms.AbstractHologram; import eu.pb4.holograms.mixin.accessors.*; -import eu.pb4.holograms.utils.HologramHelper; -import eu.pb4.holograms.utils.PacketHelpers; +import eu.pb4.holograms.impl.HologramHelper; import net.minecraft.entity.EntityType; import net.minecraft.entity.data.DataTracker; import net.minecraft.item.ItemStack; @@ -16,7 +15,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Optional; import java.util.UUID; public class SpinningItemHologramElement extends AbstractItemHologramElement { @@ -46,10 +44,10 @@ public SpinningItemHologramElement(ItemStack stack) { public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram hologram) { Vec3d pos = hologram.getElementPosition(this).add(this.offset); { - player.networkHandler.sendPacket(new EntitySpawnS2CPacket(this.itemId, this.itemUuid, pos.x, pos.y, pos.z, 0, 0, EntityType.ITEM, 0, Vec3d.ZERO)); + player.networkHandler.sendPacket(new EntitySpawnS2CPacket(this.itemId, this.itemUuid, pos.x, pos.y, pos.z, 0, 0, EntityType.ITEM, 0, Vec3d.ZERO, 0)); - EntityTrackerUpdateS2CPacket packet = PacketHelpers.createEntityTrackerUpdate(); - EntityTrackerUpdateS2CPacketAccessor accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; + var packet = HologramHelper.createUnsafe(EntityTrackerUpdateS2CPacket.class); + var accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; accessor.setId(this.itemId); List> data = new ArrayList<>(); @@ -61,9 +59,9 @@ public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram holog } { - player.networkHandler.sendPacket(new EntitySpawnS2CPacket(this.helperId, this.helperUuid, pos.x, pos.y - 0.6, pos.z, 0, 0, EntityType.AREA_EFFECT_CLOUD, 0, Vec3d.ZERO)); + player.networkHandler.sendPacket(new EntitySpawnS2CPacket(this.helperId, this.helperUuid, pos.x, pos.y - 0.6, pos.z, 0, 0, EntityType.AREA_EFFECT_CLOUD, 0, Vec3d.ZERO, 0)); - EntityTrackerUpdateS2CPacket packet = PacketHelpers.createEntityTrackerUpdate(); + var packet = HologramHelper.createUnsafe(EntityTrackerUpdateS2CPacket.class); EntityTrackerUpdateS2CPacketAccessor accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; accessor.setId(this.helperId); @@ -75,8 +73,8 @@ public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram holog } { - EntityPassengersSetS2CPacket packet = PacketHelpers.createEntityPassengersSet(); - EntityPassengersSetS2CPacketAccessor accessor = (EntityPassengersSetS2CPacketAccessor) packet; + var packet = HologramHelper.createUnsafe(EntityPassengersSetS2CPacket.class); + var accessor = (EntityPassengersSetS2CPacketAccessor) packet; accessor.setId(helperId); accessor.setPassengers(new int[]{itemId}); @@ -88,7 +86,7 @@ public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram holog public void updatePosition(ServerPlayerEntity player, AbstractHologram hologram) { Vec3d pos = hologram.getElementPosition(this).add(this.offset); - EntityPositionS2CPacket packet = PacketHelpers.createEntityPosition(); + var packet = HologramHelper.createUnsafe(EntityPositionS2CPacket.class); EntityPositionS2CPacketAccessor accessor = (EntityPositionS2CPacketAccessor) packet; accessor.setId(this.helperId); accessor.setX(pos.x); @@ -103,8 +101,8 @@ public void updatePosition(ServerPlayerEntity player, AbstractHologram hologram) @Override public void onTick(AbstractHologram hologram) { if (this.isDirty) { - EntityTrackerUpdateS2CPacket packet = PacketHelpers.createEntityTrackerUpdate(); - EntityTrackerUpdateS2CPacketAccessor accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; + var packet = HologramHelper.createUnsafe(EntityTrackerUpdateS2CPacket.class); + var accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; accessor.setId(this.itemId); List> data = new ArrayList<>(); diff --git a/src/main/java/eu/pb4/holograms/api/elements/item/StaticItemHologramElement.java b/src/main/java/eu/pb4/holograms/api/elements/item/StaticItemHologramElement.java index 0993ba0..75d5ca3 100644 --- a/src/main/java/eu/pb4/holograms/api/elements/item/StaticItemHologramElement.java +++ b/src/main/java/eu/pb4/holograms/api/elements/item/StaticItemHologramElement.java @@ -2,8 +2,7 @@ import eu.pb4.holograms.api.holograms.AbstractHologram; import eu.pb4.holograms.mixin.accessors.*; -import eu.pb4.holograms.utils.HologramHelper; -import eu.pb4.holograms.utils.PacketHelpers; +import eu.pb4.holograms.impl.HologramHelper; import net.minecraft.entity.EntityType; import net.minecraft.entity.data.DataTracker; import net.minecraft.item.ItemStack; @@ -37,9 +36,9 @@ public StaticItemHologramElement(ItemStack stack) { public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram hologram) { Vec3d pos = hologram.getElementPosition(this).add(this.offset); - player.networkHandler.sendPacket(new EntitySpawnS2CPacket(this.entityId, this.uuid, pos.x, pos.y, pos.z, 0, 0, EntityType.SNOWBALL, 0, Vec3d.ZERO)); + player.networkHandler.sendPacket(new EntitySpawnS2CPacket(this.entityId, this.uuid, pos.x, pos.y, pos.z, 0, 0, EntityType.SNOWBALL, 0, Vec3d.ZERO, 0)); - EntityTrackerUpdateS2CPacket packet = PacketHelpers.createEntityTrackerUpdate(); + EntityTrackerUpdateS2CPacket packet = HologramHelper.createUnsafe(EntityTrackerUpdateS2CPacket.class); EntityTrackerUpdateS2CPacketAccessor accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; accessor.setId(this.entityId); @@ -56,8 +55,8 @@ public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram holog public void updatePosition(ServerPlayerEntity player, AbstractHologram hologram) { Vec3d pos = hologram.getElementPosition(this).add(this.offset); - EntityPositionS2CPacket packet = PacketHelpers.createEntityPosition(); - EntityPositionS2CPacketAccessor accessor = (EntityPositionS2CPacketAccessor) packet; + var packet = HologramHelper.createUnsafe(EntityPositionS2CPacket.class); + var accessor = (EntityPositionS2CPacketAccessor) packet; accessor.setId(this.entityId); accessor.setX(pos.x); accessor.setY(pos.y); @@ -71,7 +70,7 @@ public void updatePosition(ServerPlayerEntity player, AbstractHologram hologram) @Override public void onTick(AbstractHologram hologram) { if (this.isDirty) { - EntityTrackerUpdateS2CPacket packet = PacketHelpers.createEntityTrackerUpdate(); + EntityTrackerUpdateS2CPacket packet = HologramHelper.createUnsafe(EntityTrackerUpdateS2CPacket.class); EntityTrackerUpdateS2CPacketAccessor accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; accessor.setId(this.entityId); diff --git a/src/main/java/eu/pb4/holograms/api/elements/text/AbstractTextHologramElement.java b/src/main/java/eu/pb4/holograms/api/elements/text/AbstractTextHologramElement.java index 3e727ff..401d1c1 100644 --- a/src/main/java/eu/pb4/holograms/api/elements/text/AbstractTextHologramElement.java +++ b/src/main/java/eu/pb4/holograms/api/elements/text/AbstractTextHologramElement.java @@ -1,19 +1,9 @@ package eu.pb4.holograms.api.elements.text; import eu.pb4.holograms.api.elements.AbstractHologramElement; -import eu.pb4.holograms.api.holograms.AbstractHologram; -import eu.pb4.holograms.mixin.accessors.ArmorStandEntityAccessor; -import eu.pb4.holograms.mixin.accessors.EntityAccessor; -import eu.pb4.holograms.mixin.accessors.EntityTrackerUpdateS2CPacketAccessor; -import net.minecraft.entity.data.DataTracker; -import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; import java.util.UUID; @@ -24,7 +14,7 @@ public abstract class AbstractTextHologramElement extends AbstractHologramElemen protected boolean isDirty = false; public AbstractTextHologramElement() { - this(new LiteralText("")); + this(Text.empty()); } protected AbstractTextHologramElement(Text text) { @@ -32,12 +22,12 @@ protected AbstractTextHologramElement(Text text) { this.height = 0.28; } - public Text getText() { - return this.text; + public static AbstractTextHologramElement create(Text text, boolean isStatic) { + return isStatic ? new StaticTextHologramElement(text) : new MovingTextHologramElement(text); } - public Text getTextFor(ServerPlayerEntity player) { - return this.getText(); + public Text getText() { + return this.text; } public void setText(Text text) { @@ -45,7 +35,7 @@ public void setText(Text text) { this.isDirty = true; } - public static AbstractTextHologramElement create(Text text, boolean isStatic) { - return isStatic ? new StaticTextHologramElement(text) : new MovingTextHologramElement(text); + public Text getTextFor(ServerPlayerEntity player) { + return this.getText(); } } diff --git a/src/main/java/eu/pb4/holograms/api/elements/text/MovingTextHologramElement.java b/src/main/java/eu/pb4/holograms/api/elements/text/MovingTextHologramElement.java index 7b8ec4b..4cb9fc1 100644 --- a/src/main/java/eu/pb4/holograms/api/elements/text/MovingTextHologramElement.java +++ b/src/main/java/eu/pb4/holograms/api/elements/text/MovingTextHologramElement.java @@ -1,16 +1,17 @@ package eu.pb4.holograms.api.elements.text; import eu.pb4.holograms.api.holograms.AbstractHologram; -import eu.pb4.holograms.mixin.accessors.*; -import eu.pb4.holograms.utils.HologramHelper; -import eu.pb4.holograms.utils.PacketHelpers; +import eu.pb4.holograms.impl.HologramHelper; +import eu.pb4.holograms.mixin.accessors.ArmorStandEntityAccessor; +import eu.pb4.holograms.mixin.accessors.EntityAccessor; +import eu.pb4.holograms.mixin.accessors.EntityPositionS2CPacketAccessor; +import eu.pb4.holograms.mixin.accessors.EntityTrackerUpdateS2CPacketAccessor; import net.minecraft.entity.EntityType; import net.minecraft.entity.data.DataTracker; import net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket; +import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket; import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket; -import net.minecraft.network.packet.s2c.play.MobSpawnS2CPacket; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; import net.minecraft.util.math.Vec3d; import net.minecraft.util.registry.Registry; @@ -22,7 +23,7 @@ public class MovingTextHologramElement extends AbstractTextHologramElement { public MovingTextHologramElement() { - this(new LiteralText("")); + this(Text.empty()); } public MovingTextHologramElement(Text text) { @@ -35,24 +36,12 @@ public MovingTextHologramElement(Text text) { @Override public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram hologram) { Vec3d pos = hologram.getElementPosition(this).add(this.offset); - { - MobSpawnS2CPacket packet = PacketHelpers.createMobSpawn(); - MobSpawnS2CPacketAccessor accessor = (MobSpawnS2CPacketAccessor) packet; - accessor.setId(this.entityId); - accessor.setPitch((byte) 0); - accessor.setYaw((byte) 0); - accessor.setHeadYaw((byte) 0); - accessor.setX(pos.x); - accessor.setY(pos.y - 0.40); - accessor.setZ(pos.z); - accessor.setEntityType(Registry.ENTITY_TYPE.getRawId(EntityType.ARMOR_STAND)); - accessor.setUUID(this.uuid); - player.networkHandler.sendPacket(packet); - } + player.networkHandler.sendPacket(new EntitySpawnS2CPacket(this.entityId, this.uuid, pos.x, pos.y, pos.z, 0, 0, EntityType.ARMOR_STAND, 0, Vec3d.ZERO, 0)); + { - EntityTrackerUpdateS2CPacket packet = PacketHelpers.createEntityTrackerUpdate(); - EntityTrackerUpdateS2CPacketAccessor accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; + var packet = HologramHelper.createUnsafe(EntityTrackerUpdateS2CPacket.class); + var accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; accessor.setId(this.entityId); List> data = new ArrayList<>(); @@ -70,8 +59,8 @@ public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram holog @Override public void updatePosition(ServerPlayerEntity player, AbstractHologram hologram) { - EntityPositionS2CPacket packet = PacketHelpers.createEntityPosition(); - EntityPositionS2CPacketAccessor accessor = (EntityPositionS2CPacketAccessor) packet; + var packet = HologramHelper.createUnsafe(EntityPositionS2CPacket.class); + var accessor = (EntityPositionS2CPacketAccessor) packet; accessor.setId(this.entityId); Vec3d pos = hologram.getElementPosition(this).add(this.getOffset()); accessor.setX(pos.x); @@ -88,8 +77,8 @@ public void updatePosition(ServerPlayerEntity player, AbstractHologram hologram) public void onTick(AbstractHologram hologram) { if (this.isDirty) { for (ServerPlayerEntity player : hologram.getPlayerSet()) { - EntityTrackerUpdateS2CPacket packet = PacketHelpers.createEntityTrackerUpdate(); - EntityTrackerUpdateS2CPacketAccessor accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; + var packet = HologramHelper.createUnsafe(EntityTrackerUpdateS2CPacket.class); + var accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; accessor.setId(this.entityId); List> data = new ArrayList<>(); diff --git a/src/main/java/eu/pb4/holograms/api/elements/text/StaticTextHologramElement.java b/src/main/java/eu/pb4/holograms/api/elements/text/StaticTextHologramElement.java index 2070574..53aaab1 100644 --- a/src/main/java/eu/pb4/holograms/api/elements/text/StaticTextHologramElement.java +++ b/src/main/java/eu/pb4/holograms/api/elements/text/StaticTextHologramElement.java @@ -5,15 +5,13 @@ import eu.pb4.holograms.mixin.accessors.EntityAccessor; import eu.pb4.holograms.mixin.accessors.EntityPositionS2CPacketAccessor; import eu.pb4.holograms.mixin.accessors.EntityTrackerUpdateS2CPacketAccessor; -import eu.pb4.holograms.utils.HologramHelper; -import eu.pb4.holograms.utils.PacketHelpers; +import eu.pb4.holograms.impl.HologramHelper; import net.minecraft.entity.EntityType; import net.minecraft.entity.data.DataTracker; import net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket; import net.minecraft.network.packet.s2c.play.EntitySpawnS2CPacket; import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.text.LiteralText; import net.minecraft.text.Text; import net.minecraft.util.math.Vec3d; @@ -24,7 +22,7 @@ public class StaticTextHologramElement extends AbstractTextHologramElement { public StaticTextHologramElement() { - this(new LiteralText("")); + this(Text.empty()); } public StaticTextHologramElement(Text text) { @@ -37,9 +35,9 @@ public StaticTextHologramElement(Text text) { @Override public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram hologram) { Vec3d pos = hologram.getElementPosition(this).add(this.offset); - player.networkHandler.sendPacket(new EntitySpawnS2CPacket(this.entityId, this.uuid, pos.x, pos.y - 0.9, pos.z, 0, 0, EntityType.AREA_EFFECT_CLOUD, 0, Vec3d.ZERO)); + player.networkHandler.sendPacket(new EntitySpawnS2CPacket(this.entityId, this.uuid, pos.x, pos.y - 0.9, pos.z, 0, 0, EntityType.AREA_EFFECT_CLOUD, 0, Vec3d.ZERO, 0)); - EntityTrackerUpdateS2CPacket packet = PacketHelpers.createEntityTrackerUpdate(); + var packet = HologramHelper.createUnsafe(EntityTrackerUpdateS2CPacket.class); EntityTrackerUpdateS2CPacketAccessor accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; accessor.setId(this.entityId); @@ -54,7 +52,7 @@ public void createSpawnPackets(ServerPlayerEntity player, AbstractHologram holog @Override public void updatePosition(ServerPlayerEntity player, AbstractHologram hologram) { - EntityPositionS2CPacket packet = PacketHelpers.createEntityPosition(); + var packet = HologramHelper.createUnsafe(EntityPositionS2CPacket.class); EntityPositionS2CPacketAccessor accessor = (EntityPositionS2CPacketAccessor) packet; accessor.setId(this.entityId); Vec3d pos = hologram.getElementPosition(this).add(this.getOffset()); @@ -72,7 +70,7 @@ public void updatePosition(ServerPlayerEntity player, AbstractHologram hologram) public void onTick(AbstractHologram hologram) { if (this.isDirty) { for (ServerPlayerEntity player : hologram.getPlayerSet()) { - EntityTrackerUpdateS2CPacket packet = PacketHelpers.createEntityTrackerUpdate(); + var packet = HologramHelper.createUnsafe(EntityTrackerUpdateS2CPacket.class); EntityTrackerUpdateS2CPacketAccessor accessor = (EntityTrackerUpdateS2CPacketAccessor) packet; accessor.setId(this.entityId); diff --git a/src/main/java/eu/pb4/holograms/api/holograms/AbstractHologram.java b/src/main/java/eu/pb4/holograms/api/holograms/AbstractHologram.java index 3cdcf8d..51e7f79 100644 --- a/src/main/java/eu/pb4/holograms/api/holograms/AbstractHologram.java +++ b/src/main/java/eu/pb4/holograms/api/holograms/AbstractHologram.java @@ -8,7 +8,7 @@ import eu.pb4.holograms.api.elements.item.AbstractItemHologramElement; import eu.pb4.holograms.api.elements.text.AbstractTextHologramElement; import eu.pb4.holograms.api.elements.text.StaticTextHologramElement; -import eu.pb4.holograms.interfaces.HologramHolder; +import eu.pb4.holograms.impl.interfaces.HologramHolder; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.ints.IntLists; @@ -315,7 +315,7 @@ public boolean isActive() { public void addPlayer(ServerPlayerEntity player) { if (!this.players.contains(player)) { this.players.add(player); - ((HologramHolder) player).addHologram(this); + ((HologramHolder) player).holoapi_addHologram(this); if (isActive) { for (HologramElement element : this.elements) { @@ -332,7 +332,7 @@ public void removePlayer(ServerPlayerEntity player) { if (this.players.contains(player)) { this.players.remove(player); this.playerLastInteraction.removeInt(player); - ((HologramHolder) player).removeHologram(this); + ((HologramHolder) player).holoapi_removeHologram(this); if (isActive) { if (!player.isDisconnected()) { for (HologramElement element : this.elements) { diff --git a/src/main/java/eu/pb4/holograms/api/holograms/EntityHologram.java b/src/main/java/eu/pb4/holograms/api/holograms/EntityHologram.java index b7f6d22..1690851 100644 --- a/src/main/java/eu/pb4/holograms/api/holograms/EntityHologram.java +++ b/src/main/java/eu/pb4/holograms/api/holograms/EntityHologram.java @@ -1,6 +1,6 @@ package eu.pb4.holograms.api.holograms; -import eu.pb4.holograms.interfaces.EntityHologramHolder; +import eu.pb4.holograms.impl.interfaces.EntityHologramHolder; import net.minecraft.entity.Entity; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.Vec3d; @@ -37,8 +37,8 @@ public Entity getEntity() { public void setEntity(Entity entity) { if (this.isActive) { - ((EntityHologramHolder) this.entity).removeEntityHologram(this); - ((EntityHologramHolder) entity).addEntityHologram(this); + ((EntityHologramHolder) this.entity).holoapi_removeEntityHologram(this); + ((EntityHologramHolder) entity).holoapi_addEntityHologram(this); } this.entity = entity; @@ -46,13 +46,13 @@ public void setEntity(Entity entity) { @Override public void show() { - ((EntityHologramHolder) this.entity).addEntityHologram(this); + ((EntityHologramHolder) this.entity).holoapi_addEntityHologram(this); super.show(); } @Override public void hide() { - ((EntityHologramHolder) this.entity).removeEntityHologram(this); + ((EntityHologramHolder) this.entity).holoapi_removeEntityHologram(this); super.hide(); } diff --git a/src/main/java/eu/pb4/holograms/api/holograms/WorldHologram.java b/src/main/java/eu/pb4/holograms/api/holograms/WorldHologram.java index 77a723a..00bf1cc 100644 --- a/src/main/java/eu/pb4/holograms/api/holograms/WorldHologram.java +++ b/src/main/java/eu/pb4/holograms/api/holograms/WorldHologram.java @@ -1,6 +1,6 @@ package eu.pb4.holograms.api.holograms; -import eu.pb4.holograms.utils.HologramHelper; +import eu.pb4.holograms.impl.HologramHelper; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.ChunkPos; import net.minecraft.util.math.Vec3d; diff --git a/src/main/java/eu/pb4/holograms/HologramAPIMod.java b/src/main/java/eu/pb4/holograms/impl/HologramAPIMod.java similarity index 97% rename from src/main/java/eu/pb4/holograms/HologramAPIMod.java rename to src/main/java/eu/pb4/holograms/impl/HologramAPIMod.java index ba626c4..0a475be 100644 --- a/src/main/java/eu/pb4/holograms/HologramAPIMod.java +++ b/src/main/java/eu/pb4/holograms/impl/HologramAPIMod.java @@ -1,4 +1,4 @@ -package eu.pb4.holograms; +package eu.pb4.holograms.impl; import eu.pb4.holograms.api.InteractionType; import eu.pb4.holograms.api.holograms.AbstractHologram; diff --git a/src/main/java/eu/pb4/holograms/utils/HologramHelper.java b/src/main/java/eu/pb4/holograms/impl/HologramHelper.java similarity index 67% rename from src/main/java/eu/pb4/holograms/utils/HologramHelper.java rename to src/main/java/eu/pb4/holograms/impl/HologramHelper.java index a5798f0..482dd17 100644 --- a/src/main/java/eu/pb4/holograms/utils/HologramHelper.java +++ b/src/main/java/eu/pb4/holograms/impl/HologramHelper.java @@ -1,8 +1,9 @@ -package eu.pb4.holograms.utils; +package eu.pb4.holograms.impl; import eu.pb4.holograms.api.holograms.WorldHologram; -import eu.pb4.holograms.interfaces.HologramHolder; -import eu.pb4.holograms.interfaces.WorldHologramHolder; +import eu.pb4.holograms.impl.interfaces.HologramHolder; +import eu.pb4.holograms.impl.interfaces.WorldHologramHolder; +import io.netty.util.internal.shaded.org.jctools.util.UnsafeAccess; import net.minecraft.scoreboard.AbstractTeam; import net.minecraft.scoreboard.Scoreboard; import net.minecraft.scoreboard.Team; @@ -33,22 +34,31 @@ public static Team getFakeTeam() { return FAKE_TEAM; } + public static T createUnsafe(Class tClass) { + try { + return (T) UnsafeAccess.UNSAFE.allocateInstance(tClass); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + public static boolean attachToChunk(WorldHologram hologram, ChunkPos pos) { - ((WorldHologramHolder) hologram.getWorld()).addHologram(hologram, pos); + ((WorldHologramHolder) hologram.getWorld()).holoapi_addHologram(hologram, pos); Chunk chunk = hologram.getWorld().getChunk(pos.x, pos.z, ChunkStatus.FULL, false); if (chunk instanceof HologramHolder holder) { - holder.addHologram(hologram); + holder.holoapi_addHologram(hologram); return true; } return false; } public static boolean detachFromChunk(WorldHologram hologram, ChunkPos pos) { - ((WorldHologramHolder) hologram.getWorld()).removeHologram(hologram, pos); + ((WorldHologramHolder) hologram.getWorld()).holoapi_removeHologram(hologram, pos); Chunk chunk = hologram.getWorld().getChunk(pos.x, pos.z, ChunkStatus.FULL, false); if (chunk instanceof HologramHolder holder) { - holder.removeHologram(hologram); + holder.holoapi_removeHologram(hologram); hologram.clearPlayers(); return true; } diff --git a/src/main/java/eu/pb4/holograms/impl/interfaces/EntityHologramHolder.java b/src/main/java/eu/pb4/holograms/impl/interfaces/EntityHologramHolder.java new file mode 100644 index 0000000..1520e90 --- /dev/null +++ b/src/main/java/eu/pb4/holograms/impl/interfaces/EntityHologramHolder.java @@ -0,0 +1,11 @@ +package eu.pb4.holograms.impl.interfaces; + +import eu.pb4.holograms.api.holograms.EntityHologram; + +import java.util.Set; + +public interface EntityHologramHolder { + void holoapi_addEntityHologram(EntityHologram hologram); + void holoapi_removeEntityHologram(EntityHologram hologram); + Set holoapi_getEntityHologramSet(); +} diff --git a/src/main/java/eu/pb4/holograms/impl/interfaces/HologramHolder.java b/src/main/java/eu/pb4/holograms/impl/interfaces/HologramHolder.java new file mode 100644 index 0000000..69c9f5b --- /dev/null +++ b/src/main/java/eu/pb4/holograms/impl/interfaces/HologramHolder.java @@ -0,0 +1,11 @@ +package eu.pb4.holograms.impl.interfaces; + +import eu.pb4.holograms.api.holograms.AbstractHologram; + +import java.util.Set; + +public interface HologramHolder { + void holoapi_addHologram(T hologram); + void holoapi_removeHologram(T hologram); + Set holoapi_getHologramSet(); +} diff --git a/src/main/java/eu/pb4/holograms/impl/interfaces/WorldHologramHolder.java b/src/main/java/eu/pb4/holograms/impl/interfaces/WorldHologramHolder.java new file mode 100644 index 0000000..1235fb8 --- /dev/null +++ b/src/main/java/eu/pb4/holograms/impl/interfaces/WorldHologramHolder.java @@ -0,0 +1,12 @@ +package eu.pb4.holograms.impl.interfaces; + +import eu.pb4.holograms.api.holograms.WorldHologram; +import net.minecraft.util.math.ChunkPos; + +import java.util.Set; + +public interface WorldHologramHolder { + boolean holoapi_addHologram(WorldHologram hologram, ChunkPos pos); + boolean holoapi_removeHologram(WorldHologram hologram, ChunkPos pos); + Set holoapi_getHologramSet(ChunkPos pos); +} diff --git a/src/main/java/eu/pb4/holograms/interfaces/EntityHologramHolder.java b/src/main/java/eu/pb4/holograms/interfaces/EntityHologramHolder.java deleted file mode 100644 index 2141dea..0000000 --- a/src/main/java/eu/pb4/holograms/interfaces/EntityHologramHolder.java +++ /dev/null @@ -1,11 +0,0 @@ -package eu.pb4.holograms.interfaces; - -import eu.pb4.holograms.api.holograms.EntityHologram; - -import java.util.Set; - -public interface EntityHologramHolder { - void addEntityHologram(EntityHologram hologram); - void removeEntityHologram(EntityHologram hologram); - Set getEntityHologramSet(); -} diff --git a/src/main/java/eu/pb4/holograms/interfaces/HologramHolder.java b/src/main/java/eu/pb4/holograms/interfaces/HologramHolder.java deleted file mode 100644 index c12e5ea..0000000 --- a/src/main/java/eu/pb4/holograms/interfaces/HologramHolder.java +++ /dev/null @@ -1,11 +0,0 @@ -package eu.pb4.holograms.interfaces; - -import eu.pb4.holograms.api.holograms.AbstractHologram; - -import java.util.Set; - -public interface HologramHolder { - void addHologram(T hologram); - void removeHologram(T hologram); - Set getHologramSet(); -} diff --git a/src/main/java/eu/pb4/holograms/interfaces/WorldHologramHolder.java b/src/main/java/eu/pb4/holograms/interfaces/WorldHologramHolder.java deleted file mode 100644 index b5d9830..0000000 --- a/src/main/java/eu/pb4/holograms/interfaces/WorldHologramHolder.java +++ /dev/null @@ -1,12 +0,0 @@ -package eu.pb4.holograms.interfaces; - -import eu.pb4.holograms.api.holograms.WorldHologram; -import net.minecraft.util.math.ChunkPos; - -import java.util.Set; - -public interface WorldHologramHolder { - boolean addHologram(WorldHologram hologram, ChunkPos pos); - boolean removeHologram(WorldHologram hologram, ChunkPos pos); - Set getHologramSet(ChunkPos pos); -} diff --git a/src/main/java/eu/pb4/holograms/mixin/EntityMixin.java b/src/main/java/eu/pb4/holograms/mixin/EntityMixin.java index 6f75b3d..51695d9 100644 --- a/src/main/java/eu/pb4/holograms/mixin/EntityMixin.java +++ b/src/main/java/eu/pb4/holograms/mixin/EntityMixin.java @@ -2,7 +2,7 @@ import eu.pb4.holograms.api.holograms.AbstractHologram; import eu.pb4.holograms.api.holograms.EntityHologram; -import eu.pb4.holograms.interfaces.EntityHologramHolder; +import eu.pb4.holograms.impl.interfaces.EntityHologramHolder; import eu.pb4.holograms.mixin.accessors.ThreadedAnvilChunkStorageAccessor; import net.minecraft.entity.Entity; import net.minecraft.server.network.ServerPlayerEntity; @@ -58,7 +58,7 @@ private void tickHolograms(CallbackInfo ci) { hologram.tick(); } catch (Exception e) { e.printStackTrace(); - this.removeEntityHologram(hologram); + this.holoapi_removeEntityHologram(hologram); } } } @@ -87,7 +87,7 @@ private void moveHologramsWithEntity(double x, double y, double z, CallbackInfo } @Override - public void addEntityHologram(EntityHologram hologram) { + public void holoapi_addEntityHologram(EntityHologram hologram) { this.attachedHolograms.add(hologram); ThreadedAnvilChunkStorage.EntityTracker tracker = ((ThreadedAnvilChunkStorageAccessor) ((ServerWorld) this.world).getChunkManager().threadedAnvilChunkStorage) @@ -105,12 +105,12 @@ public void addEntityHologram(EntityHologram hologram) { } @Override - public void removeEntityHologram(EntityHologram hologram) { + public void holoapi_removeEntityHologram(EntityHologram hologram) { this.attachedHolograms.remove(hologram); } @Override - public Set getEntityHologramSet() { + public Set holoapi_getEntityHologramSet() { return this.attachedHolograms; } } diff --git a/src/main/java/eu/pb4/holograms/mixin/PlayerManagerMixin.java b/src/main/java/eu/pb4/holograms/mixin/PlayerManagerMixin.java index ad42c4b..b66308e 100644 --- a/src/main/java/eu/pb4/holograms/mixin/PlayerManagerMixin.java +++ b/src/main/java/eu/pb4/holograms/mixin/PlayerManagerMixin.java @@ -1,6 +1,6 @@ package eu.pb4.holograms.mixin; -import eu.pb4.holograms.utils.HologramHelper; +import eu.pb4.holograms.impl.HologramHelper; import net.minecraft.network.ClientConnection; import net.minecraft.network.packet.s2c.play.TeamS2CPacket; import net.minecraft.server.PlayerManager; diff --git a/src/main/java/eu/pb4/holograms/mixin/ServerPlayNetworkHandlerMixin.java b/src/main/java/eu/pb4/holograms/mixin/ServerPlayNetworkHandlerMixin.java index c1dac6a..d0a7348 100644 --- a/src/main/java/eu/pb4/holograms/mixin/ServerPlayNetworkHandlerMixin.java +++ b/src/main/java/eu/pb4/holograms/mixin/ServerPlayNetworkHandlerMixin.java @@ -1,17 +1,14 @@ package eu.pb4.holograms.mixin; -import eu.pb4.holograms.HologramAPIMod; -import eu.pb4.holograms.api.InteractionType; +import eu.pb4.holograms.impl.HologramAPIMod; import eu.pb4.holograms.api.holograms.AbstractHologram; -import eu.pb4.holograms.interfaces.HologramHolder; +import eu.pb4.holograms.impl.interfaces.HologramHolder; import eu.pb4.holograms.mixin.accessors.PlayerInteractEntityC2SPacketAccessor; import net.minecraft.entity.Entity; import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket; import net.minecraft.server.network.ServerPlayNetworkHandler; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.Hand; -import net.minecraft.util.math.Vec3d; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -27,7 +24,7 @@ public class ServerPlayNetworkHandlerMixin { private void interactWithHologram(PlayerInteractEntityC2SPacket packet, CallbackInfo ci, ServerWorld world, Entity entity) { if (entity == null) { int id = ((PlayerInteractEntityC2SPacketAccessor) packet).getEntityId(); - for (AbstractHologram hologram : ((HologramHolder) this.player).getHologramSet()) { + for (AbstractHologram hologram : ((HologramHolder) this.player).holoapi_getHologramSet()) { if (hologram.getEntityIds().contains(id)) { packet.handle(HologramAPIMod.interactHelper(hologram, packet, id, this.player)); diff --git a/src/main/java/eu/pb4/holograms/mixin/ServerPlayerEntityMixin.java b/src/main/java/eu/pb4/holograms/mixin/ServerPlayerEntityMixin.java index 2657e53..80e6edf 100644 --- a/src/main/java/eu/pb4/holograms/mixin/ServerPlayerEntityMixin.java +++ b/src/main/java/eu/pb4/holograms/mixin/ServerPlayerEntityMixin.java @@ -2,7 +2,7 @@ import eu.pb4.holograms.api.holograms.AbstractHologram; import eu.pb4.holograms.api.holograms.WorldHologram; -import eu.pb4.holograms.interfaces.HologramHolder; +import eu.pb4.holograms.impl.interfaces.HologramHolder; import net.minecraft.entity.Entity; import net.minecraft.entity.damage.DamageSource; import net.minecraft.server.MinecraftServer; @@ -70,17 +70,17 @@ private ServerPlayerEntity asPlayer() { } @Override - public void addHologram(AbstractHologram hologram) { + public void holoapi_addHologram(AbstractHologram hologram) { this.holograms.add(hologram); } @Override - public void removeHologram(AbstractHologram hologram) { + public void holoapi_removeHologram(AbstractHologram hologram) { this.holograms.remove(hologram); } @Override - public Set getHologramSet() { + public Set holoapi_getHologramSet() { return this.holograms; } } diff --git a/src/main/java/eu/pb4/holograms/mixin/ServerWorldMixin.java b/src/main/java/eu/pb4/holograms/mixin/ServerWorldMixin.java index 687584e..9c01119 100644 --- a/src/main/java/eu/pb4/holograms/mixin/ServerWorldMixin.java +++ b/src/main/java/eu/pb4/holograms/mixin/ServerWorldMixin.java @@ -1,8 +1,8 @@ package eu.pb4.holograms.mixin; import eu.pb4.holograms.api.holograms.WorldHologram; -import eu.pb4.holograms.interfaces.HologramHolder; -import eu.pb4.holograms.interfaces.WorldHologramHolder; +import eu.pb4.holograms.impl.interfaces.HologramHolder; +import eu.pb4.holograms.impl.interfaces.WorldHologramHolder; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.ChunkPos; import net.minecraft.world.chunk.WorldChunk; @@ -20,18 +20,18 @@ public abstract class ServerWorldMixin implements WorldHologramHolder { @Inject(method = "tickChunk", at = @At("TAIL")) private void tickHolograms(WorldChunk chunk, int randomTickSpeed, CallbackInfo ci) { - for (WorldHologram hologram : ((HologramHolder) chunk).getHologramSet()) { + for (WorldHologram hologram : ((HologramHolder) chunk).holoapi_getHologramSet()) { hologram.tick(); } } @Override - public boolean addHologram(WorldHologram hologram, ChunkPos pos) { + public boolean holoapi_addHologram(WorldHologram hologram, ChunkPos pos) { return this.hologramsPerChunk.computeIfAbsent(pos, ServerWorldMixin::getSet).add(hologram); } @Override - public boolean removeHologram(WorldHologram hologram, ChunkPos pos) { + public boolean holoapi_removeHologram(WorldHologram hologram, ChunkPos pos) { Set set = this.hologramsPerChunk.get(pos); if (set != null) { boolean bool = set.remove(hologram); @@ -44,7 +44,7 @@ public boolean removeHologram(WorldHologram hologram, ChunkPos pos) { } @Override - public Set getHologramSet(ChunkPos pos) { + public Set holoapi_getHologramSet(ChunkPos pos) { return this.hologramsPerChunk.getOrDefault(pos, Collections.emptySet()); } diff --git a/src/main/java/eu/pb4/holograms/mixin/ThreadedAnvilChunkStorageMixin.java b/src/main/java/eu/pb4/holograms/mixin/ThreadedAnvilChunkStorageMixin.java index 067c503..a68927c 100644 --- a/src/main/java/eu/pb4/holograms/mixin/ThreadedAnvilChunkStorageMixin.java +++ b/src/main/java/eu/pb4/holograms/mixin/ThreadedAnvilChunkStorageMixin.java @@ -2,9 +2,8 @@ import eu.pb4.holograms.api.holograms.AbstractHologram; import eu.pb4.holograms.api.holograms.WorldHologram; -import eu.pb4.holograms.interfaces.HologramHolder; -import eu.pb4.holograms.interfaces.WorldHologramHolder; -import net.minecraft.network.Packet; +import eu.pb4.holograms.impl.interfaces.HologramHolder; +import eu.pb4.holograms.impl.interfaces.WorldHologramHolder; import net.minecraft.network.packet.s2c.play.ChunkDataS2CPacket; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ChunkHolder; @@ -31,7 +30,7 @@ public abstract class ThreadedAnvilChunkStorageMixin { @Inject(method = "sendChunkDataPackets", at = @At("TAIL")) private void addToHolograms(ServerPlayerEntity player, MutableObject cachedDataPacket, WorldChunk chunk, CallbackInfo ci) { - for (AbstractHologram hologram : ((HologramHolder) chunk).getHologramSet()) { + for (AbstractHologram hologram : ((HologramHolder) chunk).holoapi_getHologramSet()) { if (hologram.canAddPlayer(player)) { hologram.addPlayer(player); } @@ -41,7 +40,7 @@ private void addToHolograms(ServerPlayerEntity player, MutableObject(((HologramHolder) player).getHologramSet())) { + for (AbstractHologram hologram : new HashSet<>(((HologramHolder) player).holoapi_getHologramSet())) { if (hologram instanceof WorldHologram worldHologram && worldHologram.getWorld() == this.world) { hologram.removePlayer(player); } @@ -52,8 +51,8 @@ private void clearHolograms(ServerPlayerEntity player, boolean added, CallbackIn @Inject(method = "method_17227", at = @At("TAIL")) private void onChunkLoad(ChunkHolder chunkHolder, Chunk protoChunk, CallbackInfoReturnable callbackInfoReturnable) { WorldChunk chunk = (WorldChunk) callbackInfoReturnable.getReturnValue(); - for (WorldHologram hologram : new HashSet<>(((WorldHologramHolder) this.world).getHologramSet(chunk.getPos()))) { - ((HologramHolder) chunk).addHologram(hologram); + for (WorldHologram hologram : new HashSet<>(((WorldHologramHolder) this.world).holoapi_getHologramSet(chunk.getPos()))) { + ((HologramHolder) chunk).holoapi_addHologram(hologram); } } } diff --git a/src/main/java/eu/pb4/holograms/mixin/WorldChunkMixin.java b/src/main/java/eu/pb4/holograms/mixin/WorldChunkMixin.java index f608c14..83cae4f 100644 --- a/src/main/java/eu/pb4/holograms/mixin/WorldChunkMixin.java +++ b/src/main/java/eu/pb4/holograms/mixin/WorldChunkMixin.java @@ -1,7 +1,7 @@ package eu.pb4.holograms.mixin; import eu.pb4.holograms.api.holograms.WorldHologram; -import eu.pb4.holograms.interfaces.HologramHolder; +import eu.pb4.holograms.impl.interfaces.HologramHolder; import net.minecraft.server.world.ServerChunkManager; import net.minecraft.util.math.ChunkPos; import net.minecraft.util.registry.Registry; @@ -32,7 +32,7 @@ public WorldChunkMixin(ChunkPos pos, UpgradeData upgradeData, HeightLimitView he @Unique private final Set holograms = new HashSet<>(); - public void addHologram(WorldHologram hologram) { + public void holoapi_addHologram(WorldHologram hologram) { this.holograms.add(hologram); ((ServerChunkManager) this.getWorld().getChunkManager()).threadedAnvilChunkStorage.getPlayersWatchingChunk(this.getPos(), false) .forEach((p) -> { @@ -42,11 +42,11 @@ public void addHologram(WorldHologram hologram) { }); } - public void removeHologram(WorldHologram hologram) { + public void holoapi_removeHologram(WorldHologram hologram) { this.holograms.remove(hologram); } - public Set getHologramSet() { + public Set holoapi_getHologramSet() { return this.holograms; } } diff --git a/src/main/java/eu/pb4/holograms/mixin/accessors/MobSpawnS2CPacketAccessor.java b/src/main/java/eu/pb4/holograms/mixin/accessors/MobSpawnS2CPacketAccessor.java deleted file mode 100644 index 07420ec..0000000 --- a/src/main/java/eu/pb4/holograms/mixin/accessors/MobSpawnS2CPacketAccessor.java +++ /dev/null @@ -1,47 +0,0 @@ -package eu.pb4.holograms.mixin.accessors; - -import net.minecraft.network.packet.s2c.play.MobSpawnS2CPacket; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Mutable; -import org.spongepowered.asm.mixin.gen.Accessor; - -import java.util.UUID; - -@Mixin(MobSpawnS2CPacket.class) -public interface MobSpawnS2CPacketAccessor { - @Mutable - @Accessor("id") - void setId(int id); - - @Mutable - @Accessor("x") - void setX(double val); - - @Mutable - @Accessor("y") - void setY(double val); - - @Mutable - @Accessor("z") - void setZ(double val); - - @Mutable - @Accessor("yaw") - void setYaw(byte val); - - @Mutable - @Accessor("headYaw") - void setHeadYaw(byte val); - - @Mutable - @Accessor("pitch") - void setPitch(byte val); - - @Mutable - @Accessor("uuid") - void setUUID(UUID val); - - @Mutable - @Accessor("entityTypeId") - void setEntityType(int val); -} diff --git a/src/main/java/eu/pb4/holograms/utils/PacketHelpers.java b/src/main/java/eu/pb4/holograms/utils/PacketHelpers.java deleted file mode 100644 index 52d409b..0000000 --- a/src/main/java/eu/pb4/holograms/utils/PacketHelpers.java +++ /dev/null @@ -1,44 +0,0 @@ -package eu.pb4.holograms.utils; - -import io.netty.util.internal.shaded.org.jctools.util.UnsafeAccess; -import net.minecraft.network.packet.s2c.play.EntityPassengersSetS2CPacket; -import net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket; -import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket; -import net.minecraft.network.packet.s2c.play.MobSpawnS2CPacket; - -public class PacketHelpers { - public static EntityTrackerUpdateS2CPacket createEntityTrackerUpdate() { - try { - return (EntityTrackerUpdateS2CPacket) UnsafeAccess.UNSAFE.allocateInstance(EntityTrackerUpdateS2CPacket.class); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - public static MobSpawnS2CPacket createMobSpawn() { - try { - return (MobSpawnS2CPacket) UnsafeAccess.UNSAFE.allocateInstance(MobSpawnS2CPacket.class); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - - public static EntityPositionS2CPacket createEntityPosition() { - try { - return (EntityPositionS2CPacket) UnsafeAccess.UNSAFE.allocateInstance(EntityPositionS2CPacket.class); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } - public static EntityPassengersSetS2CPacket createEntityPassengersSet() { - try { - return (EntityPassengersSetS2CPacket) UnsafeAccess.UNSAFE.allocateInstance(EntityPassengersSetS2CPacket.class); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } -} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 760e1f0..d0b4cd5 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -17,7 +17,7 @@ "environment": "*", "entrypoints": { "main": [ - "eu.pb4.holograms.HologramAPIMod" + "eu.pb4.holograms.impl.HologramAPIMod" ] }, "mixins": [ diff --git a/src/main/resources/hologramapi.mixins.json b/src/main/resources/hologramapi.mixins.json index 3a462e3..ffaea0f 100644 --- a/src/main/resources/hologramapi.mixins.json +++ b/src/main/resources/hologramapi.mixins.json @@ -19,7 +19,6 @@ "accessors.EntityTrackerUpdateS2CPacketAccessor", "accessors.ItemEntityAccessor", "accessors.LivingEntityAccessor", - "accessors.MobSpawnS2CPacketAccessor", "accessors.PlayerInteractEntityC2SPacketAccessor", "accessors.SlimeEntityAccessor", "accessors.ThreadedAnvilChunkStorageAccessor", diff --git a/src/testmod/java/eu/pb4/holograms/TestMod.java b/src/testmod/java/eu/pb4/holograms/TestMod.java index 758b7aa..7fd4cc2 100644 --- a/src/testmod/java/eu/pb4/holograms/TestMod.java +++ b/src/testmod/java/eu/pb4/holograms/TestMod.java @@ -2,20 +2,19 @@ import com.mojang.brigadier.context.CommandContext; import eu.pb4.holograms.api.InteractionType; -import eu.pb4.holograms.api.elements.SpacingHologramElement; import eu.pb4.holograms.api.elements.clickable.CubeHitboxHologramElement; import eu.pb4.holograms.api.elements.clickable.EntityHologramElement; import eu.pb4.holograms.api.holograms.AbstractHologram; import eu.pb4.holograms.api.holograms.EntityHologram; import eu.pb4.holograms.api.holograms.WorldHologram; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; +import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; import net.minecraft.entity.EntityType; import net.minecraft.entity.passive.PigEntity; import net.minecraft.item.Items; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.text.LiteralText; +import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; import net.minecraft.util.math.Vec3d; @@ -34,12 +33,12 @@ private static int test(CommandContext objectCommandContext WorldHologram hologram = new WorldHologram(player.getWorld(), player.getPos()); - hologram.addText(new LiteralText("hello")); + hologram.addText(Text.literal("hello")); hologram.addElement(new EntityHologramElement(getEntityType(false).create(player.world))); - hologram.addText(new LiteralText("test")); + hologram.addText(Text.literal("test")); hologram.addItemStack(Items.POTATO.getDefaultStack(), false); hologram.addItemStack(Items.DIAMOND.getDefaultStack(), true); - hologram.addText(new LiteralText("« »")); + hologram.addText(Text.literal("« »")); hologram.addElement(new CubeHitboxHologramElement(2, new Vec3d(0, -0.2, 0)) { @Override public void onClick(AbstractHologram hologram, ServerPlayerEntity player, InteractionType type, @Nullable Hand hand, @Nullable Vec3d vec, int entityId) { @@ -47,7 +46,7 @@ public void onClick(AbstractHologram hologram, ServerPlayerEntity player, Intera hologram.setElement(1, new EntityHologramElement(getEntityType(type == InteractionType.ATTACK).create(player.world))); } }); - hologram.addText(new LiteralText("434234254234562653247y4575678rt").formatted(Formatting.AQUA)); + hologram.addText(Text.literal("434234254234562653247y4575678rt").formatted(Formatting.AQUA)); hologram.show(); } catch (Exception e) { @@ -81,7 +80,7 @@ private static int test2(CommandContext objectCommandContex WorldHologram hologram = new WorldHologram(player.getWorld(), player.getPos()); - hologram.addText(new LiteralText("hello")); + hologram.addText(Text.literal("hello")); hologram.addElement(new CubeHitboxHologramElement(1, new Vec3d(0, 0, 0)) { @Override public void onClick(AbstractHologram hologram, ServerPlayerEntity player, InteractionType type, @Nullable Hand hand, @Nullable Vec3d vec, int entityId) { @@ -89,7 +88,7 @@ public void onClick(AbstractHologram hologram, ServerPlayerEntity player, Intera hologram.setAlignment(AbstractHologram.VerticalAlign.TOP); } }); - hologram.addText(new LiteralText("test")); + hologram.addText(Text.literal("test")); hologram.addItemStack(Items.POTATO.getDefaultStack(), false); hologram.addElement(new CubeHitboxHologramElement(1, new Vec3d(0, 0, 0)) { @Override @@ -99,7 +98,7 @@ public void onClick(AbstractHologram hologram, ServerPlayerEntity player, Intera } }); hologram.addItemStack(Items.DIAMOND.getDefaultStack(), true); - hologram.addText(new LiteralText("« »")); + hologram.addText(Text.literal("« »")); hologram.addElement(new CubeHitboxHologramElement(1, new Vec3d(0, -0.2, 0)) { @Override public void onClick(AbstractHologram hologram, ServerPlayerEntity player, InteractionType type, @Nullable Hand hand, @Nullable Vec3d vec, int entityId) { @@ -130,12 +129,12 @@ private static int test3(CommandContext objectCommandContex @Override public void onClick(AbstractHologram hologram, ServerPlayerEntity player, InteractionType type, @Nullable Hand hand, @Nullable Vec3d vec, int entityId) { super.onClick(hologram, player, type, hand, vec, entityId); - hologram.setText(pos2++, new LiteralText("Nice-" + pig.age)); + hologram.setText(pos2++, Text.literal("Nice-" + pig.age)); } }); hologram.show(); - hologram.addText(new LiteralText("Hello There")); + hologram.addText(Text.literal("Hello There")); hologram.addItemStack(Items.DIAMOND.getDefaultStack(), true); @@ -159,10 +158,10 @@ private static int test4(CommandContext objectCommandContex EntityHologram hologram = new EntityHologram(pig, new Vec3d(2, 2, 2)); - hologram.addText(new LiteralText("Hello There")); - hologram.addText(new LiteralText("(Static)")); - hologram.addText(new LiteralText("Hello!"), false); - hologram.addText(new LiteralText("(Non Static)"), false); + hologram.addText(Text.literal("Hello There")); + hologram.addText(Text.literal("(Static)")); + hologram.addText(Text.literal("Hello!"), false); + hologram.addText(Text.literal("(Non Static)"), false); hologram.addItemStack(Items.DIAMOND.getDefaultStack(), true); hologram.addItemStack(Items.IRON_AXE.getDefaultStack(), false); @@ -176,7 +175,7 @@ private static int test4(CommandContext objectCommandContex } public void onInitialize() { - CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> { + CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> { dispatcher.register( literal("test").executes(TestMod::test) );