mirror of
https://github.com/Theta-Dev/ConstructionWand.git
synced 2025-09-15 14:17:17 +02:00
Modular WandActions and WandSuppliers. Wand Cores and Wand Reservoirs can be added to your wand, they determine which action and supplier gets used.
83 lines
1.8 KiB
Java
83 lines
1.8 KiB
Java
package thetadev.constructionwand.basics.option;
|
|
|
|
import net.minecraft.nbt.CompoundNBT;
|
|
import thetadev.constructionwand.api.IWandUpgrade;
|
|
|
|
public class WandUpgradesSelectable<T extends IWandUpgrade> extends WandUpgrades<T> implements IOption<T>
|
|
{
|
|
private byte selector;
|
|
|
|
public WandUpgradesSelectable(CompoundNBT tag, String key, T dval) {
|
|
super(tag, key, dval);
|
|
}
|
|
|
|
@Override
|
|
public String getKey() {
|
|
return key;
|
|
}
|
|
|
|
@Override
|
|
public String getValueString() {
|
|
return get().getRegistryName().toString();
|
|
}
|
|
|
|
@Override
|
|
public void setValueString(String val) {
|
|
for(byte i = 0; i < upgrades.size(); i++) {
|
|
if(upgrades.get(i).getRegistryName().toString().equals(val)) {
|
|
selector = i;
|
|
serializeSelector();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean isEnabled() {
|
|
return upgrades.size() > 1;
|
|
}
|
|
|
|
@Override
|
|
public void set(T val) {
|
|
selector = (byte) upgrades.indexOf(val);
|
|
fixSelector();
|
|
serializeSelector();
|
|
}
|
|
|
|
@Override
|
|
public T get() {
|
|
fixSelector();
|
|
return upgrades.get(selector);
|
|
}
|
|
|
|
@Override
|
|
public T next(boolean dir) {
|
|
selector++;
|
|
fixSelector();
|
|
serializeSelector();
|
|
return get();
|
|
}
|
|
|
|
private void fixSelector() {
|
|
if(selector < 0 || selector >= upgrades.size()) selector = 0;
|
|
}
|
|
|
|
@Override
|
|
protected void deserialize() {
|
|
super.deserialize();
|
|
|
|
selector = tag.getByte(key + "_sel");
|
|
fixSelector();
|
|
}
|
|
|
|
@Override
|
|
protected void serialize() {
|
|
super.serialize();
|
|
|
|
serializeSelector();
|
|
}
|
|
|
|
private void serializeSelector() {
|
|
tag.putByte(key + "_sel", selector);
|
|
}
|
|
}
|