diff --git a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_1/PaperweightBlockMaterial.java b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_1/PaperweightBlockMaterial.java index 179d621045..1b59d33393 100644 --- a/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_1/PaperweightBlockMaterial.java +++ b/worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_1/PaperweightBlockMaterial.java @@ -28,7 +28,6 @@ import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.PushReaction; public class PaperweightBlockMaterial extends BukkitBlockMaterial { @@ -69,7 +68,7 @@ public boolean isPowerSource() { @Override public boolean isLiquid() { - return !this.blockState.getFluidState().is(Fluids.EMPTY); + return !this.blockState.getFluidState().isEmpty(); } @Override diff --git a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_2/PaperweightBlockMaterial.java b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_2/PaperweightBlockMaterial.java index 7ec90111d4..4c31e76f7d 100644 --- a/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_2/PaperweightBlockMaterial.java +++ b/worldedit-bukkit/adapters/adapter-26.2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_2/PaperweightBlockMaterial.java @@ -29,7 +29,6 @@ import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.PushReaction; public class PaperweightBlockMaterial extends BukkitBlockMaterial { @@ -70,7 +69,7 @@ public boolean isPowerSource() { @Override public boolean isLiquid() { - return !this.blockState.getFluidState().is(Fluids.EMPTY); + return !this.blockState.getFluidState().isEmpty(); } @Override diff --git a/worldedit-bukkit/adapters/adapter-26.3/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_3/PaperweightBlockMaterial.java b/worldedit-bukkit/adapters/adapter-26.3/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_3/PaperweightBlockMaterial.java index ec4db3f7fd..ff231b2ab7 100644 --- a/worldedit-bukkit/adapters/adapter-26.3/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_3/PaperweightBlockMaterial.java +++ b/worldedit-bukkit/adapters/adapter-26.3/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/v26_3/PaperweightBlockMaterial.java @@ -28,7 +28,6 @@ import net.minecraft.world.level.block.EntityBlock; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.PushReaction; public class PaperweightBlockMaterial extends BukkitBlockMaterial { @@ -69,7 +68,7 @@ public boolean isPowerSource() { @Override public boolean isLiquid() { - return !this.blockState.getFluidState().is(Fluids.EMPTY); + return !this.blockState.getFluidState().isEmpty(); } @Override diff --git a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java index 6a6419ef28..6d10db9950 100644 --- a/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java +++ b/worldedit-bukkit/src/main/java/com/sk89q/worldedit/bukkit/BukkitWorld.java @@ -453,6 +453,7 @@ public void fixAfterFastMode(Iterable chunks) { } } + @Deprecated @Override public boolean playEffect(Vector3 position, int type, int data) { World world = getWorld(); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/AreaPickaxe.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/AreaPickaxe.java index 299908d993..d5f4b2af5e 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/AreaPickaxe.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/AreaPickaxe.java @@ -49,6 +49,7 @@ public boolean canUse(Actor player) { return player.hasPermission("worldedit.superpickaxe.area"); } + @SuppressWarnings("deprecation") @Override public boolean actPrimary(Platform server, LocalConfiguration config, Player player, LocalSession session, Location clicked) { int ox = clicked.getBlockX(); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/RecursivePickaxe.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/RecursivePickaxe.java index 9fad39f9d3..9bbede5f95 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/RecursivePickaxe.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/tool/RecursivePickaxe.java @@ -106,6 +106,7 @@ public boolean actPrimary( return true; } + @SuppressWarnings("deprecation") private static void recurse( Platform server, EditSession editSession, World world, BlockVector3 pos, BlockVector3 origin, double size, BlockType initialType, Set visited diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/net/HttpRequest.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/net/HttpRequest.java index d133eb54ec..b93c0c5cda 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/net/HttpRequest.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/net/HttpRequest.java @@ -45,6 +45,12 @@ import java.util.Map; import java.util.concurrent.ThreadLocalRandom; +/** + * A class for making HTTP requests. + * + * @deprecated Use the native JDK HttpClient API instead. + */ +@Deprecated(forRemoval = true) public class HttpRequest implements Closeable { private static final int CONNECT_TIMEOUT = 1000 * 5; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/paste/EngineHubPaste.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/paste/EngineHubPaste.java index 1decfd384a..a0f6889ef8 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/paste/EngineHubPaste.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/paste/EngineHubPaste.java @@ -21,11 +21,13 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; -import com.sk89q.worldedit.util.net.HttpRequest; import java.io.IOException; import java.net.URI; import java.net.URL; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; import java.util.Map; import java.util.concurrent.Callable; @@ -39,7 +41,6 @@ public Callable paste(String content, PasteMetadata metadata) { } private static final class PasteTask implements Callable { - private final String content; private final PasteMetadata metadata; @@ -50,51 +51,55 @@ private PasteTask(String content, PasteMetadata metadata) { @Override public URL call() throws IOException, InterruptedException { - URL initialUrl = HttpRequest.url("https://paste.enginehub.org/signed_paste"); - - HttpRequest requestBuilder = HttpRequest.get(initialUrl); - - requestBuilder.header("x-paste-meta-from", "EngineHub"); - if (metadata.name != null) { - requestBuilder.header("x-paste-meta-name", metadata.name); - } - if (metadata.author != null) { - requestBuilder.header("x-paste-meta-author", metadata.author); - } - if (metadata.extension != null) { - requestBuilder.header("x-paste-meta-extension", metadata.extension); - } - - SignedPasteResponse response = GSON.fromJson(requestBuilder - .execute() - .expectResponseCode(200) - .returnContent() - .asString("UTF-8"), TypeToken.get(SignedPasteResponse.class).getType()); - - HttpRequest.Form form = HttpRequest.Form.create(); - for (Map.Entry entry : response.uploadFields.entrySet()) { - form.add(entry.getKey(), entry.getValue()); + try (HttpClient client = HttpClient.newHttpClient()) { + HttpRequest.Builder signRequestBuilder = HttpRequest.newBuilder() + .uri(URI.create("https://paste.enginehub.org/signed_paste_v2")) + .header("x-paste-meta-from", "EngineHub"); + + if (metadata.name != null) { + signRequestBuilder.header("x-paste-meta-name", metadata.name); + } + if (metadata.author != null) { + signRequestBuilder.header("x-paste-meta-author", metadata.author); + } + if (metadata.extension != null) { + signRequestBuilder.header("x-paste-meta-extension", metadata.extension); + } + + HttpResponse signResponse = client.send(signRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()); + + if (signResponse.statusCode() != 200) { + throw new IOException("Failed to initiate paste upload: " + signResponse.statusCode() + " " + signResponse.body()); + } + + SignedPasteResponse response = GSON.fromJson( + signResponse.body(), + TypeToken.get(SignedPasteResponse.class).getType() + ); + + HttpRequest.Builder uploadRequestBuilder = HttpRequest.newBuilder() + .uri(URI.create(response.uploadUrl)) + .method("PUT", HttpRequest.BodyPublishers.ofString(content)); + + for (Map.Entry entry : response.headers.entrySet()) { + uploadRequestBuilder.header(entry.getKey(), entry.getValue()); + } + + // If this succeeds, it will not return any data aside from a 204 status. + HttpResponse uploadResponse = client.send(uploadRequestBuilder.build(), HttpResponse.BodyHandlers.ofString()); + + if (uploadResponse.statusCode() != 200 && uploadResponse.statusCode() != 204) { + throw new IOException("Failed to upload paste: " + uploadResponse.statusCode() + " " + uploadResponse.body()); + } + + return URI.create(response.viewUrl).toURL(); } - form.add("file", content); - - URL url = HttpRequest.url(response.uploadUrl); - // If this succeeds, it will not return any data aside from a 204 status. - HttpRequest.post(url) - .bodyMultipartForm(form) - .execute() - .expectResponseCode(200, 204); - - return URI.create(response.viewUrl).toURL(); } - } private static final class SignedPasteResponse { - String viewUrl; String uploadUrl; - Map uploadFields; - + Map headers; } - } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/AbstractWorld.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/AbstractWorld.java index 9c41ea97c9..51f5f97339 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/AbstractWorld.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/AbstractWorld.java @@ -48,6 +48,7 @@ */ public abstract class AbstractWorld implements World { + @Deprecated private final PriorityQueue effectQueue = new PriorityQueue<>(); private int taskId = -1; @@ -102,6 +103,7 @@ public void fixAfterFastMode(Iterable chunks) { public void fixLighting(Iterable chunks) { } + @Deprecated @Override public boolean playEffect(Vector3 position, int type, int data) { return false; @@ -114,6 +116,7 @@ public boolean playBlockBreakEffect(Vector3 position, BlockType type) { } //FAWE end + @Deprecated @Override public boolean queueBlockBreakEffect(Platform server, BlockVector3 position, BlockType blockType, double priority) { if (taskId == -1) { @@ -180,6 +183,7 @@ public void setWeather(WeatherType weatherType) { public void setWeather(WeatherType weatherType, long duration) { } + @Deprecated private class QueuedEffect implements Comparable { private final Vector3 position; @@ -192,6 +196,7 @@ private QueuedEffect(Vector3 position, BlockType blockType, double priority) { this.priority = priority; } + @Deprecated //FAWE start - allow block break effect of non-legacy blocks public void play() { playBlockBreakEffect(position, blockType); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/world/World.java b/worldedit-core/src/main/java/com/sk89q/worldedit/world/World.java index 2430e705f8..5b2edb28d0 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/world/World.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/world/World.java @@ -391,7 +391,9 @@ default boolean generateFeature(ConfiguredFeatureType type, EditSession editSess * @param type the effect type * @param data the effect data * @return true if the effect was played + * @deprecated This is deprecated without replacement. */ + @Deprecated boolean playEffect(Vector3 position, int type, int data); //FAWE start - allow block break effect of non-legacy blocks @@ -413,7 +415,9 @@ default boolean generateFeature(ConfiguredFeatureType type, EditSession editSess * @param blockType the block type * @param priority the priority * @return true if the effect was played + * @deprecated This is deprecated without replacement. */ + @Deprecated boolean queueBlockBreakEffect(Platform server, BlockVector3 position, BlockType blockType, double priority); /**