mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-02-20 00:29:34 +01:00
Port MusicFlag
This commit is contained in:
parent
97c1d788b0
commit
8e729f6949
@ -6,6 +6,7 @@ import com.github.intellectualsites.plotsquared.configuration.file.YamlConfigura
|
||||
import com.github.intellectualsites.plotsquared.configuration.serialization.ConfigurationSerialization;
|
||||
import com.github.intellectualsites.plotsquared.plot.commands.WE_Anywhere;
|
||||
import com.github.intellectualsites.plotsquared.plot.config.Caption;
|
||||
import com.github.intellectualsites.plotsquared.plot.config.CaptionUtility;
|
||||
import com.github.intellectualsites.plotsquared.plot.config.Captions;
|
||||
import com.github.intellectualsites.plotsquared.plot.config.Configuration;
|
||||
import com.github.intellectualsites.plotsquared.plot.config.Settings;
|
||||
@ -319,7 +320,7 @@ import java.util.zip.ZipInputStream;
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
PlotSquared.log(Captions.PREFIX + Captions
|
||||
PlotSquared.log(Captions.PREFIX + CaptionUtility
|
||||
.format(Captions.ENABLED.getTranslated(), IMP.getPluginName()));
|
||||
}
|
||||
|
||||
|
@ -536,6 +536,7 @@ public enum Captions implements Caption {
|
||||
FLAG_CATEGORY_TELEPORT_DENY("Teleport Deny Flag", "Flags"),
|
||||
FLAG_CATEGORY_STRING_LIST("String List Flags", "Flags"),
|
||||
FLAG_CATEGORY_WEATHER("Weather Flags", "Flags"),
|
||||
FLAG_CATEGORY_MUSIC("Music Flags", "Flags"),
|
||||
FLAG_CATEGORY_BLOCK_LIST("Material Flags", "Flags"),
|
||||
FLAG_CATEGORY_INTERVALS("Interval Flags", "Flags"),
|
||||
FLAG_CATEGORY_INTEGER_LIST("Integer List Flags", "Flags"),
|
||||
@ -547,6 +548,7 @@ public enum Captions implements Caption {
|
||||
//</editor-fold>
|
||||
//<editor-fold desc="Flag descriptions">
|
||||
FLAG_DESCRIPTION_EXPLOSION("Set to 'true' to enable explosions in the plot, and 'false' to disable them", "Flags"),
|
||||
FLAG_DESCRIPTION_MUSIC("Set to a music disk ID (item name) to play the music disc inside of the plot", "Flags"),
|
||||
//</editor-fold>
|
||||
//<editor-fold desc="Flag category errors">
|
||||
FLAG_ERROR_BOOLEAN("Flag value must be a boolean (true|false)", "Flags"),
|
||||
@ -563,6 +565,7 @@ public enum Captions implements Caption {
|
||||
FLAG_ERROR_STRING("Flag value must be alphanumeric. Some special characters are allowed.", "Flags"),
|
||||
FLAG_ERROR_STRINGLIST("Flag value must be a string list", "Flags"),
|
||||
FLAG_ERROR_WEATHER("Flag must be a weather: 'rain' or 'sun'", "Flags"),
|
||||
FLAG_ERROR_MUSIC("Flag value must be a valid music disc ID.", "Flags"),
|
||||
//</editor-fold>
|
||||
//<editor-fold desc="Trusted">
|
||||
TRUSTED_ADDED("$4You successfully trusted a user to the plot", "Trusted"),
|
||||
|
@ -13,7 +13,6 @@ import java.util.HashMap;
|
||||
|
||||
public final class Flags {
|
||||
|
||||
public static final StringFlag MUSIC = new StringFlag("music");
|
||||
public static final StringFlag DESCRIPTION = new StringFlag("description");
|
||||
public static final IntegerListFlag ANALYSIS =
|
||||
(IntegerListFlag) new IntegerListFlag("analysis").reserve();
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.github.intellectualsites.plotsquared.plot.flags;
|
||||
|
||||
import com.github.intellectualsites.plotsquared.plot.flags.implementations.ExplosionFlag;
|
||||
import com.github.intellectualsites.plotsquared.plot.flags.implementations.MusicFlag;
|
||||
import lombok.Getter;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
@ -38,6 +39,7 @@ public final class GlobalFlagContainer extends FlagContainer {
|
||||
super(null);
|
||||
// Register all default flags here
|
||||
this.addFlag(ExplosionFlag.EXPLOSION_FALSE);
|
||||
this.addFlag(MusicFlag.MUSIC_FLAG_NONE);
|
||||
}
|
||||
|
||||
@Override public void addFlag(PlotFlag<?, ?> flag) {
|
||||
|
@ -5,6 +5,7 @@ import com.github.intellectualsites.plotsquared.plot.flags.types.BooleanFlag;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ExplosionFlag extends BooleanFlag<ExplosionFlag> {
|
||||
|
||||
public static final ExplosionFlag EXPLOSION_TRUE = new ExplosionFlag(true);
|
||||
public static final ExplosionFlag EXPLOSION_FALSE = new ExplosionFlag(false);
|
||||
|
||||
|
@ -0,0 +1,59 @@
|
||||
package com.github.intellectualsites.plotsquared.plot.flags.implementations;
|
||||
|
||||
import com.github.intellectualsites.plotsquared.plot.config.Captions;
|
||||
import com.github.intellectualsites.plotsquared.plot.flags.FlagParseException;
|
||||
import com.github.intellectualsites.plotsquared.plot.flags.PlotFlag;
|
||||
import com.github.intellectualsites.plotsquared.plot.util.world.ItemUtil;
|
||||
import com.sk89q.worldedit.world.item.ItemType;
|
||||
import com.sk89q.worldedit.world.item.ItemTypes;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
|
||||
public final class MusicFlag extends PlotFlag<ItemType, MusicFlag> {
|
||||
|
||||
public static final MusicFlag MUSIC_FLAG_NONE = new MusicFlag(ItemTypes.AIR);
|
||||
|
||||
/**
|
||||
* Construct a new flag instance.
|
||||
*
|
||||
* @param value Flag value
|
||||
*/
|
||||
protected MusicFlag(ItemType value) {
|
||||
super(value, Captions.FLAG_CATEGORY_MUSIC, Captions.FLAG_DESCRIPTION_MUSIC);
|
||||
}
|
||||
|
||||
@Override public MusicFlag parse(@NotNull String input) throws FlagParseException {
|
||||
if (!input.isEmpty() && !input.contains("music_disc_")) {
|
||||
input = "music_disc_" + input;
|
||||
}
|
||||
final ItemType itemType = ItemUtil.get(input);
|
||||
if (itemType == ItemTypes.AIR || itemType.getId().contains("music_disc_")) {
|
||||
return new MusicFlag(ItemUtil.get(input));
|
||||
} else {
|
||||
throw new FlagParseException(this, input, Captions.FLAG_ERROR_MUSIC);
|
||||
}
|
||||
}
|
||||
|
||||
@Override public MusicFlag merge(@NotNull ItemType newValue) {
|
||||
if (getValue().equals(ItemTypes.AIR)) {
|
||||
return new MusicFlag(newValue);
|
||||
} else if (newValue.equals(ItemTypes.AIR)) {
|
||||
return this;
|
||||
} else {
|
||||
return new MusicFlag(newValue);
|
||||
}
|
||||
}
|
||||
|
||||
@Override public String toString() {
|
||||
return getValue().getId();
|
||||
}
|
||||
|
||||
@Override public String getExample() {
|
||||
return "ward";
|
||||
}
|
||||
|
||||
@Override protected MusicFlag flagOf(@NotNull ItemType value) {
|
||||
return new MusicFlag(value);
|
||||
}
|
||||
|
||||
}
|
@ -5,6 +5,7 @@ import com.github.intellectualsites.plotsquared.plot.config.Settings;
|
||||
import com.github.intellectualsites.plotsquared.plot.flag.Flag;
|
||||
import com.github.intellectualsites.plotsquared.plot.flag.FlagManager;
|
||||
import com.github.intellectualsites.plotsquared.plot.flag.Flags;
|
||||
import com.github.intellectualsites.plotsquared.plot.flags.implementations.MusicFlag;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.Location;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.Plot;
|
||||
import com.github.intellectualsites.plotsquared.plot.object.PlotArea;
|
||||
@ -142,26 +143,26 @@ public class PlotListener {
|
||||
FlagManager.removePlotFlag(plot, Flags.TIME);
|
||||
}
|
||||
}
|
||||
|
||||
Optional<PlotWeather> weatherFlag = plot.getFlag(Flags.WEATHER);
|
||||
weatherFlag.ifPresent(player::setWeather);
|
||||
Optional<String> musicFlag = plot.getFlag(Flags.MUSIC);
|
||||
if (musicFlag.isPresent()) {
|
||||
final String id = musicFlag.get();
|
||||
final ItemType item = ItemUtil.get(id);
|
||||
final String rawId = item.getId();
|
||||
if (rawId.contains("disc") || item == ItemTypes.AIR) {
|
||||
|
||||
ItemType musicFlag = plot.getFlag(MusicFlag.class);
|
||||
if (musicFlag != null) {
|
||||
final String rawId = musicFlag.getId();
|
||||
if (rawId.contains("disc") || musicFlag == ItemTypes.AIR) {
|
||||
Location location = player.getLocation();
|
||||
Location lastLocation = player.getMeta("music");
|
||||
if (lastLocation != null) {
|
||||
player.playMusic(lastLocation, item);
|
||||
if (item == ItemTypes.AIR) {
|
||||
player.playMusic(lastLocation, musicFlag);
|
||||
if (musicFlag == ItemTypes.AIR) {
|
||||
player.deleteMeta("music");
|
||||
}
|
||||
}
|
||||
if (item != ItemTypes.AIR) {
|
||||
if (musicFlag != ItemTypes.AIR) {
|
||||
try {
|
||||
player.setMeta("music", location);
|
||||
player.playMusic(location, item);
|
||||
player.playMusic(location, musicFlag);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
@ -66,4 +66,5 @@ public class PlotMessage {
|
||||
public void send(PlotPlayer player) {
|
||||
ChatManager.manager.send(this, player);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package com.github.intellectualsites.plotsquared.plot.util.world;
|
||||
|
||||
import com.github.intellectualsites.plotsquared.plot.util.MathMan;
|
||||
import com.sk89q.worldedit.world.block.BlockState;
|
||||
import com.sk89q.worldedit.world.item.ItemType;
|
||||
import com.sk89q.worldedit.world.item.ItemTypes;
|
||||
import com.sk89q.worldedit.world.registry.LegacyMapper;
|
||||
@ -12,6 +11,9 @@ public final class ItemUtil {
|
||||
private ItemUtil(){}
|
||||
|
||||
public static ItemType get(String input) {
|
||||
if (input == null || input.isEmpty()) {
|
||||
return ItemTypes.AIR;
|
||||
}
|
||||
input = input.toLowerCase(Locale.ROOT);
|
||||
if (Character.isDigit(input.charAt(0))) {
|
||||
String[] split = input.split(":");
|
||||
|
Loading…
x
Reference in New Issue
Block a user