Prevent Older clients from entering boats

This commit is contained in:
cswhite2000 2017-07-29 02:57:32 -07:00
parent c48a5d1f22
commit 874b8a1ca4
4 changed files with 57 additions and 0 deletions

View File

@ -293,3 +293,5 @@ lives.remaining.alive.plural = Your team has {0} players left
lives.status.eliminated = eliminated
lives.status.alive = {0} alive
lives.status.lives = {0} lives
version.too.old.boats = Entering boats requires at least Minecraft 1.9

View File

@ -15,6 +15,7 @@ import tc.oc.pgm.itemkeep.ItemKeepManifest;
import tc.oc.pgm.kits.KitManifest;
import tc.oc.pgm.lane.LaneManifest;
import tc.oc.pgm.blitz.BlitzManifest;
import tc.oc.pgm.legacy.LegacyManifest;
import tc.oc.pgm.loot.LootManifest;
import tc.oc.pgm.menu.MenuManifest;
import tc.oc.pgm.modes.ObjectiveModeManifest;
@ -57,6 +58,7 @@ public class PGMModulesManifest extends HybridManifest {
install(new TNTManifest());
install(new TutorialManifest());
install(new FlagManifest());
install(new LegacyManifest());
install(new LootManifest());
install(new TerrainManifest());
install(new CoreManifest());

View File

@ -0,0 +1,17 @@
package tc.oc.pgm.legacy;
import tc.oc.commons.core.inject.HybridManifest;
import tc.oc.pgm.match.MatchPlayerFacetBinder;
import tc.oc.pgm.match.inject.MatchBinders;
public class LegacyManifest extends HybridManifest implements MatchBinders {
@Override
protected void configure() {
installPlayerModule(binder -> {
final MatchPlayerFacetBinder facets = new MatchPlayerFacetBinder(binder);
facets.register(LegacyPlayerFacet.class);
});
}
}

View File

@ -0,0 +1,36 @@
package tc.oc.pgm.legacy;
import org.bukkit.entity.Boat;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.vehicle.VehicleEnterEvent;
import tc.oc.commons.bukkit.chat.Audiences;
import tc.oc.commons.bukkit.chat.WarningComponent;
import tc.oc.minecraft.protocol.MinecraftVersion;
import tc.oc.pgm.events.ListenerScope;
import tc.oc.pgm.match.MatchPlayerFacet;
import tc.oc.pgm.match.MatchScope;
import javax.inject.Inject;
@ListenerScope(MatchScope.RUNNING)
public class LegacyPlayerFacet implements MatchPlayerFacet, Listener {
private final Audiences audiences;
@Inject LegacyPlayerFacet(Audiences audiences) {
this.audiences = audiences;
}
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
public void onVehicleEnter(VehicleEnterEvent event) {
if (event.getVehicle() instanceof Boat && event.getActor() instanceof Player) {
Player player = (Player)event.getActor();
if (MinecraftVersion.lessThan(MinecraftVersion.MINECRAFT_1_9, player.getProtocolVersion())) {
event.setCancelled(true);
audiences.get(player).sendMessage(new WarningComponent("version.too.old.boats"));
}
}
}
}