Skip to content

Commit

Permalink
Fix #689
Browse files Browse the repository at this point in the history
  • Loading branch information
BillyGalbreath committed Dec 26, 2021
1 parent 35bf26e commit 7859e2f
Showing 1 changed file with 30 additions and 30 deletions.
60 changes: 30 additions & 30 deletions patches/server/0215-Add-compass-command.patch
Expand Up @@ -5,7 +5,7 @@ Subject: [PATCH] Add compass command


diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
index 04aa3a9d98ff4de3ce0bbacb07dc30170ff232b1..d81e3073d0e905388e1390d849f779902fadbad2 100644
index 4c243155b4a4a5f69bcf0558574ac31b35bea971..e61a05c91e6e567b9c5b99f460bd96ca4da6c4e8 100644
--- a/src/main/java/net/minecraft/commands/Commands.java
+++ b/src/main/java/net/minecraft/commands/Commands.java
@@ -210,6 +210,7 @@ public class Commands {
Expand Down Expand Up @@ -58,28 +58,6 @@ index 6d643998ee32de7f96b94e10fbd0b08a75628978..e2e83d8b39ddb154c0e69b63d5b99664
+ }
// Purpur end
}
diff --git a/src/main/java/net/minecraft/world/item/CompassItem.java b/src/main/java/net/minecraft/world/item/CompassItem.java
index 9d541c9e53f3f8db871f01f8d083e4cfc0de0de1..49e86b191397b49480684e7d99a515e9f8cf73fd 100644
--- a/src/main/java/net/minecraft/world/item/CompassItem.java
+++ b/src/main/java/net/minecraft/world/item/CompassItem.java
@@ -46,6 +46,17 @@ public class CompassItem extends Item implements Vanishable {
@Override
public void inventoryTick(ItemStack stack, Level world, Entity entity, int slot, boolean selected) {
if (!world.isClientSide) {
+ // Purpur start
+ if (world.purpurConfig.compassItemShowsBossBar && entity instanceof net.minecraft.server.level.ServerPlayer player && !player.compassBar()) {
+ org.purpurmc.purpur.task.CompassTask task = org.purpurmc.purpur.task.CompassTask.instance();
+ boolean hasTask = task.hasPlayer(player.getUUID());
+ if (selected && !hasTask) {
+ task.addPlayer(player.getBukkitEntity());
+ } else if (!selected && hasTask) {
+ task.removePlayer(player.getBukkitEntity());
+ }
+ }
+ // Purpur end
if (isLodestoneCompass(stack)) {
CompoundTag compoundTag = stack.getOrCreateTag();
if (compoundTag.contains("LodestoneTracked") && !compoundTag.getBoolean("LodestoneTracked")) {
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
index e230f65d8599f1d6f8c567227859935a905426f8..a75db67d2ed1d3440903396181b4cd6cf982f15d 100644
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
Expand Down Expand Up @@ -132,10 +110,10 @@ index aee40fd438225fa5eb0b023ed047eb95136f2093..619d1295836ac51ff5b5bc8400ee59f2
public double minecartMaxSpeed = 0.4D;
diff --git a/src/main/java/org/purpurmc/purpur/command/CompassCommand.java b/src/main/java/org/purpurmc/purpur/command/CompassCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..c493bb0ff9b0de2edadbee4138eab4d51f1fd20a
index 0000000000000000000000000000000000000000..34b6b1db6ef85d40cb84a5e19453ef5c5110d539
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/command/CompassCommand.java
@@ -0,0 +1,21 @@
@@ -0,0 +1,27 @@
+package org.purpurmc.purpur.command;
+
+import com.mojang.brigadier.CommandDispatcher;
Expand All @@ -150,8 +128,14 @@ index 0000000000000000000000000000000000000000..c493bb0ff9b0de2edadbee4138eab4d5
+ .requires(listener -> listener.hasPermission(2))
+ .executes(context -> {
+ ServerPlayer player = context.getSource().getPlayerOrException();
+ boolean result = CompassTask.instance().togglePlayer(player.getBukkitEntity());
+ player.compassBar(result);
+ CompassTask task = CompassTask.instance();
+ if (player.compassBar()) {
+ task.removePlayer(player.getBukkitEntity());
+ player.compassBar(false);
+ } else {
+ task.addPlayer(player.getBukkitEntity());
+ player.compassBar(true);
+ }
+ return 1;
+ })
+ ).setPermission("bukkit.command.compass");
Expand Down Expand Up @@ -190,16 +174,18 @@ index d38b3c4a722396cc3b61a9a8ed7e39cea4ae65cb..d333334f323049ca97e756324cff0b23
}
diff --git a/src/main/java/org/purpurmc/purpur/task/CompassTask.java b/src/main/java/org/purpurmc/purpur/task/CompassTask.java
new file mode 100644
index 0000000000000000000000000000000000000000..c34abe39812466437826a06101cd81c770e9e7a3
index 0000000000000000000000000000000000000000..bdb214bc2e0d944a26c825c1124d23d4fee2eca9
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/task/CompassTask.java
@@ -0,0 +1,52 @@
@@ -0,0 +1,68 @@
+package org.purpurmc.purpur.task;
+
+import net.kyori.adventure.bossbar.BossBar;
+import net.kyori.adventure.text.Component;
+import org.purpurmc.purpur.PurpurConfig;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.world.item.Items;
+import org.bukkit.entity.Player;
+import org.purpurmc.purpur.PurpurConfig;
+
+public class CompassTask extends BossBarTask {
+ private static CompassTask instance;
Expand All @@ -220,6 +206,20 @@ index 0000000000000000000000000000000000000000..c34abe39812466437826a06101cd81c7
+ }
+ tick = 0;
+
+ MinecraftServer.getServer().levels.forEach((key, level) -> {
+ if (level.purpurConfig.compassItemShowsBossBar) {
+ level.players.forEach(player -> {
+ if (!player.compassBar()) {
+ if (player.getMainHandItem().getItem() != Items.COMPASS && player.getOffhandItem().getItem() != Items.COMPASS) {
+ removePlayer(player.getBukkitEntity());
+ } else if (!hasPlayer(player.getUUID())) {
+ addPlayer(player.getBukkitEntity());
+ }
+ }
+ });
+ }
+ });
+
+ super.run();
+ }
+
Expand Down

0 comments on commit 7859e2f

Please sign in to comment.