From 656d4360282446060ef0cf23d4a2840d6c795470 Mon Sep 17 00:00:00 2001 From: CocoTheOwner Date: Fri, 11 Jun 2021 09:39:10 +0200 Subject: [PATCH 1/6] Update ProjectManager.java --- .../volmit/iris/manager/ProjectManager.java | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/volmit/iris/manager/ProjectManager.java b/src/main/java/com/volmit/iris/manager/ProjectManager.java index 3f03329e3..4b7c84c6f 100644 --- a/src/main/java/com/volmit/iris/manager/ProjectManager.java +++ b/src/main/java/com/volmit/iris/manager/ProjectManager.java @@ -123,7 +123,7 @@ public class ProjectManager catch(IOException e) { - + } } @@ -232,15 +232,28 @@ public class ProjectManager } catch (Throwable e){ e.printStackTrace(); sender.sendMessage( - "Issue when unpacking. Please check/do the following:" + - "\n1. Do you have a functioning internet connection?" + - "\n2. Did the download corrupt?" + - "\n3. Try deleting the */plugins/iris/packs folder and re-download." + - "\n4. Download the pack from the GitHub repo: https://github.com/IrisDimensions/overworld" + - "\n5. Contact support (if all other options do not help)" + "Issue when unpacking. Please check/do the following:" + + "\n1. Do you have a functioning internet connection?" + + "\n2. Did the download corrupt?" + + "\n3. Try deleting the */plugins/iris/packs folder and re-download." + + "\n4. Download the pack from the GitHub repo: https://github.com/IrisDimensions/overworld" + + "\n5. Contact support (if all other options do not help)" ); } - File dir = work.listFiles().length == 1 && work.listFiles()[0].isDirectory() ? work.listFiles()[0] : null; + File dir = null; + File[] zipFiles = work.listFiles(); + + if (zipFiles == null) { + sender.sendMessage("No files were extracted from the zip file."); + return; + } + + try { + dir = zipFiles.length == 1 && zipFiles[0].isDirectory() ? zipFiles[0] : null; + } catch (NullPointerException e) { + sender.sendMessage("Error when finding home directory. Are there any non-text characters in the file name?"); + return; + } if(dir == null) { @@ -256,7 +269,11 @@ public class ProjectManager return; } - if(dimensions.listFiles().length != 1) + if(dimensions.listFiles() == null){ + sender.sendMessage("No dimension file found in the extracted zip file."); + sender.sendMessage("Check it is there on GitHub and report this to staff!"); + } + else if (dimensions.listFiles().length != 1) { sender.sendMessage("Dimensions folder must have 1 file in it"); return; @@ -515,4 +532,4 @@ public class ProjectManager activeProject.updateWorkspace(); } } -} +} \ No newline at end of file From 491cdc5fef78aa7ee97b185caf49d88adf8ce324 Mon Sep 17 00:00:00 2001 From: CocoTheOwner Date: Fri, 11 Jun 2021 09:54:51 +0200 Subject: [PATCH 2/6] Update EngineParallaxManager.java --- .../volmit/iris/scaffold/engine/EngineParallaxManager.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java b/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java index e341433e9..41b2a7e20 100644 --- a/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java +++ b/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java @@ -526,6 +526,10 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer { for(int i = 0; i < objectPlacement.getDensity(); i++) { IrisObject v = objectPlacement.getObject(getComplex(), rng); + if (v == null){ + Iris.error("ParallaxManager tried placing an object but found none existed, where one was expected."); + return; + } int xx = rng.i(x, x+16); int zz = rng.i(z, z+16); int id = rng.i(0, Integer.MAX_VALUE); From b565cf4be1c0b45e1f18f165d7b6df164f12914f Mon Sep 17 00:00:00 2001 From: CocoTheOwner Date: Sat, 12 Jun 2021 12:40:12 +0200 Subject: [PATCH 3/6] ok, remove debug --- build.gradle | 4 ++-- .../volmit/iris/scaffold/engine/EngineParallaxManager.java | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 05e4ef915..593b8e589 100644 --- a/build.gradle +++ b/build.gradle @@ -5,13 +5,13 @@ plugins { } group 'com.volmit.iris' -version '1.3.9' +version '1.3.12' def apiVersion = '1.14' def name = 'Iris' def main = 'com.volmit.iris.Iris' // ============================================================== -registerCustomOutputTask('Cyberpwn', 'C://Users/cyberpwn/Documents/development/server/plugins'); +registerCustomOutputTask('Cyberpwn', 'C://Users/sjoer/documents/VolmitSoftware/server/plugins'); // ============================================================== configurations { diff --git a/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java b/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java index 41b2a7e20..0b9c2728a 100644 --- a/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java +++ b/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java @@ -527,7 +527,6 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer { { IrisObject v = objectPlacement.getObject(getComplex(), rng); if (v == null){ - Iris.error("ParallaxManager tried placing an object but found none existed, where one was expected."); return; } int xx = rng.i(x, x+16); From 991f2412093fce5c0e5102b1fc821b12b3f91c44 Mon Sep 17 00:00:00 2001 From: CocoTheOwner Date: Sat, 12 Jun 2021 12:40:27 +0200 Subject: [PATCH 4/6] Revert "ok, remove debug" This reverts commit b565cf4be1c0b45e1f18f165d7b6df164f12914f. --- build.gradle | 4 ++-- .../volmit/iris/scaffold/engine/EngineParallaxManager.java | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 593b8e589..05e4ef915 100644 --- a/build.gradle +++ b/build.gradle @@ -5,13 +5,13 @@ plugins { } group 'com.volmit.iris' -version '1.3.12' +version '1.3.9' def apiVersion = '1.14' def name = 'Iris' def main = 'com.volmit.iris.Iris' // ============================================================== -registerCustomOutputTask('Cyberpwn', 'C://Users/sjoer/documents/VolmitSoftware/server/plugins'); +registerCustomOutputTask('Cyberpwn', 'C://Users/cyberpwn/Documents/development/server/plugins'); // ============================================================== configurations { diff --git a/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java b/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java index 0b9c2728a..41b2a7e20 100644 --- a/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java +++ b/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java @@ -527,6 +527,7 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer { { IrisObject v = objectPlacement.getObject(getComplex(), rng); if (v == null){ + Iris.error("ParallaxManager tried placing an object but found none existed, where one was expected."); return; } int xx = rng.i(x, x+16); From c1831e58f5038c571c984d37fa2355b6d65e4202 Mon Sep 17 00:00:00 2001 From: CocoTheOwner Date: Sat, 12 Jun 2021 12:40:56 +0200 Subject: [PATCH 5/6] oops, removed again, without gradle --- .../com/volmit/iris/scaffold/engine/EngineParallaxManager.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java b/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java index 41b2a7e20..0b9c2728a 100644 --- a/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java +++ b/src/main/java/com/volmit/iris/scaffold/engine/EngineParallaxManager.java @@ -527,7 +527,6 @@ public interface EngineParallaxManager extends DataProvider, IObjectPlacer { { IrisObject v = objectPlacement.getObject(getComplex(), rng); if (v == null){ - Iris.error("ParallaxManager tried placing an object but found none existed, where one was expected."); return; } int xx = rng.i(x, x+16); From 9b4384d3e6fd92f91a9e18d0ba4e7c55962d65b1 Mon Sep 17 00:00:00 2001 From: StrangeOne101 Date: Thu, 17 Jun 2021 17:59:06 +1200 Subject: [PATCH 6/6] Object NBT Support Additions - Added support for banner NBT to be saved to objects - Fixed spawners not saving their spawn type to objects - Removed pointless IDs from the TileEntity registry system --- .../volmit/iris/object/tile/TileBanner.java | 116 ++++++++++++++++++ .../com/volmit/iris/object/tile/TileData.java | 3 +- .../com/volmit/iris/object/tile/TileSign.java | 2 +- .../volmit/iris/object/tile/TileSpawner.java | 6 +- 4 files changed, 122 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/volmit/iris/object/tile/TileBanner.java diff --git a/src/main/java/com/volmit/iris/object/tile/TileBanner.java b/src/main/java/com/volmit/iris/object/tile/TileBanner.java new file mode 100644 index 000000000..4af500149 --- /dev/null +++ b/src/main/java/com/volmit/iris/object/tile/TileBanner.java @@ -0,0 +1,116 @@ +package com.volmit.iris.object.tile; + +import lombok.Data; +import net.querz.nbt.tag.CompoundTag; +import net.querz.nbt.tag.ListTag; +import org.bukkit.DyeColor; +import org.bukkit.Material; +import org.bukkit.block.Banner; +import org.bukkit.block.banner.Pattern; +import org.bukkit.block.banner.PatternType; +import org.bukkit.block.data.BlockData; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +@Data +public class TileBanner implements TileData { + public static final int id = 2; + + private List patterns = new ArrayList(); + private DyeColor baseColor; + + @Override + public String getTileId() { + return "minecraft:banner"; + } + + @Override + public boolean isApplicable(BlockData data) { + return isBanner(data.getMaterial()); + } + + @Override + public void toBukkit(Banner banner) { + banner.setPatterns(patterns); + banner.setBaseColor(baseColor); + } + + @Override + public void fromBukkit(Banner banner) { + this.patterns = banner.getPatterns(); + this.baseColor = banner.getBaseColor(); + } + + @Override + public TileBanner clone() { + TileBanner ts = new TileBanner(); + ts.setBaseColor(getBaseColor()); + ts.setPatterns(getPatterns()); + return ts; + } + + @Override + public void toBinary(DataOutputStream out) throws IOException { + out.writeShort(id); + out.writeByte(baseColor.ordinal()); + out.writeByte(patterns.size()); + for (Pattern p : patterns) { + out.writeByte(p.getColor().ordinal()); + out.writeByte(p.getPattern().ordinal()); + } + } + + @Override + public void fromBinary(DataInputStream in) throws IOException { + baseColor = DyeColor.values()[in.readByte()]; + int listSize = in.readByte(); + patterns = new ArrayList<>(); + + for (int i = 0; i < listSize; i++) { + DyeColor color = DyeColor.values()[in.readByte()]; + PatternType type = PatternType.values()[in.readByte()]; + patterns.add(new Pattern(color, type)); + } + } + + @Override + public void toNBT(CompoundTag tag) { + ListTag listTag = (ListTag) ListTag.createUnchecked(CompoundTag.class); + for (Pattern p : patterns) { + CompoundTag pattern = new CompoundTag(); + pattern.putString("Pattern", p.getPattern().getIdentifier()); + pattern.putByte("Color", p.getColor().getDyeData()); + listTag.add(pattern); + } + tag.put("Patterns", listTag); + } + + public boolean isBanner(Material material) { + switch (material) { + + case RED_BANNER: case RED_WALL_BANNER: + case ORANGE_BANNER: case ORANGE_WALL_BANNER: + case YELLOW_BANNER: case YELLOW_WALL_BANNER: + case LIME_BANNER: case LIME_WALL_BANNER: + case GREEN_BANNER: case GREEN_WALL_BANNER: + case CYAN_BANNER: case CYAN_WALL_BANNER: + case LIGHT_BLUE_BANNER: case LIGHT_BLUE_WALL_BANNER: + case BLUE_BANNER: case BLUE_WALL_BANNER: + case PURPLE_BANNER: case PURPLE_WALL_BANNER: + case MAGENTA_BANNER: case MAGENTA_WALL_BANNER: + case PINK_BANNER: case PINK_WALL_BANNER: + case WHITE_BANNER: case WHITE_WALL_BANNER: + case LIGHT_GRAY_BANNER: case LIGHT_GRAY_WALL_BANNER: + case GRAY_BANNER: case GRAY_WALL_BANNER: + case BLACK_BANNER: case BLACK_WALL_BANNER: + case BROWN_BANNER: case BROWN_WALL_BANNER: + return true; + default: + return false; + } + } +} diff --git a/src/main/java/com/volmit/iris/object/tile/TileData.java b/src/main/java/com/volmit/iris/object/tile/TileData.java index 33a99f801..193ffb257 100644 --- a/src/main/java/com/volmit/iris/object/tile/TileData.java +++ b/src/main/java/com/volmit/iris/object/tile/TileData.java @@ -12,7 +12,7 @@ import java.io.DataOutputStream; import java.io.IOException; public interface TileData extends Cloneable { - public static int id = 0; + public static final KList> registry = setup(); static KList> setup() { @@ -20,6 +20,7 @@ public interface TileData extends Cloneable { registry.add(new TileSign()); registry.add(new TileSpawner()); + registry.add(new TileBanner()); return registry; } diff --git a/src/main/java/com/volmit/iris/object/tile/TileSign.java b/src/main/java/com/volmit/iris/object/tile/TileSign.java index df803a955..b2e014c0a 100644 --- a/src/main/java/com/volmit/iris/object/tile/TileSign.java +++ b/src/main/java/com/volmit/iris/object/tile/TileSign.java @@ -13,7 +13,7 @@ import java.io.IOException; @Data public class TileSign implements TileData { - public static int id = TileData.id; + public static final int id = 0; private String line1; private String line2; private String line3; diff --git a/src/main/java/com/volmit/iris/object/tile/TileSpawner.java b/src/main/java/com/volmit/iris/object/tile/TileSpawner.java index 74a62ed03..57fbb4905 100644 --- a/src/main/java/com/volmit/iris/object/tile/TileSpawner.java +++ b/src/main/java/com/volmit/iris/object/tile/TileSpawner.java @@ -3,9 +3,9 @@ package com.volmit.iris.object.tile; import lombok.Data; import net.querz.nbt.tag.CompoundTag; import net.querz.nbt.tag.ListTag; +import org.bukkit.Material; import org.bukkit.block.CreatureSpawner; import org.bukkit.block.data.BlockData; -import org.bukkit.block.data.type.WallSign; import org.bukkit.entity.EntityType; import java.io.DataInputStream; @@ -14,7 +14,7 @@ import java.io.IOException; @Data public class TileSpawner implements TileData { - public static int id = TileData.id; + public static final int id = 1; private EntityType entityType; @Override @@ -24,7 +24,7 @@ public class TileSpawner implements TileData { @Override public boolean isApplicable(BlockData data) { - return data instanceof org.bukkit.block.data.type.Sign || data instanceof WallSign; + return data.getMaterial() == Material.SPAWNER; } @Override