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;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@ -91,7 +92,14 @@ public class AvailableAbilities {
|
||||
if (!toolAbilities.isEmpty()) {
|
||||
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);
|
||||
if (!fullName.isEmpty()) {
|
||||
list.add(" " + EnumChatFormatting.GOLD + fullName);
|
||||
@ -108,7 +116,14 @@ public class AvailableAbilities {
|
||||
if (!weaponAbilities.isEmpty()) {
|
||||
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));
|
||||
});
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@ package com.hbm.handler.ability;
|
||||
|
||||
import net.minecraft.client.resources.I18n;
|
||||
|
||||
public interface IBaseAbility {
|
||||
public interface IBaseAbility extends Comparable<IBaseAbility> {
|
||||
public String getName();
|
||||
|
||||
public default String getExtension(int level) {
|
||||
@ -24,4 +24,13 @@ public interface IBaseAbility {
|
||||
default int levels() {
|
||||
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;
|
||||
}
|
||||
|
||||
public final static int SORT_ORDER_BASE = 0;
|
||||
|
||||
// region handlers
|
||||
public static final IToolAreaAbility NONE = new IToolAreaAbility() {
|
||||
@Override
|
||||
public String getName() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
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] + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 1;
|
||||
}
|
||||
|
||||
// Note: if reusing it across different instatces of a tool
|
||||
// is a problem here, then it had already been one before
|
||||
// the refactor! The solution is to simply make this a local
|
||||
@ -193,6 +205,11 @@ public interface IToolAreaAbility extends IBaseAbility {
|
||||
return " (" + rangeAtLevel[level] + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onDig(int level, World world, int x, int y, int z, EntityPlayer player, ItemToolAbility tool) {
|
||||
int range = rangeAtLevel[level];
|
||||
@ -241,6 +258,11 @@ public interface IToolAreaAbility extends IBaseAbility {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onDig(int level, World world, int x, int y, int z, EntityPlayer player, ItemToolAbility tool) {
|
||||
float strength = strengthAtLevel[level];
|
||||
|
||||
@ -41,6 +41,8 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
||||
}
|
||||
}
|
||||
|
||||
public final static int SORT_ORDER_BASE = 100;
|
||||
|
||||
// region handlers
|
||||
public static final IToolHarvestAbility NONE = new IToolHarvestAbility() {
|
||||
@Override
|
||||
@ -48,6 +50,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean skipDefaultDrops(int level) {
|
||||
return false;
|
||||
@ -65,6 +72,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
||||
return ToolConfig.abilitySilk;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean skipDefaultDrops(int level) {
|
||||
return false;
|
||||
@ -109,6 +121,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
||||
return " (" + powerAtLevel[level] + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean skipDefaultDrops(int level) {
|
||||
return false;
|
||||
@ -141,6 +158,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
||||
return ToolConfig.abilityFurnace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean skipDefaultDrops(int level) {
|
||||
return true;
|
||||
@ -184,6 +206,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
||||
return ToolConfig.abilityShredder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean skipDefaultDrops(int level) {
|
||||
return true;
|
||||
@ -216,6 +243,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
||||
return ToolConfig.abilityCentrifuge;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean skipDefaultDrops(int level) {
|
||||
return true;
|
||||
@ -252,6 +284,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
||||
return ToolConfig.abilityCrystallizer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 6;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean skipDefaultDrops(int level) {
|
||||
return true;
|
||||
@ -284,6 +321,11 @@ public interface IToolHarvestAbility extends IBaseAbility {
|
||||
return ToolConfig.abilityMercury;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 7;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean skipDefaultDrops(int level) {
|
||||
return true;
|
||||
|
||||
@ -38,6 +38,8 @@ public interface IWeaponAbility extends IBaseAbility {
|
||||
// Note: tool is currently unused in weapon abilities
|
||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool);
|
||||
|
||||
public final static int SORT_ORDER_BASE = 200;
|
||||
|
||||
// region handlers
|
||||
public static final IWeaponAbility NONE = new IWeaponAbility() {
|
||||
@Override
|
||||
@ -45,6 +47,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
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] + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||
if(victim instanceof EntityLivingBase)
|
||||
@ -92,6 +104,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
||||
return " (" + amountAtLevel[level] + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||
float amount = amountAtLevel[level];
|
||||
@ -124,6 +141,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
||||
return " (" + durationAtLevel[level] + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||
int duration = durationAtLevel[level];
|
||||
@ -155,6 +177,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
||||
return " (1:" + dividerAtLevel[level] + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||
int divider = dividerAtLevel[level];
|
||||
@ -197,6 +224,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
||||
return " (" + durationAtLevel[level] + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||
int duration = durationAtLevel[level];
|
||||
@ -227,6 +259,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
||||
return " (" + durationAtLevel[level] + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||
if(victim instanceof EntityLivingBase) {
|
||||
@ -253,6 +290,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
||||
return " (1:" + dividerAtLevel[level] + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 6;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||
int divider = dividerAtLevel[level];
|
||||
@ -290,6 +332,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
||||
return "weapon.ability.beheader";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 7;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||
if(victim instanceof EntityLivingBase && ((EntityLivingBase) victim).getHealth() <= 0.0F) {
|
||||
@ -331,6 +378,11 @@ public interface IWeaponAbility extends IBaseAbility {
|
||||
return "weapon.ability.bobble";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int sortOrder() {
|
||||
return SORT_ORDER_BASE + 8;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHit(int level, World world, EntityPlayer player, Entity victim, Item tool) {
|
||||
if(victim instanceof EntityMob && ((EntityMob) victim).getHealth() <= 0.0F) {
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.hbm.items.tool;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
@ -455,6 +456,14 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
return;
|
||||
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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user