1.16 invisible map support

This commit is contained in:
Vlammar 2021-11-13 13:48:54 +01:00
parent 7ef03a0eae
commit 08cb90f560
4 changed files with 35 additions and 5 deletions

View File

@ -51,6 +51,7 @@ public enum Permissions {
GETOTHER("imageonmap.getother"), GETOTHER("imageonmap.getother"),
RENAME("imageonmap.rename"), RENAME("imageonmap.rename"),
PLACE_SPLATTER_MAP("imageonmap.placesplattermap"), PLACE_SPLATTER_MAP("imageonmap.placesplattermap"),
PLACE_INVISIBLE_SPLATTER_MAP("imageonmap.placeinvisiblesplattermap"),
REMOVE_SPLATTER_MAP("imageonmap.removesplattermap"), REMOVE_SPLATTER_MAP("imageonmap.removesplattermap"),
DELETE("imageonmap.delete"), DELETE("imageonmap.delete"),
DELETEOTHER("imageonmap.deleteother"), DELETEOTHER("imageonmap.deleteother"),

View File

@ -37,17 +37,16 @@
package fr.moribus.imageonmap.ui; package fr.moribus.imageonmap.ui;
import fr.moribus.imageonmap.Permissions; import fr.moribus.imageonmap.Permissions;
import fr.moribus.imageonmap.PluginConfiguration;
import fr.moribus.imageonmap.map.ImageMap; import fr.moribus.imageonmap.map.ImageMap;
import fr.moribus.imageonmap.map.MapManager; import fr.moribus.imageonmap.map.MapManager;
import fr.moribus.imageonmap.map.PosterMap; import fr.moribus.imageonmap.map.PosterMap;
import fr.moribus.imageonmap.map.SingleMap; import fr.moribus.imageonmap.map.SingleMap;
import fr.zcraft.quartzlib.components.i18n.I; import fr.zcraft.quartzlib.components.i18n.I;
import fr.zcraft.quartzlib.core.QuartzLib; import fr.zcraft.quartzlib.core.QuartzLib;
import fr.zcraft.quartzlib.tools.PluginLogger;
import fr.zcraft.quartzlib.tools.items.ItemStackBuilder; import fr.zcraft.quartzlib.tools.items.ItemStackBuilder;
import fr.zcraft.quartzlib.tools.items.ItemUtils; import fr.zcraft.quartzlib.tools.items.ItemUtils;
import fr.zcraft.quartzlib.tools.runners.RunTask; import fr.zcraft.quartzlib.tools.runners.RunTask;
import java.lang.reflect.Method;
import java.util.ArrayDeque; import java.util.ArrayDeque;
import java.util.HashMap; import java.util.HashMap;
import java.util.Queue; import java.util.Queue;
@ -320,7 +319,6 @@ public class MapItemManager implements Listener {
|| !SplatterMapManager.hasSplatterMap(player, poster)) { || !SplatterMapManager.hasSplatterMap(player, poster)) {
poster.give(player); poster.give(player);
} }
return; return;
} }
} }
@ -329,7 +327,7 @@ public class MapItemManager implements Listener {
if (!MapManager.managesMap(frame.getItem())) { if (!MapManager.managesMap(frame.getItem())) {
return; return;
} }
SplatterMapManager.removePropertiesFromFrames(player, frame);
frame.setItem(new ItemStackBuilder(item) frame.setItem(new ItemStackBuilder(item)
.title(getMapTitle(item)) .title(getMapTitle(item))
.hideAllAttributes() .hideAllAttributes()

View File

@ -37,6 +37,7 @@
package fr.moribus.imageonmap.ui; package fr.moribus.imageonmap.ui;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import fr.moribus.imageonmap.Permissions;
import fr.moribus.imageonmap.image.MapInitEvent; import fr.moribus.imageonmap.image.MapInitEvent;
import fr.moribus.imageonmap.map.ImageMap; import fr.moribus.imageonmap.map.ImageMap;
import fr.moribus.imageonmap.map.MapManager; import fr.moribus.imageonmap.map.MapManager;
@ -53,6 +54,7 @@ import fr.zcraft.quartzlib.tools.runners.RunTask;
import fr.zcraft.quartzlib.tools.text.MessageSender; import fr.zcraft.quartzlib.tools.text.MessageSender;
import fr.zcraft.quartzlib.tools.world.FlatLocation; import fr.zcraft.quartzlib.tools.world.FlatLocation;
import fr.zcraft.quartzlib.tools.world.WorldUtils; import fr.zcraft.quartzlib.tools.world.WorldUtils;
import java.lang.reflect.Method;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Color; import org.bukkit.Color;
import org.bukkit.Material; import org.bukkit.Material;
@ -242,6 +244,7 @@ public abstract class SplatterMapManager {
//Rotation management relative to player rotation the default position is North, //Rotation management relative to player rotation the default position is North,
// when on ceiling we flipped the rotation // when on ceiling we flipped the rotation
RunTask.later(() -> { RunTask.later(() -> {
addPropertiesToFrames(player, frame);
frame.setItem( frame.setItem(
new ItemStackBuilder(Material.FILLED_MAP).nbt(ImmutableMap.of("map", id)).craftItem()); new ItemStackBuilder(Material.FILLED_MAP).nbt(ImmutableMap.of("map", id)).craftItem());
}, 5L); }, 5L);
@ -303,6 +306,7 @@ public abstract class SplatterMapManager {
int id = poster.getMapIdAtReverseY(i); int id = poster.getMapIdAtReverseY(i);
RunTask.later(() -> { RunTask.later(() -> {
addPropertiesToFrames(player, frame);
frame.setItem( frame.setItem(
new ItemStackBuilder(Material.FILLED_MAP).nbt(ImmutableMap.of("map", id)).craftItem()); new ItemStackBuilder(Material.FILLED_MAP).nbt(ImmutableMap.of("map", id)).craftItem());
}, 5L); }, 5L);
@ -361,10 +365,31 @@ public abstract class SplatterMapManager {
for (ItemFrame frame : matchingFrames) { for (ItemFrame frame : matchingFrames) {
if (frame != null) { if (frame != null) {
removePropertiesFromFrames(player, frame);
frame.setItem(null); frame.setItem(null);
} }
} }
return poster; return poster;
} }
public static void addPropertiesToFrames(Player player, ItemFrame frame) {
if (Permissions.PLACE_INVISIBLE_SPLATTER_MAP.grantedTo(player)) {
try {
Method setVisible = frame.getClass().getMethod("setVisible", boolean.class);
setVisible.invoke(frame, false);
} catch (Exception e) {
//1.16-
}
}
}
public static void removePropertiesFromFrames(Player player, ItemFrame frame) {
try {
Method setVisible = frame.getClass().getMethod("setVisible", boolean.class);
setVisible.invoke(frame, true);
} catch (Exception e) {
//1.16-
}
}
} }

View File

@ -41,6 +41,8 @@ permissions:
imageonmap.bypassmaplimit: false imageonmap.bypassmaplimit: false
imageonmap.bypassimagelimit: false imageonmap.bypassimagelimit: false
imageonmap.ignoreallowlist_hostingsite: true imageonmap.ignoreallowlist_hostingsite: true
imageonmap.placeinvisiblesplattermap: true
imageonmap.userender: imageonmap.userender:
description: "Allows you to use /tomap and related commands (/maptool getremaining). Alias of imageonmap.new." description: "Allows you to use /tomap and related commands (/maptool getremaining). Alias of imageonmap.new."
default: true default: true
@ -123,4 +125,8 @@ permissions:
imageonmap.ignoreallowlist_hostingsite: imageonmap.ignoreallowlist_hostingsite:
description: "Allows you to ignore the restriction on the allow list for image hosting website." description: "Allows you to ignore the restriction on the allow list for image hosting website."
default: true default: true
imageonmap.placeinvisiblesplattermap:
description: "Allows you to make the item frame on which you placed your splatter map invisible."
default: true