diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index fa195ae..99878b8 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,10 +5,8 @@
-
-
-
+
@@ -71,30 +69,30 @@
- {
- "keyToString": {
- "Gradle.Build EntityLib.executor": "Run",
- "Gradle.EntityLib:test-plugin [runServer].executor": "Debug",
- "RunOnceActivity.OpenProjectViewOnStart": "true",
- "RunOnceActivity.ShowReadmeOnStart": "true",
- "WebServerToolWindowFactoryState": "false",
- "git-widget-placeholder": "master",
- "ignore.virus.scanning.warn.message": "true",
- "jdk.selected.JAVA_MODULE": "corretto-17",
- "kotlin-language-version-configured": "true",
- "last_opened_file_path": "D:/Github/EntityLib",
- "node.js.detected.package.eslint": "true",
- "node.js.detected.package.tslint": "true",
- "node.js.selected.package.eslint": "(autodetect)",
- "node.js.selected.package.tslint": "(autodetect)",
- "nodejs_package_manager_path": "npm",
- "project.structure.last.edited": "Modules",
- "project.structure.proportion": "0.0",
- "project.structure.side.proportion": "0.0",
- "settings.editor.selected.configurable": "preferences.pluginManager",
- "vue.rearranger.settings.migration": "true"
+
+}]]>
@@ -214,7 +212,7 @@
-
+
diff --git a/src/main/java/me/tofaa/entitylib/entity/WrapperEntity.java b/src/main/java/me/tofaa/entitylib/entity/WrapperEntity.java
index 33ed672..5a5b8b7 100644
--- a/src/main/java/me/tofaa/entitylib/entity/WrapperEntity.java
+++ b/src/main/java/me/tofaa/entitylib/entity/WrapperEntity.java
@@ -95,6 +95,7 @@ public class WrapperEntity implements Tickable {
WrapperEntity e = EntityLib.getEntity(passenger);
if (e != null) {
e.riding = -1;
+ e.teleport(e.getLocation());
}
}
diff --git a/test-plugin/src/main/java/me/tofaa/entitylib/TestCommand.java b/test-plugin/src/main/java/me/tofaa/entitylib/TestCommand.java
index 719ebba..4446ee0 100644
--- a/test-plugin/src/main/java/me/tofaa/entitylib/TestCommand.java
+++ b/test-plugin/src/main/java/me/tofaa/entitylib/TestCommand.java
@@ -1,71 +1,45 @@
package me.tofaa.entitylib;
-import com.github.retrooper.packetevents.PacketEvents;
import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes;
-import com.github.retrooper.packetevents.util.Vector3d;
-import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerEntityMetadata;
-import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnEntity;
-import me.tofaa.entitylib.meta.EntityMeta;
-import me.tofaa.entitylib.meta.mobs.passive.SheepMeta;
-import org.bukkit.Bukkit;
+import com.github.retrooper.packetevents.protocol.world.Location;
+import io.github.retrooper.packetevents.util.SpigotConversionUtil;
+import me.tofaa.entitylib.entity.WrapperEntity;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
-import org.bukkit.scheduler.BukkitTask;
import org.jetbrains.annotations.NotNull;
-import java.util.Optional;
import java.util.UUID;
public class TestCommand implements CommandExecutor {
- private int entityId = -1;
- private BukkitTask task;
+ private WrapperEntity base, passenger;
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (!(sender instanceof Player)) return false;
Player player = (Player) sender;
- if (entityId == -1) {
- createEntity(player);
- }
- SheepMeta meta = EntityLib.getMeta(entityId, SheepMeta.class);
- if (task == null || task.isCancelled()) {
- this.task = Bukkit.getScheduler().runTaskTimer(EntityLibPlugin.instance, () -> {
- byte randomColor = (byte) (Math.random() * 15);
- meta.setColor(randomColor);
- meta.setSheared(!meta.isSheared());
- WrapperPlayServerEntityMetadata packet = meta.createPacket();
- packet.getEntityMetadata().forEach(s -> player.sendMessage(s.getValue().toString()));
- PacketEvents.getAPI().getPlayerManager().getUser(player).sendPacket(packet);
- player.sendMessage("Color is now " + meta.getColor() + " (" + randomColor + ")");
- }, 0L, 4L);
- }
- else {
- task.cancel();
- task = null;
+
+ if (base != null) {
+ base.removePassenger(passenger);
+ player.sendMessage("Removed");
+ return true;
}
+
+ base = EntityLib.createEntity(UUID.randomUUID(), EntityTypes.SHEEP);
+ passenger = EntityLib.createEntity(UUID.randomUUID(), EntityTypes.SKELETON);
+
+ Location location = SpigotConversionUtil.fromBukkitLocation(player.getLocation());
+ Location pass = location.clone();
+ pass.setPosition(location.getPosition().add(1, 0, 1));
+ base.spawn(location);
+ passenger.spawn(pass);
+ base.addPassenger(passenger);
+
+ player.sendMessage("Spawned");
+
return true;
}
- void createEntity(Player player) {
- entityId = (int) (Math.random() * 99999);
- Optional uuid = Optional.of(UUID.randomUUID());
- Optional velocity = Optional.empty();
- WrapperPlayServerSpawnEntity packet = new WrapperPlayServerSpawnEntity(
- entityId,
- uuid,
- EntityTypes.SHEEP,
- new Vector3d(player.getLocation().getX(), player.getLocation().getY(), player.getLocation().getZ()),
- player.getLocation().getPitch(),
- player.getLocation().getYaw(),
- 90,
- 0,
- velocity
- );
- PacketEvents.getAPI().getPlayerManager().getUser(player).sendPacket(packet);
- EntityMeta meta = EntityLib.createMeta(entityId, EntityTypes.SHEEP);
- player.sendMessage("Meta class is " + meta.getClass().getSimpleName());
- }
}