Skip to content

Commit 7690c74

Browse files
committed
Fix final bugs
1 parent 4b45d07 commit 7690c74

File tree

11 files changed

+131
-29
lines changed

11 files changed

+131
-29
lines changed

API/src/main/java/me/ifydev/dimensify/api/DimensifyConstants.java

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,11 @@ public class DimensifyConstants {
4444
public static final String NOT_ENOUGH_ARGUMENTS_SEND_PLAYER = NOT_ENOUGH_ARGUMENTS_BASE + "/dimensify send <player> <dimension>";
4545
public static final String NOT_ENOUGH_ARGUMENTS_GO = NOT_ENOUGH_ARGUMENTS_BASE + "/dimensify go <dimension>";
4646
public static final String NOT_ENOUGH_ARGUMENTS_DELETE = NOT_ENOUGH_ARGUMENTS_BASE + "/dimensify delete <dimension>";
47-
public static final String NOT_ENOUGH_ARGUMENTS_PORTAL = NOT_ENOUGH_ARGUMENTS_BASE + "/dimensify <create|delete|link> [args...]";
48-
public static final String NOT_ENOUGH_ARGUMENTS_PORTAL_LINK = NOT_ENOUGH_ARGUMENTS_BASE + "/dimensify link <source_portal> <destination_dimension>";
47+
public static final String NOT_ENOUGH_ARGUMENTS_PORTAL = NOT_ENOUGH_ARGUMENTS_BASE + "/dimensify portal <create|delete|link> [args...]";
48+
public static final String NOT_ENOUGH_ARGUMENTS_PORTAL_LINK = NOT_ENOUGH_ARGUMENTS_BASE + "/dimensify portal link <source_portal> <destination_dimension>";
4949
public static final String NOT_ENOUGH_ARGUMENTS_PORTAL_CREATE = NOT_ENOUGH_ARGUMENTS_BASE + "/dimensify portal create <name>";
5050
public static final String NOT_ENOUGH_ARGUMENTS_PORTAL_DELETE = NOT_ENOUGH_ARGUMENTS_BASE + "/dimensify portal delete <name>";
51+
public static final String NOT_ENOUGH_ARGUMENTS_UNLOAD_DIMENSION = NOT_ENOUGH_ARGUMENTS_BASE + "/dimensify unload <world> [save_map?]";
5152

5253
// General errors
5354
public static final String DATABASE_HANDLER_NOT_PRESENT = DIMENSIFY_PREFIX + "&c&lUnable to continue: Database handler not present?!";
@@ -68,6 +69,8 @@ public class DimensifyConstants {
6869
public static final String COULD_NOT_CONNECT_TO_DATABASE = DIMENSIFY_PREFIX + "&c&lCannot connect to the database!";
6970
public static final String CANNOT_ENTER_THIS_DIMENSION = DIMENSIFY_PREFIX + "&c&lYou don't have permission to enter this domain!";
7071
public static final String THIS_DIMENSION_DOES_NOT_EXIST_ANYMORE = DIMENSIFY_PREFIX + "&c&lThis dimension does not exist anymore!";
72+
public static final String COULD_NOT_SET_DEFAULT_WORLD = DIMENSIFY_PREFIX + "&2&lCould not set default world.";
73+
public static final String COULD_NOT_UNLOAD_DIMENSION = DIMENSIFY_PREFIX + "&2&lCould not unload dimension!";
7174

7275
// General success
7376
public static final String CREATING_WORLD = DIMENSIFY_PREFIX + "World '<WORLD>' is being created...";
@@ -78,12 +81,14 @@ public class DimensifyConstants {
7881
public static final String PORTALS_LINKED = DIMENSIFY_PREFIX + "Portals have been linked!";
7982
public static final String PORTAL_CREATED = DIMENSIFY_PREFIX + "Portal '<PORTAL>' created!";
8083
public static final String PORTAL_DELETED = DIMENSIFY_PREFIX + "Portal '<PORTAL>' has been deleted!";
81-
public static final String PORTAL_LIST_FORMAT = "&2&l<NAME> - &9&lX: <X>, Y: <Y>, Z: <Z> - &e&lDimension: <DIMENSION> - &3&lDestination: <DESTINATION>";
82-
public static final String DIMENSION_LIST_FORMAT = "&2&l<NAME> - Type: <TYPE> - Default?: <DEFAULT>";
84+
public static final String PORTAL_LIST_FORMAT = "&3&l<NAME> &8- &E&lX: <X>, Y: <Y>, Z: <Z> &8- &2&lDimension: <DIMENSION> &8- &5&lDestination: <DESTINATION>";
85+
public static final String DIMENSION_LIST_FORMAT = "&3&l<NAME> &8- &5&lType: <TYPE> &8- &2&lDefault?: <DEFAULT>";
8386
public static final String THERE_ARE_NONE = DIMENSIFY_PREFIX + "&2&lThere are no <ITEM>!";
8487
public static final String DEFAULT_WORLD_FORMAT = DIMENSIFY_PREFIX + "&2&lDefault world: <WORLD>";
8588
public static final String DEFAULT_WORLD_SET = DIMENSIFY_PREFIX + "&2&lDefault world set to: <WORLD>!";
86-
public static final String COULD_NOT_SET_DEFAULT_WORLD = DIMENSIFY_PREFIX + "&2&lCould not set default world.";
89+
public static final String DIMENSION_UNLOADED = DIMENSIFY_PREFIX + "&2&lDimension '<NAME>' unloaded!";
90+
public static final String CACHE_FORMAT = DIMENSIFY_PREFIX + "&2&lCache Status: &e&lDimensions: <DIMENSIONS> &8&l- &e&lPortals <PORTALS>";
91+
public static final String CACHE_PURGED = DIMENSIFY_PREFIX + "&2&lCache has been purged!";
8792

8893
// Permissions
8994
public static final String DIMENSIFY_ADMIN = "dimensify.admin";
@@ -99,21 +104,29 @@ public class DimensifyConstants {
99104
public static final String DIMENSIFY_GO = "dimensify.go";
100105
public static final String DIMENSIFY_SEND = "dimensify.send";
101106
public static final String DIMENSIFY_PORTAL = "dimensify.command.portal";
107+
public static final String DIMENSIFY_UNLOAD = "dimensify.dimension.unload";
108+
public static final String DIMENSIFY_CACHE = "dimensify.cache";
102109

103110
// Help response
104111
// TODO: This should automatically paginate.
105112
public static final String DIMENSIFY_HELP_HEADER = "&e================== &a&lDimensify Help &e==================";
106113
public static final String DIMENSIFY_HELP_FOOTER = "&e=====================================================";
107114
public static final List<List<String>> HELP_RESPONSE = Arrays.asList(
108115
Arrays.asList(
109-
"&a&l/dimensify create <dimension_type> <world_name>",
110-
"&a&l/dimensify send <player> <world_name>",
111-
"&a&l/dimensify go <world_name>",
112-
"&a&l/dimensify delete <world_name>",
113-
"&a&l/dimensify default [world_name]",
116+
"&a&l/dimensify create <dimension_type> <world_name> [args...]",
117+
"&a&l/dimensify send <player> <dimension>",
118+
"&a&l/dimensify go <dimension>",
119+
"&a&l/dimensify delete <dimension>",
120+
"&a&l/dimensify portal link <source_portal> <destination_dimension>",
121+
"&a&l/dimensify portal <create|delete> <name>",
122+
"&a&l/dimensify portal list",
123+
"&a&l/dimensify list"
124+
),
125+
Arrays.asList(
126+
"&a&l/dimensify unload <world> [save_map?]",
127+
"&a&l/dimensify cache [purge]",
114128
"&a&l/dimensify list",
115-
"&a&l/dimensify link <source_portal> <destination_dimension>",
116-
"&a&l/dimensify portal <list|link|create|remove> [args...]"
129+
"&a&l/dimensify default [world]"
117130
)
118131
);
119132

API/src/main/java/me/ifydev/dimensify/api/backend/AbstractDataHandler.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ public abstract class AbstractDataHandler {
1616

1717
protected List<Dimension> dimensions = new ArrayList<>();
1818
protected List<PortalMeta> portals = new ArrayList<>();
19-
protected Map<String, String> destinations = new HashMap<>();
2019
@Getter protected final ConnectionInformation connectionInformation;
2120

2221
/**
@@ -43,7 +42,7 @@ public abstract class AbstractDataHandler {
4342

4443
public abstract boolean createPortal(PortalMeta meta);
4544
public abstract boolean removePortal(String name);
46-
public abstract List<PortalMeta> getPortals();
45+
public abstract List<PortalMeta> getPortals(boolean skipCache);
4746

4847
public abstract boolean setPortalDestination(String portal, String destination);
4948

API/src/main/java/me/ifydev/dimensify/api/backend/impl/SQLHandler.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public boolean connect() {
112112
public void reload() {
113113
this.drop();
114114

115-
this.portals = this.getPortals();
115+
this.portals = this.getPortals(true);
116116
this.dimensions = this.getDimensions(true);
117117
}
118118

@@ -181,7 +181,9 @@ public boolean removePortal(String name) {
181181
}
182182

183183
@Override
184-
public List<PortalMeta> getPortals() {
184+
public List<PortalMeta> getPortals(boolean skipCache) {
185+
if (!skipCache) return portals;
186+
185187
Optional<Connection> connection = getConnection();
186188
if (!connection.isPresent()) return Collections.emptyList();
187189

@@ -212,7 +214,9 @@ public boolean setPortalDestination(String portal, String destination) {
212214
return false;
213215
}
214216

215-
this.destinations.put(portal, destination);
217+
Optional<PortalMeta> meta = this.getPortal(portal);
218+
if (!meta.isPresent()) return false;
219+
meta.get().setDestination(Optional.of(destination));
216220

217221
try {
218222
PreparedStatement statement = connection.get().prepareStatement("UPDATE portals SET destination=? WHERE `name`=?");

API/src/main/java/me/ifydev/dimensify/api/dimensions/Dimension.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,14 @@ public class Dimension {
1818
private String type;
1919
private Optional<String> meta;
2020
@Setter private boolean isDefault;
21+
22+
@Override
23+
public String toString() {
24+
return "Dimension [" +
25+
"name=" + name +
26+
", type=" + type +
27+
", meta=" + meta +
28+
", isDefault=" + isDefault +
29+
"]";
30+
}
2131
}

DimensifySpigot/src/main/java/me/ifydev/dimensifyspigot/backend/SpigotFlatFileHandler.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,9 @@ public boolean connect() {
7676
public void reload() {
7777
this.drop();
7878

79-
this.portals = this.getPortals();
79+
this.portals = this.getPortals(true);
8080
this.dimensions = this.getDimensions(true);
81+
System.out.println(dimensions);
8182
}
8283

8384
@Override
@@ -121,7 +122,6 @@ public boolean removePortal(String name) {
121122

122123
// Remove the portal from all caches
123124
this.portals.remove(meta.get());
124-
this.destinations.remove(name);
125125

126126
// Remove the portal from the configs
127127
storage.set("portal." + name, null);
@@ -132,7 +132,9 @@ public boolean removePortal(String name) {
132132
}
133133

134134
@Override
135-
public List<PortalMeta> getPortals() {
135+
public List<PortalMeta> getPortals(boolean skipCache) {
136+
if (!skipCache) return portals;
137+
136138
ConfigurationSection portalSection = storage.getConfigurationSection("portal");
137139
List<PortalMeta> portals = new ArrayList<>();
138140
if (portalSection == null) return portals;
@@ -170,7 +172,9 @@ public List<PortalMeta> getPortals() {
170172

171173
@Override
172174
public boolean setPortalDestination(String portal, String destination) {
173-
this.destinations.put(portal, destination);
175+
Optional<PortalMeta> meta = this.getPortal(portal);
176+
if (!meta.isPresent()) return false;
177+
meta.get().setDestination(Optional.of(destination));
174178

175179
storage.set("link." + portal, destination);
176180
saveStorage();
@@ -213,14 +217,17 @@ public List<Dimension> getDimensions(boolean skipCache) {
213217
if (!skipCache) return this.dimensions;
214218

215219
ConfigurationSection dimensions = storage.getConfigurationSection("dimensions");
220+
System.out.println(dimensions == null);
216221
List<Dimension> loadedDimensions = new ArrayList<>();
217222

218223
if (dimensions == null) return loadedDimensions;
219224

220225
dimensions.getKeys(false).forEach(dimension -> {
221-
if (!dimensions.isString(dimension + ".name") || !dimensions.isString(dimension + "type") ||
222-
!dimensions.isString(dimension + "meta") || !dimensions.isBoolean(dimension + "default")) {
226+
System.out.println(dimension);
227+
if (!dimensions.isString(dimension + ".name") || !dimensions.isString(dimension + ".type") ||
228+
!dimensions.isString(dimension + ".meta") || !dimensions.isBoolean(dimension + ".default")) {
223229
// This isn't a valid dimension.
230+
System.out.println("TEINRSOTNRSTENRSOTEINRSETNRSTONRST");
224231
return;
225232
}
226233
String name = dimensions.getString(dimension + ".name");
@@ -230,7 +237,9 @@ public List<Dimension> getDimensions(boolean skipCache) {
230237
boolean isDefault = dimensions.getBoolean(dimension + ".default");
231238

232239
loadedDimensions.add(new Dimension(name, type, Optional.ofNullable(meta), isDefault));
240+
System.out.println(loadedDimensions);
233241
});
242+
System.out.println("============================\n" + loadedDimensions);
234243
return loadedDimensions;
235244
}
236245

DimensifySpigot/src/main/java/me/ifydev/dimensifyspigot/commands/DimensifyCommand.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,36 @@ public boolean onCommand(CommandSender sender, Command command, String s, String
220220
response = ColorUtil.makeReadable(response);
221221
sender.sendMessage(response);
222222
return;
223+
} else if (args[0].equalsIgnoreCase("cache")) {
224+
if (!sender.hasPermission(DimensifyConstants.DIMENSIFY_CACHE)) {
225+
sender.sendMessage(ColorUtil.makeReadable(DimensifyConstants.YOU_DONT_HAVE_PERMISSION));
226+
return;
227+
}
228+
229+
boolean purge = args.length >= 2 && args[1].equalsIgnoreCase("purge");
230+
231+
String result = purge ? BasicHandler.purgeCache() : BasicHandler.cacheStatus();
232+
result = ColorUtil.makeReadable(result);
233+
234+
sender.sendMessage(result);
235+
return;
236+
} else if (args[0].equalsIgnoreCase("unload")) {
237+
if (!sender.hasPermission(DimensifyConstants.DIMENSIFY_UNLOAD)) {
238+
sender.sendMessage(ColorUtil.makeReadable(DimensifyConstants.YOU_DONT_HAVE_PERMISSION));
239+
return;
240+
}
241+
242+
if (args.length < 2) {
243+
sender.sendMessage(ColorUtil.makeReadable(DimensifyConstants.NOT_ENOUGH_ARGUMENTS_UNLOAD_DIMENSION));
244+
return;
245+
}
246+
String dimension = args[1];
247+
boolean save = !(args.length >= 3 && args[2].equalsIgnoreCase("false"));
248+
Bukkit.getScheduler().runTask(plugin, () -> {
249+
String result = ColorUtil.makeReadable(BasicHandler.unloadDimension(dimension, save));
250+
sender.sendMessage(result);
251+
});
252+
return;
223253
}
224254
// Send help
225255
sender.sendMessage(ColorUtil.makeReadable(DimensifyConstants.DIMENSIFY_HELP_HEADER));

DimensifySpigot/src/main/java/me/ifydev/dimensifyspigot/commands/handlers/BasicHandler.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,4 +158,31 @@ public static String setOrGetDefaultWorld(Optional<String> world) {
158158
boolean result = db.get().setDefaultDimension(world.get());
159159
return result ? DimensifyConstants.DEFAULT_WORLD_SET.replace("<WORLD>", world.get()) : DimensifyConstants.COULD_NOT_SET_DEFAULT_WORLD;
160160
}
161+
162+
public static String unloadDimension(String dimension, boolean save) {
163+
boolean result = Bukkit.unloadWorld(dimension, save);
164+
return result ? DimensifyConstants.DIMENSION_UNLOADED.replace("<NAME>", dimension) : DimensifyConstants.COULD_NOT_UNLOAD_DIMENSION;
165+
}
166+
167+
public static String cacheStatus() {
168+
DimensifyMain plugin = DimensifyMain.get();
169+
Optional<AbstractDataHandler> db = plugin.getApi().getDatabaseHandler();
170+
if (!db.isPresent()) return DimensifyConstants.DATABASE_HANDLER_NOT_PRESENT;
171+
172+
int dimensions = db.get().getDimensions(false).size();
173+
int portals = db.get().getPortals(false).size();
174+
175+
return DimensifyConstants.CACHE_FORMAT
176+
.replace("<DIMENSIONS>", String.valueOf(dimensions))
177+
.replace("<PORTALS>", String.valueOf(portals));
178+
}
179+
180+
public static String purgeCache() {
181+
DimensifyMain plugin = DimensifyMain.get();
182+
Optional<AbstractDataHandler> db = plugin.getApi().getDatabaseHandler();
183+
if (!db.isPresent()) return DimensifyConstants.DATABASE_HANDLER_NOT_PRESENT;
184+
185+
db.get().reload();
186+
return DimensifyConstants.CACHE_PURGED;
187+
}
161188
}

DimensifySpigot/src/main/java/me/ifydev/dimensifyspigot/commands/handlers/PortalHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public static List<String> listPortals() {
7575
Optional<AbstractDataHandler> db = plugin.getApi().getDatabaseHandler();
7676
if (!db.isPresent()) return Collections.singletonList(DimensifyConstants.DATABASE_HANDLER_NOT_PRESENT);
7777

78-
List<PortalMeta> portals = db.get().getPortals();
78+
List<PortalMeta> portals = db.get().getPortals(false);
7979
return portals.stream().map(portal -> DimensifyConstants.PORTAL_LIST_FORMAT
8080
.replace("<NAME>", portal.getName())
8181
.replace("<X>", String.valueOf(portal.getX1()))

DimensifySpigot/src/main/java/me/ifydev/dimensifyspigot/events/PlayerPortal.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public void onPlayerAboutToTeleportEvent(PlayerPortalEvent e) {
3636
return;
3737
}
3838
WorldController.enterDimension(player, dimension.get());
39+
// Make sure the player won't get damaged for no reason
40+
player.setFallDistance(0);
3941
});
4042
}
4143
}

DimensifySpigot/src/main/java/me/ifydev/dimensifyspigot/portal/PortalRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public Optional<SpigotPortalMeta> findCornersFromPosition(Location location) {
1717
DimensifyMain plugin = DimensifyMain.get();
1818
if (!plugin.getApi().getDatabaseHandler().isPresent()) return Optional.empty();
1919

20-
List<PortalMeta> portalCorners = plugin.getApi().getDatabaseHandler().get().getPortals();
20+
List<PortalMeta> portalCorners = plugin.getApi().getDatabaseHandler().get().getPortals(false);
2121
for (PortalMeta regularMeta : portalCorners) {
2222
SpigotPortalMeta meta = new SpigotPortalMeta(regularMeta.getName(), regularMeta.getX1(), regularMeta.getX2(),
2323
regularMeta.getY1(), regularMeta.getY2(), regularMeta.getZ1(), regularMeta.getZ2(),

0 commit comments

Comments
 (0)