Skip to content

Commit

Permalink
Make item frames invisible
Browse files Browse the repository at this point in the history
  • Loading branch information
MrFishCakes committed Aug 30, 2023
1 parent dc5904c commit fb2dd3f
Show file tree
Hide file tree
Showing 2 changed files with 109 additions and 0 deletions.
66 changes: 66 additions & 0 deletions patches/api/0006-Graphite-Permissions.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrFishCakes <[email protected]>
Date: Wed, 30 Aug 2023 22:55:05 +0100
Subject: [PATCH] Graphite Permissions


diff --git a/src/main/java/org/bukkit/util/permissions/CommandPermissions.java b/src/main/java/org/bukkit/util/permissions/CommandPermissions.java
index d5a42707d365ffd72532bbb1a59a1ca7145f9918..85d061a379cc9d29d47714d71586bd4a8c750a31 100644
--- a/src/main/java/org/bukkit/util/permissions/CommandPermissions.java
+++ b/src/main/java/org/bukkit/util/permissions/CommandPermissions.java
@@ -19,6 +19,7 @@ public final class CommandPermissions {
DefaultPermissions.registerPermission(PREFIX + "reload", "Allows the user to reload the server settings", PermissionDefault.OP, commands);
DefaultPermissions.registerPermission(PREFIX + "version", "Allows the user to view the version of the server", PermissionDefault.TRUE, commands);
DefaultPermissions.registerPermission(PREFIX + "purpur", "Allows the user to use the purpur command", PermissionDefault.OP, commands); // Purpur
+ DefaultPermissions.registerPermission(PREFIX + "graphite", "Allows the user to use the graphite command", PermissionDefault.OP, commands); // Graphite

commands.recalculatePermissibles();
return commands;
diff --git a/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java b/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java
index 10627d2a11251a8cb01bbc3f6242d66f3505a16e..9068b19c83b522c55d04c92b33bc4849d8d56ba8 100644
--- a/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java
+++ b/src/main/java/org/bukkit/util/permissions/DefaultPermissions.java
@@ -90,6 +90,7 @@ public final class DefaultPermissions {
BroadcastPermissions.registerPermissions(parent);

PurpurPermissions.registerPermissions(); // Purpur
+ org.graphitemc.graphite.GraphitePermissions.registerPermissions(); // Graphite

parent.recalculatePermissibles();
}
diff --git a/src/main/java/org/graphitemc/graphite/GraphitePermissions.java b/src/main/java/org/graphitemc/graphite/GraphitePermissions.java
new file mode 100644
index 0000000000000000000000000000000000000000..b7083aeee29563d9bd2a0090f4bb4743c2291cd2
--- /dev/null
+++ b/src/main/java/org/graphitemc/graphite/GraphitePermissions.java
@@ -0,0 +1,30 @@
+package org.graphitemc.graphite;
+
+import org.bukkit.Bukkit;
+import org.bukkit.World;
+import org.bukkit.permissions.Permission;
+import org.bukkit.permissions.PermissionDefault;
+import org.jetbrains.annotations.NotNull;
+
+import static org.bukkit.util.permissions.DefaultPermissions.registerPermission;
+
+public final class GraphitePermissions {
+
+ private static final String ROOT = "graphite";
+ private static final String PREFIX = ROOT + ".";
+
+ @NotNull
+ public static Permission registerPermissions() {
+ final Permission graphite = registerPermission(ROOT, "Gives the user ability to use all Graphite utilities and commands", PermissionDefault.FALSE);
+
+ Permission itemFrame = registerPermission(PREFIX + "itemframe.invisible", "Allow changing of item frame invisibility in all levels", PermissionDefault.FALSE, graphite);
+ for (World world : Bukkit.getWorlds()) {
+ registerPermission(PREFIX + "itemframe.invisible." + world.getName(), "Allow changing of items frame invisibility in " + world.getName(), PermissionDefault.FALSE, itemFrame);
+ }
+ itemFrame.recalculatePermissibles();
+
+ graphite.recalculatePermissibles();
+ return graphite;
+ }
+
+}
43 changes: 43 additions & 0 deletions patches/server/0012-Invisible-Item-Frames.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrFishCakes <[email protected]>
Date: Wed, 30 Aug 2023 23:16:52 +0100
Subject: [PATCH] Invisible Item Frames

Shift-right click an item frame with correct permission to make it invisible

diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
index 182faba889dc15a3500c5919cad8a5483a53033a..40adcdc9a894532387dccc503b1aafcb716d3146 100644
--- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
+++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java
@@ -555,4 +555,19 @@ public class ItemFrame extends HangingEntity {

return (float) Mth.wrapDegrees(180 + enumdirection.get2DDataValue() * 90 + this.getRotation() * 45 + i);
}
+ // Graphite start - Invisible Item Frames
+ @Override
+ public InteractionResult interactAt(Player player, Vec3 hitPos, InteractionHand hand) {
+ if (this.level().graphiteConfiguration().misc.invisibleItemFrames && player.isShiftKeyDown() &&
+ player.getBukkitEntity().hasPermission("graphite.itemframe.invisible." + this.level().getWorld().getName())) {
+ player.swing(InteractionHand.MAIN_HAND);
+ this.setInvisible(!isInvisible());
+ this.setRotation(getRotation() - 1); // Prevents item from being rotated
+
+ return InteractionResult.PASS;
+ }
+
+ return super.interactAt(player, hitPos, hand);
+ }
+ // Graphite end - Invisible Item Frames
}
diff --git a/src/main/java/org/graphitemc/graphite/configuration/LevelConfigurations.java b/src/main/java/org/graphitemc/graphite/configuration/LevelConfigurations.java
index f28ed2644e4e58955851ef928e56b5bb6a548e94..8304ad66e42985fd90dbeba2d4def9b42ce2895f 100644
--- a/src/main/java/org/graphitemc/graphite/configuration/LevelConfigurations.java
+++ b/src/main/java/org/graphitemc/graphite/configuration/LevelConfigurations.java
@@ -50,6 +50,7 @@ public class LevelConfigurations extends ConfigurationPart {

public boolean fixMC31819 = true;
public boolean fixMC93018 = true;
+ public boolean invisibleItemFrames = true;

public Recipes recipes;

0 comments on commit fb2dd3f

Please sign in to comment.