diff --git a/libs/geyserutils-spigot-1.0-SNAPSHOT.jar b/libs/geyserutils-spigot-1.0-SNAPSHOT.jar
index b263621..500dbff 100644
Binary files a/libs/geyserutils-spigot-1.0-SNAPSHOT.jar and b/libs/geyserutils-spigot-1.0-SNAPSHOT.jar differ
diff --git a/pom.xml b/pom.xml
index dc30351..de86710 100644
--- a/pom.xml
+++ b/pom.xml
@@ -110,7 +110,7 @@
provided
- me.zimzaza4
+ com.github.geyserextensionists
geyserutils-spigot
1.0.0
system
diff --git a/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java b/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
index c50e01a..796bce8 100644
--- a/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
+++ b/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java
@@ -8,7 +8,7 @@ import com.ticxo.modelengine.api.generator.blueprint.ModelBlueprint;
import com.ticxo.modelengine.api.model.ActiveModel;
import com.ticxo.modelengine.api.model.ModeledEntity;
import com.ticxo.modelengine.api.model.render.ModelRenderer;
-import me.zimzaza4.geyserutils.spigot.api.PlayerUtils;
+import me.zimzaza4.geyserutils.spigot.api.EntityUtils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
diff --git a/src/main/java/re/imc/geysermodelengine/model/EntityTask.java b/src/main/java/re/imc/geysermodelengine/model/EntityTask.java
index 65178a1..e7cb60d 100644
--- a/src/main/java/re/imc/geysermodelengine/model/EntityTask.java
+++ b/src/main/java/re/imc/geysermodelengine/model/EntityTask.java
@@ -8,12 +8,15 @@ import com.ticxo.modelengine.api.model.bone.ModelBone;
import lombok.Getter;
import lombok.Setter;
import me.zimzaza4.geyserutils.common.animation.Animation;
+import me.zimzaza4.geyserutils.spigot.GeyserUtils;
+import me.zimzaza4.geyserutils.spigot.api.EntityUtils;
import me.zimzaza4.geyserutils.spigot.api.PlayerUtils;
import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.geysermc.floodgate.api.FloodgateApi;
+import org.jetbrains.annotations.NotNull;
import org.joml.Vector3f;
import re.imc.geysermodelengine.GeyserModelEngine;
import re.imc.geysermodelengine.packet.entity.PacketEntity;
@@ -21,6 +24,7 @@ import re.imc.geysermodelengine.packet.entity.PacketEntity;
import java.awt.*;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Logger;
import static re.imc.geysermodelengine.model.ModelEntity.ENTITIES;
import static re.imc.geysermodelengine.model.ModelEntity.MODEL_ENTITIES;
@@ -184,12 +188,11 @@ public class EntityTask {
}
public void sendEntityData(Player player, int delay) {
- PlayerUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase());
-
+ EntityUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase());
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> {
- // PlayerUtils.sendCustomSkin(player, model.getEntity(), model.getActiveModel().getBlueprint().getName());
- model.getEntity().sendSpawnPacket(Collections.singletonList(player));
+ // EntityUtils.sendCustomSkin(player, model.getEntity(), model.getActiveModel().getBlueprint().getName());
+ model.getEntity().sendSpawnPacket(Collections.singletonList(player));
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> {
if (looping) {
playBedrockAnimation(lastAnimation, Set.of(player), looping, 0f);
@@ -208,7 +211,7 @@ public class EntityTask {
float average = (scale.x + scale.y + scale.z) / 3;
if (average == lastScale) return;
- PlayerUtils.sendCustomScale(player, model.getEntity(), average);
+ EntityUtils.sendCustomScale(player, model.getEntity().getEntityId(), average);
if (ignore) return;
lastScale = average;
@@ -220,7 +223,7 @@ public class EntityTask {
Color color = new Color(model.getActiveModel().getDefaultTint().asARGB());
if (color.equals(lastColor)) return;
- PlayerUtils.sendCustomColor(player, model.getEntity(), color);
+ EntityUtils.sendCustomColor(player, model.getEntity().getEntityId(), color);
if (ignore) return;
lastColor = color;
@@ -232,7 +235,7 @@ public class EntityTask {
}
public void updateEntityProperties(Player player, boolean ignore) {
- Entity entity = model.getEntity();
+ int entity = model.getEntity().getEntityId();
Map updates = new HashMap<>();
model.getActiveModel().getBones().forEach((s, bone) -> {
@@ -255,7 +258,7 @@ public class EntityTask {
updates.put(currentAnimProperty, true);
}
if (updates.isEmpty()) return;
- PlayerUtils.sendBoolProperties(player, entity, updates);
+ EntityUtils.sendBoolProperties(player, entity, updates);
}
private String unstripName(ModelBone bone) {
@@ -270,13 +273,13 @@ public class EntityTask {
public void sendHitBoxToAll() {
for (Player viewer : model.getViewers()) {
- PlayerUtils.sendCustomHitBox(viewer, model.getEntity(), 0.01f, 0.01f);
+ EntityUtils.sendCustomHitBox(viewer, model.getEntity().getEntityId(), 0.01f, 0.01f);
}
}
public void sendHitBox(Player viewer) {
- PlayerUtils.sendCustomHitBox(viewer, model.getEntity(), 0.01f, 0.01f);
+ EntityUtils.sendCustomHitBox(viewer, model.getEntity().getEntityId(), 0.01f, 0.01f);
}
@@ -334,7 +337,7 @@ public class EntityTask {
public void playStopBedrockAnimation(String animationId) {
- Entity entity = model.getEntity();
+ int entity = model.getEntity().getEntityId();
Set viewers = model.getViewers();
// model.getViewers().forEach(viewer -> viewer.sendActionBar("CURRENT AN:" + "STOP"));
@@ -347,7 +350,7 @@ public class EntityTask {
.blendOutTime(0f);
for (Player viewer : viewers) {
- PlayerUtils.playEntityAnimation(viewer, animation.build(), entity);
+ PlayerUtils.playEntityAnimation(viewer, animation.build(), Collections.singletonList(entity));
}
}
@@ -358,7 +361,7 @@ public class EntityTask {
// model.getViewers().forEach(viewer -> viewer.sendActionBar("CURRENT AN:" + animationId));
- Entity entity = model.getEntity();
+ int entity = model.getEntity().getEntityId();
Animation.AnimationBuilder animation = Animation.builder()
.animation(animationId)
@@ -368,12 +371,12 @@ public class EntityTask {
animation.nextState(animationId);
}
for (Player viewer : viewers) {
- PlayerUtils.playEntityAnimation(viewer, animation.build(), entity);
+ PlayerUtils.playEntityAnimation(viewer, animation.build(), Collections.singletonList(entity));
}
}
- private boolean canSee(Player player, Entity entity) {
+ private boolean canSee(Player player, PacketEntity entity) {
if (!player.isOnline()) {
return false;
}
@@ -384,7 +387,7 @@ public class EntityTask {
return false;
}
- if (entity.getChunk() == player.getChunk()) {
+ if (entity.getLocation().getChunk() == player.getChunk()) {
return true;
}
diff --git a/src/main/java/re/imc/geysermodelengine/packet/EntityTeleportPacket.java b/src/main/java/re/imc/geysermodelengine/packet/EntityTeleportPacket.java
index 9dbd221..c3d20d6 100644
--- a/src/main/java/re/imc/geysermodelengine/packet/EntityTeleportPacket.java
+++ b/src/main/java/re/imc/geysermodelengine/packet/EntityTeleportPacket.java
@@ -20,8 +20,9 @@ public class EntityTeleportPacket implements WrapperPacket {
packet.getDoubles().write(0, loc.getX());
packet.getDoubles().write(1, loc.getY());
packet.getDoubles().write(2, loc.getZ());
- packet.getBytes().write(1, (byte) (loc.getPitch() * 256.0F / 360.0F));
+
packet.getBytes().write(0, (byte) (loc.getYaw() * 256.0F / 360.0F));
+ packet.getBytes().write(1, (byte) (loc.getPitch() * 256.0F / 360.0F));
return packet;
}
}
diff --git a/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java b/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java
index c355ecd..6fada20 100644
--- a/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java
+++ b/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java
@@ -1,35 +1,20 @@
package re.imc.geysermodelengine.packet.entity;
import com.comphenix.protocol.ProtocolLibrary;
-import io.papermc.paper.entity.TeleportFlag;
-import io.papermc.paper.threadedregions.scheduler.EntityScheduler;
-import net.kyori.adventure.text.Component;
-import org.bukkit.*;
-import org.bukkit.block.BlockFace;
-import org.bukkit.block.PistonMoveReaction;
-import org.bukkit.entity.*;
-import org.bukkit.event.entity.CreatureSpawnEvent;
-import org.bukkit.event.entity.EntityDamageEvent;
-import org.bukkit.event.player.PlayerTeleportEvent;
-import org.bukkit.metadata.MetadataValue;
-import org.bukkit.permissions.Permission;
-import org.bukkit.permissions.PermissionAttachment;
-import org.bukkit.permissions.PermissionAttachmentInfo;
-import org.bukkit.persistence.PersistentDataContainer;
-import org.bukkit.plugin.Plugin;
-import org.bukkit.util.BoundingBox;
-import org.bukkit.util.Vector;
+import org.bukkit.Location;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
import re.imc.geysermodelengine.packet.*;
-import java.util.*;
-import java.util.concurrent.CompletableFuture;
+import java.util.Collection;
+import java.util.Set;
+import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;
-public class PacketEntity implements Entity {
+public class PacketEntity {
public PacketEntity(EntityType type, Set viewers, Location location) {
- this.id = ThreadLocalRandom.current().nextInt(20000, 100000000);
+ this.id = ThreadLocalRandom.current().nextInt(300000000, 400000000);
this.uuid = UUID.randomUUID();
this.type = type;
this.viewers = viewers;
@@ -42,12 +27,11 @@ public class PacketEntity implements Entity {
private Set viewers;
private Location location;
private boolean removed = false;
- @Override
+
public @NotNull Location getLocation() {
return location;
}
- @Override
public boolean teleport(@NotNull Location location) {
this.location = location.clone();
sendLocationPacket(viewers);
@@ -55,19 +39,15 @@ public class PacketEntity implements Entity {
}
-
- @Override
public void remove() {
removed = true;
sendEntityDestroyPacket(viewers);
}
- @Override
public boolean isDead() {
return removed;
}
- @Override
public boolean isValid() {
return !removed;
}
@@ -75,9 +55,13 @@ public class PacketEntity implements Entity {
public void sendSpawnPacket(Collection players) {
EntitySpawnPacket packet = new EntitySpawnPacket(id, uuid, type, location);
EntityMetadataPacket metadataPacket = new EntityMetadataPacket(id);
- players.forEach(player -> ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet.encode()));
+
+ players.forEach(player -> {
+ ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet.encode());
+ });
players.forEach(player -> ProtocolLibrary.getProtocolManager().sendServerPacket(player, metadataPacket.encode()));
}
+
public void sendLocationPacket(Collection players) {
EntityTeleportPacket packet = new EntityTeleportPacket(id, location);
players.forEach(player -> ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet.encode()));
@@ -94,710 +78,9 @@ public class PacketEntity implements Entity {
players.forEach(player -> ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet.encode()));
}
- @Override
public int getEntityId() {
return id;
}
- // ----------------
-
- @Override
- public @Nullable Location getLocation(@Nullable Location location) {
- return null;
- }
-
- @Override
- public void setVelocity(@NotNull Vector vector) {
-
- }
-
- @Override
- public @NotNull Vector getVelocity() {
- return null;
- }
-
- @Override
- public double getHeight() {
- return 0;
- }
-
- @Override
- public double getWidth() {
- return 0;
- }
-
- @Override
- public @NotNull BoundingBox getBoundingBox() {
- return null;
- }
-
- @Override
- public boolean isOnGround() {
- return false;
- }
-
- @Override
- public boolean isInWater() {
- return false;
- }
-
- @Override
- public @NotNull World getWorld() {
- return null;
- }
-
- @Override
- public void setRotation(float v, float v1) {
-
- }
-
- @Override
- public boolean teleport(@NotNull Location location, PlayerTeleportEvent.@NotNull TeleportCause teleportCause, @NotNull TeleportFlag @NotNull ... teleportFlags) {
- return false;
- }
-
-
-
- @Override
- public boolean teleport(@NotNull Location location, PlayerTeleportEvent.@NotNull TeleportCause teleportCause) {
- return false;
- }
-
- @Override
- public boolean teleport(@NotNull Entity entity) {
- return false;
- }
-
- @Override
- public boolean teleport(@NotNull Entity entity, PlayerTeleportEvent.@NotNull TeleportCause teleportCause) {
- return false;
- }
-
- @Override
- public @NotNull CompletableFuture teleportAsync(@NotNull Location location, PlayerTeleportEvent.@NotNull TeleportCause teleportCause, @NotNull TeleportFlag @NotNull ... teleportFlags) {
- return null;
- }
-
- @Override
- public @NotNull List getNearbyEntities(double v, double v1, double v2) {
- return null;
- }
-
-
-
- @Override
- public int getFireTicks() {
- return 0;
- }
-
- @Override
- public int getMaxFireTicks() {
- return 0;
- }
-
- @Override
- public void setFireTicks(int i) {
-
- }
-
- @Override
- public void setVisualFire(boolean b) {
-
- }
-
- @Override
- public boolean isVisualFire() {
- return false;
- }
-
- @Override
- public int getFreezeTicks() {
- return 0;
- }
-
- @Override
- public int getMaxFreezeTicks() {
- return 0;
- }
-
- @Override
- public void setFreezeTicks(int i) {
-
- }
-
- @Override
- public boolean isFrozen() {
- return false;
- }
-
- @Override
- public void setInvisible(boolean b) {
-
- }
-
- @Override
- public boolean isInvisible() {
- return false;
- }
-
- @Override
- public void setNoPhysics(boolean b) {
-
- }
-
- @Override
- public boolean hasNoPhysics() {
- return false;
- }
-
- @Override
- public boolean isFreezeTickingLocked() {
- return false;
- }
-
- @Override
- public void lockFreezeTicks(boolean b) {
-
- }
-
-
- @Override
- public void sendMessage(@NotNull String s) {
-
- }
-
- @Override
- public void sendMessage(@NotNull String... strings) {
-
- }
-
- @Override
- public void sendMessage(@Nullable UUID uuid, @NotNull String s) {
-
- }
-
- @Override
- public void sendMessage(@Nullable UUID uuid, @NotNull String... strings) {
-
- }
-
- @Override
- public @NotNull Server getServer() {
- return null;
- }
-
- @Override
- public @NotNull String getName() {
- return null;
- }
-
- @Override
- public boolean isPersistent() {
- return false;
- }
-
- @Override
- public void setPersistent(boolean b) {
-
- }
-
- @Override
- public @Nullable Entity getPassenger() {
- return null;
- }
-
- @Override
- public boolean setPassenger(@NotNull Entity entity) {
- return false;
- }
-
- @Override
- public @NotNull List getPassengers() {
- return null;
- }
-
- @Override
- public boolean addPassenger(@NotNull Entity entity) {
- return false;
- }
-
- @Override
- public boolean removePassenger(@NotNull Entity entity) {
- return false;
- }
-
- @Override
- public boolean isEmpty() {
- return false;
- }
-
- @Override
- public boolean eject() {
- return false;
- }
-
- @Override
- public float getFallDistance() {
- return 0;
- }
-
- @Override
- public void setFallDistance(float v) {
-
- }
-
- @Override
- public void setLastDamageCause(@Nullable EntityDamageEvent entityDamageEvent) {
-
- }
-
- @Override
- public @Nullable EntityDamageEvent getLastDamageCause() {
- return null;
- }
-
- @Override
- public @NotNull UUID getUniqueId() {
- return null;
- }
-
- @Override
- public int getTicksLived() {
- return 0;
- }
-
- @Override
- public void setTicksLived(int i) {
-
- }
-
- @Override
- public void playEffect(@NotNull EntityEffect entityEffect) {
-
- }
-
- @Override
- public @NotNull EntityType getType() {
- return null;
- }
-
- @Override
- public @NotNull Sound getSwimSound() {
- return null;
- }
-
- @Override
- public @NotNull Sound getSwimSplashSound() {
- return null;
- }
-
- @Override
- public @NotNull Sound getSwimHighSpeedSplashSound() {
- return null;
- }
-
- @Override
- public boolean isInsideVehicle() {
- return false;
- }
-
- @Override
- public boolean leaveVehicle() {
- return false;
- }
-
- @Override
- public @Nullable Entity getVehicle() {
- return null;
- }
-
- @Override
- public void setCustomNameVisible(boolean b) {
-
- }
-
- @Override
- public boolean isCustomNameVisible() {
- return false;
- }
-
- @Override
- public void setVisibleByDefault(boolean b) {
-
- }
-
- @Override
- public boolean isVisibleByDefault() {
- return false;
- }
-
- @Override
- public @NotNull Set getTrackedBy() {
- return null;
- }
-
- @Override
- public void setGlowing(boolean b) {
-
- }
-
- @Override
- public boolean isGlowing() {
- return false;
- }
-
- @Override
- public void setInvulnerable(boolean b) {
-
- }
-
- @Override
- public boolean isInvulnerable() {
- return false;
- }
-
- @Override
- public boolean isSilent() {
- return false;
- }
-
- @Override
- public void setSilent(boolean b) {
-
- }
-
- @Override
- public boolean hasGravity() {
- return false;
- }
-
- @Override
- public void setGravity(boolean b) {
-
- }
-
- @Override
- public int getPortalCooldown() {
- return 0;
- }
-
- @Override
- public void setPortalCooldown(int i) {
-
- }
-
- @Override
- public @NotNull Set getScoreboardTags() {
- return null;
- }
-
- @Override
- public boolean addScoreboardTag(@NotNull String s) {
- return false;
- }
-
- @Override
- public boolean removeScoreboardTag(@NotNull String s) {
- return false;
- }
-
- @Override
- public @NotNull PistonMoveReaction getPistonMoveReaction() {
- return null;
- }
-
- @Override
- public @NotNull BlockFace getFacing() {
- return null;
- }
-
- @Override
- public @NotNull Pose getPose() {
- return null;
- }
-
- @Override
- public boolean isSneaking() {
- return false;
- }
-
- @Override
- public void setSneaking(boolean b) {
-
- }
-
- @Override
- public void setPose(@NotNull Pose pose, boolean b) {
-
- }
-
- @Override
- public boolean hasFixedPose() {
- return false;
- }
-
- @Override
- public @NotNull SpawnCategory getSpawnCategory() {
- return null;
- }
-
- @Override
- public boolean isInWorld() {
- return false;
- }
-
- @Override
- public @Nullable EntitySnapshot createSnapshot() {
- return null;
- }
-
- @Override
- public @NotNull Entity copy() {
- return null;
- }
-
- @Override
- public @NotNull Entity copy(@NotNull Location location) {
- return null;
- }
-
- @Override
- public @NotNull Spigot spigot() {
- return null;
- }
-
- @Override
- public @NotNull Component name() {
- return null;
- }
-
- @Override
- public @NotNull Component teamDisplayName() {
- return null;
- }
-
- @Override
- public @Nullable Location getOrigin() {
- return null;
- }
-
- @Override
- public boolean fromMobSpawner() {
- return false;
- }
-
- @Override
- public CreatureSpawnEvent.@NotNull SpawnReason getEntitySpawnReason() {
- return null;
- }
-
- @Override
- public boolean isUnderWater() {
- return false;
- }
-
- @Override
- public boolean isInRain() {
- return false;
- }
-
- @Override
- public boolean isInBubbleColumn() {
- return false;
- }
-
- @Override
- public boolean isInWaterOrRain() {
- return false;
- }
-
- @Override
- public boolean isInWaterOrBubbleColumn() {
- return false;
- }
-
- @Override
- public boolean isInWaterOrRainOrBubbleColumn() {
- return false;
- }
-
- @Override
- public boolean isInLava() {
- return false;
- }
-
- @Override
- public boolean isTicking() {
- return false;
- }
-
- @Override
- public @NotNull Set getTrackedPlayers() {
- return null;
- }
-
- @Override
- public boolean spawnAt(@NotNull Location location, CreatureSpawnEvent.@NotNull SpawnReason spawnReason) {
- return false;
- }
-
- @Override
- public boolean isInPowderedSnow() {
- return false;
- }
-
- @Override
- public double getX() {
- return 0;
- }
-
- @Override
- public double getY() {
- return 0;
- }
-
- @Override
- public double getZ() {
- return 0;
- }
-
- @Override
- public float getPitch() {
- return 0;
- }
-
- @Override
- public float getYaw() {
- return 0;
- }
-
- @Override
- public boolean collidesAt(@NotNull Location location) {
- return false;
- }
-
- @Override
- public boolean wouldCollideUsing(@NotNull BoundingBox boundingBox) {
- return false;
- }
-
- @Override
- public @NotNull EntityScheduler getScheduler() {
- return null;
- }
-
- @Override
- public @NotNull String getScoreboardEntryName() {
- return null;
- }
-
- @Override
- public @Nullable Component customName() {
- return null;
- }
-
- @Override
- public void customName(@Nullable Component component) {
-
- }
-
- @Override
- public @Nullable String getCustomName() {
- return null;
- }
-
- @Override
- public void setCustomName(@Nullable String s) {
-
- }
-
- @Override
- public void setMetadata(@NotNull String s, @NotNull MetadataValue metadataValue) {
-
- }
-
- @Override
- public @NotNull List getMetadata(@NotNull String s) {
- return null;
- }
-
- @Override
- public boolean hasMetadata(@NotNull String s) {
- return false;
- }
-
- @Override
- public void removeMetadata(@NotNull String s, @NotNull Plugin plugin) {
-
- }
-
- @Override
- public boolean isPermissionSet(@NotNull String s) {
- return false;
- }
-
- @Override
- public boolean isPermissionSet(@NotNull Permission permission) {
- return false;
- }
-
- @Override
- public boolean hasPermission(@NotNull String s) {
- return false;
- }
-
- @Override
- public boolean hasPermission(@NotNull Permission permission) {
- return false;
- }
-
- @Override
- public @NotNull PermissionAttachment addAttachment(@NotNull Plugin plugin, @NotNull String s, boolean b) {
- return null;
- }
-
- @Override
- public @NotNull PermissionAttachment addAttachment(@NotNull Plugin plugin) {
- return null;
- }
-
- @Override
- public @Nullable PermissionAttachment addAttachment(@NotNull Plugin plugin, @NotNull String s, boolean b, int i) {
- return null;
- }
-
- @Override
- public @Nullable PermissionAttachment addAttachment(@NotNull Plugin plugin, int i) {
- return null;
- }
-
- @Override
- public void removeAttachment(@NotNull PermissionAttachment permissionAttachment) {
-
- }
-
- @Override
- public void recalculatePermissions() {
-
- }
-
- @Override
- public @NotNull Set getEffectivePermissions() {
- return null;
- }
-
- @Override
- public boolean isOp() {
- return false;
- }
-
- @Override
- public void setOp(boolean b) {
-
- }
-
- @Override
- public @NotNull PersistentDataContainer getPersistentDataContainer() {
- return null;
- }
}
+