Skip to content

Commit 57c108d

Browse files
committed
Update for compatibility with HuskHomes v4
1 parent c2cfe63 commit 57c108d

File tree

2 files changed

+46
-28
lines changed

2 files changed

+46
-28
lines changed

bukkit/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ dependencies {
1313
compileOnly 'commons-io:commons-io:2.11.0'
1414
compileOnly 'net.william278:Annotaml:2.0.1'
1515
compileOnly 'net.william278:DesertWell:1.1.1'
16-
compileOnly 'net.william278:HuskHomes2:3.2.1'
16+
compileOnly 'net.william278:HuskHomes2:4.0.2'
1717
compileOnly 'com.github.MilkBowl:VaultAPI:1.7.1'
1818
compileOnly 'com.github.Emibergo02:RedisEconomy:4.0-SNAPSHOT'
1919
compileOnly 'net.luckperms:api:5.4'

bukkit/src/main/java/net/william278/husktowns/hook/HuskHomesHook.java

Lines changed: 45 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package net.william278.husktowns.hook;
22

33
import net.william278.huskhomes.api.HuskHomesAPI;
4-
import net.william278.huskhomes.event.HomeSaveEvent;
5-
import net.william278.huskhomes.position.Server;
6-
import net.william278.huskhomes.position.World.Environment;
7-
import net.william278.huskhomes.teleport.TimedTeleport;
4+
import net.william278.huskhomes.event.HomeCreateEvent;
5+
import net.william278.huskhomes.event.HomeEditEvent;
6+
import net.william278.huskhomes.teleport.TeleportationException;
7+
import net.william278.huskhomes.user.CommandUser;
88
import net.william278.husktowns.BukkitHuskTowns;
99
import net.william278.husktowns.HuskTowns;
1010
import net.william278.husktowns.claim.Position;
@@ -38,37 +38,55 @@ public void onEnable() {
3838

3939
@Override
4040
public void teleport(@NotNull OnlineUser user, @NotNull Position position, @NotNull String server) {
41-
getHuskHomes().ifPresent(api -> api.teleportBuilder(api.adaptUser(((BukkitUser) user).getPlayer()))
42-
.setTarget(new net.william278.huskhomes.position.Position(
43-
position.getX(),
44-
position.getY(),
45-
position.getZ(),
46-
position.getYaw(),
47-
position.getPitch(),
48-
new net.william278.huskhomes.position.World(position.getWorld().getName(), position.getWorld().getUuid()),
49-
new Server(server)
50-
))
51-
.toTimedTeleport()
52-
.thenAccept(TimedTeleport::execute));
41+
try {
42+
getHuskHomes().ifPresent(api -> api.teleportBuilder(api.adaptUser(((BukkitUser) user).getPlayer()))
43+
.target(net.william278.huskhomes.position.Position.at(
44+
position.getX(),
45+
position.getY(),
46+
position.getZ(),
47+
position.getYaw(),
48+
position.getPitch(),
49+
net.william278.huskhomes.position.World.from(position.getWorld().getName(), position.getWorld().getUuid()),
50+
server
51+
))
52+
.toTimedTeleport().execute());
53+
} catch (TeleportationException e) {
54+
plugin.getLocales().getLocale("error_town_spawn_not_set")
55+
.ifPresent(user::sendMessage);
56+
}
5357
}
5458

5559
@EventHandler(ignoreCancelled = true)
56-
public void onPlayerSetHome(@NotNull HomeSaveEvent event) {
57-
final Optional<? extends OnlineUser> user = plugin.getOnlineUsers().stream()
58-
.filter(online -> online.getUuid().equals(event.getHome().owner.uuid)).findFirst();
59-
if (user.isEmpty()) {
60-
return;
60+
public void onPlayerSetHome(@NotNull HomeCreateEvent event) {
61+
if (this.cancelEvent(event.getCreator(), event.getPosition())) {
62+
event.setCancelled(true);
6163
}
62-
final Environment environment = event.getHome().world.environment == null ? Environment.CUSTOM : event.getHome().world.environment;
63-
final Position position = Position.at(event.getHome().x, event.getHome().y, event.getHome().z,
64-
World.of(event.getHome().world.uuid, event.getHome().world.name,
65-
environment.name().toLowerCase()));
66-
if (plugin.getOperationHandler().cancelOperation(Operation
67-
.of(user.get(), Operation.Type.BLOCK_INTERACT, position))) {
64+
}
65+
66+
@EventHandler(ignoreCancelled = true)
67+
public void onPlayerRelocateHome(@NotNull HomeEditEvent event) {
68+
if (this.cancelEvent(event.getEditor(), event.getHome())) {
6869
event.setCancelled(true);
6970
}
7071
}
7172

73+
private boolean cancelEvent(@NotNull CommandUser creator, @NotNull net.william278.huskhomes.position.Position home) {
74+
final Optional<? extends OnlineUser> user = creator instanceof net.william278.huskhomes.user.OnlineUser online ?
75+
plugin.getOnlineUsers().stream().filter(u -> u.getUuid().equals(online.getUuid())).findFirst() :
76+
Optional.empty();
77+
if (user.isEmpty()) {
78+
return false;
79+
}
80+
81+
final net.william278.huskhomes.position.World world = home.getWorld();
82+
final Position position = Position.at(home.getX(), home.getY(), home.getZ(),
83+
World.of(world.getUuid(), world.getName(), world.getEnvironment().name()),
84+
home.getYaw(), home.getPitch());
85+
86+
return plugin.getOperationHandler().cancelOperation(Operation
87+
.of(user.get(), Operation.Type.BLOCK_INTERACT, position));
88+
}
89+
7290
private Optional<HuskHomesAPI> getHuskHomes() {
7391
return Optional.ofNullable(api);
7492
}

0 commit comments

Comments
 (0)