From e9d278d6c20d16602de158de25c249086d612f39 Mon Sep 17 00:00:00 2001 From: KyGuy2002 Date: Mon, 18 Apr 2022 21:18:03 -0700 Subject: [PATCH 1/9] Added fake block data --- dependency-reduced-pom.xml | 12 ++- pom.xml | 14 +++- .../palace/show/actions/BlockAction.java | 2 - .../palace/show/actions/FakeBlockAction.java | 19 ++--- .../palace/show/actions/FountainAction.java | 2 - .../commands/showgen/GenerateCommand.java | 3 +- .../palace/show/generator/ShowGenerator.java | 59 ++++++++++++++- .../palace/show/handlers/BlockData.java | 15 ---- .../palace/show/utils/BlockDataType.java | 9 +++ .../network/palace/show/utils/ShowUtil.java | 73 ++++++++++++++----- 10 files changed, 150 insertions(+), 58 deletions(-) delete mode 100644 src/main/java/network/palace/show/handlers/BlockData.java create mode 100644 src/main/java/network/palace/show/utils/BlockDataType.java diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index 45118e2..a15bbcc 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -82,7 +82,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.22 compile @@ -96,11 +96,17 @@ worldedit-bukkit 7.2.0-SNAPSHOT provided + + + bstats-bukkit + org.bstats + + io.netty netty-buffer - 4.1.51.Final + 4.1.75.Final compile @@ -112,7 +118,7 @@ com.craftmend.openaudiomc OpenAudioMc - 6.5.4 + 6.6.3 provided diff --git a/pom.xml b/pom.xml index 419677c..3497b65 100644 --- a/pom.xml +++ b/pom.xml @@ -32,7 +32,7 @@ org.projectlombok lombok - 1.18.20 + 1.18.22 jar @@ -45,6 +45,12 @@ worldedit-bukkit 7.2.0-SNAPSHOT provided + + + org.bstats + bstats-bukkit + + com.goebl @@ -61,7 +67,7 @@ io.netty netty-buffer - 4.1.51.Final + 4.1.75.Final org.spigotmc @@ -71,13 +77,13 @@ com.craftmend.openaudiomc OpenAudioMc - 6.5.4 + 6.6.3 provided org.bstats bstats-bukkit - 2.2.1 + 3.0.0 compile diff --git a/src/main/java/network/palace/show/actions/BlockAction.java b/src/main/java/network/palace/show/actions/BlockAction.java index a62def0..722f9c7 100644 --- a/src/main/java/network/palace/show/actions/BlockAction.java +++ b/src/main/java/network/palace/show/actions/BlockAction.java @@ -2,8 +2,6 @@ import network.palace.show.Show; import network.palace.show.exceptions.ShowParseException; -import network.palace.show.handlers.BlockData; -import network.palace.show.utils.ShowUtil; import network.palace.show.utils.WorldUtil; import org.bukkit.Location; import org.bukkit.Material; diff --git a/src/main/java/network/palace/show/actions/FakeBlockAction.java b/src/main/java/network/palace/show/actions/FakeBlockAction.java index 107b027..5443d25 100644 --- a/src/main/java/network/palace/show/actions/FakeBlockAction.java +++ b/src/main/java/network/palace/show/actions/FakeBlockAction.java @@ -7,7 +7,6 @@ import network.palace.show.packets.server.block.WrapperPlayServerBlockChange; import network.palace.show.Show; import network.palace.show.exceptions.ShowParseException; -import network.palace.show.handlers.BlockData; import network.palace.show.utils.MiscUtil; import network.palace.show.utils.ShowUtil; import network.palace.show.utils.WorldUtil; @@ -15,6 +14,7 @@ import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.block.data.BlockData; import org.bukkit.entity.Player; /** @@ -25,30 +25,27 @@ @SuppressWarnings("deprecation") public class FakeBlockAction extends ShowAction { private Location loc; - private Material mat; + private BlockData data; public FakeBlockAction(Show show, long time) { super(show, time); } - public FakeBlockAction(Show show, long time, Location loc, Material mat) { + public FakeBlockAction(Show show, long time, Location loc, BlockData data) { super(show, time); this.loc = loc; - this.mat = mat; + this.data = data; } @Override public void play(Player[] nearPlayers) { try { - WrapperPlayServerBlockChange p = new WrapperPlayServerBlockChange(); - p.setLocation(new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())); - p.setBlockData(WrappedBlockData.createData(mat)); for (Player tp : nearPlayers) { - if (tp != null) MiscUtil.sendPacket(p, tp); + if (tp != null) tp.sendBlockChange(loc, data); } } catch (Exception e) { Bukkit.getLogger().severe("FakeBlockAction -" + ChatColor.RED + "Error sending FakeBlockAction for type (" + - mat.toString() + ") at location " + loc.getX() + "," + loc.getY() + "," + loc.getZ() + " at time " + + data + ") at location " + loc.getX() + "," + loc.getY() + "," + loc.getZ() + " at time " + time + " for show " + show.getName()); e.printStackTrace(); } @@ -62,7 +59,7 @@ public ShowAction load(String line, String... args) throws ShowParseException { } try { this.loc = loc; - this.mat = Material.valueOf(args[2].toUpperCase()); + this.data = ShowUtil.getBlockData(line); } catch (IllegalArgumentException e) { throw new ShowParseException(e.getMessage()); } @@ -71,6 +68,6 @@ public ShowAction load(String line, String... args) throws ShowParseException { @Override protected ShowAction copy(Show show, long time) throws ShowParseException { - return new FakeBlockAction(show, time, loc, mat); + return new FakeBlockAction(show, time, loc, data); } } \ No newline at end of file diff --git a/src/main/java/network/palace/show/actions/FountainAction.java b/src/main/java/network/palace/show/actions/FountainAction.java index 80555b5..95db3bd 100644 --- a/src/main/java/network/palace/show/actions/FountainAction.java +++ b/src/main/java/network/palace/show/actions/FountainAction.java @@ -3,9 +3,7 @@ import network.palace.show.Show; import network.palace.show.ShowPlugin; import network.palace.show.exceptions.ShowParseException; -import network.palace.show.handlers.BlockData; import network.palace.show.handlers.Fountain; -import network.palace.show.utils.ShowUtil; import network.palace.show.utils.WorldUtil; import org.bukkit.Location; import org.bukkit.Material; diff --git a/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java b/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java index a429c00..2ef02ef 100644 --- a/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java +++ b/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java @@ -118,9 +118,8 @@ public void handle(CommandSender sender, String[] args) { continue; } Material material = newBlock.getType(); - byte data = newBlock.getData(); FakeBlockAction act = new FakeBlockAction(null, (long) (localTime * 1000)); - act.setMat(material); + act.setData(newBlock.getBlockData()); act.setLoc(new Location(corner.getWorld(), corner.getBlockX() + x, corner.getBlockY() + y, corner.getBlockZ() + z)); actions.add(act); } diff --git a/src/main/java/network/palace/show/generator/ShowGenerator.java b/src/main/java/network/palace/show/generator/ShowGenerator.java index 30fcf92..2269871 100644 --- a/src/main/java/network/palace/show/generator/ShowGenerator.java +++ b/src/main/java/network/palace/show/generator/ShowGenerator.java @@ -8,6 +8,10 @@ import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.block.BlockFace; +import org.bukkit.block.data.Bisected; +import org.bukkit.block.data.BlockData; +import org.bukkit.block.data.type.*; import org.json.JSONObject; import java.util.HashMap; @@ -54,11 +58,11 @@ public String postGist(List actions, String name) throws Except for (FakeBlockAction action : actions) { Location loc = action.getLoc(); double time = ((int) ((action.getTime() / 1000.0) * 10)) / 10.0; - Material mat = action.getMat(); + Material mat = action.getData().getMaterial(); int x = loc.getBlockX(); int y = loc.getBlockY(); int z = loc.getBlockZ(); - String actionString = time + "\u0009" + "FakeBlock" + "\u0009" + mat.toString() + "\u0009" + x + "," + y + "," + z; + String actionString = time + "\u0009" + "FakeBlock" + "\u0009" + mat + "\u0009" + x + "," + y + "," + z + "\u0009" + getBlockDataString(action.getData()); content.append(actionString).append("\n"); } @@ -80,4 +84,55 @@ public String postGist(List actions, String name) throws Except return response.getString("html_url"); } + + /* + Whole Line: + 0 1 2 3 4 + TIME ACTION MATERIAL COORDS BLOCK_DATA + 3.0 FakeBlock AIR 14,5,1 STAIRS:DATA:DATA + . + . + Block Data: + 0 1 2 3 4 + NONE + STAIRS : HALF : FACING : SHAPE -> STAIRS:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:HALF/... + FENCE : FACE -> FENCE:NORTH/EAST/SOUTH/WEST + GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST + TRAPDOOR : HALF : FACING : OPEN -> TRAPDOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE + DOOR : HALF : FACING : OPEN : HINGE -> DOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE:LEFT/RIGHT + */ + private String getBlockDataString(BlockData blockData) { + String dataString = "NONE"; + + if (blockData instanceof Stairs) { + String half = ((Stairs) blockData).getHalf().toString(); + String facing = ((Stairs) blockData).getFacing().toString(); + String shape = ((Stairs) blockData).getShape().toString(); + dataString = "STAIRS:" + half.toUpperCase() + ":" + facing.toUpperCase() + ":" + shape.toUpperCase(); + + } else if (blockData instanceof Fence) { + String face = ((Fence) blockData).getFaces().toString(); // TODO faces may not be right + dataString = "FENCE:" + face.toUpperCase(); + + } else if (blockData instanceof GlassPane) { + String face = ((GlassPane) blockData).getFaces().toString(); // TODO faces may not be right + dataString = "GLASS_PANE:" + face.toUpperCase(); + + } else if (blockData instanceof TrapDoor) { + String half = ((TrapDoor) blockData).getHalf().toString(); + String facing = ((TrapDoor) blockData).getFacing().toString(); + String open = String.valueOf(((TrapDoor) blockData).isOpen()); + dataString = "TRAPDOOR:" + half.toUpperCase() + ":" + facing.toUpperCase() + ":" + open.toUpperCase(); + + } else if (blockData instanceof Door) { + String half = ((Door) blockData).getHalf().toString(); + String facing = ((Door) blockData).getFacing().toString(); + String open = String.valueOf(((Door) blockData).isOpen()); + String hinge = ((Door) blockData).getHinge().toString(); + dataString = "DOOR:" + half.toUpperCase() + ":" + facing.toUpperCase() + ":" + open.toUpperCase() + ":" + hinge.toUpperCase(); + + } + + return dataString; + } } diff --git a/src/main/java/network/palace/show/handlers/BlockData.java b/src/main/java/network/palace/show/handlers/BlockData.java deleted file mode 100644 index f9e184f..0000000 --- a/src/main/java/network/palace/show/handlers/BlockData.java +++ /dev/null @@ -1,15 +0,0 @@ -package network.palace.show.handlers; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * @author Marc - * @since 8/2/17 - */ -@AllArgsConstructor -@Getter -public class BlockData { - private int id; - private byte data; -} diff --git a/src/main/java/network/palace/show/utils/BlockDataType.java b/src/main/java/network/palace/show/utils/BlockDataType.java new file mode 100644 index 0000000..7fc66aa --- /dev/null +++ b/src/main/java/network/palace/show/utils/BlockDataType.java @@ -0,0 +1,9 @@ +package network.palace.show.utils; + +public enum BlockDataType { + STAIRS, + FENCE, + GLASS_PANE, + TRAPDOOR, + DOOR +} diff --git a/src/main/java/network/palace/show/utils/ShowUtil.java b/src/main/java/network/palace/show/utils/ShowUtil.java index 9ffda0c..35a59ac 100644 --- a/src/main/java/network/palace/show/utils/ShowUtil.java +++ b/src/main/java/network/palace/show/utils/ShowUtil.java @@ -3,10 +3,13 @@ import network.palace.show.Show; import network.palace.show.ShowPlugin; import network.palace.show.exceptions.ShowParseException; -import network.palace.show.handlers.BlockData; import network.palace.show.handlers.TitleType; import network.palace.show.sequence.ShowSequence; import org.bukkit.*; +import org.bukkit.block.BlockFace; +import org.bukkit.block.data.Bisected; +import org.bukkit.block.data.BlockData; +import org.bukkit.block.data.type.*; import org.bukkit.material.MaterialData; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; @@ -23,25 +26,61 @@ */ public class ShowUtil { + /* + Whole Line: + 0 1 2 3 4 + TIME ACTION MATERIAL COORDS BLOCK_DATA + 3.0 FakeBlock AIR 14,5,1 STAIRS:DATA:DATA + . + . + Block Data: + 0 1 2 3 4 + NONE + STAIRS : HALF : FACING : SHAPE -> STAIRS:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:HALF/... + FENCE : FACE -> FENCE:NORTH/EAST/SOUTH/WEST + GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST + TRAPDOOR : HALF : FACING : OPEN -> TRAPDOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE + DOOR : HALF : FACING : OPEN : HINGE -> DOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE:LEFT/RIGHT + */ public static BlockData getBlockData(String s) throws ShowParseException { - String[] list; - if (s.contains(":")) { - list = s.split(":"); - } else { - list = null; - } try { - int id; - byte data; - if (list != null) { - id = Integer.parseInt(list[0]); - data = Byte.parseByte(list[1]); - } else { - id = Integer.parseInt(s); - data = (byte) 0; + String[] params = s.split("\u0009"); + BlockData blockData = Material.valueOf(params[2].toUpperCase()).createBlockData(); + + // Block data string params, or null if none + if (!params[4].equalsIgnoreCase("NONE")) { + String[] dataParams = params[4].split(":"); + BlockDataType type = BlockDataType.valueOf(dataParams[0].toUpperCase()); + + switch (type) { + case STAIRS: { + ((Stairs) blockData).setHalf(Bisected.Half.valueOf(dataParams[1].toUpperCase())); + ((Stairs) blockData).setFacing(BlockFace.valueOf(dataParams[2].toUpperCase())); + ((Stairs) blockData).setShape(Stairs.Shape.valueOf(dataParams[3].toUpperCase())); + } + case FENCE: { + ((Fence) blockData).setFace(BlockFace.valueOf(dataParams[1].toUpperCase()), true); // TODO what is the bool for + } + case GLASS_PANE: { + ((GlassPane) blockData).setFace(BlockFace.valueOf(dataParams[1].toUpperCase()), true); // TODO what is the bool for + } + case TRAPDOOR: { + ((TrapDoor) blockData).setHalf(Bisected.Half.valueOf(dataParams[1].toUpperCase())); + ((TrapDoor) blockData).setFacing(BlockFace.valueOf(dataParams[2].toUpperCase())); + ((TrapDoor) blockData).setOpen(Boolean.getBoolean(dataParams[3].toUpperCase())); + } + case DOOR: { + ((Door) blockData).setHalf(Bisected.Half.valueOf(dataParams[1].toUpperCase())); + ((Door) blockData).setFacing(BlockFace.valueOf(dataParams[2].toUpperCase())); + ((Door) blockData).setOpen(Boolean.getBoolean(dataParams[3].toUpperCase())); + ((Door) blockData).setHinge(Door.Hinge.valueOf(dataParams[4].toUpperCase())); + } + } } - return new BlockData(id, data); - } catch (Exception ignored) { + + return blockData; + } catch (Exception e) { + e.printStackTrace(); throw new ShowParseException("Invalid Block ID or Block data"); } } From ffd6701728af108d4083c1a1dde9d3f9ed49a704 Mon Sep 17 00:00:00 2001 From: KyGuy2002 Date: Mon, 18 Apr 2022 22:12:22 -0700 Subject: [PATCH 2/9] Running show fully working, showgen untested but implemented --- .../palace/show/generator/ShowGenerator.java | 10 +++--- .../network/palace/show/utils/ShowUtil.java | 32 ++++++++++++------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/main/java/network/palace/show/generator/ShowGenerator.java b/src/main/java/network/palace/show/generator/ShowGenerator.java index 2269871..4fb16e1 100644 --- a/src/main/java/network/palace/show/generator/ShowGenerator.java +++ b/src/main/java/network/palace/show/generator/ShowGenerator.java @@ -95,9 +95,9 @@ public String postGist(List actions, String name) throws Except Block Data: 0 1 2 3 4 NONE - STAIRS : HALF : FACING : SHAPE -> STAIRS:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:HALF/... - FENCE : FACE -> FENCE:NORTH/EAST/SOUTH/WEST - GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST + STAIRS : HALF : FACING : SHAPE -> STAIRS:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:INNER_LEFT/... + FENCE : FACE -> FENCE:NORTH/EAST/SOUTH/WEST ex) FENCE:NORTH-TRUE:SOUTH-FALSE + GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST ex) GLASS_PANE:NORTH-TRUE:SOUTH-FALSE TRAPDOOR : HALF : FACING : OPEN -> TRAPDOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE DOOR : HALF : FACING : OPEN : HINGE -> DOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE:LEFT/RIGHT */ @@ -111,11 +111,11 @@ private String getBlockDataString(BlockData blockData) { dataString = "STAIRS:" + half.toUpperCase() + ":" + facing.toUpperCase() + ":" + shape.toUpperCase(); } else if (blockData instanceof Fence) { - String face = ((Fence) blockData).getFaces().toString(); // TODO faces may not be right + String face = ((Fence) blockData).getFaces().iterator().next().toString(); // TODO handle multiple faces, not just first dataString = "FENCE:" + face.toUpperCase(); } else if (blockData instanceof GlassPane) { - String face = ((GlassPane) blockData).getFaces().toString(); // TODO faces may not be right + String face = ((GlassPane) blockData).getFaces().iterator().next().toString(); // TODO handle multiple faces, not just first dataString = "GLASS_PANE:" + face.toUpperCase(); } else if (blockData instanceof TrapDoor) { diff --git a/src/main/java/network/palace/show/utils/ShowUtil.java b/src/main/java/network/palace/show/utils/ShowUtil.java index 35a59ac..1952283 100644 --- a/src/main/java/network/palace/show/utils/ShowUtil.java +++ b/src/main/java/network/palace/show/utils/ShowUtil.java @@ -4,6 +4,7 @@ import network.palace.show.ShowPlugin; import network.palace.show.exceptions.ShowParseException; import network.palace.show.handlers.TitleType; +import network.palace.show.handlers.particle.CylinderParticle; import network.palace.show.sequence.ShowSequence; import org.bukkit.*; import org.bukkit.block.BlockFace; @@ -15,10 +16,7 @@ import org.bukkit.potion.PotionEffectType; import java.text.DecimalFormat; -import java.util.ArrayList; -import java.util.EnumSet; -import java.util.LinkedList; -import java.util.List; +import java.util.*; /** * @author Marc @@ -36,9 +34,9 @@ public class ShowUtil { Block Data: 0 1 2 3 4 NONE - STAIRS : HALF : FACING : SHAPE -> STAIRS:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:HALF/... - FENCE : FACE -> FENCE:NORTH/EAST/SOUTH/WEST - GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST + STAIRS : HALF : FACING : SHAPE -> STAIRS:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:INNER_LEFT/... + FENCE : FACE -> FENCE:NORTH/EAST/SOUTH/WEST ex) FENCE:NORTH-TRUE:SOUTH-FALSE + GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST ex) GLASS_PANE:NORTH-TRUE:SOUTH-FALSE TRAPDOOR : HALF : FACING : OPEN -> TRAPDOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE DOOR : HALF : FACING : OPEN : HINGE -> DOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE:LEFT/RIGHT */ @@ -48,7 +46,7 @@ public static BlockData getBlockData(String s) throws ShowParseException { BlockData blockData = Material.valueOf(params[2].toUpperCase()).createBlockData(); // Block data string params, or null if none - if (!params[4].equalsIgnoreCase("NONE")) { + if (params.length >= 5) { String[] dataParams = params[4].split(":"); BlockDataType type = BlockDataType.valueOf(dataParams[0].toUpperCase()); @@ -57,23 +55,33 @@ public static BlockData getBlockData(String s) throws ShowParseException { ((Stairs) blockData).setHalf(Bisected.Half.valueOf(dataParams[1].toUpperCase())); ((Stairs) blockData).setFacing(BlockFace.valueOf(dataParams[2].toUpperCase())); ((Stairs) blockData).setShape(Stairs.Shape.valueOf(dataParams[3].toUpperCase())); + break; } case FENCE: { - ((Fence) blockData).setFace(BlockFace.valueOf(dataParams[1].toUpperCase()), true); // TODO what is the bool for + ((Fence) blockData).setFace(BlockFace.valueOf(dataParams[1].split("-")[0].toUpperCase()), Boolean.parseBoolean(dataParams[1].split("-")[1].toUpperCase())); + break; } case GLASS_PANE: { - ((GlassPane) blockData).setFace(BlockFace.valueOf(dataParams[1].toUpperCase()), true); // TODO what is the bool for + // Plain glass-pane uses the fence block-data not the glass-pane because spaghetti + if (blockData.getMaterial().equals(Material.GLASS_PANE)) { + ((Fence) blockData).setFace(BlockFace.valueOf(dataParams[1].split("-")[0].toUpperCase()), Boolean.parseBoolean(dataParams[1].split("-")[1].toUpperCase())); + } else { + ((GlassPane) blockData).setFace(BlockFace.valueOf(dataParams[1].split("-")[0].toUpperCase()), Boolean.parseBoolean(dataParams[1].split("-")[1].toUpperCase())); + } + break; } case TRAPDOOR: { ((TrapDoor) blockData).setHalf(Bisected.Half.valueOf(dataParams[1].toUpperCase())); ((TrapDoor) blockData).setFacing(BlockFace.valueOf(dataParams[2].toUpperCase())); - ((TrapDoor) blockData).setOpen(Boolean.getBoolean(dataParams[3].toUpperCase())); + ((TrapDoor) blockData).setOpen(Boolean.parseBoolean(dataParams[3].toUpperCase())); + break; } case DOOR: { ((Door) blockData).setHalf(Bisected.Half.valueOf(dataParams[1].toUpperCase())); ((Door) blockData).setFacing(BlockFace.valueOf(dataParams[2].toUpperCase())); - ((Door) blockData).setOpen(Boolean.getBoolean(dataParams[3].toUpperCase())); + ((Door) blockData).setOpen(Boolean.parseBoolean(dataParams[3].toUpperCase())); ((Door) blockData).setHinge(Door.Hinge.valueOf(dataParams[4].toUpperCase())); + break; } } } From 2c9d3787d19292b8a42eed09d531137e5bab0a88 Mon Sep 17 00:00:00 2001 From: KyGuy2002 Date: Mon, 18 Apr 2022 23:06:50 -0700 Subject: [PATCH 3/9] Added multiple faces to glass and fence, showgen untested --- .../palace/show/generator/ShowGenerator.java | 47 +++++++++++++++---- .../network/palace/show/utils/ShowUtil.java | 29 ++++++++++-- 2 files changed, 64 insertions(+), 12 deletions(-) diff --git a/src/main/java/network/palace/show/generator/ShowGenerator.java b/src/main/java/network/palace/show/generator/ShowGenerator.java index 4fb16e1..3d02616 100644 --- a/src/main/java/network/palace/show/generator/ShowGenerator.java +++ b/src/main/java/network/palace/show/generator/ShowGenerator.java @@ -3,8 +3,10 @@ import com.goebl.david.Request; import com.goebl.david.Webb; import com.google.gson.JsonObject; +import com.sk89q.util.StringUtil; import network.palace.show.ShowPlugin; import network.palace.show.actions.FakeBlockAction; +import org.apache.commons.lang.StringUtils; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -92,6 +94,9 @@ public String postGist(List actions, String name) throws Except 3.0 FakeBlock AIR 14,5,1 STAIRS:DATA:DATA . . + STAIRS,BOTTOM,NORTH-TRUE:EAST-FALSE:SOUTH-FALSE:WEST-FALSE,INNER_LEFT + . + . Block Data: 0 1 2 3 4 NONE @@ -108,28 +113,54 @@ private String getBlockDataString(BlockData blockData) { String half = ((Stairs) blockData).getHalf().toString(); String facing = ((Stairs) blockData).getFacing().toString(); String shape = ((Stairs) blockData).getShape().toString(); - dataString = "STAIRS:" + half.toUpperCase() + ":" + facing.toUpperCase() + ":" + shape.toUpperCase(); + dataString = "STAIRS," + half.toUpperCase() + "," + facing.toUpperCase() + "," + shape.toUpperCase(); } else if (blockData instanceof Fence) { - String face = ((Fence) blockData).getFaces().iterator().next().toString(); // TODO handle multiple faces, not just first - dataString = "FENCE:" + face.toUpperCase(); + dataString = "FENCE,"; + + // True for included + for (BlockFace face : ((Fence) blockData).getFaces()) { + dataString = dataString + face.toString().toUpperCase() + "-TRUE:"; + } + + // False for others + if (!dataString.contains("NORTH")) dataString = dataString + "NORTH-FALSE:"; + if (!dataString.contains("EAST")) dataString = dataString + "EAST-FALSE:"; + if (!dataString.contains("SOUTH")) dataString = dataString + "SOUTH-FALSE:"; + if (!dataString.contains("WEST")) dataString = dataString + "WEST-FALSE:"; + + // Remove last character + dataString = StringUtils.chop(dataString); + + } else if (blockData instanceof GlassPane) { // TODO what does it do with non-stained glass pain? + dataString = "GLASS_PANE,"; + + // True for included + for (BlockFace face : ((GlassPane) blockData).getFaces()) { + dataString = dataString + face.toString().toUpperCase() + "-TRUE:"; + } + + // False for others + if (!dataString.contains("NORTH")) dataString = dataString + "NORTH-FALSE:"; + if (!dataString.contains("EAST")) dataString = dataString + "EAST-FALSE:"; + if (!dataString.contains("SOUTH")) dataString = dataString + "SOUTH-FALSE:"; + if (!dataString.contains("WEST")) dataString = dataString + "WEST-FALSE:"; - } else if (blockData instanceof GlassPane) { - String face = ((GlassPane) blockData).getFaces().iterator().next().toString(); // TODO handle multiple faces, not just first - dataString = "GLASS_PANE:" + face.toUpperCase(); + // Remove last character + dataString = StringUtils.chop(dataString); } else if (blockData instanceof TrapDoor) { String half = ((TrapDoor) blockData).getHalf().toString(); String facing = ((TrapDoor) blockData).getFacing().toString(); String open = String.valueOf(((TrapDoor) blockData).isOpen()); - dataString = "TRAPDOOR:" + half.toUpperCase() + ":" + facing.toUpperCase() + ":" + open.toUpperCase(); + dataString = "TRAPDOOR," + half.toUpperCase() + "," + facing.toUpperCase() + "," + open.toUpperCase(); } else if (blockData instanceof Door) { String half = ((Door) blockData).getHalf().toString(); String facing = ((Door) blockData).getFacing().toString(); String open = String.valueOf(((Door) blockData).isOpen()); String hinge = ((Door) blockData).getHinge().toString(); - dataString = "DOOR:" + half.toUpperCase() + ":" + facing.toUpperCase() + ":" + open.toUpperCase() + ":" + hinge.toUpperCase(); + dataString = "DOOR," + half.toUpperCase() + "," + facing.toUpperCase() + "," + open.toUpperCase() + "," + hinge.toUpperCase(); } diff --git a/src/main/java/network/palace/show/utils/ShowUtil.java b/src/main/java/network/palace/show/utils/ShowUtil.java index 1952283..2a5a7df 100644 --- a/src/main/java/network/palace/show/utils/ShowUtil.java +++ b/src/main/java/network/palace/show/utils/ShowUtil.java @@ -31,6 +31,9 @@ public class ShowUtil { 3.0 FakeBlock AIR 14,5,1 STAIRS:DATA:DATA . . + STAIRS,BOTTOM,NORTH-TRUE:EAST-FALSE:SOUTH-FALSE:WEST-FALSE,INNER_LEFT + . + . Block Data: 0 1 2 3 4 NONE @@ -47,7 +50,7 @@ public static BlockData getBlockData(String s) throws ShowParseException { // Block data string params, or null if none if (params.length >= 5) { - String[] dataParams = params[4].split(":"); + String[] dataParams = params[4].split(","); BlockDataType type = BlockDataType.valueOf(dataParams[0].toUpperCase()); switch (type) { @@ -58,15 +61,33 @@ public static BlockData getBlockData(String s) throws ShowParseException { break; } case FENCE: { - ((Fence) blockData).setFace(BlockFace.valueOf(dataParams[1].split("-")[0].toUpperCase()), Boolean.parseBoolean(dataParams[1].split("-")[1].toUpperCase())); + String[] faces = dataParams[1].split(":"); + + // 1 for each face, true or false + ((Fence) blockData).setFace(BlockFace.valueOf(faces[0].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[0].split("-")[1].toUpperCase())); + ((Fence) blockData).setFace(BlockFace.valueOf(faces[1].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[1].split("-")[1].toUpperCase())); + ((Fence) blockData).setFace(BlockFace.valueOf(faces[2].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[2].split("-")[1].toUpperCase())); + ((Fence) blockData).setFace(BlockFace.valueOf(faces[3].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[3].split("-")[1].toUpperCase())); break; } case GLASS_PANE: { // Plain glass-pane uses the fence block-data not the glass-pane because spaghetti if (blockData.getMaterial().equals(Material.GLASS_PANE)) { - ((Fence) blockData).setFace(BlockFace.valueOf(dataParams[1].split("-")[0].toUpperCase()), Boolean.parseBoolean(dataParams[1].split("-")[1].toUpperCase())); + String[] faces = dataParams[1].split(":"); + + // 1 for each face, true or false + ((Fence) blockData).setFace(BlockFace.valueOf(faces[0].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[0].split("-")[1].toUpperCase())); + ((Fence) blockData).setFace(BlockFace.valueOf(faces[1].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[1].split("-")[1].toUpperCase())); + ((Fence) blockData).setFace(BlockFace.valueOf(faces[2].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[2].split("-")[1].toUpperCase())); + ((Fence) blockData).setFace(BlockFace.valueOf(faces[3].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[3].split("-")[1].toUpperCase())); } else { - ((GlassPane) blockData).setFace(BlockFace.valueOf(dataParams[1].split("-")[0].toUpperCase()), Boolean.parseBoolean(dataParams[1].split("-")[1].toUpperCase())); + String[] faces = dataParams[1].split(":"); + + // 1 for each face, true or false + ((GlassPane) blockData).setFace(BlockFace.valueOf(faces[0].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[0].split("-")[1].toUpperCase())); + ((GlassPane) blockData).setFace(BlockFace.valueOf(faces[1].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[1].split("-")[1].toUpperCase())); + ((GlassPane) blockData).setFace(BlockFace.valueOf(faces[2].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[2].split("-")[1].toUpperCase())); + ((GlassPane) blockData).setFace(BlockFace.valueOf(faces[3].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[3].split("-")[1].toUpperCase())); } break; } From 55e049e4535c3a6a67371e446fadd78549bd1f65 Mon Sep 17 00:00:00 2001 From: KyGuy2002 Date: Tue, 19 Apr 2022 10:46:28 -0700 Subject: [PATCH 4/9] Showgen finished, fixed updater message on join not registered --- dependency-reduced-pom.xml | 2 +- pom.xml | 2 +- .../java/network/palace/show/ShowPlugin.java | 9 ++- .../commands/showgen/GenerateCommand.java | 8 ++- .../palace/show/generator/ShowGenerator.java | 56 +++++++++---------- .../network/palace/show/utils/ShowUtil.java | 7 +-- 6 files changed, 39 insertions(+), 45 deletions(-) diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index a15bbcc..cc13dad 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ 4.0.0 network.palace Show - 1.6.0 + 1.6.1 ${project.artifactId} diff --git a/pom.xml b/pom.xml index 3497b65..ac56587 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ network.palace Show - 1.6.0 + 1.6.1 enginehub-maven diff --git a/src/main/java/network/palace/show/ShowPlugin.java b/src/main/java/network/palace/show/ShowPlugin.java index 46e7012..16c8f74 100644 --- a/src/main/java/network/palace/show/ShowPlugin.java +++ b/src/main/java/network/palace/show/ShowPlugin.java @@ -19,6 +19,7 @@ import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.plugin.PluginLoadOrder; import org.bukkit.plugin.java.JavaPlugin; @@ -30,6 +31,7 @@ import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; +import java.nio.file.FileSystemNotFoundException; import java.util.HashMap; import java.util.Map; @@ -52,7 +54,7 @@ @Command(name = "show", desc = "Main show command", permission = "show.main", permissionMessage = "You do not have permission!", usage = "/show [list|start|stop]") @Command(name = "showdebug", desc = "Showdebug command", permission = "show.debug", permissionMessage = "You do not have permission!", usage = "/showdebug") @Command(name = "showgen", desc = "Showgen commands", permission = "show.showgen", permissionMessage = "You do not have permission!", usage = "/showgen") -public class ShowPlugin extends JavaPlugin { +public class ShowPlugin extends JavaPlugin implements Listener { @Getter private ArmorStandManager armorStandManager; @Getter private FountainManager fountainManager; @Getter private static ShowGenerator showGenerator; @@ -103,13 +105,14 @@ public void onEnable() { } - //has to be loaded after github token + // Has to be loaded after github token showGenerator = new ShowGenerator(); this.getServer().getPluginManager().registerEvents(fountainManager, this); this.getServer().getPluginManager().registerEvents(new PlayerInteract(), this); this.getServer().getPluginManager().registerEvents(new ChunkListener(), this); + this.getServer().getPluginManager().registerEvents(this, this); // Show Ticker taskid = Bukkit.getScheduler().runTaskTimer(this, () -> { @@ -128,7 +131,7 @@ public void onEnable() { new UpdateUtil(this, 94141).getVersion(v -> { if (!this.getDescription().getVersion().equalsIgnoreCase(v)) { - Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[Show] A New update is available for Show! It is always recommended that you upgrade! Link: https://www.spigotmc.org/resources/show-make-huge-spectaculars-in-minecraft.94141/"); + Bukkit.getConsoleSender().sendMessage(ChatColor.AQUA + "[Show] " + ChatColor.RED + "A New update is available for Show! It is always recommended that you upgrade! Link: https://www.spigotmc.org/resources/show-make-huge-spectaculars-in-minecraft.94141/"); } }); diff --git a/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java b/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java index 2ef02ef..9bb6fbf 100644 --- a/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java +++ b/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java @@ -109,15 +109,16 @@ public void handle(CommandSender sender, String[] args) { changeInTime = delayPerLayer; } + + // y is startingY, and is incremented by yChange every loop until y is equal to endingY. for (int y = startingY; compare(y, endingY, !bottom); y += yChange) { for (int x = 0; x < initialScene.getXLength(); x++) { for (int z = 0; z < initialScene.getZLength(); z++) { Block oldBlock = initialScene.getBlock(x, y, z); Block newBlock = finalScene.getBlock(x, y, z); - if (newBlock.getType().equals(oldBlock.getType()) && newBlock.getData() == oldBlock.getData()) { + if (newBlock.getType().equals(oldBlock.getType()) && newBlock.getBlockData().matches(oldBlock.getBlockData())) { continue; } - Material material = newBlock.getType(); FakeBlockAction act = new FakeBlockAction(null, (long) (localTime * 1000)); act.setData(newBlock.getBlockData()); act.setLoc(new Location(corner.getWorld(), corner.getBlockX() + x, corner.getBlockY() + y, corner.getBlockZ() + z)); @@ -127,6 +128,7 @@ public void handle(CommandSender sender, String[] args) { localTime += changeInTime; } + if (actions.isEmpty()) { player.sendMessage(ChatColor.RED + "There aren't any differences between the two selected regions!"); return; @@ -156,6 +158,6 @@ public void handle(CommandSender sender, String[] args) { } private boolean compare(int x, int y, boolean inverted) { - return inverted == (x >= y); + return inverted == (x <= y); } } diff --git a/src/main/java/network/palace/show/generator/ShowGenerator.java b/src/main/java/network/palace/show/generator/ShowGenerator.java index 3d02616..9ac3f0d 100644 --- a/src/main/java/network/palace/show/generator/ShowGenerator.java +++ b/src/main/java/network/palace/show/generator/ShowGenerator.java @@ -3,21 +3,19 @@ import com.goebl.david.Request; import com.goebl.david.Webb; import com.google.gson.JsonObject; -import com.sk89q.util.StringUtil; import network.palace.show.ShowPlugin; import network.palace.show.actions.FakeBlockAction; import org.apache.commons.lang.StringUtils; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.BlockFace; -import org.bukkit.block.data.Bisected; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.type.*; import org.json.JSONObject; import java.util.HashMap; import java.util.List; +import java.util.Objects; import java.util.UUID; public class ShowGenerator { @@ -45,7 +43,7 @@ public void removeSession(UUID uuid) { generatorSessions.remove(uuid); } - public String postGist(List actions, String name) throws Exception { + public String postGist(List actions, String name) { Webb webb = Webb.create(); JsonObject obj = new JsonObject(); @@ -64,7 +62,9 @@ public String postGist(List actions, String name) throws Except int x = loc.getBlockX(); int y = loc.getBlockY(); int z = loc.getBlockZ(); - String actionString = time + "\u0009" + "FakeBlock" + "\u0009" + mat + "\u0009" + x + "," + y + "," + z + "\u0009" + getBlockDataString(action.getData()); + String actionString = time + "\u0009" + "FakeBlock" + "\u0009" + mat + "\u0009" + x + "," + y + "," + z; + // If data, add to end + if (!Objects.equals(getBlockDataString(action.getData()), "")) actionString += "\u0009" + getBlockDataString(action.getData()); content.append(actionString).append("\n"); } @@ -74,8 +74,6 @@ public String postGist(List actions, String name) throws Except obj.add("files", files); - System.out.println("SENDING (" + actions.size() + "): " + obj.toString()); - Request req = webb.post("https://api.github.com/gists") .header("Accept", "application/vnd.github.v3+json") .header("Authorization", "token " + ACCESS_TOKEN) @@ -94,12 +92,8 @@ public String postGist(List actions, String name) throws Except 3.0 FakeBlock AIR 14,5,1 STAIRS:DATA:DATA . . - STAIRS,BOTTOM,NORTH-TRUE:EAST-FALSE:SOUTH-FALSE:WEST-FALSE,INNER_LEFT - . - . Block Data: 0 1 2 3 4 - NONE STAIRS : HALF : FACING : SHAPE -> STAIRS:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:INNER_LEFT/... FENCE : FACE -> FENCE:NORTH/EAST/SOUTH/WEST ex) FENCE:NORTH-TRUE:SOUTH-FALSE GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST ex) GLASS_PANE:NORTH-TRUE:SOUTH-FALSE @@ -107,63 +101,63 @@ public String postGist(List actions, String name) throws Except DOOR : HALF : FACING : OPEN : HINGE -> DOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE:LEFT/RIGHT */ private String getBlockDataString(BlockData blockData) { - String dataString = "NONE"; + StringBuilder dataString = new StringBuilder(); if (blockData instanceof Stairs) { String half = ((Stairs) blockData).getHalf().toString(); String facing = ((Stairs) blockData).getFacing().toString(); String shape = ((Stairs) blockData).getShape().toString(); - dataString = "STAIRS," + half.toUpperCase() + "," + facing.toUpperCase() + "," + shape.toUpperCase(); + dataString = new StringBuilder("STAIRS," + half.toUpperCase() + "," + facing.toUpperCase() + "," + shape.toUpperCase()); } else if (blockData instanceof Fence) { - dataString = "FENCE,"; + dataString = new StringBuilder("FENCE,"); // True for included for (BlockFace face : ((Fence) blockData).getFaces()) { - dataString = dataString + face.toString().toUpperCase() + "-TRUE:"; + dataString.append(face.toString().toUpperCase()).append("-TRUE:"); } // False for others - if (!dataString.contains("NORTH")) dataString = dataString + "NORTH-FALSE:"; - if (!dataString.contains("EAST")) dataString = dataString + "EAST-FALSE:"; - if (!dataString.contains("SOUTH")) dataString = dataString + "SOUTH-FALSE:"; - if (!dataString.contains("WEST")) dataString = dataString + "WEST-FALSE:"; + if (!dataString.toString().contains("NORTH")) dataString.append("NORTH-FALSE:"); + if (!dataString.toString().contains("EAST")) dataString.append("EAST-FALSE:"); + if (!dataString.toString().contains("SOUTH")) dataString.append("SOUTH-FALSE:"); + if (!dataString.toString().contains("WEST")) dataString.append("WEST-FALSE:"); // Remove last character - dataString = StringUtils.chop(dataString); + dataString = new StringBuilder(StringUtils.chop(dataString.toString())); - } else if (blockData instanceof GlassPane) { // TODO what does it do with non-stained glass pain? - dataString = "GLASS_PANE,"; + } else if (blockData instanceof GlassPane) { + dataString = new StringBuilder("GLASS_PANE,"); // True for included for (BlockFace face : ((GlassPane) blockData).getFaces()) { - dataString = dataString + face.toString().toUpperCase() + "-TRUE:"; + dataString.append(face.toString().toUpperCase()).append("-TRUE:"); } // False for others - if (!dataString.contains("NORTH")) dataString = dataString + "NORTH-FALSE:"; - if (!dataString.contains("EAST")) dataString = dataString + "EAST-FALSE:"; - if (!dataString.contains("SOUTH")) dataString = dataString + "SOUTH-FALSE:"; - if (!dataString.contains("WEST")) dataString = dataString + "WEST-FALSE:"; + if (!dataString.toString().contains("NORTH")) dataString.append("NORTH-FALSE:"); + if (!dataString.toString().contains("EAST")) dataString.append("EAST-FALSE:"); + if (!dataString.toString().contains("SOUTH")) dataString.append("SOUTH-FALSE:"); + if (!dataString.toString().contains("WEST")) dataString.append("WEST-FALSE:"); // Remove last character - dataString = StringUtils.chop(dataString); + dataString = new StringBuilder(StringUtils.chop(dataString.toString())); } else if (blockData instanceof TrapDoor) { String half = ((TrapDoor) blockData).getHalf().toString(); String facing = ((TrapDoor) blockData).getFacing().toString(); String open = String.valueOf(((TrapDoor) blockData).isOpen()); - dataString = "TRAPDOOR," + half.toUpperCase() + "," + facing.toUpperCase() + "," + open.toUpperCase(); + dataString = new StringBuilder("TRAPDOOR," + half.toUpperCase() + "," + facing.toUpperCase() + "," + open.toUpperCase()); } else if (blockData instanceof Door) { String half = ((Door) blockData).getHalf().toString(); String facing = ((Door) blockData).getFacing().toString(); String open = String.valueOf(((Door) blockData).isOpen()); String hinge = ((Door) blockData).getHinge().toString(); - dataString = "DOOR," + half.toUpperCase() + "," + facing.toUpperCase() + "," + open.toUpperCase() + "," + hinge.toUpperCase(); + dataString = new StringBuilder("DOOR," + half.toUpperCase() + "," + facing.toUpperCase() + "," + open.toUpperCase() + "," + hinge.toUpperCase()); } - return dataString; + return dataString.toString(); } } diff --git a/src/main/java/network/palace/show/utils/ShowUtil.java b/src/main/java/network/palace/show/utils/ShowUtil.java index 2a5a7df..5e7d4c1 100644 --- a/src/main/java/network/palace/show/utils/ShowUtil.java +++ b/src/main/java/network/palace/show/utils/ShowUtil.java @@ -4,7 +4,6 @@ import network.palace.show.ShowPlugin; import network.palace.show.exceptions.ShowParseException; import network.palace.show.handlers.TitleType; -import network.palace.show.handlers.particle.CylinderParticle; import network.palace.show.sequence.ShowSequence; import org.bukkit.*; import org.bukkit.block.BlockFace; @@ -31,12 +30,8 @@ public class ShowUtil { 3.0 FakeBlock AIR 14,5,1 STAIRS:DATA:DATA . . - STAIRS,BOTTOM,NORTH-TRUE:EAST-FALSE:SOUTH-FALSE:WEST-FALSE,INNER_LEFT - . - . Block Data: 0 1 2 3 4 - NONE STAIRS : HALF : FACING : SHAPE -> STAIRS:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:INNER_LEFT/... FENCE : FACE -> FENCE:NORTH/EAST/SOUTH/WEST ex) FENCE:NORTH-TRUE:SOUTH-FALSE GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST ex) GLASS_PANE:NORTH-TRUE:SOUTH-FALSE @@ -392,7 +387,7 @@ public static void logDebug(String showName, String message) { .filter(p -> p.hasPermission("show.debug") && ShowPlugin.debugMap.containsKey(p.getDisplayName())) .forEach(p -> p.sendMessage(ChatColor.AQUA + "[ShowDebug - " + showName + "] " + ChatColor.YELLOW + message)); - Show s = ShowPlugin.getInstance().getShows().get(showName); + Show s = ShowPlugin.getShows().get(showName); if (s != null) s.debug(); } } From a31e33e4145dc3d492ebf4be0ca6027a489342d0 Mon Sep 17 00:00:00 2001 From: KyGuy2002 Date: Tue, 19 Apr 2022 10:47:43 -0700 Subject: [PATCH 5/9] updated version number and removed unused import --- src/main/java/network/palace/show/ShowPlugin.java | 3 +-- .../network/palace/show/commands/showgen/GenerateCommand.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/network/palace/show/ShowPlugin.java b/src/main/java/network/palace/show/ShowPlugin.java index 16c8f74..f392fbc 100644 --- a/src/main/java/network/palace/show/ShowPlugin.java +++ b/src/main/java/network/palace/show/ShowPlugin.java @@ -31,7 +31,6 @@ import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; -import java.nio.file.FileSystemNotFoundException; import java.util.HashMap; import java.util.Map; @@ -39,7 +38,7 @@ * Created by Marc on 12/6/16. * Updated to be Core free by Tom 07/10/2021 */ -@Plugin(name = "Show", version = "1.6.0") +@Plugin(name = "Show", version = "1.6.1") @Description(value = "Create Shows in Minecraft with easy to use files!") @LoadOrder(value = PluginLoadOrder.POSTWORLD) @Author(value = "Legobuilder0813") diff --git a/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java b/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java index 9bb6fbf..4c23513 100644 --- a/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java +++ b/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java @@ -158,6 +158,6 @@ public void handle(CommandSender sender, String[] args) { } private boolean compare(int x, int y, boolean inverted) { - return inverted == (x <= y); + return inverted == (x <= y); } } From 196ce791ccbe3dfb4dbb9ff92ef6cd5b32af7f9b Mon Sep 17 00:00:00 2001 From: KyGuy2002 Date: Tue, 19 Apr 2022 11:05:12 -0700 Subject: [PATCH 6/9] deleted more imports --- .../java/network/palace/show/actions/FakeBlockAction.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/network/palace/show/actions/FakeBlockAction.java b/src/main/java/network/palace/show/actions/FakeBlockAction.java index 5443d25..b49c6a4 100644 --- a/src/main/java/network/palace/show/actions/FakeBlockAction.java +++ b/src/main/java/network/palace/show/actions/FakeBlockAction.java @@ -1,19 +1,14 @@ package network.palace.show.actions; -import com.comphenix.protocol.wrappers.BlockPosition; -import com.comphenix.protocol.wrappers.WrappedBlockData; import lombok.Getter; import lombok.Setter; -import network.palace.show.packets.server.block.WrapperPlayServerBlockChange; import network.palace.show.Show; import network.palace.show.exceptions.ShowParseException; -import network.palace.show.utils.MiscUtil; import network.palace.show.utils.ShowUtil; import network.palace.show.utils.WorldUtil; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; -import org.bukkit.Material; import org.bukkit.block.data.BlockData; import org.bukkit.entity.Player; From 153a1b5ee2719c620b250f2ae077d9a8aa4542cb Mon Sep 17 00:00:00 2001 From: KyGuy2002 Date: Tue, 19 Apr 2022 13:31:05 -0700 Subject: [PATCH 7/9] added slabs --- .../java/network/palace/show/generator/ShowGenerator.java | 4 ++++ src/main/java/network/palace/show/utils/BlockDataType.java | 3 ++- src/main/java/network/palace/show/utils/ShowUtil.java | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/network/palace/show/generator/ShowGenerator.java b/src/main/java/network/palace/show/generator/ShowGenerator.java index 9ac3f0d..95055e2 100644 --- a/src/main/java/network/palace/show/generator/ShowGenerator.java +++ b/src/main/java/network/palace/show/generator/ShowGenerator.java @@ -99,6 +99,7 @@ public String postGist(List actions, String name) { GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST ex) GLASS_PANE:NORTH-TRUE:SOUTH-FALSE TRAPDOOR : HALF : FACING : OPEN -> TRAPDOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE DOOR : HALF : FACING : OPEN : HINGE -> DOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE:LEFT/RIGHT + SLAB : TYPE -> SLAB:TOP/BOTTOM/DOUBLE */ private String getBlockDataString(BlockData blockData) { StringBuilder dataString = new StringBuilder(); @@ -156,6 +157,9 @@ private String getBlockDataString(BlockData blockData) { String hinge = ((Door) blockData).getHinge().toString(); dataString = new StringBuilder("DOOR," + half.toUpperCase() + "," + facing.toUpperCase() + "," + open.toUpperCase() + "," + hinge.toUpperCase()); + } else if (blockData instanceof Slab) { + String type = ((Slab) blockData).getType().toString(); + dataString = new StringBuilder("SLAB," + type.toUpperCase()); } return dataString.toString(); diff --git a/src/main/java/network/palace/show/utils/BlockDataType.java b/src/main/java/network/palace/show/utils/BlockDataType.java index 7fc66aa..56f451f 100644 --- a/src/main/java/network/palace/show/utils/BlockDataType.java +++ b/src/main/java/network/palace/show/utils/BlockDataType.java @@ -5,5 +5,6 @@ public enum BlockDataType { FENCE, GLASS_PANE, TRAPDOOR, - DOOR + DOOR, + SLAB } diff --git a/src/main/java/network/palace/show/utils/ShowUtil.java b/src/main/java/network/palace/show/utils/ShowUtil.java index 5e7d4c1..4b93e9b 100644 --- a/src/main/java/network/palace/show/utils/ShowUtil.java +++ b/src/main/java/network/palace/show/utils/ShowUtil.java @@ -37,6 +37,7 @@ public class ShowUtil { GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST ex) GLASS_PANE:NORTH-TRUE:SOUTH-FALSE TRAPDOOR : HALF : FACING : OPEN -> TRAPDOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE DOOR : HALF : FACING : OPEN : HINGE -> DOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE:LEFT/RIGHT + SLAB : TYPE -> SLAB:TOP/BOTTOM/DOUBLE */ public static BlockData getBlockData(String s) throws ShowParseException { try { @@ -98,6 +99,9 @@ public static BlockData getBlockData(String s) throws ShowParseException { ((Door) blockData).setOpen(Boolean.parseBoolean(dataParams[3].toUpperCase())); ((Door) blockData).setHinge(Door.Hinge.valueOf(dataParams[4].toUpperCase())); break; + } case SLAB: { + ((Slab) blockData).setType(Slab.Type.valueOf(dataParams[1].toUpperCase())); + break; } } } From e1d73483c0d9097712784b18c0ea1a01931820e9 Mon Sep 17 00:00:00 2001 From: KyGuy2002 Date: Fri, 22 Apr 2022 10:22:30 -0700 Subject: [PATCH 8/9] Fence and glasspane faces easier syntax, blockstate own package, other small changes --- pom.xml | 8 +---- .../palace/show/actions/FakeBlockAction.java | 2 +- .../show/{utils => enums}/BlockDataType.java | 2 +- .../palace/show/generator/ShowGenerator.java | 25 ++++--------- .../network/palace/show/utils/ShowUtil.java | 35 +++++++++---------- 5 files changed, 27 insertions(+), 45 deletions(-) rename src/main/java/network/palace/show/{utils => enums}/BlockDataType.java (74%) diff --git a/pom.xml b/pom.xml index ac56587..42b3aa4 100644 --- a/pom.xml +++ b/pom.xml @@ -45,12 +45,6 @@ worldedit-bukkit 7.2.0-SNAPSHOT provided - - - org.bstats - bstats-bukkit - - com.goebl @@ -77,7 +71,7 @@ com.craftmend.openaudiomc OpenAudioMc - 6.6.3 + 6.5.4 provided diff --git a/src/main/java/network/palace/show/actions/FakeBlockAction.java b/src/main/java/network/palace/show/actions/FakeBlockAction.java index b49c6a4..ca87ff8 100644 --- a/src/main/java/network/palace/show/actions/FakeBlockAction.java +++ b/src/main/java/network/palace/show/actions/FakeBlockAction.java @@ -40,7 +40,7 @@ public void play(Player[] nearPlayers) { } } catch (Exception e) { Bukkit.getLogger().severe("FakeBlockAction -" + ChatColor.RED + "Error sending FakeBlockAction for type (" + - data + ") at location " + loc.getX() + "," + loc.getY() + "," + loc.getZ() + " at time " + + data.getMaterial() + ") at location " + loc.getX() + "," + loc.getY() + "," + loc.getZ() + " at time " + time + " for show " + show.getName()); e.printStackTrace(); } diff --git a/src/main/java/network/palace/show/utils/BlockDataType.java b/src/main/java/network/palace/show/enums/BlockDataType.java similarity index 74% rename from src/main/java/network/palace/show/utils/BlockDataType.java rename to src/main/java/network/palace/show/enums/BlockDataType.java index 56f451f..df6989b 100644 --- a/src/main/java/network/palace/show/utils/BlockDataType.java +++ b/src/main/java/network/palace/show/enums/BlockDataType.java @@ -1,4 +1,4 @@ -package network.palace.show.utils; +package network.palace.show.enums; public enum BlockDataType { STAIRS, diff --git a/src/main/java/network/palace/show/generator/ShowGenerator.java b/src/main/java/network/palace/show/generator/ShowGenerator.java index 95055e2..82be007 100644 --- a/src/main/java/network/palace/show/generator/ShowGenerator.java +++ b/src/main/java/network/palace/show/generator/ShowGenerator.java @@ -43,7 +43,7 @@ public void removeSession(UUID uuid) { generatorSessions.remove(uuid); } - public String postGist(List actions, String name) { + public String postGist(List actions, String name) throws Exception { Webb webb = Webb.create(); JsonObject obj = new JsonObject(); @@ -95,15 +95,14 @@ public String postGist(List actions, String name) { Block Data: 0 1 2 3 4 STAIRS : HALF : FACING : SHAPE -> STAIRS:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:INNER_LEFT/... - FENCE : FACE -> FENCE:NORTH/EAST/SOUTH/WEST ex) FENCE:NORTH-TRUE:SOUTH-FALSE - GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST ex) GLASS_PANE:NORTH-TRUE:SOUTH-FALSE + FENCE : FACE -> FENCE:NORTH/EAST/SOUTH/WEST ex) FENCE:NORTH:SOUTH + GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST ex) GLASS_PANE:NORTH:SOUTH TRAPDOOR : HALF : FACING : OPEN -> TRAPDOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE DOOR : HALF : FACING : OPEN : HINGE -> DOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE:LEFT/RIGHT SLAB : TYPE -> SLAB:TOP/BOTTOM/DOUBLE */ private String getBlockDataString(BlockData blockData) { StringBuilder dataString = new StringBuilder(); - if (blockData instanceof Stairs) { String half = ((Stairs) blockData).getHalf().toString(); String facing = ((Stairs) blockData).getFacing().toString(); @@ -111,36 +110,26 @@ private String getBlockDataString(BlockData blockData) { dataString = new StringBuilder("STAIRS," + half.toUpperCase() + "," + facing.toUpperCase() + "," + shape.toUpperCase()); } else if (blockData instanceof Fence) { + if (((Fence) blockData).getFaces().isEmpty()) return ""; dataString = new StringBuilder("FENCE,"); // True for included for (BlockFace face : ((Fence) blockData).getFaces()) { - dataString.append(face.toString().toUpperCase()).append("-TRUE:"); + dataString.append(face.toString().toUpperCase()).append(":"); } - // False for others - if (!dataString.toString().contains("NORTH")) dataString.append("NORTH-FALSE:"); - if (!dataString.toString().contains("EAST")) dataString.append("EAST-FALSE:"); - if (!dataString.toString().contains("SOUTH")) dataString.append("SOUTH-FALSE:"); - if (!dataString.toString().contains("WEST")) dataString.append("WEST-FALSE:"); - // Remove last character dataString = new StringBuilder(StringUtils.chop(dataString.toString())); } else if (blockData instanceof GlassPane) { + if (((GlassPane) blockData).getFaces().isEmpty()) return ""; dataString = new StringBuilder("GLASS_PANE,"); // True for included for (BlockFace face : ((GlassPane) blockData).getFaces()) { - dataString.append(face.toString().toUpperCase()).append("-TRUE:"); + dataString.append(face.toString().toUpperCase()).append(":"); } - // False for others - if (!dataString.toString().contains("NORTH")) dataString.append("NORTH-FALSE:"); - if (!dataString.toString().contains("EAST")) dataString.append("EAST-FALSE:"); - if (!dataString.toString().contains("SOUTH")) dataString.append("SOUTH-FALSE:"); - if (!dataString.toString().contains("WEST")) dataString.append("WEST-FALSE:"); - // Remove last character dataString = new StringBuilder(StringUtils.chop(dataString.toString())); diff --git a/src/main/java/network/palace/show/utils/ShowUtil.java b/src/main/java/network/palace/show/utils/ShowUtil.java index 4b93e9b..8a72373 100644 --- a/src/main/java/network/palace/show/utils/ShowUtil.java +++ b/src/main/java/network/palace/show/utils/ShowUtil.java @@ -2,6 +2,7 @@ import network.palace.show.Show; import network.palace.show.ShowPlugin; +import network.palace.show.enums.BlockDataType; import network.palace.show.exceptions.ShowParseException; import network.palace.show.handlers.TitleType; import network.palace.show.sequence.ShowSequence; @@ -33,8 +34,8 @@ public class ShowUtil { Block Data: 0 1 2 3 4 STAIRS : HALF : FACING : SHAPE -> STAIRS:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:INNER_LEFT/... - FENCE : FACE -> FENCE:NORTH/EAST/SOUTH/WEST ex) FENCE:NORTH-TRUE:SOUTH-FALSE - GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST ex) GLASS_PANE:NORTH-TRUE:SOUTH-FALSE + FENCE : FACE -> FENCE:NORTH/EAST/SOUTH/WEST ex) FENCE:NORTH:SOUTH + GLASS_PANE : FACE -> GLASS_PANE:NORTH/EAST/SOUTH/WEST ex) GLASS_PANE:NORTH:SOUTH TRAPDOOR : HALF : FACING : OPEN -> TRAPDOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE DOOR : HALF : FACING : OPEN : HINGE -> DOOR:BOTTOM/TOP:NORTH/EAST/SOUTH/WEST:TRUE/FALSE:LEFT/RIGHT SLAB : TYPE -> SLAB:TOP/BOTTOM/DOUBLE @@ -59,11 +60,10 @@ public static BlockData getBlockData(String s) throws ShowParseException { case FENCE: { String[] faces = dataParams[1].split(":"); - // 1 for each face, true or false - ((Fence) blockData).setFace(BlockFace.valueOf(faces[0].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[0].split("-")[1].toUpperCase())); - ((Fence) blockData).setFace(BlockFace.valueOf(faces[1].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[1].split("-")[1].toUpperCase())); - ((Fence) blockData).setFace(BlockFace.valueOf(faces[2].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[2].split("-")[1].toUpperCase())); - ((Fence) blockData).setFace(BlockFace.valueOf(faces[3].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[3].split("-")[1].toUpperCase())); + ((Fence) blockData).setFace(BlockFace.valueOf(faces[0].toUpperCase()), true); + if (faces.length >= 2) ((Fence) blockData).setFace(BlockFace.valueOf(faces[1].toUpperCase()), true); + if (faces.length >= 3) ((Fence) blockData).setFace(BlockFace.valueOf(faces[2].toUpperCase()), true); + if (faces.length >= 4) ((Fence) blockData).setFace(BlockFace.valueOf(faces[3].toUpperCase()), true); break; } case GLASS_PANE: { @@ -71,19 +71,18 @@ public static BlockData getBlockData(String s) throws ShowParseException { if (blockData.getMaterial().equals(Material.GLASS_PANE)) { String[] faces = dataParams[1].split(":"); - // 1 for each face, true or false - ((Fence) blockData).setFace(BlockFace.valueOf(faces[0].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[0].split("-")[1].toUpperCase())); - ((Fence) blockData).setFace(BlockFace.valueOf(faces[1].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[1].split("-")[1].toUpperCase())); - ((Fence) blockData).setFace(BlockFace.valueOf(faces[2].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[2].split("-")[1].toUpperCase())); - ((Fence) blockData).setFace(BlockFace.valueOf(faces[3].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[3].split("-")[1].toUpperCase())); + ((Fence) blockData).setFace(BlockFace.valueOf(faces[0].toUpperCase()), true); + if (faces.length >= 2) ((Fence) blockData).setFace(BlockFace.valueOf(faces[1].toUpperCase()), true); + if (faces.length >= 3) ((Fence) blockData).setFace(BlockFace.valueOf(faces[2].toUpperCase()), true); + if (faces.length >= 4) ((Fence) blockData).setFace(BlockFace.valueOf(faces[3].toUpperCase()), true); + } else { String[] faces = dataParams[1].split(":"); - // 1 for each face, true or false - ((GlassPane) blockData).setFace(BlockFace.valueOf(faces[0].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[0].split("-")[1].toUpperCase())); - ((GlassPane) blockData).setFace(BlockFace.valueOf(faces[1].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[1].split("-")[1].toUpperCase())); - ((GlassPane) blockData).setFace(BlockFace.valueOf(faces[2].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[2].split("-")[1].toUpperCase())); - ((GlassPane) blockData).setFace(BlockFace.valueOf(faces[3].split("-")[0].toUpperCase()), Boolean.parseBoolean(faces[3].split("-")[1].toUpperCase())); + ((GlassPane) blockData).setFace(BlockFace.valueOf(faces[0].toUpperCase()), true); + if (faces.length >= 2) ((GlassPane) blockData).setFace(BlockFace.valueOf(faces[1].toUpperCase()), true); + if (faces.length >= 3) ((GlassPane) blockData).setFace(BlockFace.valueOf(faces[2].toUpperCase()), true); + if (faces.length >= 4) ((GlassPane) blockData).setFace(BlockFace.valueOf(faces[3].toUpperCase()), true); } break; } @@ -391,7 +390,7 @@ public static void logDebug(String showName, String message) { .filter(p -> p.hasPermission("show.debug") && ShowPlugin.debugMap.containsKey(p.getDisplayName())) .forEach(p -> p.sendMessage(ChatColor.AQUA + "[ShowDebug - " + showName + "] " + ChatColor.YELLOW + message)); - Show s = ShowPlugin.getShows().get(showName); + Show s = ShowPlugin.getInstance().getShows().get(showName); if (s != null) s.debug(); } } From 9af1bfef9f8f173c91b83efec7be24b926c5113e Mon Sep 17 00:00:00 2001 From: KyGuy2002 Date: Fri, 22 Apr 2022 11:24:27 -0700 Subject: [PATCH 9/9] changed default bottom from false to true. This seems to fix all issues, and all varients of commands work --- .../network/palace/show/commands/showgen/GenerateCommand.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java b/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java index 4c23513..29212dd 100644 --- a/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java +++ b/src/main/java/network/palace/show/commands/showgen/GenerateCommand.java @@ -82,7 +82,7 @@ public void handle(CommandSender sender, String[] args) { bottom = !args[1].equalsIgnoreCase("top"); delayPerLayer = Double.parseDouble(args[2]); } else { - bottom = false; + bottom = true; delayPerLayer = 0; } @@ -158,6 +158,6 @@ public void handle(CommandSender sender, String[] args) { } private boolean compare(int x, int y, boolean inverted) { - return inverted == (x <= y); + return inverted == (x >= y); } }