mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Sort abilities consistently
This commit is contained in:
parent
e23cfab649
commit
ce64270b2c
@ -1,6 +1,7 @@
|
|||||||
package com.hbm.handler.ability;
|
package com.hbm.handler.ability;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -91,7 +92,14 @@ public class AvailableAbilities {
|
|||||||
if (!toolAbilities.isEmpty()) {
|
if (!toolAbilities.isEmpty()) {
|
||||||
list.add("Abilities: ");
|
list.add("Abilities: ");
|
||||||
|
|
||||||
toolAbilities.forEach((ability, level) -> {
|
toolAbilities.entrySet().stream().sorted(
|
||||||
|
Comparator
|
||||||
|
.comparing(Map.Entry<IBaseAbility, Integer>::getKey)
|
||||||
|
.thenComparing(Map.Entry<IBaseAbility, Integer>::getValue)
|
||||||
|
).forEach(entry -> {
|
||||||
|
IBaseAbility ability = entry.getKey();
|
||||||
|
int level = entry.getValue();
|
||||||
|
|
||||||
String fullName = ability.getFullName(level);
|
String fullName = ability.getFullName(level);
|
||||||
if (!fullName.isEmpty()) {
|
if (!fullName.isEmpty()) {
|
||||||
list.add(" " + EnumChatFormatting.GOLD + fullName);
|
list.add(" " + EnumChatFormatting.GOLD + fullName);
|
||||||
@ -108,7 +116,14 @@ public class AvailableAbilities {
|
|||||||
if (!weaponAbilities.isEmpty()) {
|
if (!weaponAbilities.isEmpty()) {
|
||||||
list.add("Weapon modifiers: ");
|
list.add("Weapon modifiers: ");
|
||||||
|
|
||||||
weaponAbilities.forEach((ability, level) -> {
|
weaponAbilities.entrySet().stream().sorted(
|
||||||
|
Comparator
|
||||||
|
.comparing(Map.Entry<IWeaponAbility, Integer>::getKey)
|
||||||
|
.thenComparing(Map.Entry<IWeaponAbility, Integer>::getValue)
|
||||||
|
).forEach(entry -> {
|
||||||
|
IWeaponAbility ability = entry.getKey();
|
||||||
|
int level = entry.getValue();
|
||||||
|
|
||||||
list.add(" " + EnumChatFormatting.RED + ability.getFullName(level));
|
list.add(" " + EnumChatFormatting.RED + ability.getFullName(level));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,7 +2,7 @@ package com.hbm.handler.ability;
|
|||||||
|
|
||||||
import net.minecraft.client.resources.I18n;
|
import net.minecraft.client.resources.I18n;
|
||||||
|
|
||||||
public interface IBaseAbility {
|
public interface IBaseAbility extends Comparable<IBaseAbility> {
|
||||||
public String getName();
|
public String getName();
|
||||||
|
|
||||||
public default String getExtension(int level) {
|
public default String getExtension(int level) {
|
||||||
@ -24,4 +24,13 @@ public interface IBaseAbility {
|
|||||||
default int levels() {
|
default int levels() {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default int sortOrder() {
|
||||||
|
return hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default int compareTo(IBaseAbility o) {
|
||||||
|
return sortOrder() - o.sortOrder();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,12 +34,19 @@ public interface IToolAreaAbility extends IBaseAbility {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final static int SORT_ORDER_BASE = 0;
|
||||||
|
|
||||||
// region handlers
|
// region handlers
|
||||||
public static final IToolAreaAbility NONE = new IToolAreaAbility() {
|
public static final IToolAreaAbility NONE = new IToolAreaAbility() {
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onDig(int level, World world, int x, int y, int z, EntityPlayer player, ItemToolAbility tool) {
|
public boolean onDig(int level, World world, int x, int y, int z, EntityPlayer player, ItemToolAbility tool) {
|
||||||
@ -70,6 +77,11 @@ public interface IToolAreaAbility extends IBaseAbility {
|
|||||||
return " (" + radiusAtLevel[level] + ")";
|
return " (" + radiusAtLevel[level] + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 1;
|
||||||
|
}
|
||||||
|
|
||||||
// Note: if reusing it across different instatces of a tool
|
// Note: if reusing it across different instatces of a tool
|
||||||
// is a problem here, then it had already been one before
|
// is a problem here, then it had already been one before
|
||||||
// the refactor! The solution is to simply make this a local
|
// the refactor! The solution is to simply make this a local
|
||||||
@ -193,6 +205,11 @@ public interface IToolAreaAbility extends IBaseAbility {
|
|||||||
return " (" + rangeAtLevel[level] + ")";
|
return " (" + rangeAtLevel[level] + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 2;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onDig(int level, World world, int x, int y, int z, EntityPlayer player, ItemToolAbility tool) {
|
public boolean onDig(int level, World world, int x, int y, int z, EntityPlayer player, ItemToolAbility tool) {
|
||||||
int range = rangeAtLevel[level];
|
int range = rangeAtLevel[level];
|
||||||
@ -241,6 +258,11 @@ public interface IToolAreaAbility extends IBaseAbility {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 3;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onDig(int level, World world, int x, int y, int z, EntityPlayer player, ItemToolAbility tool) {
|
public boolean onDig(int level, World world, int x, int y, int z, EntityPlayer player, ItemToolAbility tool) {
|
||||||
float strength = strengthAtLevel[level];
|
float strength = strengthAtLevel[level];
|
||||||
|
|||||||
@ -41,6 +41,8 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final static int SORT_ORDER_BASE = 100;
|
||||||
|
|
||||||
// region handlers
|
// region handlers
|
||||||
public static final IToolHarvestAbility NONE = new IToolHarvestAbility() {
|
public static final IToolHarvestAbility NONE = new IToolHarvestAbility() {
|
||||||
@Override
|
@Override
|
||||||
@ -48,6 +50,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean skipDefaultDrops(int level) {
|
public boolean skipDefaultDrops(int level) {
|
||||||
return false;
|
return false;
|
||||||
@ -65,6 +72,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
|||||||
return ToolConfig.abilitySilk;
|
return ToolConfig.abilitySilk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 1;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean skipDefaultDrops(int level) {
|
public boolean skipDefaultDrops(int level) {
|
||||||
return false;
|
return false;
|
||||||
@ -109,6 +121,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
|||||||
return " (" + powerAtLevel[level] + ")";
|
return " (" + powerAtLevel[level] + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 2;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean skipDefaultDrops(int level) {
|
public boolean skipDefaultDrops(int level) {
|
||||||
return false;
|
return false;
|
||||||
@ -141,6 +158,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
|||||||
return ToolConfig.abilityFurnace;
|
return ToolConfig.abilityFurnace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 3;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean skipDefaultDrops(int level) {
|
public boolean skipDefaultDrops(int level) {
|
||||||
return true;
|
return true;
|
||||||
@ -184,6 +206,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
|||||||
return ToolConfig.abilityShredder;
|
return ToolConfig.abilityShredder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 4;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean skipDefaultDrops(int level) {
|
public boolean skipDefaultDrops(int level) {
|
||||||
return true;
|
return true;
|
||||||
@ -216,6 +243,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
|||||||
return ToolConfig.abilityCentrifuge;
|
return ToolConfig.abilityCentrifuge;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 5;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean skipDefaultDrops(int level) {
|
public boolean skipDefaultDrops(int level) {
|
||||||
return true;
|
return true;
|
||||||
@ -252,6 +284,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
|||||||
return ToolConfig.abilityCrystallizer;
|
return ToolConfig.abilityCrystallizer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 6;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean skipDefaultDrops(int level) {
|
public boolean skipDefaultDrops(int level) {
|
||||||
return true;
|
return true;
|
||||||
@ -284,6 +321,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
|||||||
return ToolConfig.abilityMercury;
|
return ToolConfig.abilityMercury;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 7;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean skipDefaultDrops(int level) {
|
public boolean skipDefaultDrops(int level) {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@ -38,6 +38,8 @@ public interface IWeaponAbility extends IBaseAbility {
|
|||||||
// Note: tool is currently unused in weapon abilities
|
// Note: tool is currently unused in weapon abilities
|
||||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool);
|
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool);
|
||||||
|
|
||||||
|
public final static int SORT_ORDER_BASE = 200;
|
||||||
|
|
||||||
// region handlers
|
// region handlers
|
||||||
public static final IWeaponAbility NONE = new IWeaponAbility() {
|
public static final IWeaponAbility NONE = new IWeaponAbility() {
|
||||||
@Override
|
@Override
|
||||||
@ -45,6 +47,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {}
|
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {}
|
||||||
};
|
};
|
||||||
@ -67,6 +74,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
|||||||
return " (" + radAtLevel[level] + ")";
|
return " (" + radAtLevel[level] + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 1;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||||
if(victim instanceof EntityLivingBase)
|
if(victim instanceof EntityLivingBase)
|
||||||
@ -92,6 +104,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
|||||||
return " (" + amountAtLevel[level] + ")";
|
return " (" + amountAtLevel[level] + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 2;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||||
float amount = amountAtLevel[level];
|
float amount = amountAtLevel[level];
|
||||||
@ -124,6 +141,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
|||||||
return " (" + durationAtLevel[level] + ")";
|
return " (" + durationAtLevel[level] + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 3;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||||
int duration = durationAtLevel[level];
|
int duration = durationAtLevel[level];
|
||||||
@ -155,6 +177,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
|||||||
return " (1:" + dividerAtLevel[level] + ")";
|
return " (1:" + dividerAtLevel[level] + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 4;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||||
int divider = dividerAtLevel[level];
|
int divider = dividerAtLevel[level];
|
||||||
@ -197,6 +224,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
|||||||
return " (" + durationAtLevel[level] + ")";
|
return " (" + durationAtLevel[level] + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 5;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||||
int duration = durationAtLevel[level];
|
int duration = durationAtLevel[level];
|
||||||
@ -227,6 +259,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
|||||||
return " (" + durationAtLevel[level] + ")";
|
return " (" + durationAtLevel[level] + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 5;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||||
if(victim instanceof EntityLivingBase) {
|
if(victim instanceof EntityLivingBase) {
|
||||||
@ -253,6 +290,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
|||||||
return " (1:" + dividerAtLevel[level] + ")";
|
return " (1:" + dividerAtLevel[level] + ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 6;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||||
int divider = dividerAtLevel[level];
|
int divider = dividerAtLevel[level];
|
||||||
@ -290,6 +332,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
|||||||
return "weapon.ability.beheader";
|
return "weapon.ability.beheader";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 7;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||||
if(victim instanceof EntityLivingBase && ((EntityLivingBase) victim).getHealth() <= 0.0F) {
|
if(victim instanceof EntityLivingBase && ((EntityLivingBase) victim).getHealth() <= 0.0F) {
|
||||||
@ -331,6 +378,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
|||||||
return "weapon.ability.bobble";
|
return "weapon.ability.bobble";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int sortOrder() {
|
||||||
|
return SORT_ORDER_BASE + 8;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||||
if(victim instanceof EntityMob && ((EntityMob) victim).getHealth() <= 0.0F) {
|
if(victim instanceof EntityMob && ((EntityMob) victim).getHealth() <= 0.0F) {
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
package com.hbm.items.tool;
|
package com.hbm.items.tool;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
@ -455,6 +456,14 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
|||||||
return;
|
return;
|
||||||
presets.add(new ToolPreset(IToolAreaAbility.NONE, 0, ability, level));
|
presets.add(new ToolPreset(IToolAreaAbility.NONE, 0, ability, level));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
presets.sort(
|
||||||
|
Comparator
|
||||||
|
.comparing((ToolPreset p) -> p.harvestAbility)
|
||||||
|
.thenComparingInt(p -> p.harvestAbilityLevel)
|
||||||
|
.thenComparing(p -> p.areaAbility)
|
||||||
|
.thenComparingInt(p -> p.areaAbilityLevel)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void restrictTo(AvailableAbilities availableAbilities) {
|
public void restrictTo(AvailableAbilities availableAbilities) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user