mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-06-17 14:21:33 +00:00
- Lib update fixes all the iris titles/actionbars
- Iris .schem Converter
This commit is contained in:
+2
-2
@@ -37,7 +37,7 @@ registerCustomOutputTask('Coco', 'D://mcsm/plugins')
|
|||||||
registerCustomOutputTask('Strange', 'D://Servers/1.17 Test Server/plugins')
|
registerCustomOutputTask('Strange', 'D://Servers/1.17 Test Server/plugins')
|
||||||
registerCustomOutputTask('Vatuu', 'D://Minecraft/Servers/1.19.4/plugins')
|
registerCustomOutputTask('Vatuu', 'D://Minecraft/Servers/1.19.4/plugins')
|
||||||
registerCustomOutputTask('CrazyDev22', 'C://Users/Julian/Desktop/server/plugins')
|
registerCustomOutputTask('CrazyDev22', 'C://Users/Julian/Desktop/server/plugins')
|
||||||
registerCustomOutputTask('Pixel', 'C://Users/repix/Iris Dimension Engine/1.20.1 - Iris Coding/plugins')
|
registerCustomOutputTask('Pixel', 'C://Users/repix/Iris Dimension Engine/Iris Development/plugins')
|
||||||
// ========================== UNIX ==============================
|
// ========================== UNIX ==============================
|
||||||
registerCustomOutputTaskUnix('CyberpwnLT', '/Users/danielmills/development/server/plugins')
|
registerCustomOutputTaskUnix('CyberpwnLT', '/Users/danielmills/development/server/plugins')
|
||||||
registerCustomOutputTaskUnix('PsychoLT', '/Volumes/PRO-G40/Minecraft/MinecraftDevelopment/Server/plugins')
|
registerCustomOutputTaskUnix('PsychoLT', '/Volumes/PRO-G40/Minecraft/MinecraftDevelopment/Server/plugins')
|
||||||
@@ -235,7 +235,7 @@ allprojects {
|
|||||||
implementation 'com.dfsek:Paralithic:0.4.0'
|
implementation 'com.dfsek:Paralithic:0.4.0'
|
||||||
implementation 'io.papermc:paperlib:1.0.5'
|
implementation 'io.papermc:paperlib:1.0.5'
|
||||||
implementation "net.kyori:adventure-text-minimessage:4.13.1"
|
implementation "net.kyori:adventure-text-minimessage:4.13.1"
|
||||||
implementation 'net.kyori:adventure-platform-bukkit:4.3.0'
|
implementation 'net.kyori:adventure-platform-bukkit:4.3.2'
|
||||||
implementation 'net.kyori:adventure-api:4.13.1'
|
implementation 'net.kyori:adventure-api:4.13.1'
|
||||||
compileOnly 'io.lumine:Mythic-Dist:5.2.1'
|
compileOnly 'io.lumine:Mythic-Dist:5.2.1'
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import com.volmit.iris.core.loader.IrisData;
|
|||||||
import com.volmit.iris.core.project.IrisProject;
|
import com.volmit.iris.core.project.IrisProject;
|
||||||
import com.volmit.iris.core.service.ConversionSVC;
|
import com.volmit.iris.core.service.ConversionSVC;
|
||||||
import com.volmit.iris.core.service.StudioSVC;
|
import com.volmit.iris.core.service.StudioSVC;
|
||||||
|
import com.volmit.iris.core.tools.IrisConverter;
|
||||||
import com.volmit.iris.core.tools.IrisToolbelt;
|
import com.volmit.iris.core.tools.IrisToolbelt;
|
||||||
import com.volmit.iris.engine.framework.Engine;
|
import com.volmit.iris.engine.framework.Engine;
|
||||||
import com.volmit.iris.engine.object.*;
|
import com.volmit.iris.engine.object.*;
|
||||||
@@ -228,7 +229,10 @@ public class CommandStudio implements DecreeExecutor {
|
|||||||
|
|
||||||
@Decree(description = "Convert objects in the \"convert\" folder")
|
@Decree(description = "Convert objects in the \"convert\" folder")
|
||||||
public void convert() {
|
public void convert() {
|
||||||
Iris.service(ConversionSVC.class).check(sender());
|
//Iris.service(ConversionSVC.class).check(sender());
|
||||||
|
IrisConverter.convertSchematics(sender());
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,126 @@
|
|||||||
|
package com.volmit.iris.core.tools;
|
||||||
|
|
||||||
|
import com.volmit.iris.Iris;
|
||||||
|
import com.volmit.iris.engine.object.*;
|
||||||
|
import com.volmit.iris.util.collection.KList;
|
||||||
|
import com.volmit.iris.util.format.C;
|
||||||
|
import com.volmit.iris.util.format.Form;
|
||||||
|
import com.volmit.iris.util.math.M;
|
||||||
|
import com.volmit.iris.util.math.RollingSequence;
|
||||||
|
import com.volmit.iris.util.nbt.io.NBTUtil;
|
||||||
|
import com.volmit.iris.util.nbt.io.NamedTag;
|
||||||
|
import com.volmit.iris.util.nbt.tag.*;
|
||||||
|
import com.volmit.iris.util.plugin.VolmitPlugin;
|
||||||
|
import com.volmit.iris.util.plugin.VolmitSender;
|
||||||
|
import com.volmit.iris.util.scheduling.J;
|
||||||
|
import com.volmit.iris.util.scheduling.Looper;
|
||||||
|
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
|
||||||
|
import javassist.bytecode.ByteArray;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.data.BlockData;
|
||||||
|
import org.bukkit.util.BlockVector;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FilenameFilter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
|
public class IrisConverter {
|
||||||
|
public static void convertSchematics(VolmitSender sender) {
|
||||||
|
Map<Integer, BlockData> blockmap = new HashMap<>();
|
||||||
|
File folder = Iris.instance.getDataFolder("convert");
|
||||||
|
|
||||||
|
FilenameFilter filter = (dir, name) -> name.endsWith(".schem");
|
||||||
|
File[] fileList = folder.listFiles(filter);
|
||||||
|
for (File schem : fileList) {
|
||||||
|
try {
|
||||||
|
ExecutorService executorService = Executors.newFixedThreadPool(1);
|
||||||
|
executorService.submit(() -> {
|
||||||
|
PrecisionStopwatch p = new PrecisionStopwatch();
|
||||||
|
boolean largeObject = false;
|
||||||
|
NamedTag tag = null;
|
||||||
|
try {
|
||||||
|
tag = NBTUtil.read(schem);
|
||||||
|
} catch (IOException e) {
|
||||||
|
Iris.info(C.RED + "Failed to read: " + schem.getName());
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
CompoundTag compound = (CompoundTag) tag.getTag();
|
||||||
|
|
||||||
|
if (compound.containsKey("Palette") && compound.containsKey("Width") && compound.containsKey("Height") && compound.containsKey("Length")) {
|
||||||
|
int objW = ((ShortTag) compound.get("Width")).getValue();
|
||||||
|
int objH = ((ShortTag) compound.get("Height")).getValue();
|
||||||
|
int objD = ((ShortTag) compound.get("Length")).getValue();
|
||||||
|
IrisObject object = new IrisObject(objW, objH, objD);
|
||||||
|
int mv = objW * objH * objD;
|
||||||
|
AtomicInteger v = new AtomicInteger(0);
|
||||||
|
if (mv > 100000) {
|
||||||
|
largeObject = true;
|
||||||
|
Iris.info(C.GRAY + "Converting.. "+ schem.getName() + " -> " + schem.getName().replace(".schem", ".iob"));
|
||||||
|
Iris.info(C.GRAY + "- It may take a while");
|
||||||
|
if (sender.isPlayer()) {
|
||||||
|
J.a(() -> {
|
||||||
|
while (v.get() != mv) {
|
||||||
|
double pr = ((double) v.get() / (double ) mv);
|
||||||
|
sender.sendProgress(pr, "Converting");
|
||||||
|
J.sleep(16);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CompoundTag paletteTag = (CompoundTag) compound.get("Palette");
|
||||||
|
for (Map.Entry<String, Tag<?>> entry : paletteTag.getValue().entrySet()) {
|
||||||
|
String blockName = entry.getKey();
|
||||||
|
BlockData bd = Bukkit.createBlockData(blockName);
|
||||||
|
Tag<?> blockTag = entry.getValue();
|
||||||
|
int blockId = ((IntTag) blockTag).getValue();
|
||||||
|
blockmap.put(blockId, bd);
|
||||||
|
}
|
||||||
|
|
||||||
|
ByteArrayTag byteArray = (ByteArrayTag) compound.get("BlockData");
|
||||||
|
byte[] l = byteArray.getValue();
|
||||||
|
|
||||||
|
for (int h = 0; h < objH; h++) {
|
||||||
|
for (int d = 0; d < objD; d++) {
|
||||||
|
for (int w = 0; w < objW; w++) {
|
||||||
|
BlockData db = blockmap.get((int) l[v.get()]);
|
||||||
|
object.setUnsigned(w, h, d, db);
|
||||||
|
v.getAndAdd(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
object.write(new File(folder, schem.getName().replace(".schem", ".iob")));
|
||||||
|
} catch (IOException e) {
|
||||||
|
Iris.info(C.RED + "Failed to save: " + schem.getName());
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
if (sender.isPlayer()) {
|
||||||
|
|
||||||
|
}
|
||||||
|
if (largeObject) {
|
||||||
|
Iris.info(C.GRAY + "Converted "+ schem.getName() + " -> " + schem.getName().replace(".schem", ".iob") + " in " + Form.duration(p.getMillis()));
|
||||||
|
} else {
|
||||||
|
Iris.info(C.GRAY + "Converted " + schem.getName() + " -> " + schem.getName().replace(".schem", ".iob"));
|
||||||
|
}
|
||||||
|
// schem.delete();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (Exception e) {
|
||||||
|
Iris.info(C.RED + "Failed to convert: " + schem.getName());
|
||||||
|
e.printStackTrace();
|
||||||
|
Iris.reportError(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user