Skip to content

Commit 7a80d69

Browse files
author
david
committed
utilize worldedit mask and pattern api
1 parent 10a96bf commit 7a80d69

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

src/main/java/net/thenextlvl/gopaint/listener/InteractListener.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,10 @@ public void onClick(PlayerInteractEvent event) {
7474
event.setCancelled(true);
7575
}
7676

77-
private static void handleInteract(Player player, BrushSettings settings) {
78-
var session = player.getSession();
79-
var blockTrace = player.getBlockTrace(250, true, session.getMask());
80-
if (blockTrace != null) player.queueAction(() -> {
77+
private void handleInteract(BukkitPlayer player, BrushSettings settings) {
8178
player.runAsyncIfFree(() -> {
79+
var session = player.getSession();
80+
8281
try (var editSession = session.createEditSession(player)) {
8382

8483
var blockTrace = player.getSolidBlockTrace(250);
@@ -91,15 +90,24 @@ private static void handleInteract(Player player, BrushSettings settings) {
9190
var bag = session.getBlockBag(player);
9291

9392
try {
94-
settings.getBrush().paint(editSession, blockTrace.toBlockPoint(), player, settings);
93+
Request.request().setEditSession(editSession);
94+
95+
var position = blockTrace.toBlockPoint();
96+
var mask = MaskIntersection.of(new InverseMask(new AirMask(player.getWorld())),
97+
settings.getMask(session), settings.getSurfaceMask(player));
98+
var pattern = settings.getBrush().buildPattern(editSession, position, player, settings);
99+
100+
editSession.setMask(mask);
101+
102+
settings.getBrush().build(editSession, position, pattern, settings.getBrushSize() / 2d);
103+
95104
} finally {
96105

97106
if (bag != null) bag.flushChanges();
98107

99108
session.remember(editSession);
109+
Request.reset();
100110
}
101-
} finally {
102-
Request.reset();
103111
}
104112
});
105113
}

0 commit comments

Comments
 (0)