Skip to content

Commit

Permalink
RE-188 Fixed Protection Enum
Browse files Browse the repository at this point in the history
  • Loading branch information
Relluem94 committed Apr 20, 2024
1 parent 608ef13 commit fea2ecb
Show file tree
Hide file tree
Showing 11 changed files with 112 additions and 28 deletions.
1 change: 1 addition & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 22 additions & 9 deletions .idea/dbnavigator.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ private String getFlags() {
StringBuilder sb = new StringBuilder();
sb.append("Available Flags: ");
for (ProtectionFlags flag : flags) {
sb.append(flag.getName()).append(" ");
sb.append(flag.name()).append(" ");
}
return sb.toString();
}
Expand Down Expand Up @@ -78,7 +78,7 @@ public boolean onCommand(@NonNull CommandSender sender, @NonNull Command command
if (ProtectionFlags.valueOf(args[2].toUpperCase()) != null) {
p.sendMessage(PLUGIN_COMMAND_PROTECT_FLAG_ADD);
pe.setPlayerState(PlayerState.PROTECTION_FLAG_ADD);
pe.setPlayerStateParameter(ProtectionFlags.valueOf(args[2].toUpperCase()).getName());
pe.setPlayerStateParameter(ProtectionFlags.valueOf(args[2].toUpperCase()).name());
}
} catch (IllegalArgumentException ex) {
p.sendMessage(PLUGIN_COMMAND_PROTECT_FLAG_NOT_FOUND);
Expand All @@ -89,7 +89,7 @@ public boolean onCommand(@NonNull CommandSender sender, @NonNull Command command
if (ProtectionFlags.valueOf(args[2].toUpperCase()) != null) {
p.sendMessage(PLUGIN_COMMAND_PROTECT_FLAG_REMOVE);
pe.setPlayerState(PlayerState.PROTECTION_FLAG_REMOVE);
pe.setPlayerStateParameter(ProtectionFlags.valueOf(args[2].toUpperCase()).getName());
pe.setPlayerStateParameter(ProtectionFlags.valueOf(args[2].toUpperCase()).name());
}
} catch (IllegalArgumentException ex) {
p.sendMessage(PLUGIN_COMMAND_PROTECT_FLAG_NOT_FOUND);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,15 @@

@Getter
public enum ProtectionFlags {
ALLOW_HOPPER("allowHopper", false),
ALLOW_REDSTONE("allowRedstone", false),
ALLOW_PUBLIC("allowPublic", false),
AUTO_CLOSE("autoClose", false);
ALLOW_HOPPER(false),
ALLOW_REDSTONE(false),
ALLOW_PUBLIC(false),
AUTO_CLOSE(false);


private final String name;
private final boolean isDefault;

ProtectionFlags(String name, boolean isDefault){
this.name = name;
ProtectionFlags(boolean isDefault){
this.isDefault = isDefault;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ else if(b3.getBlockData() instanceof Chest cd3){

JSONObject flags = new JSONObject();
if(b.getType().equals(Material.LEVER) || b.getType().equals(Material.IRON_DOOR)){
String[] flag = {ProtectionFlags.ALLOW_REDSTONE.getName()};
String[] flag = {ProtectionFlags.ALLOW_REDSTONE.name()};
flags.put(PLUGIN_EVENT_PROTECT_FLAGS, flag);
}
bpe.setFlags(flags);
Expand Down Expand Up @@ -538,7 +538,7 @@ else if(pe.getPlayerState().equals(PlayerState.PROTECTION_FLAG_REMOVE)){
if(pre.getFlags().has(PLUGIN_EVENT_PROTECT_FLAGS)){
JSONArray flagJSON = pre.getFlags().getJSONArray(PLUGIN_EVENT_PROTECT_FLAGS);

String flag = ProtectionFlags.valueOf(((String)pe.getPlayerStateParameter()).toUpperCase()).getName();
String flag = ProtectionFlags.valueOf(((String)pe.getPlayerStateParameter()).toUpperCase()).name();
List<Object> list = flagJSON.toList();
if(list.contains(flag)){
update = true;
Expand Down Expand Up @@ -582,11 +582,11 @@ else if(pe.getPlayerState().equals(PlayerState.PROTECTION_FLAG_ADD)){
JSONArray flagJSON = pre.getFlags().getJSONArray(PLUGIN_EVENT_PROTECT_FLAGS);

List<Object> list = flagJSON.toList();
String flag = ProtectionFlags.valueOf(((String)pe.getPlayerStateParameter()).toUpperCase()).getName();
String flag = ProtectionFlags.valueOf(((String)pe.getPlayerStateParameter()).toUpperCase()).name();

if(!list.contains(flag)){
update = true;
list.add(ProtectionFlags.valueOf(((String)pe.getPlayerStateParameter()).toUpperCase()).getName());
list.add(ProtectionFlags.valueOf(((String)pe.getPlayerStateParameter()).toUpperCase()).name());
}

JSONObject flags = new JSONObject();
Expand All @@ -597,11 +597,11 @@ else if(pe.getPlayerState().equals(PlayerState.PROTECTION_FLAG_ADD)){
else{
JSONObject flags = new JSONObject();
if(Objects.requireNonNull(b).getType().equals(Material.LEVER) || b.getType().equals(Material.IRON_DOOR)){
String[] flag = {ProtectionFlags.ALLOW_REDSTONE.getName(),ProtectionFlags.valueOf(((String)pe.getPlayerStateParameter()).toUpperCase()).getName()};
String[] flag = {ProtectionFlags.ALLOW_REDSTONE.name(),ProtectionFlags.valueOf(((String)pe.getPlayerStateParameter()).toUpperCase()).name()};
flags.put(PLUGIN_EVENT_PROTECT_FLAGS, flag);
}
else{
String[] flag = {ProtectionFlags.valueOf(((String)pe.getPlayerStateParameter()).toUpperCase()).getName()};
String[] flag = {ProtectionFlags.valueOf(((String)pe.getPlayerStateParameter()).toUpperCase()).name()};
flags.put(PLUGIN_EVENT_PROTECT_FLAGS, flag);
}
update = true;
Expand Down Expand Up @@ -890,7 +890,7 @@ public void onBlockRedstoneChange(BlockRedstoneEvent e) {

if (protection != null){
JSONObject flags = protection.getFlags();
boolean isAllowed = (!flags.isEmpty() && flags.has(PLUGIN_EVENT_PROTECT_FLAGS) && flags.getJSONArray(PLUGIN_EVENT_PROTECT_FLAGS).toList().contains(ProtectionFlags.ALLOW_REDSTONE.getName()));
boolean isAllowed = (!flags.isEmpty() && flags.has(PLUGIN_EVENT_PROTECT_FLAGS) && flags.getJSONArray(PLUGIN_EVENT_PROTECT_FLAGS).toList().contains(ProtectionFlags.ALLOW_REDSTONE.name()));
if(!isAllowed){
e.setNewCurrent(e.getOldCurrent());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,16 @@ private void patch8() {
executeScript(v + UPDATE_OLD_PLUGIN_INFORMATION);
}

private void patch9() {
String v = "patches/v9/";

executeScript(v + "updateProtections.sql");
executeScript(v + "fixProtections.sql");

executeScript(v + INSERT_NEW_DB_VERSION);
executeScript(v + UPDATE_OLD_PLUGIN_INFORMATION);
}

public void init() {
applyPatch(getPluginInformation().getDbVersion());
}
Expand All @@ -296,6 +306,7 @@ private void applyPatch(int version) {
patch6();
patch7();
patch8();
patch9();
break;
case 1:
patch2();
Expand All @@ -305,6 +316,7 @@ private void applyPatch(int version) {
patch6();
patch7();
patch8();
patch9();
break;
case 2:
patch3();
Expand All @@ -313,31 +325,40 @@ private void applyPatch(int version) {
patch6();
patch7();
patch8();
patch9();
break;
case 3:
patch4();
patch5();
patch6();
patch7();
patch8();
patch9();
break;
case 4:
patch5();
patch6();
patch7();
patch8();
patch9();
break;
case 5:
patch6();
patch7();
patch8();
patch9();
break;
case 6:
patch7();
patch8();
patch9();
break;
case 7:
patch8();
patch9();
break;
case 8:
patch9();
break;
default:
// To add Scripts in Development without its own patch version
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ public static boolean hasPermission(ProtectionEntry pre, Player p){
public static boolean hasFlag(ProtectionEntry protection, ProtectionFlags flag) {
JSONObject flags = protection.getFlags();
return(
(!flags.isEmpty() && flags.has(PLUGIN_EVENT_PROTECT_FLAGS) && flags.get(PLUGIN_EVENT_PROTECT_FLAGS) instanceof JSONArray && flags.getJSONArray(PLUGIN_EVENT_PROTECT_FLAGS).toList().contains(flag.getName())) ||
!flags.isEmpty() && flags.has(PLUGIN_EVENT_PROTECT_FLAGS) && flags.get(PLUGIN_EVENT_PROTECT_FLAGS) instanceof String && flags.get(PLUGIN_EVENT_PROTECT_FLAGS).equals(flag.getName())
(!flags.isEmpty() && flags.has(PLUGIN_EVENT_PROTECT_FLAGS) && flags.get(PLUGIN_EVENT_PROTECT_FLAGS) instanceof JSONArray && flags.getJSONArray(PLUGIN_EVENT_PROTECT_FLAGS).toList().contains(flag.name())) ||
!flags.isEmpty() && flags.has(PLUGIN_EVENT_PROTECT_FLAGS) && flags.get(PLUGIN_EVENT_PROTECT_FLAGS) instanceof String && flags.get(PLUGIN_EVENT_PROTECT_FLAGS).equals(flag.name())
);
}

Expand Down
11 changes: 11 additions & 0 deletions src/main/resources/sqls/patches/v9/fixProtections.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
UPDATE protections
SET flags = CASE
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[0]')) IS NOT NULL THEN
JSON_SET(flags, '$.flags', JSON_ARRAY(JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[0]'))))
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[1]')) IS NOT NULL THEN
JSON_SET(flags, '$.flags', JSON_ARRAY(JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[0]')), JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[1]'))))
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[0]')) IS NOT NULL THEN
JSON_SET(flags, '$.flags', JSON_ARRAY(JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[0]'))))
ELSE
JSON_SET(flags, '$.flags', JSON_ARRAY())
END;
6 changes: 6 additions & 0 deletions src/main/resources/sqls/patches/v9/insertNewDBVersion.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/**
* Author: rellu
* Created: 19.02.2023
*/

INSERT INTO `plugin_informations` (`CREATED`, `CREATEDBY`, `tab_header`, `tab_footer`, `motd_message`, `motd_players`, `db_version`) SELECT now(), 1, tab_header, tab_footer, motd_message, motd_players, 9 FROM `plugin_informations` where deletedby is null;
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/**
* Author: rellu
* Created: 19.02.2023
*/

UPDATE `plugin_informations` SET `deleted` = now(), `deletedby` = 1 WHERE `plugin_informations`.`DELETEDBY` IS NULL and `db_version` <> 9 ;
28 changes: 28 additions & 0 deletions src/main/resources/sqls/patches/v9/updateProtections.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
UPDATE protections
SET flags = JSON_SET(
flags,
'$.flags',
JSON_ARRAY(
CASE
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[0]')) = 'allowHopper' THEN 'ALLOW_HOPPER'
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[0]')) = 'allowPublic' THEN 'ALLOW_PUBLIC'
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[0]')) = 'allowRedstone' THEN 'ALLOW_REDSTONE'
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[0]')) = 'autoClose' THEN 'AUTO_CLOSE'
ELSE JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[0]'))
END,
CASE
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[1]')) = 'allowHopper' THEN 'ALLOW_HOPPER'
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[1]')) = 'allowPublic' THEN 'ALLOW_PUBLIC'
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[1]')) = 'allowRedstone' THEN 'ALLOW_REDSTONE'
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[1]')) = 'autoClose' THEN 'AUTO_CLOSE'
ELSE JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[1]'))
END,
CASE
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[2]')) = 'allowHopper' THEN 'ALLOW_HOPPER'
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[2]')) = 'allowPublic' THEN 'ALLOW_PUBLIC'
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[2]')) = 'allowRedstone' THEN 'ALLOW_REDSTONE'
WHEN JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[2]')) = 'autoClose' THEN 'AUTO_CLOSE'
ELSE JSON_UNQUOTE(JSON_EXTRACT(flags, '$.flags[2]'))
END
)
);

0 comments on commit fea2ecb

Please sign in to comment.