Additional async checks

This commit is contained in:
filoghost 2022-11-14 00:12:58 +01:00
parent 80344c8503
commit 017b0a2346
9 changed files with 52 additions and 10 deletions

View File

@ -0,0 +1,16 @@
/*
* Copyright (C) filoghost and contributors
*
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package me.filoghost.holographicdisplays.core;
import me.filoghost.fcommons.Preconditions;
public class CorePreconditions {
public static void checkMainThread() {
Preconditions.checkMainThread("async operation is not supported");
}
}

View File

@ -9,6 +9,7 @@ import me.filoghost.fcommons.Preconditions;
import me.filoghost.holographicdisplays.api.Position;
import me.filoghost.holographicdisplays.api.hologram.Hologram;
import me.filoghost.holographicdisplays.api.hologram.PlaceholderSetting;
import me.filoghost.holographicdisplays.core.CorePreconditions;
import me.filoghost.holographicdisplays.core.base.BaseHologram;
import me.filoghost.holographicdisplays.core.base.ImmutablePosition;
import me.filoghost.holographicdisplays.core.tracking.LineTrackerManager;
@ -53,6 +54,7 @@ class APIHologram extends BaseHologram implements Hologram {
@Override
public void setPlaceholderSetting(@NotNull PlaceholderSetting placeholderSetting) {
CorePreconditions.checkMainThread();
Preconditions.notNull(placeholderSetting, "placeholderSetting");
checkNotDeleted();

View File

@ -8,6 +8,7 @@ package me.filoghost.holographicdisplays.core.api.current;
import me.filoghost.holographicdisplays.api.hologram.line.HologramLineClickListener;
import me.filoghost.holographicdisplays.api.hologram.line.HologramLinePickupListener;
import me.filoghost.holographicdisplays.api.hologram.line.ItemHologramLine;
import me.filoghost.holographicdisplays.core.CorePreconditions;
import me.filoghost.holographicdisplays.core.base.BaseItemHologramLine;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@ -24,21 +25,18 @@ class APIItemHologramLine extends BaseItemHologramLine implements ItemHologramLi
@Override
public @Nullable HologramLinePickupListener getPickupListener() {
CorePreconditions.checkMainThread();
return pickupListener;
}
@Override
public void setPickupListener(@Nullable HologramLinePickupListener pickupListener) {
CorePreconditions.checkMainThread();
checkNotDeleted();
this.pickupListener = pickupListener;
}
@Override
public @Nullable HologramLineClickListener getClickListener() {
return clickListener;
}
@Override
public boolean hasPickupCallback() {
return pickupListener != null;
@ -51,8 +49,15 @@ class APIItemHologramLine extends BaseItemHologramLine implements ItemHologramLi
}
}
@Override
public @Nullable HologramLineClickListener getClickListener() {
CorePreconditions.checkMainThread();
return clickListener;
}
@Override
public void setClickListener(@Nullable HologramLineClickListener clickListener) {
CorePreconditions.checkMainThread();
checkNotDeleted();
this.clickListener = clickListener;

View File

@ -8,6 +8,7 @@ package me.filoghost.holographicdisplays.core.api.current;
import me.filoghost.holographicdisplays.api.hologram.PlaceholderSetting;
import me.filoghost.holographicdisplays.api.hologram.line.HologramLineClickListener;
import me.filoghost.holographicdisplays.api.hologram.line.TextHologramLine;
import me.filoghost.holographicdisplays.core.CorePreconditions;
import me.filoghost.holographicdisplays.core.base.BaseTextHologramLine;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Nullable;
@ -30,6 +31,7 @@ class APITextHologramLine extends BaseTextHologramLine implements TextHologramLi
@Override
public void setClickListener(@Nullable HologramLineClickListener clickListener) {
CorePreconditions.checkMainThread();
checkNotDeleted();
this.clickListener = clickListener;

View File

@ -6,6 +6,7 @@
package me.filoghost.holographicdisplays.core.base;
import me.filoghost.fcommons.Preconditions;
import me.filoghost.holographicdisplays.core.CorePreconditions;
import me.filoghost.holographicdisplays.core.api.current.DefaultVisibilitySettings;
import me.filoghost.holographicdisplays.core.tracking.LineTrackerManager;
import org.bukkit.Chunk;
@ -70,6 +71,7 @@ public abstract class BaseHologram extends BaseHologramComponent {
}
public void setPosition(@NotNull ImmutablePosition position) {
CorePreconditions.checkMainThread();
Preconditions.notNull(position, "position");
checkNotDeleted();

View File

@ -7,6 +7,7 @@ package me.filoghost.holographicdisplays.core.base;
import me.filoghost.holographicdisplays.api.Position;
import me.filoghost.holographicdisplays.core.CoreGlobalConfig;
import me.filoghost.holographicdisplays.core.CorePreconditions;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
@ -28,18 +29,22 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
@Override
public Iterator<T> iterator() {
CorePreconditions.checkMainThread();
return unmodifiableLinesView.iterator();
}
public int size() {
CorePreconditions.checkMainThread();
return lines.size();
}
public @NotNull T get(int index) {
CorePreconditions.checkMainThread();
return lines.get(index);
}
public void add(T line) {
CorePreconditions.checkMainThread();
checkNotDeleted();
lines.add(line);
@ -47,6 +52,7 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
}
public void insert(int beforeIndex, T line) {
CorePreconditions.checkMainThread();
checkNotDeleted();
lines.add(beforeIndex, line);
@ -54,6 +60,7 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
}
public void remove(int index) {
CorePreconditions.checkMainThread();
checkNotDeleted();
lines.remove(index).setDeleted();
@ -61,6 +68,7 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
}
public boolean remove(T line) {
CorePreconditions.checkMainThread();
checkNotDeleted();
boolean removed = lines.remove(line);
@ -72,6 +80,7 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
}
public void clear() {
CorePreconditions.checkMainThread();
checkNotDeleted();
Iterator<T> iterator = lines.iterator();
@ -105,6 +114,8 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
}
public double getHeight() {
CorePreconditions.checkMainThread();
if (lines.isEmpty()) {
return 0;
}

View File

@ -5,7 +5,7 @@
*/
package me.filoghost.holographicdisplays.core.base;
import me.filoghost.fcommons.Preconditions;
import me.filoghost.holographicdisplays.core.CorePreconditions;
import org.bukkit.Chunk;
import org.bukkit.World;
@ -21,7 +21,7 @@ public abstract class BaseHologramManager<H extends BaseHologram> {
private final List<H> unmodifiableHologramsView = Collections.unmodifiableList(holograms);
protected void addHologram(H hologram) {
Preconditions.checkMainThread("async hologram create");
CorePreconditions.checkMainThread();
holograms.add(hologram);
}
@ -31,14 +31,14 @@ public abstract class BaseHologramManager<H extends BaseHologram> {
}
public void deleteHologram(H hologram) {
Preconditions.checkMainThread("async hologram delete");
CorePreconditions.checkMainThread();
hologram.setDeleted();
holograms.remove(hologram);
}
public void deleteHologramsIf(Predicate<H> condition) {
Preconditions.checkMainThread("async hologram delete");
CorePreconditions.checkMainThread();
Iterator<H> iterator = holograms.iterator();
while (iterator.hasNext()) {
@ -51,7 +51,7 @@ public abstract class BaseHologramManager<H extends BaseHologram> {
}
public void deleteHolograms() {
Preconditions.checkMainThread("async hologram delete");
CorePreconditions.checkMainThread();
Iterator<H> iterator = holograms.iterator();
while (iterator.hasNext()) {

View File

@ -7,6 +7,7 @@ package me.filoghost.holographicdisplays.core.base;
import me.filoghost.fcommons.Preconditions;
import me.filoghost.fcommons.logging.Log;
import me.filoghost.holographicdisplays.core.CorePreconditions;
import me.filoghost.holographicdisplays.nms.common.entity.ItemNMSPacketEntity;
import me.filoghost.holographicdisplays.core.tracking.ItemLineTracker;
import me.filoghost.holographicdisplays.core.tracking.LineTrackerManager;
@ -48,6 +49,7 @@ public abstract class BaseItemHologramLine extends BaseClickableHologramLine {
}
public void setItemStack(@Nullable ItemStack itemStack) {
CorePreconditions.checkMainThread();
checkNotDeleted();
if (itemStack != null) {

View File

@ -5,6 +5,7 @@
*/
package me.filoghost.holographicdisplays.core.base;
import me.filoghost.holographicdisplays.core.CorePreconditions;
import me.filoghost.holographicdisplays.nms.common.entity.TextNMSPacketEntity;
import me.filoghost.holographicdisplays.core.tracking.LineTrackerManager;
import me.filoghost.holographicdisplays.core.tracking.TextLineTracker;
@ -31,6 +32,7 @@ public abstract class BaseTextHologramLine extends BaseClickableHologramLine {
}
public void setText(@Nullable String text) {
CorePreconditions.checkMainThread();
checkNotDeleted();
this.text = text;