Additional async checks
This commit is contained in:
parent
80344c8503
commit
017b0a2346
|
@ -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");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ import me.filoghost.fcommons.Preconditions;
|
||||||
import me.filoghost.holographicdisplays.api.Position;
|
import me.filoghost.holographicdisplays.api.Position;
|
||||||
import me.filoghost.holographicdisplays.api.hologram.Hologram;
|
import me.filoghost.holographicdisplays.api.hologram.Hologram;
|
||||||
import me.filoghost.holographicdisplays.api.hologram.PlaceholderSetting;
|
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.BaseHologram;
|
||||||
import me.filoghost.holographicdisplays.core.base.ImmutablePosition;
|
import me.filoghost.holographicdisplays.core.base.ImmutablePosition;
|
||||||
import me.filoghost.holographicdisplays.core.tracking.LineTrackerManager;
|
import me.filoghost.holographicdisplays.core.tracking.LineTrackerManager;
|
||||||
|
@ -53,6 +54,7 @@ class APIHologram extends BaseHologram implements Hologram {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPlaceholderSetting(@NotNull PlaceholderSetting placeholderSetting) {
|
public void setPlaceholderSetting(@NotNull PlaceholderSetting placeholderSetting) {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
Preconditions.notNull(placeholderSetting, "placeholderSetting");
|
Preconditions.notNull(placeholderSetting, "placeholderSetting");
|
||||||
checkNotDeleted();
|
checkNotDeleted();
|
||||||
|
|
||||||
|
|
|
@ -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.HologramLineClickListener;
|
||||||
import me.filoghost.holographicdisplays.api.hologram.line.HologramLinePickupListener;
|
import me.filoghost.holographicdisplays.api.hologram.line.HologramLinePickupListener;
|
||||||
import me.filoghost.holographicdisplays.api.hologram.line.ItemHologramLine;
|
import me.filoghost.holographicdisplays.api.hologram.line.ItemHologramLine;
|
||||||
|
import me.filoghost.holographicdisplays.core.CorePreconditions;
|
||||||
import me.filoghost.holographicdisplays.core.base.BaseItemHologramLine;
|
import me.filoghost.holographicdisplays.core.base.BaseItemHologramLine;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
@ -24,21 +25,18 @@ class APIItemHologramLine extends BaseItemHologramLine implements ItemHologramLi
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @Nullable HologramLinePickupListener getPickupListener() {
|
public @Nullable HologramLinePickupListener getPickupListener() {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
return pickupListener;
|
return pickupListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPickupListener(@Nullable HologramLinePickupListener pickupListener) {
|
public void setPickupListener(@Nullable HologramLinePickupListener pickupListener) {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
checkNotDeleted();
|
checkNotDeleted();
|
||||||
|
|
||||||
this.pickupListener = pickupListener;
|
this.pickupListener = pickupListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public @Nullable HologramLineClickListener getClickListener() {
|
|
||||||
return clickListener;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasPickupCallback() {
|
public boolean hasPickupCallback() {
|
||||||
return pickupListener != null;
|
return pickupListener != null;
|
||||||
|
@ -51,8 +49,15 @@ class APIItemHologramLine extends BaseItemHologramLine implements ItemHologramLi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @Nullable HologramLineClickListener getClickListener() {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
|
return clickListener;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setClickListener(@Nullable HologramLineClickListener clickListener) {
|
public void setClickListener(@Nullable HologramLineClickListener clickListener) {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
checkNotDeleted();
|
checkNotDeleted();
|
||||||
|
|
||||||
this.clickListener = clickListener;
|
this.clickListener = clickListener;
|
||||||
|
|
|
@ -8,6 +8,7 @@ package me.filoghost.holographicdisplays.core.api.current;
|
||||||
import me.filoghost.holographicdisplays.api.hologram.PlaceholderSetting;
|
import me.filoghost.holographicdisplays.api.hologram.PlaceholderSetting;
|
||||||
import me.filoghost.holographicdisplays.api.hologram.line.HologramLineClickListener;
|
import me.filoghost.holographicdisplays.api.hologram.line.HologramLineClickListener;
|
||||||
import me.filoghost.holographicdisplays.api.hologram.line.TextHologramLine;
|
import me.filoghost.holographicdisplays.api.hologram.line.TextHologramLine;
|
||||||
|
import me.filoghost.holographicdisplays.core.CorePreconditions;
|
||||||
import me.filoghost.holographicdisplays.core.base.BaseTextHologramLine;
|
import me.filoghost.holographicdisplays.core.base.BaseTextHologramLine;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
@ -30,6 +31,7 @@ class APITextHologramLine extends BaseTextHologramLine implements TextHologramLi
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setClickListener(@Nullable HologramLineClickListener clickListener) {
|
public void setClickListener(@Nullable HologramLineClickListener clickListener) {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
checkNotDeleted();
|
checkNotDeleted();
|
||||||
|
|
||||||
this.clickListener = clickListener;
|
this.clickListener = clickListener;
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
package me.filoghost.holographicdisplays.core.base;
|
package me.filoghost.holographicdisplays.core.base;
|
||||||
|
|
||||||
import me.filoghost.fcommons.Preconditions;
|
import me.filoghost.fcommons.Preconditions;
|
||||||
|
import me.filoghost.holographicdisplays.core.CorePreconditions;
|
||||||
import me.filoghost.holographicdisplays.core.api.current.DefaultVisibilitySettings;
|
import me.filoghost.holographicdisplays.core.api.current.DefaultVisibilitySettings;
|
||||||
import me.filoghost.holographicdisplays.core.tracking.LineTrackerManager;
|
import me.filoghost.holographicdisplays.core.tracking.LineTrackerManager;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
|
@ -70,6 +71,7 @@ public abstract class BaseHologram extends BaseHologramComponent {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPosition(@NotNull ImmutablePosition position) {
|
public void setPosition(@NotNull ImmutablePosition position) {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
Preconditions.notNull(position, "position");
|
Preconditions.notNull(position, "position");
|
||||||
checkNotDeleted();
|
checkNotDeleted();
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ package me.filoghost.holographicdisplays.core.base;
|
||||||
|
|
||||||
import me.filoghost.holographicdisplays.api.Position;
|
import me.filoghost.holographicdisplays.api.Position;
|
||||||
import me.filoghost.holographicdisplays.core.CoreGlobalConfig;
|
import me.filoghost.holographicdisplays.core.CoreGlobalConfig;
|
||||||
|
import me.filoghost.holographicdisplays.core.CorePreconditions;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -28,18 +29,22 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterator<T> iterator() {
|
public Iterator<T> iterator() {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
return unmodifiableLinesView.iterator();
|
return unmodifiableLinesView.iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int size() {
|
public int size() {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
return lines.size();
|
return lines.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NotNull T get(int index) {
|
public @NotNull T get(int index) {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
return lines.get(index);
|
return lines.get(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void add(T line) {
|
public void add(T line) {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
checkNotDeleted();
|
checkNotDeleted();
|
||||||
|
|
||||||
lines.add(line);
|
lines.add(line);
|
||||||
|
@ -47,6 +52,7 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
|
||||||
}
|
}
|
||||||
|
|
||||||
public void insert(int beforeIndex, T line) {
|
public void insert(int beforeIndex, T line) {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
checkNotDeleted();
|
checkNotDeleted();
|
||||||
|
|
||||||
lines.add(beforeIndex, line);
|
lines.add(beforeIndex, line);
|
||||||
|
@ -54,6 +60,7 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
|
||||||
}
|
}
|
||||||
|
|
||||||
public void remove(int index) {
|
public void remove(int index) {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
checkNotDeleted();
|
checkNotDeleted();
|
||||||
|
|
||||||
lines.remove(index).setDeleted();
|
lines.remove(index).setDeleted();
|
||||||
|
@ -61,6 +68,7 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean remove(T line) {
|
public boolean remove(T line) {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
checkNotDeleted();
|
checkNotDeleted();
|
||||||
|
|
||||||
boolean removed = lines.remove(line);
|
boolean removed = lines.remove(line);
|
||||||
|
@ -72,6 +80,7 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clear() {
|
public void clear() {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
checkNotDeleted();
|
checkNotDeleted();
|
||||||
|
|
||||||
Iterator<T> iterator = lines.iterator();
|
Iterator<T> iterator = lines.iterator();
|
||||||
|
@ -105,6 +114,8 @@ public class BaseHologramLines<T extends EditableHologramLine> implements Iterab
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getHeight() {
|
public double getHeight() {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
|
|
||||||
if (lines.isEmpty()) {
|
if (lines.isEmpty()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
package me.filoghost.holographicdisplays.core.base;
|
package me.filoghost.holographicdisplays.core.base;
|
||||||
|
|
||||||
import me.filoghost.fcommons.Preconditions;
|
import me.filoghost.holographicdisplays.core.CorePreconditions;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ public abstract class BaseHologramManager<H extends BaseHologram> {
|
||||||
private final List<H> unmodifiableHologramsView = Collections.unmodifiableList(holograms);
|
private final List<H> unmodifiableHologramsView = Collections.unmodifiableList(holograms);
|
||||||
|
|
||||||
protected void addHologram(H hologram) {
|
protected void addHologram(H hologram) {
|
||||||
Preconditions.checkMainThread("async hologram create");
|
CorePreconditions.checkMainThread();
|
||||||
|
|
||||||
holograms.add(hologram);
|
holograms.add(hologram);
|
||||||
}
|
}
|
||||||
|
@ -31,14 +31,14 @@ public abstract class BaseHologramManager<H extends BaseHologram> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteHologram(H hologram) {
|
public void deleteHologram(H hologram) {
|
||||||
Preconditions.checkMainThread("async hologram delete");
|
CorePreconditions.checkMainThread();
|
||||||
|
|
||||||
hologram.setDeleted();
|
hologram.setDeleted();
|
||||||
holograms.remove(hologram);
|
holograms.remove(hologram);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteHologramsIf(Predicate<H> condition) {
|
public void deleteHologramsIf(Predicate<H> condition) {
|
||||||
Preconditions.checkMainThread("async hologram delete");
|
CorePreconditions.checkMainThread();
|
||||||
|
|
||||||
Iterator<H> iterator = holograms.iterator();
|
Iterator<H> iterator = holograms.iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
|
@ -51,7 +51,7 @@ public abstract class BaseHologramManager<H extends BaseHologram> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteHolograms() {
|
public void deleteHolograms() {
|
||||||
Preconditions.checkMainThread("async hologram delete");
|
CorePreconditions.checkMainThread();
|
||||||
|
|
||||||
Iterator<H> iterator = holograms.iterator();
|
Iterator<H> iterator = holograms.iterator();
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
|
|
|
@ -7,6 +7,7 @@ package me.filoghost.holographicdisplays.core.base;
|
||||||
|
|
||||||
import me.filoghost.fcommons.Preconditions;
|
import me.filoghost.fcommons.Preconditions;
|
||||||
import me.filoghost.fcommons.logging.Log;
|
import me.filoghost.fcommons.logging.Log;
|
||||||
|
import me.filoghost.holographicdisplays.core.CorePreconditions;
|
||||||
import me.filoghost.holographicdisplays.nms.common.entity.ItemNMSPacketEntity;
|
import me.filoghost.holographicdisplays.nms.common.entity.ItemNMSPacketEntity;
|
||||||
import me.filoghost.holographicdisplays.core.tracking.ItemLineTracker;
|
import me.filoghost.holographicdisplays.core.tracking.ItemLineTracker;
|
||||||
import me.filoghost.holographicdisplays.core.tracking.LineTrackerManager;
|
import me.filoghost.holographicdisplays.core.tracking.LineTrackerManager;
|
||||||
|
@ -48,6 +49,7 @@ public abstract class BaseItemHologramLine extends BaseClickableHologramLine {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setItemStack(@Nullable ItemStack itemStack) {
|
public void setItemStack(@Nullable ItemStack itemStack) {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
checkNotDeleted();
|
checkNotDeleted();
|
||||||
|
|
||||||
if (itemStack != null) {
|
if (itemStack != null) {
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
package me.filoghost.holographicdisplays.core.base;
|
package me.filoghost.holographicdisplays.core.base;
|
||||||
|
|
||||||
|
import me.filoghost.holographicdisplays.core.CorePreconditions;
|
||||||
import me.filoghost.holographicdisplays.nms.common.entity.TextNMSPacketEntity;
|
import me.filoghost.holographicdisplays.nms.common.entity.TextNMSPacketEntity;
|
||||||
import me.filoghost.holographicdisplays.core.tracking.LineTrackerManager;
|
import me.filoghost.holographicdisplays.core.tracking.LineTrackerManager;
|
||||||
import me.filoghost.holographicdisplays.core.tracking.TextLineTracker;
|
import me.filoghost.holographicdisplays.core.tracking.TextLineTracker;
|
||||||
|
@ -31,6 +32,7 @@ public abstract class BaseTextHologramLine extends BaseClickableHologramLine {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setText(@Nullable String text) {
|
public void setText(@Nullable String text) {
|
||||||
|
CorePreconditions.checkMainThread();
|
||||||
checkNotDeleted();
|
checkNotDeleted();
|
||||||
|
|
||||||
this.text = text;
|
this.text = text;
|
||||||
|
|
Loading…
Reference in New Issue