🎨 Code quality improvements

This commit is contained in:
SBDeveloper 2022-08-04 19:53:12 +02:00
parent 663e93e37c
commit e53e25cd01
11 changed files with 86 additions and 64 deletions

View file

@ -36,8 +36,8 @@ import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
public class MapManager { public class MapManager {
protected final Set<Integer> OCCUPIED_IDS = new HashSet<>(); protected final Set<Integer> occupiedIds = new HashSet<>();
private final List<MapWrapper> MANAGED_MAPS = new CopyOnWriteArrayList<>(); private final List<MapWrapper> managedMaps = new CopyOnWriteArrayList<>();
/** /**
* Wrap a {@link BufferedImage} in a {@link MapWrapper} * Wrap a {@link BufferedImage} in a {@link MapWrapper}
@ -57,7 +57,7 @@ public class MapManager {
*/ */
public MapWrapper wrapImage(ArrayImage image) { public MapWrapper wrapImage(ArrayImage image) {
if (Configuration.getInstance().isImageCache()) { if (Configuration.getInstance().isImageCache()) {
for (MapWrapper wrapper : MANAGED_MAPS) { for (MapWrapper wrapper : managedMaps) {
if (wrapper.getContent().equals(image)) return wrapper; if (wrapper.getContent().equals(image)) return wrapper;
} }
} }
@ -72,7 +72,7 @@ public class MapManager {
*/ */
private MapWrapper wrapNewImage(ArrayImage image) { private MapWrapper wrapNewImage(ArrayImage image) {
MapWrapper wrapper = new MapWrapper(image); MapWrapper wrapper = new MapWrapper(image);
MANAGED_MAPS.add(wrapper); managedMaps.add(wrapper);
return wrapper; return wrapper;
} }
@ -84,7 +84,7 @@ public class MapManager {
public void unwrapImage(MapWrapper wrapper) { public void unwrapImage(MapWrapper wrapper) {
wrapper.controller.cancelSend(); wrapper.controller.cancelSend();
wrapper.getController().clearViewers(); wrapper.getController().clearViewers();
MANAGED_MAPS.remove(wrapper); managedMaps.remove(wrapper);
} }
/** /**
@ -95,7 +95,7 @@ public class MapManager {
*/ */
public Set<MapWrapper> getMapsVisibleTo(OfflinePlayer player) { public Set<MapWrapper> getMapsVisibleTo(OfflinePlayer player) {
Set<MapWrapper> visible = new HashSet<>(); Set<MapWrapper> visible = new HashSet<>();
for (MapWrapper wrapper : MANAGED_MAPS) { for (MapWrapper wrapper : managedMaps) {
if (wrapper.getController().isViewing(player)) { if (wrapper.getController().isViewing(player)) {
visible.add(wrapper); visible.add(wrapper);
} }
@ -126,7 +126,7 @@ public class MapManager {
* @param id The map ID to register * @param id The map ID to register
*/ */
public void registerOccupiedID(int id) { public void registerOccupiedID(int id) {
OCCUPIED_IDS.add(id); occupiedIds.add(id);
} }
/** /**
@ -135,7 +135,7 @@ public class MapManager {
* @param id The map ID to unregister * @param id The map ID to unregister
*/ */
public void unregisterOccupiedID(int id) { public void unregisterOccupiedID(int id) {
OCCUPIED_IDS.remove(id); occupiedIds.remove(id);
} }
/** /**
@ -146,7 +146,7 @@ public class MapManager {
*/ */
public Set<Integer> getOccupiedIdsFor(OfflinePlayer player) { public Set<Integer> getOccupiedIdsFor(OfflinePlayer player) {
Set<Integer> ids = new HashSet<>(); Set<Integer> ids = new HashSet<>();
for (MapWrapper wrapper : MANAGED_MAPS) { for (MapWrapper wrapper : managedMaps) {
int s = wrapper.getController().getMapId(player); int s = wrapper.getController().getMapId(player);
if (s >= 0) { if (s >= 0) {
ids.add(s); ids.add(s);
@ -176,7 +176,7 @@ public class MapManager {
public int getNextFreeIdFor(Player player) throws MapLimitExceededException { public int getNextFreeIdFor(Player player) throws MapLimitExceededException {
Set<Integer> occupied = getOccupiedIdsFor(player); Set<Integer> occupied = getOccupiedIdsFor(player);
//Add the 'default' occupied IDs //Add the 'default' occupied IDs
occupied.addAll(OCCUPIED_IDS); occupied.addAll(occupiedIds);
int largest = 0; int largest = 0;
for (Integer s : occupied) { for (Integer s : occupied) {
@ -222,7 +222,7 @@ public class MapManager {
*/ */
@Nullable @Nullable
public MapWrapper getDuplicate(ArrayImage image) { public MapWrapper getDuplicate(ArrayImage image) {
for (MapWrapper wrapper : MANAGED_MAPS) { for (MapWrapper wrapper : managedMaps) {
if (image.equals(wrapper.getContent())) { if (image.equals(wrapper.getContent())) {
return wrapper; return wrapper;
} }

View file

@ -36,6 +36,9 @@ public class MapSender {
private static final List<QueuedMap> sendQueue = new ArrayList<>(); private static final List<QueuedMap> sendQueue = new ArrayList<>();
private static int senderID = -1; private static int senderID = -1;
private MapSender() {
}
/** /**
* Add a map to the send queue * Add a map to the send queue
* *

View file

@ -39,6 +39,7 @@ import tech.sbdevelopment.mapreflectionapi.utils.ReflectionUtil;
import java.util.*; import java.util.*;
public class MapWrapper { public class MapWrapper {
private static final String REFERENCE_METADATA = "MAP_WRAPPER_REF";
protected ArrayImage content; protected ArrayImage content;
/** /**
@ -246,8 +247,8 @@ public class MapWrapper {
Bukkit.getScheduler().runTask(MapReflectionAPI.getInstance(), () -> { Bukkit.getScheduler().runTask(MapReflectionAPI.getInstance(), () -> {
ItemFrame frame = getItemFrameById(player.getWorld(), entityId); ItemFrame frame = getItemFrameById(player.getWorld(), entityId);
if (frame != null) { if (frame != null) {
frame.removeMetadata("MAP_WRAPPER_REF", MapReflectionAPI.getInstance()); frame.removeMetadata(REFERENCE_METADATA, MapReflectionAPI.getInstance());
frame.setMetadata("MAP_WRAPPER_REF", new FixedMetadataValue(MapReflectionAPI.getInstance(), MapWrapper.this)); frame.setMetadata(REFERENCE_METADATA, new FixedMetadataValue(MapReflectionAPI.getInstance(), MapWrapper.this));
} }
sendItemFramePacket(player, entityId, stack, getMapId(player)); sendItemFramePacket(player, entityId, stack, getMapId(player));
@ -256,12 +257,16 @@ public class MapWrapper {
@Override @Override
public void clearFrame(Player player, int entityId) { public void clearFrame(Player player, int entityId) {
sendItemFramePacket(player, entityId, null, -1);
Bukkit.getScheduler().runTask(MapReflectionAPI.getInstance(), () -> {
ItemFrame frame = getItemFrameById(player.getWorld(), entityId);
if (frame != null) frame.removeMetadata(REFERENCE_METADATA, MapReflectionAPI.getInstance());
});
} }
@Override @Override
public void clearFrame(Player player, ItemFrame frame) { public void clearFrame(Player player, ItemFrame frame) {
clearFrame(player, frame.getEntityId());
} }
@Override @Override

View file

@ -32,6 +32,7 @@ import org.bukkit.event.Cancellable;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import tech.sbdevelopment.mapreflectionapi.MapReflectionAPI; import tech.sbdevelopment.mapreflectionapi.MapReflectionAPI;
import tech.sbdevelopment.mapreflectionapi.api.MapWrapper; import tech.sbdevelopment.mapreflectionapi.api.MapWrapper;
@ -67,7 +68,7 @@ public class CreateInventoryMapUpdateEvent extends Event implements Cancellable
} }
@Override @Override
public HandlerList getHandlers() { public @NotNull HandlerList getHandlers() {
return handlerList; return handlerList;
} }

View file

@ -30,6 +30,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable; import org.bukkit.event.Cancellable;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
/** /**
* This event gets fired when a map creation is cancelled * This event gets fired when a map creation is cancelled
@ -58,7 +59,7 @@ public class MapCancelEvent extends Event implements Cancellable {
} }
@Override @Override
public HandlerList getHandlers() { public @NotNull HandlerList getHandlers() {
return handlerList; return handlerList;
} }
} }

View file

@ -25,8 +25,10 @@ package tech.sbdevelopment.mapreflectionapi.api.events;
import lombok.Getter; import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
import tech.sbdevelopment.mapreflectionapi.api.ArrayImage; import tech.sbdevelopment.mapreflectionapi.api.ArrayImage;
import tech.sbdevelopment.mapreflectionapi.api.MapWrapper; import tech.sbdevelopment.mapreflectionapi.api.MapWrapper;
@ -40,7 +42,8 @@ public class MapContentUpdateEvent extends Event {
private final MapWrapper wrapper; private final MapWrapper wrapper;
private final ArrayImage content; private final ArrayImage content;
private final boolean sendContent = true; @Setter
private boolean sendContent = true;
/** /**
* Construct a new {@link MapContentUpdateEvent} * Construct a new {@link MapContentUpdateEvent}
@ -56,7 +59,7 @@ public class MapContentUpdateEvent extends Event {
} }
@Override @Override
public HandlerList getHandlers() { public @NotNull HandlerList getHandlers() {
return handlerList; return handlerList;
} }
} }

View file

@ -32,6 +32,7 @@ import org.bukkit.event.Cancellable;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import tech.sbdevelopment.mapreflectionapi.MapReflectionAPI; import tech.sbdevelopment.mapreflectionapi.MapReflectionAPI;
import tech.sbdevelopment.mapreflectionapi.api.MapWrapper; import tech.sbdevelopment.mapreflectionapi.api.MapWrapper;
@ -74,7 +75,7 @@ public class MapInteractEvent extends Event implements Cancellable {
} }
@Override @Override
public HandlerList getHandlers() { public @NotNull HandlerList getHandlers() {
return handlerList; return handlerList;
} }

View file

@ -23,16 +23,11 @@
package tech.sbdevelopment.mapreflectionapi.api.exceptions; package tech.sbdevelopment.mapreflectionapi.api.exceptions;
import lombok.experimental.StandardException;
/** /**
* This exception gets thrown if no map IDs are available * This exception gets thrown if no map IDs are available
*/ */
@StandardException
public class MapLimitExceededException extends Exception { public class MapLimitExceededException extends Exception {
/**
* Construct a new {@link MapLimitExceededException}
*
* @param message The message in this exception
*/
public MapLimitExceededException(String message) {
super(message);
}
} }

View file

@ -45,8 +45,21 @@ public class PacketListener extends PacketAdapter {
@Override @Override
public void onPacketSending(PacketEvent event) { public void onPacketSending(PacketEvent event) {
if (event.getPacketType() != PacketType.Play.Server.MAP) return; //Make sure it's the right packet! if (event.getPacketType() == PacketType.Play.Server.MAP) {
handleOUTMapPacket(event);
}
}
@Override
public void onPacketReceiving(PacketEvent event) {
if (event.getPacketType() == PacketType.Play.Client.USE_ENTITY) {
handleINUseEntityPacket(event);
} else if (event.getPacketType() == PacketType.Play.Client.SET_CREATIVE_SLOT) {
handleINSetCreativeSlotPacket(event);
}
}
private void handleOUTMapPacket(PacketEvent event) {
int id = event.getPacket().getIntegers().read(0); //Read first int (a); that's the MAP id int id = event.getPacket().getIntegers().read(0); //Read first int (a); that's the MAP id
if (id < 0) { if (id < 0) {
@ -64,9 +77,7 @@ public class PacketListener extends PacketAdapter {
} }
} }
@Override private void handleINUseEntityPacket(PacketEvent event) {
public void onPacketReceiving(PacketEvent event) {
if (event.getPacketType() == PacketType.Play.Client.USE_ENTITY) {
int entityId = event.getPacket().getIntegers().read(0); //entityId int entityId = event.getPacket().getIntegers().read(0); //entityId
WrappedEnumEntityUseAction action = event.getPacket().getEnumEntityUseActions().read(0); WrappedEnumEntityUseAction action = event.getPacket().getEnumEntityUseActions().read(0);
EnumWrappers.EntityUseAction actionEnum = null; EnumWrappers.EntityUseAction actionEnum = null;
@ -85,7 +96,9 @@ public class PacketListener extends PacketAdapter {
Bukkit.getPluginManager().callEvent(interactEvent); Bukkit.getPluginManager().callEvent(interactEvent);
if (interactEvent.isCancelled()) event.setCancelled(true); if (interactEvent.isCancelled()) event.setCancelled(true);
} }
} else if (event.getPacketType() == PacketType.Play.Client.SET_CREATIVE_SLOT) { }
private void handleINSetCreativeSlotPacket(PacketEvent event) {
int slot = event.getPacket().getIntegers().read(0); int slot = event.getPacket().getIntegers().read(0);
ItemStack item = event.getPacket().getItemModifier().read(0); ItemStack item = event.getPacket().getItemModifier().read(0);
@ -96,5 +109,4 @@ public class PacketListener extends PacketAdapter {
if (updateEvent.isCancelled()) event.setCancelled(true); if (updateEvent.isCancelled()) event.setCancelled(true);
} }
} }
}
} }

View file

@ -146,7 +146,10 @@ public class ReflectionUtil {
Class<?> playerConnection = getNMSClass("server.network", "PlayerConnection"); Class<?> playerConnection = getNMSClass("server.network", "PlayerConnection");
MethodHandles.Lookup lookup = MethodHandles.lookup(); MethodHandles.Lookup lookup = MethodHandles.lookup();
MethodHandle sendPacket = null, getHandle = null, getHandleWorld = null, connection = null; MethodHandle sendPacket = null;
MethodHandle getHandle = null;
MethodHandle getHandleWorld = null;
MethodHandle connection = null;
try { try {
connection = lookup.findGetter(entityPlayer, connection = lookup.findGetter(entityPlayer,

View file

@ -40,12 +40,10 @@ public class YamlFile {
this.plugin = plugin; this.plugin = plugin;
this.name = name; this.name = name;
if (!plugin.getDataFolder().exists()) { if (!plugin.getDataFolder().exists() && !plugin.getDataFolder().mkdir()) {
if (!plugin.getDataFolder().mkdir()) {
plugin.getLogger().severe("Couldn't generate the pluginfolder!"); plugin.getLogger().severe("Couldn't generate the pluginfolder!");
return; return;
} }
}
this.file = new File(plugin.getDataFolder(), name + ".yml"); this.file = new File(plugin.getDataFolder(), name + ".yml");
if (!this.file.exists()) { if (!this.file.exists()) {