diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/blockstate_propertyaccess/StateHolderMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/blockstate_propertyaccess/StateHolderMixin.java index d2f58f1..54d0067 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/blockstate_propertyaccess/StateHolderMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/blockstate_propertyaccess/StateHolderMixin.java @@ -89,10 +89,10 @@ abstract class StateHolderMixin implements PropertyAccessStateHolder { @Overwrite public , V extends T> S setValue(final Property property, final V value) { final S ret = this.optimisedTable.set(this.tableIndex, property, value); - if (ret == null) { - throw new IllegalArgumentException("Cannot set property " + property + " to " + value + " on " + this.owner); + if (ret != null) { + return ret; } - return ret; + throw new IllegalArgumentException("Cannot set property " + property + " to " + value + " on " + this.owner); } /** @@ -101,11 +101,14 @@ abstract class StateHolderMixin implements PropertyAccessStateHolder { */ @Overwrite public , V extends T> S trySetValue(final Property property, final V value) { - final S ret = property == null ? (S)(StateHolder)(Object)this : this.optimisedTable.trySet(this.tableIndex, property, value, (S)(StateHolder)(Object)this); - if (ret == null) { - throw new IllegalArgumentException("Cannot set property " + property + " to " + value + " on " + this.owner); + if (property == null) { + return (S)(StateHolder)(Object)this; } - return ret; + final S ret = this.optimisedTable.trySet(this.tableIndex, property, value, (S)(StateHolder)(Object)this); + if (ret != null) { + return ret; + } + throw new IllegalArgumentException("Cannot set property " + property + " to " + value + " on " + this.owner); } /** @@ -124,11 +127,10 @@ abstract class StateHolderMixin implements PropertyAccessStateHolder { @Overwrite public > T getValue(final Property property) { final T ret = this.optimisedTable.get(this.tableIndex, property); - if (ret == null) { - throw new IllegalArgumentException("Cannot get property " + property + " as it does not exist in " + this.owner); - } else { + if (ret != null) { return ret; } + throw new IllegalArgumentException("Cannot get property " + property + " as it does not exist in " + this.owner); } /** diff --git a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ChunkMapMixin.java b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ChunkMapMixin.java index 55986f0..ed1a491 100644 --- a/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ChunkMapMixin.java +++ b/src/main/java/ca/spottedleaf/moonrise/mixin/chunk_system/ChunkMapMixin.java @@ -507,18 +507,20 @@ abstract class ChunkMapMixin extends ChunkStorage implements ChunkSystemChunkMap @Override public CompletableFuture> read(final ChunkPos pos) { - try { - return CompletableFuture.completedFuture( - Optional.ofNullable( - MoonriseRegionFileIO.loadData( - this.level, pos.x, pos.z, MoonriseRegionFileIO.RegionFileType.CHUNK_DATA, - MoonriseRegionFileIO.getIOBlockingPriorityForCurrentThread() - ) - ) - ); - } catch (final Throwable thr) { - return CompletableFuture.failedFuture(thr); - } + final CompletableFuture> ret = new CompletableFuture<>(); + + MoonriseRegionFileIO.loadDataAsync( + this.level, pos.x, pos.z, MoonriseRegionFileIO.RegionFileType.CHUNK_DATA, + (final CompoundTag data, final Throwable thr) -> { + if (thr != null) { + ret.completeExceptionally(thr); + } else { + ret.complete(Optional.ofNullable(data)); + } + }, false + ); + + return ret; } @Override