Skip to content

Commit a9ea8d4

Browse files
committed
Start work on bed option, NOT WORKING YET
1 parent 03947dc commit a9ea8d4

File tree

4 files changed

+69
-10
lines changed

4 files changed

+69
-10
lines changed

src/main/java/simplexity/simplehomes/configs/ConfigHandler.java

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.bukkit.Material;
44
import org.bukkit.configuration.file.FileConfiguration;
5+
import org.bukkit.event.player.PlayerBedEnterEvent;
56
import simplexity.simplehomes.SimpleHomes;
67

78
import java.util.ArrayList;
@@ -12,8 +13,9 @@ public class ConfigHandler {
1213
private static ConfigHandler instance;
1314

1415
private final ArrayList<Material> blacklistedBlocks = new ArrayList<>();
16+
private final ArrayList<PlayerBedEnterEvent.BedEnterResult> allowedResults = new ArrayList<>();
1517
private boolean creativeBypass, invulnerableBypass, mysql, lockoutEnabled, disableHome, disableHomeList,
16-
disableDeleteHome, delayEnabled, cancelOnMove;
18+
disableDeleteHome, delayEnabled, cancelOnMove, bedHomesEnabled;
1719
private String ip, name, username, password;
1820
private int timeInSeconds;
1921
private double bufferMovement;
@@ -27,6 +29,7 @@ public void loadConfigValues() {
2729
SimpleHomes.getInstance().reloadConfig();
2830
FileConfiguration config = SimpleHomes.getInstance().getConfig();
2931
List<String> blockList = config.getStringList("blacklisted-blocks");
32+
List<String> resultList = config.getStringList("bed-home.allowed-results");
3033
creativeBypass = config.getBoolean("safety-bypass.creative", true);
3134
invulnerableBypass = config.getBoolean("safety-bypass.invulnerable", true);
3235
lockoutEnabled = config.getBoolean("lockout.enabled", false);
@@ -37,23 +40,46 @@ public void loadConfigValues() {
3740
cancelOnMove = config.getBoolean("delay.cancel-on-move", true);
3841
timeInSeconds = config.getInt("delay.time-in-seconds", 5);
3942
bufferMovement = config.getDouble("delay.buffer-movement", 0.5);
40-
fillList(blockList, blacklistedBlocks);
43+
bedHomesEnabled = config.getBoolean("bed-home.enabled", true);
44+
fillList(blockList);
45+
verifyEnterEventResults(resultList);
4146
mysql = config.getBoolean("mysql.enabled", false);
4247
ip = config.getString("mysql.ip");
4348
name = config.getString("mysql.name");
4449
username = config.getString("mysql.username");
4550
password = config.getString("mysql.password");
4651
}
4752

48-
private void fillList(List<String> stringList, ArrayList<Material> materialList) {
49-
materialList.clear();
53+
private void fillList(List<String> stringList) {
54+
blacklistedBlocks.clear();
5055
for (String string : stringList) {
5156
Material material = Material.matchMaterial(string);
5257
if (material == null) {
5358
SimpleHomes.getInstance().getLogger().warning(string + " is not a valid material. Please check your config");
5459
continue;
5560
}
56-
materialList.add(material);
61+
blacklistedBlocks.add(material);
62+
}
63+
}
64+
65+
private void verifyEnterEventResults(List<String> stringList) {
66+
allowedResults.clear();
67+
if (stringList.isEmpty()) {
68+
SimpleHomes.getInstance().getLogger().warning(stringList + " is empty. Please check your config, setting default configuration");
69+
allowedResults.add(PlayerBedEnterEvent.BedEnterResult.NOT_POSSIBLE_NOW);
70+
allowedResults.add(PlayerBedEnterEvent.BedEnterResult.NOT_SAFE);
71+
allowedResults.add(PlayerBedEnterEvent.BedEnterResult.OK);
72+
return;
73+
}
74+
for (String string : stringList) {
75+
PlayerBedEnterEvent.BedEnterResult result;
76+
try {
77+
result = PlayerBedEnterEvent.BedEnterResult.valueOf(string);
78+
} catch (IllegalArgumentException e) {
79+
SimpleHomes.getInstance().getLogger().warning(string + " is not a valid event result, please check your config");
80+
continue;
81+
}
82+
allowedResults.add(result);
5783
}
5884
}
5985

@@ -62,6 +88,10 @@ public ArrayList<Material> getBlacklistedBlocks() {
6288
return blacklistedBlocks;
6389
}
6490

91+
public ArrayList<PlayerBedEnterEvent.BedEnterResult> getAllowedResults() {
92+
return allowedResults;
93+
}
94+
6595
public boolean doCreativeBypass() {
6696
return creativeBypass;
6797
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package simplexity.simplehomes.listeners;
2+
3+
import org.bukkit.entity.Player;
4+
import org.bukkit.event.EventHandler;
5+
import org.bukkit.event.Listener;
6+
import org.bukkit.event.player.PlayerBedEnterEvent;
7+
import simplexity.simplehomes.configs.ConfigHandler;
8+
9+
public class BedEnterListener implements Listener {
10+
@EventHandler
11+
public void onBedEnter(PlayerBedEnterEvent enterEvent) {
12+
PlayerBedEnterEvent.BedEnterResult result = enterEvent.getBedEnterResult();
13+
if (!ConfigHandler.getInstance().getAllowedResults().contains(result)) return;
14+
Player player = enterEvent.getPlayer();
15+
if (!player.hasPermission("homes.bed")) return;
16+
//Todo - figure out table stuff for beds vs normal homes
17+
}
18+
}

src/main/resources/config.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,10 @@ delay: # Delay after running the command to teleporting
2323
enabled: false
2424
time-in-seconds: 5
2525
cancel-on-move: true
26-
buffer: 0.5
26+
buffer: 0.5
27+
bed-home: #set a home when interacting with a bed
28+
enabled: true
29+
allowed-results: #results on interaction with a bed to set a home automatically with. https://jd.papermc.io/paper/1.21.3/org/bukkit/event/player/PlayerBedEnterEvent.BedEnterResult.html
30+
- OK
31+
- NOT_POSSIBLE_NOW
32+
- NOT_SAFE

src/main/resources/plugin.yml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,16 @@ permissions:
5353
description: allows for setting infinite homes regardless of how many you have set as the max
5454
children:
5555
homes.count: true
56-
homes.reload:
57-
default: op
58-
description: allows reloading the config
5956
homes.commands.list:
6057
default: op
6158
description: allows you to list your own homes
6259
children:
6360
homes.commands: true
61+
homes.bed:
62+
default: op
63+
description: sets a home at your bed when you interact with it
64+
children:
65+
homes.commands: true
6466
homes.safety.bypass:
6567
default: false
6668
description: allows bypassing the safety checks
@@ -69,4 +71,7 @@ permissions:
6971
description: bypasses the delay for teleportation to homes
7072
homes.import:
7173
default: op
72-
description: this permission does nothing outside of prevent this command from being shown to players, granting the permission to someone will still not allow them to run the command
74+
description: this permission does nothing outside of prevent this command from being shown to players, granting the permission to someone will still not allow them to run the command
75+
homes.reload:
76+
default: op
77+
description: allows reloading the config

0 commit comments

Comments
 (0)