Added logging and rollback support for double sided signs

This commit is contained in:
Intelli 2023-07-12 15:17:14 -06:00
parent 7e97e12969
commit 4e43a42662
25 changed files with 658 additions and 107 deletions

View file

@ -3,6 +3,8 @@ package net.coreprotect.bukkit;
import java.util.List;
import java.util.Map;
import org.bukkit.Color;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
@ -131,13 +133,13 @@ public class BukkitAdapter implements BukkitInterface {
}
@Override
public boolean isGlowing(Sign sign) {
public boolean isGlowing(Sign sign, boolean isFront) {
return false;
}
@Override
public void setGlowing(Sign sign, boolean set) {
return;
public boolean isWaxed(Sign sign) {
return false;
}
@Override
@ -150,4 +152,32 @@ public class BukkitAdapter implements BukkitInterface {
return null;
}
@Override
public void setGlowing(Sign sign, boolean isFront, boolean isGlowing) {
return;
}
@Override
public void setColor(Sign sign, boolean isFront, int color) {
if (!isFront) {
return;
}
sign.setColor(DyeColor.getByColor(Color.fromRGB(color)));
}
@Override
public void setWaxed(Sign sign, boolean isWaxed) {
return;
}
@Override
public int getColor(Sign sign, boolean isFront) {
if (isFront) {
return sign.getColor().getColor().asRGB();
}
return 0;
}
}

View file

@ -43,14 +43,22 @@ public interface BukkitInterface {
public boolean isItemFrame(Material material);
public boolean isGlowing(Sign sign);
public boolean isGlowing(Sign sign, boolean isFront);
public boolean isInvisible(Material material);
public boolean isWaxed(Sign sign);
public int getMinHeight(World world);
public int getLegacyBlockId(Material material);
public void setGlowing(Sign sign, boolean b);
public void setGlowing(Sign sign, boolean isFront, boolean isGlowing);
public void setColor(Sign sign, boolean isFront, int color);
public void setWaxed(Sign sign, boolean isWaxed);
public int getColor(Sign sign, boolean isFront);
}

View file

@ -218,13 +218,21 @@ public class Bukkit_v1_17 extends Bukkit_v1_16 implements BukkitInterface {
}
@Override
public boolean isGlowing(Sign sign) {
public boolean isGlowing(Sign sign, boolean isFront) {
if (!isFront) {
return false;
}
return sign.isGlowingText();
}
@Override
public void setGlowing(Sign sign, boolean set) {
sign.setGlowingText(set);
public void setGlowing(Sign sign, boolean isFront, boolean isGlowing) {
if (!isFront) {
return;
}
sign.setGlowingText(isGlowing);
}
@Override

View file

@ -3,7 +3,11 @@ package net.coreprotect.bukkit;
import java.util.Arrays;
import java.util.HashSet;
import org.bukkit.Color;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.block.Sign;
import org.bukkit.block.sign.Side;
import net.coreprotect.model.BlockGroup;
@ -14,4 +18,54 @@ public class Bukkit_v1_20 extends Bukkit_v1_19 implements BukkitInterface {
BlockGroup.UPDATE_STATE = new HashSet<>(Arrays.asList(Material.TORCH, Material.WALL_TORCH, Material.REDSTONE_WIRE, Material.RAIL, Material.POWERED_RAIL, Material.DETECTOR_RAIL, Material.FURNACE, Material.BLAST_FURNACE, Material.SMOKER, Material.LEVER, Material.REDSTONE_TORCH, Material.REDSTONE_WALL_TORCH, Material.GLOWSTONE, Material.JACK_O_LANTERN, Material.REPEATER, Material.REDSTONE_LAMP, Material.BEACON, Material.COMPARATOR, Material.DAYLIGHT_DETECTOR, Material.REDSTONE_BLOCK, Material.HOPPER, Material.CHEST, Material.TRAPPED_CHEST, Material.ACTIVATOR_RAIL, Material.SOUL_TORCH, Material.SOUL_WALL_TORCH, Material.SHROOMLIGHT, Material.RESPAWN_ANCHOR, Material.CRYING_OBSIDIAN, Material.TARGET, Material.SMALL_AMETHYST_BUD, Material.MEDIUM_AMETHYST_BUD, Material.LARGE_AMETHYST_BUD, Material.AMETHYST_CLUSTER, Material.CAVE_VINES, Material.CAVE_VINES_PLANT, Material.GLOW_LICHEN, Material.LIGHT, Material.LAVA_CAULDRON, Material.CHISELED_BOOKSHELF));
}
@Override
public void setGlowing(Sign sign, boolean isFront, boolean isGlowing) {
if (isFront) {
sign.getSide(Side.FRONT).setGlowingText(isGlowing);
}
else {
sign.getSide(Side.BACK).setGlowingText(isGlowing);
}
}
@Override
public void setColor(Sign sign, boolean isFront, int color) {
if (isFront) {
sign.getSide(Side.FRONT).setColor(DyeColor.getByColor(Color.fromRGB(color)));
}
else {
sign.getSide(Side.BACK).setColor(DyeColor.getByColor(Color.fromRGB(color)));
}
}
@Override
public void setWaxed(Sign sign, boolean isWaxed) {
sign.setWaxed(isWaxed);
}
@Override
public int getColor(Sign sign, boolean isFront) {
if (isFront) {
return sign.getSide(Side.FRONT).getColor().getColor().asRGB();
}
else {
return sign.getSide(Side.BACK).getColor().getColor().asRGB();
}
}
@Override
public boolean isGlowing(Sign sign, boolean isFront) {
if (isFront) {
return sign.getSide(Side.FRONT).isGlowingText();
}
else {
return sign.getSide(Side.BACK).isGlowingText();
}
}
@Override
public boolean isWaxed(Sign sign) {
return sign.isWaxed();
}
}