Skip to content

Block action logging improvements #30

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import network.darkhelmet.prism.utils.TypeUtils;
import network.darkhelmet.prism.utils.block.Utilities;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.DyeColor;
import org.bukkit.Nameable;
import org.bukkit.Tag;
Expand All @@ -35,6 +34,7 @@
import org.bukkit.block.data.Waterlogged;
import org.bukkit.block.data.type.Bed;
import org.bukkit.block.data.type.Bed.Part;
import org.bukkit.block.data.type.RespawnAnchor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
Expand All @@ -55,6 +55,7 @@
import static org.bukkit.Material.OBSIDIAN;
import static org.bukkit.Material.PLAYER_HEAD;
import static org.bukkit.Material.PLAYER_WALL_HEAD;
import static org.bukkit.Material.RESPAWN_ANCHOR;
import static org.bukkit.Material.SPAWNER;
import static org.bukkit.Material.TRAPPED_CHEST;
import static org.bukkit.Material.WATER;
Expand Down Expand Up @@ -124,6 +125,11 @@ private void createActionData(BlockState state) {
commandActionData.command = cmdBlock.getCommand();
actionData = commandActionData;
break;
case RESPAWN_ANCHOR:
final RespawnAnchorActionData respawnAnchorActionData = new RespawnAnchorActionData();
respawnAnchorActionData.charges = ((RespawnAnchor) state.getBlockData()).getCharges();
actionData = respawnAnchorActionData;
break;
default:
if (Tag.SIGNS.isTagged(state.getType())) {
final SignActionData signActionData = new SignActionData();
Expand Down Expand Up @@ -184,8 +190,9 @@ public void deserialize(String data) {
} else if (Tag.SIGNS.isTagged(getMaterial())) {
actionData = gson().fromJson(data, SignActionData.class);
} else if (getMaterial() == COMMAND_BLOCK) {
actionData = new CommandActionData();
((CommandActionData) actionData).command = data;
actionData = gson().fromJson(data, CommandActionData.class);
} else if (getMaterial() == RESPAWN_ANCHOR) {
actionData = gson().fromJson(data, RespawnAnchorActionData.class);
} else {
actionData = gson().fromJson(data, BlockActionData.class);
}
Expand Down Expand Up @@ -222,6 +229,9 @@ public String getNiceName() {
} else if (blockActionData instanceof CommandActionData) {
final CommandActionData ad = (CommandActionData) blockActionData;
name += " (" + ad.command + ")";
} else if (blockActionData instanceof RespawnAnchorActionData) {
RespawnAnchorActionData ad = (RespawnAnchorActionData) blockActionData;
name += " (" + ad.charges + " charge" + (ad.charges > 1 ? "s)" : ")");
}
if (blockActionData.customName != null && !blockActionData.customName.isEmpty()) {
name += " (" + blockActionData.customName + ")";
Expand Down Expand Up @@ -385,25 +395,25 @@ ChangeResult placeBlock(Player player, PrismParameters parameters, boolean isPre
if ((getMaterial() == PLAYER_HEAD || getMaterial() == PLAYER_WALL_HEAD)
&& blockActionData instanceof SkullActionData) {
return handleSkulls(block, blockActionData, originalBlock);
}
if (Tag.BANNERS.isTagged(getMaterial()) && blockActionData instanceof BannerActionData) {
} else if (Tag.BANNERS.isTagged(getMaterial()) && blockActionData instanceof BannerActionData) {
return handleBanners(block, blockActionData, originalBlock);
}
if (getMaterial() == SPAWNER && blockActionData instanceof SpawnerActionData) {
} else if (getMaterial() == SPAWNER && blockActionData instanceof SpawnerActionData) {

final SpawnerActionData s = (SpawnerActionData) blockActionData;

// Set spawner data
((CreatureSpawner) newState).setDelay(s.getDelay());
((CreatureSpawner) newState).setSpawnedType(s.getEntityType());

}

if (getMaterial() == COMMAND_BLOCK
} else if (getMaterial() == COMMAND_BLOCK
&& blockActionData instanceof CommandActionData) {
final CommandActionData c = (CommandActionData) blockActionData;
((CommandBlock) newState).setCommand(c.command);
} else if (getMaterial() == RESPAWN_ANCHOR && blockActionData instanceof RespawnAnchorActionData) {
final RespawnAnchorActionData ra = (RespawnAnchorActionData) blockActionData;
((RespawnAnchor) newState.getBlockData()).setCharges(ra.charges);
}

if (newState instanceof Nameable && blockActionData.customName != null
&& !blockActionData.customName.equals("")) {
((Nameable) newState).setCustomName(blockActionData.customName);
Expand Down Expand Up @@ -651,4 +661,8 @@ public static class BannerActionData extends RotatableActionData {
Map<String, String> patterns;
}

public static class RespawnAnchorActionData extends BlockActionData {
int charges;
}

}