From 45a732555f1defc87adc809758b207b00d31bd18 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sat, 5 Feb 2022 13:09:45 +0100 Subject: [PATCH] 1.18 schematic loading support --- SpigotCore_18/build.gradle | 3 ++ .../de/steamwar/core/WorldEditWrapper18.java | 46 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 SpigotCore_18/src/de/steamwar/core/WorldEditWrapper18.java diff --git a/SpigotCore_18/build.gradle b/SpigotCore_18/build.gradle index c6185e9..5181c28 100644 --- a/SpigotCore_18/build.gradle +++ b/SpigotCore_18/build.gradle @@ -44,6 +44,9 @@ sourceSets { dependencies { implementation project(":SpigotCore_Main") + implementation project(":SpigotCore_14") + + compileOnly files("${project.rootDir}/lib/WorldEdit-1.15.jar") compileOnly 'org.spigotmc:spigot-api:1.18-R0.1-SNAPSHOT' compileOnly files("${project.rootDir}/lib/Spigot-1.18.jar") diff --git a/SpigotCore_18/src/de/steamwar/core/WorldEditWrapper18.java b/SpigotCore_18/src/de/steamwar/core/WorldEditWrapper18.java new file mode 100644 index 0000000..a3a12fc --- /dev/null +++ b/SpigotCore_18/src/de/steamwar/core/WorldEditWrapper18.java @@ -0,0 +1,46 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2022 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.core; + +import com.sk89q.jnbt.NBTInputStream; +import com.sk89q.worldedit.extent.clipboard.Clipboard; +import com.sk89q.worldedit.extent.clipboard.io.MCEditSchematicReader; +import com.sk89q.worldedit.extent.clipboard.io.SpongeSchematicReader; +import de.steamwar.sql.NoClipboardException; + +import java.io.IOException; +import java.io.InputStream; + +public class WorldEditWrapper18 extends WorldEditWrapper14 { + + @Override + public Clipboard getClipboard(InputStream is, boolean schemFormat) throws IOException { + //Use FAWE reader due to FAWE capability of reading corrupt FAWE schems + try { + if(schemFormat){ + return new SpongeSchematicReader(new NBTInputStream(is)).read(); + }else{ + return new MCEditSchematicReader(new NBTInputStream(is)).read(); + } + } catch (NullPointerException e) { + throw new NoClipboardException(); + } + } +}