New both_catalyst item type

This commit is contained in:
Indyuce 2022-08-18 00:28:53 +02:00
parent 13dec22e5f
commit 9689bfb7b0
2 changed files with 57 additions and 70 deletions

View File

@ -40,15 +40,16 @@ public class Type {
public static final Type MUSKET = new Type(TypeSet.RANGE, "MUSKET", true, EquipmentSlot.MAIN_HAND); public static final Type MUSKET = new Type(TypeSet.RANGE, "MUSKET", true, EquipmentSlot.MAIN_HAND);
public static final Type LUTE = new Type(TypeSet.RANGE, "LUTE", true, EquipmentSlot.MAIN_HAND); public static final Type LUTE = new Type(TypeSet.RANGE, "LUTE", true, EquipmentSlot.MAIN_HAND);
// Offhand // Hand Accessories
public static final Type CATALYST = new Type(TypeSet.OFFHAND, "CATALYST", false, EquipmentSlot.MAIN_HAND); public static final Type CATALYST = new Type(TypeSet.OFFHAND, "CATALYST", false, EquipmentSlot.MAIN_HAND);
public static final Type OFF_CATALYST = new Type(TypeSet.OFFHAND, "OFF_CATALYST", false, EquipmentSlot.OFF_HAND); public static final Type OFF_CATALYST = new Type(TypeSet.OFFHAND, "OFF_CATALYST", false, EquipmentSlot.OTHER);
public static final Type BOTH_CATALYST = new Type(TypeSet.OFFHAND, "BOTH_CATALYST", false, EquipmentSlot.MAIN_HAND);
// Any // Any
public static final Type ORNAMENT = new Type(TypeSet.EXTRA, "ORNAMENT", false, EquipmentSlot.ANY); public static final Type ORNAMENT = new Type(TypeSet.EXTRA, "ORNAMENT", false, EquipmentSlot.ANY);
// Extra // Extra
public static final Type ARMOR = new Type(TypeSet.EXTRA, "ARMOR", false, EquipmentSlot.ARMOR, true); public static final Type ARMOR = new Type(TypeSet.EXTRA, "ARMOR", false, EquipmentSlot.ARMOR);
public static final Type TOOL = new Type(TypeSet.EXTRA, "TOOL", false, EquipmentSlot.MAIN_HAND); public static final Type TOOL = new Type(TypeSet.EXTRA, "TOOL", false, EquipmentSlot.MAIN_HAND);
public static final Type CONSUMABLE = new Type(TypeSet.EXTRA, "CONSUMABLE", false, EquipmentSlot.MAIN_HAND); public static final Type CONSUMABLE = new Type(TypeSet.EXTRA, "CONSUMABLE", false, EquipmentSlot.MAIN_HAND);
public static final Type MISCELLANEOUS = new Type(TypeSet.EXTRA, "MISCELLANEOUS", false, EquipmentSlot.MAIN_HAND); public static final Type MISCELLANEOUS = new Type(TypeSet.EXTRA, "MISCELLANEOUS", false, EquipmentSlot.MAIN_HAND);
@ -57,12 +58,13 @@ public class Type {
public static final Type ACCESSORY = new Type(TypeSet.EXTRA, "ACCESSORY", false, EquipmentSlot.ACCESSORY); public static final Type ACCESSORY = new Type(TypeSet.EXTRA, "ACCESSORY", false, EquipmentSlot.ACCESSORY);
public static final Type BLOCK = new Type(TypeSet.EXTRA, "BLOCK", false, EquipmentSlot.OTHER); public static final Type BLOCK = new Type(TypeSet.EXTRA, "BLOCK", false, EquipmentSlot.OTHER);
@NotNull
private final String id; private final String id;
private String name;
@NotNull
private final TypeSet set; private final TypeSet set;
private boolean fourGUIMode; private final EquipmentSlot equipType;
private final boolean weapon;
private String name;
@Nullable @Nullable
private String loreFormat; private String loreFormat;
@ -81,52 +83,23 @@ public class Type {
private UnidentifiedItem unidentifiedTemplate; private UnidentifiedItem unidentifiedTemplate;
@NotNull
private final EquipmentSlot equipType;
/**
* Used for item type restrictions for gem stones to easily check if the
* item is a weapon.
*/
private final boolean weapon;
/**
* @return Does it display as four rows in /mmoitems browse?
*/
public boolean isFourGUIMode() {
return fourGUIMode;
}
/**
* @return Default lore format used by this Type
*/
@Nullable
public String getLoreFormat() {
return loreFormat;
}
/** /**
* List of stats which can be applied onto an item which has this type. This * List of stats which can be applied onto an item which has this type. This
* improves performance when generating an item by a significant amount. * improves performance when generating an item by a significant amount.
*/ */
private final List<ItemStat> available = new ArrayList<>(); private final List<ItemStat> available = new ArrayList<>();
public Type(TypeSet set, String id, boolean weapon, EquipmentSlot equipType) { @Deprecated
this(set, id, weapon, equipType, false); public Type(@NotNull TypeSet set, @NotNull String id, boolean weapon, @NotNull EquipmentSlot equipType, boolean fourGUIMode) {
this(set, id, weapon, equipType);
} }
public Type(@NotNull TypeSet set, @NotNull String id, boolean weapon, @NotNull EquipmentSlot equipType, boolean fourGUI) { public Type(@NotNull TypeSet set, @NotNull String id, boolean weapon, @NotNull EquipmentSlot equipType) {
this.set = set; this.set = set;
this.id = id.toUpperCase().replace("-", "_").replace(" ", "_"); this.id = id.toUpperCase().replace("-", "_").replace(" ", "_");
this.equipType = equipType; this.equipType = equipType;
this.fourGUIMode = fourGUI;
this.weapon = weapon; this.weapon = weapon;
this.loreFormat = null; this.loreFormat = null;
//TYP//MMOItems.log("\u00a78TYPE \u00a75HARDCODED\u00a77 Registering\u00a7f " + id);
//TYP//MMOItems.log("\u00a78TYPE \u00a75HARDCODED\u00a77 > 4GUI\u00a7b " + fourGUIMode);
//TYP//MMOItems.log("\u00a78TYPE \u00a75HARDCODED\u00a77 > Lore\u00a7b " + loreFormat);
} }
public Type(@NotNull TypeManager manager, @NotNull ConfigurationSection config) { public Type(@NotNull TypeManager manager, @NotNull ConfigurationSection config) {
@ -134,52 +107,27 @@ public class Type {
parent = manager.get(config.getString("parent", "").toUpperCase().replace("-", "_").replace(" ", "_")); parent = manager.get(config.getString("parent", "").toUpperCase().replace("-", "_").replace(" ", "_"));
// Parent existed?
//TYP//MMOItems.log("\u00a78TYPE \u00a72CONFIG\u00a77 Reading config overrides for\u00a7f " + id + "\u00a78 (parent\u00a77 " + parent + "\u00a78)");
set = (parent != null ? parent.set : TypeSet.EXTRA); set = (parent != null ? parent.set : TypeSet.EXTRA);
weapon = (parent != null && parent.weapon); weapon = (parent != null && parent.weapon);
equipType = (parent != null ? parent.equipType : EquipmentSlot.OTHER); equipType = (parent != null ? parent.equipType : EquipmentSlot.OTHER);
this.fourGUIMode = config.getBoolean("AlternateGUIMode", (parent != null && parent.fourGUIMode));
this.loreFormat = config.getString("LoreFormat", (parent != null ? parent.loreFormat : null)); this.loreFormat = config.getString("LoreFormat", (parent != null ? parent.loreFormat : null));
// Parent existed?
//TYP//MMOItems.log("\u00a78TYPE \u00a72CONFIG\u00a77 > Type\u00a7f " + equipType.toString());
//TYP//MMOItems.log("\u00a78TYPE \u00a72CONFIG\u00a77 > 4GUI\u00a7b " + fourGUIMode);
//TYP//MMOItems.log("\u00a78TYPE \u00a72CONFIG\u00a78 >>> Config \u00a79 " + config.getBoolean("AlternateGUIMode"));
//TYP//MMOItems.log("\u00a78TYPE \u00a72CONFIG\u00a78 >>> Parent \u00a79 " + (parent == null ? "<null>" : parent.fourGUIMode));
//TYP//MMOItems.log("\u00a78TYPE \u00a72CONFIG\u00a77 > Lore\u00a7b " + loreFormat);
//TYP//MMOItems.log("\u00a78TYPE \u00a72CONFIG\u00a78 >>> Config \u00a79 " + config.getString("LoreFormat"));
//TYP//MMOItems.log("\u00a78TYPE \u00a72CONFIG\u00a78 >>> Parent \u00a79 " + (parent == null ? "<null>" : parent.loreFormat));
} }
public void load(ConfigurationSection config) { public void load(ConfigurationSection config) {
Validate.notNull(config, "Could not find config for " + getId()); Validate.notNull(config, "Could not find config for " + getId());
// Parent existed?
//TYP//MMOItems.log("\u00a78TYPE \u00a7aLOAD\u00a77 Loading config overrides for\u00a7f " + id + "\u00a78 (parent\u00a77 " + parent + "\u00a78)");
name = config.getString("name", name); name = config.getString("name", name);
item = read(config.getString("display", item == null ? Material.STONE.toString() : item.getType().toString())); item = read(config.getString("display", item == null ? Material.STONE.toString() : item.getType().toString()));
(unidentifiedTemplate = new UnidentifiedItem(this)).update(config.getConfigurationSection("unident-item")); (unidentifiedTemplate = new UnidentifiedItem(this)).update(config.getConfigurationSection("unident-item"));
// Getting overridden? // Getting overridden?
fourGUIMode = config.getBoolean("AlternateGUIMode", (parent != null && parent.fourGUIMode) || fourGUIMode);
loreFormat = config.getString("LoreFormat", (parent != null ? parent.loreFormat : loreFormat)); loreFormat = config.getString("LoreFormat", (parent != null ? parent.loreFormat : loreFormat));
// Parent existed?
//TYP//MMOItems.log("\u00a78TYPE \u00a7aLOAD\u00a77 > Type\u00a7f " + equipType.toString());
//TYP//MMOItems.log("\u00a78TYPE \u00a7aLOAD\u00a77 > 4GUI\u00a7b " + fourGUIMode);
//TYP//MMOItems.log("\u00a78TYPE \u00a7aLOAD\u00a78 >>> Config \u00a79 " + config.getBoolean("AlternateGUIMode"));
//TYP//MMOItems.log("\u00a78TYPE \u00a7aLOAD\u00a78 >>> Parent \u00a79 " + (parent == null ? "<null>" : parent.fourGUIMode));
//TYP//MMOItems.log("\u00a78TYPE \u00a7aLOAD\u00a77 > Lore\u00a7b " + loreFormat);
//TYP//MMOItems.log("\u00a78TYPE \u00a7aLOAD\u00a78 >>> Config \u00a79 " + config.getString("LoreFormat"));
//TYP//MMOItems.log("\u00a78TYPE \u00a7aLOAD\u00a78 >>> Parent \u00a79 " + (parent == null ? "<null>" : parent.loreFormat));
} }
/** /**
* @deprecated Type is no longer an enum so that external plugins can register their own types. Use getId() instead * @deprecated Type is no longer an enum so that external plugins
* can register their own types. Use getId() instead
*/ */
@Deprecated @Deprecated
public String name() { public String name() {
@ -224,7 +172,30 @@ public class Type {
} }
/** /**
* @return The parentmost parent of this type, or itself, if it has no parent. * @return Does it display as four rows in /mmoitems browse?
*/
public boolean isFourGUIMode() {
return equipType == EquipmentSlot.ARMOR;
}
/**
* @return Should its stats apply in offhand
*/
public boolean isOffhandItem() {
final Type supertype = getSupertype();
return supertype.equals(OFF_CATALYST) || supertype.equals(BOTH_CATALYST);
}
/**
* @return Default lore format used by this Type
*/
@Nullable
public String getLoreFormat() {
return loreFormat;
}
/**
* @return The highest parent of this type, or itself, if it has no parent.
*/ */
public Type getSupertype() { public Type getSupertype() {
Type parentMost = this; Type parentMost = this;

View File

@ -161,9 +161,10 @@ LUTE:
- '{range}&8- &7Lvl Range: &e#range#' - '{range}&8- &7Lvl Range: &e#range#'
- '{tier}&8- &7Item Tier: #prefix##tier#' - '{tier}&8- &7Item Tier: #prefix##tier#'
# Applies stats in mainhand only
CATALYST: CATALYST:
display: PRISMARINE_SHARD display: PRISMARINE_SHARD
name: 'Catalyst' name: 'Catalyst (Mainhand)'
unident-item: unident-item:
name: '&f#prefix#Unidentified Catalyst' name: '&f#prefix#Unidentified Catalyst'
lore: lore:
@ -174,9 +175,24 @@ CATALYST:
- '{range}&8- &7Lvl Range: &e#range#' - '{range}&8- &7Lvl Range: &e#range#'
- '{tier}&8- &7Item Tier: #prefix##tier#' - '{tier}&8- &7Item Tier: #prefix##tier#'
# Applies stats in offhand only
OFF_CATALYST: OFF_CATALYST:
display: PRISMARINE_CRYSTALS display: PRISMARINE_CRYSTALS
name: 'Offhand Catalyst' name: 'Catalyst (Offhand)'
unident-item:
name: '&f#prefix#Unidentified Offhand Catalyst'
lore:
- '&7This item is unidentified. I must'
- '&7find a way to identify it!'
- '{tier}'
- '{tier}&8Item Info:'
- '{range}&8- &7Lvl Range: &e#range#'
- '{tier}&8- &7Item Tier: #prefix##tier#'
# Applies stats in both hands
BOTH_CATALYST:
display: PRISMARINE_CRYSTALS
name: 'Catalyst'
unident-item: unident-item:
name: '&f#prefix#Unidentified Offhand Catalyst' name: '&f#prefix#Unidentified Offhand Catalyst'
lore: lore: