Skip to content

Commit b4194e7

Browse files
committed
Refactor variables getting
1 parent 331dbbf commit b4194e7

File tree

15 files changed

+181
-65
lines changed

15 files changed

+181
-65
lines changed

reactions/src/main/java/fun/reactions/events/listeners/BukkitListener.java

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import fun.reactions.util.message.RaDebug;
2121
import fun.reactions.util.mob.EntityUtils;
2222
import fun.reactions.util.mob.MobSpawn;
23-
import fun.reactions.util.num.NumberUtils;
2423
import org.bukkit.Bukkit;
2524
import org.bukkit.block.Block;
2625
import org.bukkit.block.Sign;
@@ -46,7 +45,6 @@
4645
import org.bukkit.metadata.FixedMetadataValue;
4746

4847
import java.util.List;
49-
import java.util.Optional;
5048

5149
import static fun.reactions.module.basic.ContextManager.*;
5250
import static fun.reactions.module.basic.ItemContextManager.triggerItemHold;
@@ -78,14 +76,14 @@ public void onAttackEvent(EntityDamageByEntityEvent event) {
7876

7977
@EventHandler(ignoreCancelled = true)
8078
public void onTeleport(PlayerTeleportEvent event) {
81-
Optional<Variables> optVars = triggerTeleport(
79+
var optVars = triggerTeleport(
8280
event.getPlayer(),
8381
event.getCause(),
8482
event.getTo());
8583
if (optVars.isEmpty()) return;
8684
Variables vars = optVars.get();
87-
vars.getChanged(ActivationContext.CANCEL_EVENT, Boolean::valueOf).ifPresent(event::setCancelled);
88-
vars.getChanged(TeleportActivator.Context.LOCATION_TO, LocationUtils::parseLocation).ifPresent(event::setTo);
85+
vars.changedBoolean(ActivationContext.CANCEL_EVENT).ifPresent(event::setCancelled);
86+
vars.changed(TeleportActivator.Context.LOCATION_TO, LocationUtils::parseLocation).ifPresent(event::setTo);
8987
}
9088

9189
@EventHandler
@@ -100,13 +98,13 @@ public void onInteractAtEntity(PlayerInteractAtEntityEvent event) {
10098
public void onChat(AsyncPlayerChatEvent event) {
10199
// TODO: That's not really good solution
102100
try {
103-
Optional<Variables> optVars = triggerMessage(event.getPlayer(),
101+
var optVars = triggerMessage(event.getPlayer(),
104102
MessageActivator.Source.CHAT_INPUT,
105103
event.getMessage());
106104
if (optVars.isEmpty()) return;
107105
Variables vars = optVars.get();
108-
vars.getChanged(ActivationContext.CANCEL_EVENT, Boolean::valueOf).ifPresent(event::setCancelled);
109-
vars.getChanged(MessageActivator.Context.MESSAGE).ifPresent(event::setMessage);
106+
vars.changedBoolean(ActivationContext.CANCEL_EVENT).ifPresent(event::setCancelled);
107+
vars.changedString(MessageActivator.Context.MESSAGE).ifPresent(event::setMessage);
110108
// TODO: setFormat
111109
} catch (IllegalStateException ignore) {
112110
Msg.logOnce("asyncchaterror", "Chat is in async thread. Because of that you should use " +
@@ -230,11 +228,11 @@ public void onMobGrowl(PlayerAttacksEntityEvent event) {
230228

231229
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
232230
public void onMobDamageByPlayer(PlayerAttacksEntityEvent event) {
233-
Optional<Variables> optVars = triggerMobDamage(event.getPlayer(), event.getEntity(), event.getDamage(), event.getFinalDamage(), event.getCause());
231+
var optVars = triggerMobDamage(event.getPlayer(), event.getEntity(), event.getDamage(), event.getFinalDamage(), event.getCause());
234232
if (optVars.isEmpty()) return;
235233
Variables vars = optVars.get();
236-
vars.getChanged(ActivationContext.CANCEL_EVENT, Boolean::valueOf).ifPresent(event::setCancelled);
237-
vars.getChanged(MobDamageActivator.MobDamageContext.DAMAGE, NumberUtils::asDouble).ifPresent(event::setDamage);
234+
vars.changedBoolean(ActivationContext.CANCEL_EVENT).ifPresent(event::setCancelled);
235+
vars.changedDouble(MobDamageActivator.MobDamageContext.DAMAGE).ifPresent(event::setDamage);
238236
}
239237

240238
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
@@ -253,32 +251,32 @@ public void onPlayerDamage(EntityDamageEvent event) {
253251
String source;
254252
if (event instanceof EntityDamageByEntityEvent evdmg) {
255253
source = "ENTITY";
256-
Optional<Variables> optVars = triggerDamageByMob(evdmg);;
254+
var optVars = triggerDamageByMob(evdmg);;
257255
if (optVars.isPresent()) {
258256
Variables vars = optVars.get();
259-
vars.getChanged(DamageActivator.Context.DAMAGE, NumberUtils::asDouble).ifPresent(event::setDamage);
260-
vars.getChanged(ActivationContext.CANCEL_EVENT, Boolean::valueOf).ifPresent(event::setCancelled);
257+
vars.changedDouble(DamageActivator.Context.DAMAGE).ifPresent(event::setDamage);
258+
vars.changedBoolean(ActivationContext.CANCEL_EVENT).ifPresent(event::setCancelled);
261259
}
262260
} else if (event instanceof EntityDamageByBlockEvent evdmg) {
263261
source = "BLOCK";
264262
Block blockDamager = evdmg.getDamager();
265263
if (blockDamager != null) {
266-
Optional<Variables> optVars = triggerDamageByBlock(evdmg, blockDamager);
264+
var optVars = triggerDamageByBlock(evdmg, blockDamager);
267265
if (optVars.isPresent()) {
268266
Variables vars = optVars.get();
269-
vars.getChanged(DamageActivator.Context.DAMAGE, NumberUtils::asDouble).ifPresent(event::setDamage);
270-
vars.getChanged(ActivationContext.CANCEL_EVENT, Boolean::valueOf).ifPresent(event::setCancelled);
267+
vars.changedDouble(DamageActivator.Context.DAMAGE).ifPresent(event::setDamage);
268+
vars.changedBoolean(ActivationContext.CANCEL_EVENT).ifPresent(event::setCancelled);
271269
}
272270
}
273271
} else {
274272
source = "OTHER";
275273
}
276274

277-
Optional<Variables> optVars = triggerDamage(event, source);
275+
var optVars = triggerDamage(event, source);
278276
if (optVars.isPresent()) {
279277
Variables vars = optVars.get();
280-
vars.getChanged(DamageActivator.Context.DAMAGE, NumberUtils::asDouble).ifPresent(event::setDamage);
281-
vars.getChanged(ActivationContext.CANCEL_EVENT, Boolean::valueOf).ifPresent(event::setCancelled);
278+
vars.changedDouble(DamageActivator.Context.DAMAGE).ifPresent(event::setDamage);
279+
vars.changedBoolean(ActivationContext.CANCEL_EVENT).ifPresent(event::setCancelled);
282280
}
283281
}
284282

@@ -361,21 +359,21 @@ public void onPlayerTeleport(PlayerTeleportEvent event) {
361359

362360
@EventHandler(ignoreCancelled = true)
363361
public void onInventoryClick(InventoryClickEvent event) {
364-
Optional<Variables> optVars = triggerInventoryClick(event);
362+
var optVars = triggerInventoryClick(event);
365363
if (optVars.isEmpty()) return;
366364
Variables vars = optVars.get();
367-
vars.getChanged(InventoryClickActivator.Context.ITEM, VirtualItem::asItemStack).ifPresent(event::setCurrentItem);
368-
vars.getChanged(ActivationContext.CANCEL_EVENT, Boolean::valueOf).ifPresent(event::setCancelled);
365+
vars.changed(InventoryClickActivator.Context.ITEM, VirtualItem::asItemStack).ifPresent(event::setCurrentItem);
366+
vars.changedBoolean(ActivationContext.CANCEL_EVENT).ifPresent(event::setCancelled);
369367
}
370368

371369
@EventHandler(ignoreCancelled = true)
372370
public void onDrop(PlayerDropItemEvent event) {
373-
Optional<Variables> optVars = triggerDrop(event.getPlayer(), event.getItemDrop(), event.getItemDrop().getPickupDelay());
371+
var optVars = triggerDrop(event.getPlayer(), event.getItemDrop(), event.getItemDrop().getPickupDelay());
374372
if (optVars.isEmpty()) return;
375373
Variables vars = optVars.get();
376-
vars.getChanged(ActivationContext.CANCEL_EVENT, Boolean::valueOf).ifPresent(event::setCancelled);
377-
vars.getChanged(DropActivator.Context.PICKUP_DELAY, NumberUtils::asInteger).ifPresent((d) -> event.getItemDrop().setPickupDelay(d));
378-
vars.getChanged(DropActivator.Context.ITEM, VirtualItem::asItemStack).ifPresent((i) -> event.getItemDrop().setItemStack(i));
374+
vars.changedBoolean(ActivationContext.CANCEL_EVENT).ifPresent(event::setCancelled);
375+
vars.changedInt(DropActivator.Context.PICKUP_DELAY).ifPresent((d) -> event.getItemDrop().setPickupDelay(d));
376+
vars.changed(DropActivator.Context.ITEM, VirtualItem::asItemStack).ifPresent((i) -> event.getItemDrop().setItemStack(i));
379377
}
380378

381379
@EventHandler(ignoreCancelled = true)
@@ -392,11 +390,11 @@ public void onEntityClick(PlayerInteractEntityEvent event) {
392390

393391
@EventHandler(ignoreCancelled = true)
394392
public void onBlockBreak(BlockBreakEvent event) {
395-
Optional<Variables> optVars = triggerBlockBreak(event.getPlayer(), event.getBlock(), event.isDropItems());
393+
var optVars = triggerBlockBreak(event.getPlayer(), event.getBlock(), event.isDropItems());
396394
if (optVars.isEmpty()) return;
397395
Variables vars = optVars.get();
398-
vars.getChanged(BlockBreakActivator.Context.DO_DROP, Boolean::parseBoolean).ifPresent(event::setDropItems);
399-
vars.getChanged(ActivationContext.CANCEL_EVENT, Boolean::parseBoolean).ifPresent(event::setCancelled);
396+
vars.changedBoolean(BlockBreakActivator.Context.DO_DROP).ifPresent(event::setDropItems);
397+
vars.changedBoolean(ActivationContext.CANCEL_EVENT).ifPresent(event::setCancelled);
400398
}
401399

402400
@EventHandler(ignoreCancelled = true)
@@ -407,8 +405,8 @@ public void onSneak(PlayerToggleSneakEvent event) {
407405
@EventHandler
408406
public void onPlayerQuit(PlayerQuitEvent event) {
409407
TemporaryOp.removeOp(event.getPlayer());
410-
Optional<Variables> optVars = triggerQuit(event);
411-
optVars.flatMap(variables -> variables.getChanged(QuitActivator.Context.QUIT_MESSAGE)).ifPresent(event::setQuitMessage);
408+
var optVars = triggerQuit(event);
409+
optVars.flatMap(variables -> variables.changedString(QuitActivator.Context.QUIT_MESSAGE)).ifPresent(event::setQuitMessage);
412410
MoveListener.removeLocation(event.getPlayer());
413411
}
414412

reactions/src/main/java/fun/reactions/events/listeners/RaListener.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import fun.reactions.module.basic.ItemContextManager;
1010
import fun.reactions.module.basic.activators.DropActivator;
1111
import fun.reactions.util.item.VirtualItem;
12-
import fun.reactions.util.num.NumberUtils;
1312
import org.bukkit.event.EventHandler;
1413
import org.bukkit.event.Listener;
1514

@@ -33,9 +32,9 @@ public void onPickup(PlayerPickupItemEvent event) {
3332
Optional<Variables> optVars = ContextManager.triggerPickupItem(event.getPlayer(), event.getItem(), event.getItem().getPickupDelay());
3433
if (optVars.isEmpty()) return;
3534
Variables vars = optVars.get();
36-
vars.getChanged(ActivationContext.CANCEL_EVENT, Boolean::valueOf).ifPresent(event::setCancelled);
37-
vars.getChanged(DropActivator.Context.PICKUP_DELAY, NumberUtils::asInteger).ifPresent((d) -> event.getItem().setPickupDelay(d));
38-
vars.getChanged(DropActivator.Context.ITEM, VirtualItem::asItemStack).ifPresent((i) -> event.getItem().setItemStack(i));
35+
vars.changedBoolean(ActivationContext.CANCEL_EVENT).ifPresent(event::setCancelled);
36+
vars.changedInt(DropActivator.Context.PICKUP_DELAY).ifPresent((d) -> event.getItem().setPickupDelay(d));
37+
vars.changed(DropActivator.Context.ITEM, VirtualItem::asItemStack).ifPresent((i) -> event.getItem().setItemStack(i));
3938
if (event.isCancelled()) return;
4039
ItemContextManager.triggerItemHold(event.getPlayer());
4140
ItemContextManager.triggerItemWear(event.getPlayer());

reactions/src/main/java/fun/reactions/model/activators/ActivationContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,6 @@ public final boolean isAsync() {
100100
}
101101

102102
public boolean isCancelled() {
103-
return variables != null && variables.getChanged(CANCEL_EVENT, Boolean::valueOf).orElse(false);
103+
return variables != null && variables.changedBoolean(CANCEL_EVENT).orElse(false);
104104
}
105105
}

reactions/src/main/java/fun/reactions/model/environment/Variable.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public interface Variable {
1919
}
2020

2121
@Override
22-
public @NotNull Optional<String> getChanged() {
22+
public @NotNull Optional<String> changed() {
2323
return Optional.empty();
2424
}
2525

@@ -33,7 +33,7 @@ public interface Variable {
3333

3434
@NotNull Variable set(@NotNull String value);
3535

36-
@NotNull Optional<String> getChanged();
36+
@NotNull Optional<String> changed();
3737

3838
@NotNull Variable fork();
3939

@@ -86,7 +86,7 @@ public Simple(@NotNull String value) {
8686
}
8787

8888
@Override
89-
public @NotNull Optional<String> getChanged() {
89+
public @NotNull Optional<String> changed() {
9090
return Optional.of(value);
9191
}
9292

@@ -119,7 +119,7 @@ public Property(@NotNull String value) {
119119
}
120120

121121
@Override
122-
public @NotNull Optional<String> getChanged() {
122+
public @NotNull Optional<String> changed() {
123123
return optional;
124124
}
125125

@@ -147,7 +147,7 @@ public Lazy(@NotNull SafeSupplier<String> getter) {
147147
}
148148

149149
@Override
150-
public @NotNull Optional<String> getChanged() {
150+
public @NotNull Optional<String> changed() {
151151
return Optional.empty();
152152
}
153153

reactions/src/main/java/fun/reactions/model/environment/Variables.java

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
package fun.reactions.model.environment;
22

3+
import fun.reactions.util.bool.OptionalBoolean;
4+
import fun.reactions.util.bool.TriBoolean;
5+
import fun.reactions.util.num.NumberUtils;
36
import fun.reactions.util.parameter.Parameters;
47
import org.bukkit.configuration.ConfigurationSection;
58
import org.jetbrains.annotations.ApiStatus;
69
import org.jetbrains.annotations.NotNull;
710
import org.jetbrains.annotations.Nullable;
811
import org.jetbrains.annotations.UnmodifiableView;
912

10-
import java.util.Collections;
11-
import java.util.HashMap;
12-
import java.util.Locale;
13-
import java.util.Map;
14-
import java.util.Optional;
15-
import java.util.Set;
16-
import java.util.function.Function;
13+
import java.util.*;
14+
import java.util.function.*;
1715

1816
public class Variables {
1917
private final Map<String, Variable> variables;
@@ -78,12 +76,44 @@ public Variables() {
7876
return vari == null ? null : vari.get();
7977
}
8078

81-
public @NotNull Optional<String> getChanged(@NotNull String key) {
82-
return variables.getOrDefault(key.toLowerCase(Locale.ROOT), Variable.EMPTY).getChanged();
79+
public <T> @NotNull Optional<T> changed(@NotNull String key, @NotNull Function<String, T> funct) {
80+
return changedString(key).map(funct);
8381
}
8482

85-
public <T> @NotNull Optional<T> getChanged(@NotNull String key, @NotNull Function<String, T> funct) {
86-
return getChanged(key).map(funct);
83+
public @NotNull Optional<String> changedString(@NotNull String key) {
84+
return variables.getOrDefault(key.toLowerCase(Locale.ROOT), Variable.EMPTY).changed();
85+
}
86+
87+
public @NotNull OptionalBoolean changedBoolean(@NotNull String key) {
88+
return changedString(key).map(s -> TriBoolean.byString(s).asOptional()).orElse(OptionalBoolean.EMPTY);
89+
}
90+
91+
public @NotNull OptionalBoolean changedBoolean(@NotNull String key, @NotNull Predicate<@NotNull String> funct) {
92+
return changedString(key).map(s -> OptionalBoolean.of(funct.test(s))).orElse(OptionalBoolean.EMPTY);
93+
}
94+
95+
public @NotNull OptionalInt changedInt(@NotNull String key) {
96+
return changedString(key).map(NumberUtils::parseInteger).orElse(OptionalInt.empty());
97+
}
98+
99+
public @NotNull OptionalInt changedInt(@NotNull String key, @NotNull ToIntFunction<@NotNull String> funct) {
100+
return changedString(key).map(s -> OptionalInt.of(funct.applyAsInt(s))).orElse(OptionalInt.empty());
101+
}
102+
103+
public @NotNull OptionalLong changedLong(@NotNull String key) {
104+
return changedString(key).map(NumberUtils::parseLong).orElse(OptionalLong.empty());
105+
}
106+
107+
public @NotNull OptionalLong changedLong(@NotNull String key, @NotNull ToLongFunction<@NotNull String> funct) {
108+
return changedString(key).map(s -> OptionalLong.of(funct.applyAsLong(s))).orElse(OptionalLong.empty());
109+
}
110+
111+
public @NotNull OptionalDouble changedDouble(@NotNull String key) {
112+
return changedString(key).map(NumberUtils::parseDouble).orElse(OptionalDouble.empty());
113+
}
114+
115+
public @NotNull OptionalDouble changedDouble(@NotNull String key, @NotNull ToDoubleFunction<@NotNull String> funct) {
116+
return changedString(key).map(s -> OptionalDouble.of(funct.applyAsDouble(s))).orElse(OptionalDouble.empty());
87117
}
88118

89119
public void set(@NotNull String key, @Nullable String value) {

reactions/src/main/java/fun/reactions/module/basic/activators/BlockClickActivator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ public Context(Player p, Block block, boolean leftClick) {
147147
return Map.of(
148148
CANCEL_EVENT, Variable.property(false),
149149
"blocklocation", simple(LocationUtils.locationToString(block.getLocation())),
150-
"blocktype", Variable.simple(block.getType()),
151-
"block", Variable.simple(block.getType()) // FIXME Why there is a copy?
150+
"blocktype", simple(block.getType()),
151+
"block", simple(block.getType()) // FIXME Why there is a copy?
152152
);
153153
}
154154
}

reactions/src/main/java/fun/reactions/module/basic/activators/DoorActivator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import fun.reactions.model.activators.Locatable;
2929
import fun.reactions.model.environment.Variable;
3030
import fun.reactions.util.BlockUtils;
31-
import fun.reactions.util.enums.TriBoolean;
31+
import fun.reactions.util.bool.TriBoolean;
3232
import fun.reactions.util.location.LocationUtils;
3333
import fun.reactions.util.location.position.ImplicitPosition;
3434
import fun.reactions.util.parameter.BlockParameters;

reactions/src/main/java/fun/reactions/module/basic/activators/FlightActivator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import fun.reactions.model.activators.ActivationContext;
55
import fun.reactions.model.activators.Activator;
66
import fun.reactions.model.environment.Variable;
7-
import fun.reactions.util.enums.TriBoolean;
7+
import fun.reactions.util.bool.TriBoolean;
88
import fun.reactions.util.parameter.Parameters;
99
import org.bukkit.configuration.ConfigurationSection;
1010
import org.bukkit.entity.Player;

reactions/src/main/java/fun/reactions/module/basic/activators/JoinActivator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import fun.reactions.model.Logic;
2626
import fun.reactions.model.activators.ActivationContext;
2727
import fun.reactions.model.activators.Activator;
28-
import fun.reactions.util.enums.TriBoolean;
28+
import fun.reactions.util.bool.TriBoolean;
2929
import fun.reactions.util.parameter.Parameters;
3030
import org.bukkit.configuration.ConfigurationSection;
3131
import org.bukkit.entity.Player;

reactions/src/main/java/fun/reactions/module/basic/activators/LeverActivator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import fun.reactions.model.activators.Activator;
2828
import fun.reactions.model.activators.Locatable;
2929
import fun.reactions.model.environment.Variable;
30-
import fun.reactions.util.enums.TriBoolean;
30+
import fun.reactions.util.bool.TriBoolean;
3131
import fun.reactions.util.location.position.ImplicitPosition;
3232
import fun.reactions.util.parameter.BlockParameters;
3333
import fun.reactions.util.parameter.Parameters;

0 commit comments

Comments
 (0)