Skip to content

Commit 0c317ae

Browse files
Add parllel-fly and parallel-glide flags and bump version
1 parent c05d37b commit 0c317ae

File tree

6 files changed

+181
-5
lines changed

6 files changed

+181
-5
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>parallelmc</groupId>
88
<artifactId>parallelutils</artifactId>
9-
<version>1.6.1</version>
9+
<version>1.7.0</version>
1010
<packaging>jar</packaging>
1111

1212
<name>Parallelutils</name>

src/main/java/parallelmc/parallelutils/Constants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
public class Constants {
44

5-
public static final Version VERSION = new Version(1, 6, 1);
5+
public static final Version VERSION = new Version(1, 7, 0);
66
public static final String PLUGIN_NAME = "ParallelUtils";
77
public static final String DEFAULT_WORLD = "world";
88
}

src/main/java/parallelmc/parallelutils/modules/parallelflags/ParallelFlags.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import parallelmc.parallelutils.modules.parallelflags.events.ParallelFlagsPlaceListener;
1414
import parallelmc.parallelutils.modules.parallelflags.session.CustomArmorDeny;
1515
import parallelmc.parallelutils.modules.parallelflags.session.CustomArmorHealth;
16+
import parallelmc.parallelutils.modules.parallelflags.session.ElytraFlagHandler;
17+
import parallelmc.parallelutils.modules.parallelflags.session.FlyFlagHandler;
1618

1719
import java.util.logging.Level;
1820

@@ -118,6 +120,13 @@ public void onLoad() {
118120
}
119121

120122

123+
if (!registry.addStateflag("parallel-fly", false)) {
124+
Parallelutils.log(Level.WARNING, "Unable to create parallel-fly flag. Will not use");
125+
}
126+
if (!registry.addStateflag("parallel-glide", false)) {
127+
Parallelutils.log(Level.WARNING, "Unable to create parallel-glide flag. Will not use");
128+
}
129+
121130
} catch (NoClassDefFoundError e) {
122131
Parallelutils.log(Level.SEVERE, "Unable to load WorldGuard! Something is wrong!");
123132
}
@@ -145,6 +154,8 @@ public void onEnable() {
145154

146155
sessionManager.registerHandler(CustomArmorDeny.FACTORY, null);
147156
sessionManager.registerHandler(CustomArmorHealth.FACTORY, null);
157+
sessionManager.registerHandler(FlyFlagHandler.FACTORY, null);
158+
sessionManager.registerHandler(ElytraFlagHandler.FACTORY, null);
148159

149160
manager.registerEvents(new ParallelFlagsInteractListener(), plugin);
150161
manager.registerEvents(new ParallelFlagsPlaceListener(), plugin);
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package parallelmc.parallelutils.modules.parallelflags.session;
2+
3+
import com.sk89q.worldedit.bukkit.BukkitPlayer;
4+
import com.sk89q.worldedit.util.Location;
5+
import com.sk89q.worldedit.world.World;
6+
import com.sk89q.worldguard.LocalPlayer;
7+
import com.sk89q.worldguard.protection.ApplicableRegionSet;
8+
import com.sk89q.worldguard.protection.flags.StateFlag;
9+
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
10+
import com.sk89q.worldguard.session.MoveType;
11+
import com.sk89q.worldguard.session.Session;
12+
import com.sk89q.worldguard.session.handler.Handler;
13+
import org.bukkit.entity.Player;
14+
import parallelmc.parallelutils.modules.parallelflags.CustomFlagRegistry;
15+
16+
import java.util.Set;
17+
18+
public class ElytraFlagHandler extends Handler {
19+
public static final ElytraFlagHandler.Factory FACTORY = new ElytraFlagHandler.Factory();
20+
21+
public static class Factory extends Handler.Factory<ElytraFlagHandler> {
22+
@Override
23+
public ElytraFlagHandler create(Session session) {
24+
return new ElytraFlagHandler(session);
25+
}
26+
27+
}
28+
private final CustomFlagRegistry customFlagRegistry;
29+
30+
public ElytraFlagHandler(Session session) {
31+
super(session);
32+
customFlagRegistry = CustomFlagRegistry.getInstance();
33+
}
34+
35+
@Override
36+
public void initialize(LocalPlayer player, Location current, ApplicableRegionSet set) {
37+
StateFlag.State state = set.queryState(player, customFlagRegistry.getStateFlag("parallel-glide"));
38+
this.handleValue(((BukkitPlayer) player).getPlayer(), state);
39+
}
40+
41+
@Override
42+
public boolean onCrossBoundary(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType) {
43+
BukkitPlayer bukkitPlayer;
44+
45+
if (!(player instanceof BukkitPlayer)) {
46+
return false;
47+
}
48+
49+
bukkitPlayer = (BukkitPlayer) player;
50+
51+
if (getSession().getManager().hasBypass(player, (World) to.getExtent())) return true;
52+
53+
StateFlag.State state = toSet.queryState(player, customFlagRegistry.getStateFlag("parallel-glide"));
54+
55+
handleValue(bukkitPlayer.getPlayer(), state);
56+
57+
return true;
58+
}
59+
60+
public void handleValue(Player player, StateFlag.State state) {
61+
if (state != null)
62+
{
63+
boolean value = (state == StateFlag.State.ALLOW);
64+
65+
if (!value && player.isGliding())
66+
{
67+
player.setGliding(false);
68+
}
69+
}
70+
}
71+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package parallelmc.parallelutils.modules.parallelflags.session;
2+
3+
import com.sk89q.worldedit.bukkit.BukkitPlayer;
4+
import com.sk89q.worldedit.util.Location;
5+
import com.sk89q.worldedit.world.World;
6+
import com.sk89q.worldguard.LocalPlayer;
7+
import com.sk89q.worldguard.protection.ApplicableRegionSet;
8+
import com.sk89q.worldguard.protection.flags.StateFlag;
9+
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
10+
import com.sk89q.worldguard.session.MoveType;
11+
import com.sk89q.worldguard.session.Session;
12+
import com.sk89q.worldguard.session.handler.Handler;
13+
import org.bukkit.entity.Player;
14+
import parallelmc.parallelutils.modules.parallelflags.CustomFlagRegistry;
15+
16+
import java.util.Set;
17+
18+
public class FlyFlagHandler extends Handler {
19+
20+
public static final FlyFlagHandler.Factory FACTORY = new FlyFlagHandler.Factory();
21+
22+
public static class Factory extends Handler.Factory<FlyFlagHandler> {
23+
@Override
24+
public FlyFlagHandler create(Session session) {
25+
return new FlyFlagHandler(session);
26+
}
27+
28+
}
29+
private final CustomFlagRegistry customFlagRegistry;
30+
private Boolean originalFly;
31+
32+
public FlyFlagHandler(Session session) {
33+
super(session);
34+
customFlagRegistry = CustomFlagRegistry.getInstance();
35+
}
36+
37+
@Override
38+
public void initialize(LocalPlayer player, Location current, ApplicableRegionSet set) {
39+
StateFlag.State state = set.queryState(player, customFlagRegistry.getStateFlag("parallel-fly"));
40+
this.handleValue(((BukkitPlayer) player).getPlayer(), state);
41+
}
42+
43+
@Override
44+
public boolean onCrossBoundary(LocalPlayer player, Location from, Location to, ApplicableRegionSet toSet, Set<ProtectedRegion> entered, Set<ProtectedRegion> exited, MoveType moveType) {
45+
// Don't trigger if this isn't ACTUALLY on a boundary
46+
if (entered.isEmpty() && exited.isEmpty() && from.getExtent().equals(to.getExtent()))
47+
{
48+
return true;
49+
}
50+
51+
BukkitPlayer bukkitPlayer;
52+
53+
if (!(player instanceof BukkitPlayer)) {
54+
return true;
55+
}
56+
57+
if (getSession().getManager().hasBypass(player, (World) to.getExtent())) return true;
58+
59+
bukkitPlayer = (BukkitPlayer) player;
60+
61+
StateFlag.State state = toSet.queryState(player, customFlagRegistry.getStateFlag("parallel-fly"));
62+
63+
handleValue(bukkitPlayer.getPlayer(), state);
64+
65+
return true;
66+
}
67+
68+
public void handleValue(Player player, StateFlag.State state) {
69+
if (state != null)
70+
{
71+
boolean value = (state == StateFlag.State.ALLOW);
72+
73+
if (player.getAllowFlight() != value)
74+
{
75+
if (this.originalFly == null)
76+
{
77+
this.originalFly = player.getAllowFlight();
78+
}
79+
80+
player.setAllowFlight(value);
81+
}
82+
}
83+
else
84+
{
85+
if (this.originalFly != null)
86+
{
87+
player.setAllowFlight(this.originalFly);
88+
89+
this.originalFly = null;
90+
}
91+
}
92+
}
93+
}

src/main/java/parallelmc/parallelutils/modules/parallelitems/ParallelItems.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ private void registerItems() {
125125

126126
NBTTagCompound compound = (nmsStack.hasTag()) ? nmsStack.getTag() : new NBTTagCompound();
127127
NBTTagList modifiers = new NBTTagList();
128-
128+
129129
NBTTagCompound armor = new NBTTagCompound();
130130
armor.set("AttributeName", NBTTagString.a("generic.armor"));
131131
armor.set("Name", NBTTagString.a("generic.armor"));
@@ -135,8 +135,6 @@ private void registerItems() {
135135
armor.set("UUIDMost", NBTTagInt.a(2872));
136136
armor.set("Slot", NBTTagString.a("head"));
137137
modifiers.add(armor);
138-
compound.set("AttributeModifiers", modifiers);
139-
nmsStack.setTag(compound);
140138

141139
NBTTagCompound toughness = new NBTTagCompound();
142140
toughness.set("AttributeName", NBTTagString.a("generic.armor_toughness"));
@@ -148,6 +146,9 @@ private void registerItems() {
148146
toughness.set("Slot", NBTTagString.a("head"));
149147
modifiers.add(toughness);
150148

149+
compound.set("AttributeModifiers", modifiers);
150+
nmsStack.setTag(compound);
151+
151152
spaceHelmetRed = CraftItemStack.asBukkitCopy(nmsStack);
152153

153154
ItemMeta helmetMeta = spaceHelmetRed.getItemMeta();

0 commit comments

Comments
 (0)