Last active
January 1, 2022 00:45
-
-
Save Lanse505/817c7f93a9a843c38c7dc11495eb0685 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.teamacronymcoders.essence.common.capability.itemstack.modifier; | |
import com.google.common.collect.Lists; | |
import com.teamacronymcoders.essence.api.holder.ModifierHolder; | |
import com.teamacronymcoders.essence.api.holder.ModifierInstance; | |
import com.teamacronymcoders.essence.api.modified.IModified; | |
import com.teamacronymcoders.essence.api.modifier.core.Modifier; | |
import com.teamacronymcoders.essence.common.util.helper.EssenceItemstackModifierHelpers; | |
import net.minecraft.nbt.ListTag; | |
import net.minecraft.nbt.Tag; | |
import net.minecraft.world.item.ItemStack; | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.List; | |
public class ItemStackModifierHolder extends ModifierHolder<ItemStack> { | |
private ItemStack stack; | |
public ItemStackModifierHolder() { | |
super(); | |
} | |
public ItemStackModifierHolder(ItemStack stack) { | |
super(); | |
this.stack = stack; | |
} | |
@Override | |
public boolean addModifierInstance(boolean simulate, ItemStack object, ModifierInstance... instances) { | |
if (simulate && object.getItem() instanceof IModified modified) { | |
List<ModifierInstance> sim = getModifierInstances(); | |
for (ModifierInstance instance : instances) { | |
if (!sim.contains(instance)) { | |
sim.add(instance); | |
} | |
} | |
return modified.recheck(sim); | |
} | |
if (object.getItem() instanceof IModified modified) { | |
for (ModifierInstance instance : instances) { | |
if (!getModifierInstances().contains(instance)) { | |
getModifierInstances().add(instance); | |
modified.decreaseFreeModifiers(instance.getModifier().getModifierCountValue(instance.getLevel())); | |
} | |
} | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public boolean removeModifierInstance(boolean simulate, ItemStack object, Modifier... modifiers) { | |
if (simulate && object.getItem() instanceof IModified modified) { | |
List<ModifierInstance> sim = Lists.newArrayList(getModifierInstances()); | |
for (Modifier modifier : modifiers) { | |
sim.removeIf(instance -> instance.getModifier() == modifier); | |
} | |
return modified.recheck(sim); | |
} | |
if (object.getItem() instanceof IModified modified) { | |
if (modifiers != null && modifiers.length > 0) { | |
int cmc = Arrays.stream(modifiers).map(modifier -> { | |
if (modifier != null) { | |
List<ModifierInstance> instancesToRemove = new ArrayList<>(); | |
int val = this.getModifierInstances().stream().filter(instance -> instance != null && instance.getModifier() == modifier) | |
.map(instance -> { | |
instancesToRemove.add(instance); | |
return instance.getModifier().getModifierCountValue(instance.getLevel()); | |
}).reduce(0, Integer::sum); | |
if (!instancesToRemove.isEmpty()) instancesToRemove.forEach(instance -> this.getModifierInstances().remove(instance)); | |
return val; | |
} | |
return 0; | |
}).reduce(0, Integer::sum); | |
modified.addModifierWithoutIncreasingAdditional(cmc); | |
return true; | |
} | |
return false; | |
} | |
return false; | |
} | |
@Override | |
public boolean levelUpModifier(boolean simulate, int increase, ItemStack object, Modifier... modifiers) { | |
if (simulate && object.getItem() instanceof IModified modified) { | |
List<ModifierInstance> sim = getModifierInstances(); | |
for (ModifierInstance instance : sim) { | |
boolean matched = false; | |
for (Modifier modifier : modifiers) { | |
if (instance.getModifier() == modifier) { | |
matched = true; | |
break; | |
} | |
} | |
if (matched) { | |
Modifier stackCoreModifier = instance.getModifier(); | |
instance.setLevel(Math.min(instance.getLevel() + increase, stackCoreModifier.getMaxLevel())); | |
} | |
} | |
return modified.recheck(sim); | |
} | |
if (object.getItem() instanceof IModified modified) { | |
for (ModifierInstance instance : getModifierInstances()) { | |
boolean matched = false; | |
for (Modifier modifier : modifiers) { | |
if (instance.getModifier() == modifier) { | |
matched = true; | |
break; | |
} | |
} | |
if (matched) { | |
Modifier stackCoreModifier = instance.getModifier(); | |
int x = stackCoreModifier.getModifierCountValue(instance.getLevel()); | |
int y = stackCoreModifier.getModifierCountValue(Math.min(instance.getLevel() + increase, stackCoreModifier.getMaxLevel())); | |
instance.setLevel(Math.min(instance.getLevel() + increase, stackCoreModifier.getMaxLevel())); | |
if (x < y) { | |
modified.decreaseFreeModifiers(y - x); | |
} | |
} | |
} | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public boolean levelUpModifier(boolean simulate, int increase, ItemStack object, ModifierInstance... modifiersWithData) { | |
if (simulate && object.getItem() instanceof IModified modified) { | |
List<ModifierInstance> sim = getModifierInstances(); | |
for (ModifierInstance instance : sim) { | |
boolean matched = false; | |
for (ModifierInstance modifier : modifiersWithData) { | |
if (instance.getModifier() == modifier.getModifier() && instance.getModifierData() == modifier.getModifierData()) { | |
matched = true; | |
break; | |
} | |
} | |
if (matched) { | |
Modifier stackCoreModifier = instance.getModifier(); | |
instance.setLevel(Math.min(instance.getLevel() + increase, stackCoreModifier.getMaxLevel())); | |
} | |
} | |
return modified.recheck(sim); | |
} | |
if (object.getItem() instanceof IModified modified) { | |
for (ModifierInstance instance : getModifierInstances()) { | |
boolean matched = false; | |
for (ModifierInstance modifier : modifiersWithData) { | |
if (instance.getModifier() == modifier.getModifier() && instance.getModifierData() == modifier.getModifierData()) { | |
matched = true; | |
break; | |
} | |
} | |
if (matched) { | |
Modifier stackCoreModifier = instance.getModifier(); | |
int x = stackCoreModifier.getModifierCountValue(instance.getLevel()); | |
int y = stackCoreModifier.getModifierCountValue(Math.min(instance.getLevel() + increase, stackCoreModifier.getMaxLevel())); | |
instance.setLevel(Math.min(instance.getLevel() + increase, stackCoreModifier.getMaxLevel())); | |
if (x < y) { | |
modified.decreaseFreeModifiers(y - x); | |
} | |
} | |
} | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public boolean levelDownModifier(boolean simulate, int decrease, ItemStack object, Modifier... modifiers) { | |
if (simulate && object.getItem() instanceof IModified modified) { | |
List<ModifierInstance> sim = getModifierInstances(); | |
for (ModifierInstance instance : sim) { | |
boolean matched = false; | |
for (Modifier modifier : modifiers) { | |
if (instance.getModifier() == modifier) { | |
matched = true; | |
break; | |
} | |
} | |
if (matched) { | |
int level = instance.getLevel(); | |
if (level - decrease < instance.getModifier().getMinLevel()) { | |
sim.remove(instance); | |
continue; | |
} | |
instance.setLevel(instance.getLevel() - decrease); | |
} | |
} | |
return modified.recheck(sim); | |
} | |
if (object.getItem() instanceof IModified modified) { | |
for (ModifierInstance instance : getModifierInstances()) { | |
boolean matched = false; | |
for (Modifier modifier : modifiers) { | |
if (modifier == instance.getModifier()) { | |
matched = true; | |
break; | |
} | |
} | |
if (matched) { | |
int level = instance.getLevel(); | |
if (level - decrease < instance.getModifier().getMinLevel()) { | |
removeModifierInstance(false, object, instance.getModifier()); | |
continue; | |
} | |
int x = instance.getModifier().getModifierCountValue(instance.getLevel()) - instance.getModifier().getModifierCountValue(instance.getLevel() - decrease); | |
instance.setLevel(instance.getLevel() - decrease); | |
if (x > 0) { | |
modified.addModifierWithoutIncreasingAdditional(x); | |
} | |
} | |
} | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public boolean levelDownModifier(boolean simulate, int decrease, ItemStack object, ModifierInstance... modifiersWithData) { | |
boolean result = false; | |
if (simulate && object.getItem() instanceof IModified modified) { | |
List<ModifierInstance> sim = getModifierInstances(); | |
for (ModifierInstance instance : sim) { | |
boolean matched = false; | |
for (ModifierInstance modifier : modifiersWithData) { | |
if (instance.getModifier() == modifier.getModifier() && instance.getModifierData() == modifier.getModifierData()) { | |
matched = true; | |
break; | |
} | |
} | |
if (matched) { | |
int level = instance.getLevel(); | |
if (level - decrease < instance.getModifier().getMinLevel()) { | |
sim.remove(instance); | |
continue; | |
} | |
instance.setLevel(instance.getLevel() - decrease); | |
} | |
} | |
result = modified.recheck(sim); | |
} else if (object.getItem() instanceof IModified modified) { | |
for (ModifierInstance instance : getModifierInstances()) { | |
boolean matched = false; | |
for (ModifierInstance modifier : modifiersWithData) { | |
if (instance.getModifier() == modifier.getModifier() && instance.getModifierData() == modifier.getModifierData()) { | |
matched = true; | |
break; | |
} | |
} | |
if (matched) { | |
int level = instance.getLevel(); | |
if (level - decrease < instance.getModifier().getMinLevel()) { | |
removeModifierInstance(false, object, instance.getModifier()); | |
continue; | |
} | |
int x = instance.getModifier().getModifierCountValue(instance.getLevel()) - instance.getModifier().getModifierCountValue(instance.getLevel() - decrease); | |
instance.setLevel(instance.getLevel() - decrease); | |
if (x > 0) { | |
modified.addModifierWithoutIncreasingAdditional(x); | |
} | |
} | |
} | |
result = true; | |
} | |
return result; | |
} | |
@Override | |
public boolean levelSetModifier(boolean simulate, int level, ItemStack object, Modifier... modifiers) { | |
if (simulate && object.getItem() instanceof IModified modified) { | |
List<ModifierInstance> sim = getModifierInstances(); | |
for (ModifierInstance instance : sim) { | |
for (Modifier modifier : modifiers) { | |
if (instance.getModifier() == modifier) { | |
instance.setLevel(level); | |
break; | |
} | |
} | |
} | |
return modified.recheck(sim); | |
} | |
if (object.getItem() instanceof IModified modified) { | |
for (ModifierInstance instance : getModifierInstances()) { | |
boolean matched = false; | |
for (Modifier modifier : modifiers) { | |
if (instance.getModifier() == modifier) { | |
matched = true; | |
break; | |
} | |
} | |
if (matched) { | |
int x = instance.getModifier().getModifierCountValue(instance.getLevel()) - instance.getModifier().getModifierCountValue(level); | |
instance.setLevel(level); | |
if (x > 0) { | |
modified.addModifierWithoutIncreasingAdditional(x); | |
} | |
if (x < 0) { | |
modified.decreaseFreeModifiers(x); | |
} | |
} | |
} | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public boolean levelSetModifier(boolean simulate, int level, ItemStack object, ModifierInstance... modifiersWithData) { | |
if (simulate && object.getItem() instanceof IModified modified) { | |
List<ModifierInstance> sim = getModifierInstances(); | |
for (ModifierInstance instance : sim) { | |
for (ModifierInstance modifier : modifiersWithData) { | |
if (instance.getModifier() == modifier.getModifier() && instance.getModifierData() == modifier.getModifierData()) { | |
instance.setLevel(level); | |
break; | |
} | |
} | |
} | |
return modified.recheck(sim); | |
} | |
if (object.getItem() instanceof IModified modified) { | |
for (ModifierInstance instance : getModifierInstances()) { | |
boolean matched = false; | |
for (ModifierInstance modifier : modifiersWithData) { | |
if (instance.getModifier() == modifier.getModifier() && instance.getModifierData() == modifier.getModifierData()) { | |
matched = true; | |
break; | |
} | |
} | |
if (matched) { | |
int x = instance.getModifier().getModifierCountValue(instance.getLevel()) - instance.getModifier().getModifierCountValue(level); | |
instance.setLevel(level); | |
if (x > 0) { | |
modified.addModifierWithoutIncreasingAdditional(x); | |
} | |
if (x < 0) { | |
modified.decreaseFreeModifiers(x); | |
} | |
} | |
} | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public ListTag serializeNBT() { | |
final ListTag listNBT = new ListTag(); | |
for (ModifierInstance instance : getModifierInstances()) { | |
listNBT.add(instance.serializeNBT()); | |
} | |
stack.getOrCreateTag().put(EssenceItemstackModifierHelpers.TAG_MODIFIERS, listNBT); | |
return listNBT; | |
} | |
@Override | |
public void deserializeNBT(ListTag nbt) { | |
super.deserializeNBT(nbt.size() > 0 ? nbt : stack.getOrCreateTag().getList(EssenceItemstackModifierHelpers.TAG_MODIFIERS, Tag.TAG_COMPOUND)); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.teamacronymcoders.essence.api.holder; | |
import com.google.common.collect.Lists; | |
import com.teamacronymcoders.essence.api.modified.IModified; | |
import com.teamacronymcoders.essence.api.modifier.core.Modifier; | |
import net.minecraft.nbt.CompoundTag; | |
import net.minecraft.nbt.ListTag; | |
import net.minecraftforge.common.util.INBTSerializable; | |
import javax.annotation.Nonnull; | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.List; | |
public abstract class ModifierHolder<T> implements IModifierHolder<T>, INBTSerializable<ListTag> { | |
private final List<ModifierInstance> modifiers; | |
public ModifierHolder() { | |
modifiers = new ArrayList<>(); | |
} | |
@Override | |
public boolean addModifierInstance(boolean simulate, T object, ModifierInstance... instances) { | |
if (simulate && object instanceof IModified modified) { | |
List<ModifierInstance> sim = modifiers; | |
for (ModifierInstance instance : instances) { | |
if (!sim.contains(instance)) { | |
sim.add(instance); | |
} | |
} | |
return modified.recheck(sim); | |
} | |
if (object instanceof IModified modified) { | |
for (ModifierInstance instance : instances) { | |
if (!modifiers.contains(instance)) { | |
modifiers.add(instance); | |
modified.decreaseFreeModifiers(instance.getModifier().getModifierCountValue(instance.getLevel())); | |
} | |
} | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public boolean removeModifierInstance(boolean simulate, T object, Modifier... modifiers) { | |
if (simulate && object instanceof IModified modified) { | |
List<ModifierInstance> sim = Lists.newArrayList(this.modifiers); | |
Arrays.stream(modifiers).forEach(modifier -> sim.stream().filter(instance -> instance.getModifier() == modifier).forEach(sim::remove)); | |
return modified.recheck(sim); | |
} | |
if (object instanceof IModified modified) { | |
int cmc = Arrays.stream(modifiers).map(modifier -> this.modifiers.stream().filter(instance -> instance.getModifier() == modifier) | |
.map(instance -> { | |
this.modifiers.remove(instance); | |
return instance.getModifier().getModifierCountValue(instance.getLevel()); | |
}).reduce(0, Integer::sum)).reduce(0, Integer::sum); | |
modified.addModifierWithoutIncreasingAdditional(cmc); | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public boolean levelUpModifier(boolean simulate, int increase, T object, Modifier... modifiers) { | |
if (simulate && object instanceof IModified) { | |
IModified modified = (IModified) object; | |
List<ModifierInstance> sim = this.modifiers; | |
sim.stream() | |
.filter(instance -> Arrays.stream(modifiers).anyMatch(modifier -> instance.getModifier() == modifier)) | |
.forEach(instance -> { | |
Modifier stackCoreModifier = instance.getModifier(); | |
instance.setLevel(Math.min(instance.getLevel() + increase, stackCoreModifier.getMaxLevel())); | |
}); | |
return modified.recheck(sim); | |
} | |
if (object instanceof IModified modified) { | |
this.modifiers.stream() | |
.filter(instance -> Arrays.stream(modifiers).anyMatch(modifier -> instance.getModifier() == modifier)) | |
.forEach(instance -> { | |
Modifier stackCoreModifier = instance.getModifier(); | |
int x = stackCoreModifier.getModifierCountValue(instance.getLevel()); | |
int y = stackCoreModifier.getModifierCountValue(Math.min(instance.getLevel() + increase, stackCoreModifier.getMaxLevel())); | |
instance.setLevel(Math.min(instance.getLevel() + increase, stackCoreModifier.getMaxLevel())); | |
if (x < y) { | |
modified.decreaseFreeModifiers(y - x); | |
} | |
}); | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public boolean levelUpModifier(boolean simulate, int increase, T object, ModifierInstance... modifiersWithData) { | |
if (simulate && object instanceof IModified modified) { | |
List<ModifierInstance> sim = this.modifiers; | |
sim.stream() | |
.filter(instance -> Arrays.stream(modifiersWithData).anyMatch(modifier -> instance.getModifier() == modifier.getModifier() && instance.getModifierData() == modifier.getModifierData())) | |
.forEach(instance -> { | |
Modifier stackCoreModifier = instance.getModifier(); | |
instance.setLevel(Math.min(instance.getLevel() + increase, stackCoreModifier.getMaxLevel())); | |
}); | |
return modified.recheck(sim); | |
} | |
if (object instanceof IModified modified) { | |
this.modifiers.stream() | |
.filter(instance -> Arrays.stream(modifiersWithData).anyMatch(modifier -> instance.getModifier() == modifier.getModifier() && instance.getModifierData() == modifier.getModifierData())) | |
.forEach(instance -> { | |
Modifier stackCoreModifier = instance.getModifier(); | |
int x = stackCoreModifier.getModifierCountValue(instance.getLevel()); | |
int y = stackCoreModifier.getModifierCountValue(Math.min(instance.getLevel() + increase, stackCoreModifier.getMaxLevel())); | |
instance.setLevel(Math.min(instance.getLevel() + increase, stackCoreModifier.getMaxLevel())); | |
if (x < y) { | |
modified.decreaseFreeModifiers(y - x); | |
} | |
}); | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public boolean levelDownModifier(boolean simulate, int decrease, T object, Modifier... modifiers) { | |
if (simulate && object instanceof IModified modified) { | |
List<ModifierInstance> sim = this.modifiers; | |
sim.stream() | |
.filter(instance -> Arrays.stream(modifiers).anyMatch(modifier -> instance.getModifier() == modifier)) | |
.forEach(instance -> { | |
int level = instance.getLevel(); | |
if (level - decrease < instance.getModifier().getMinLevel()) { | |
sim.remove(instance); | |
return; | |
} | |
instance.setLevel(instance.getLevel() - decrease); | |
}); | |
return modified.recheck(sim); | |
} | |
if (object instanceof IModified modified) { | |
this.modifiers.stream() | |
.filter(instance -> Arrays.stream(modifiers).anyMatch(modifier -> modifier == instance.getModifier())) | |
.forEach(instance -> { | |
int level = instance.getLevel(); | |
if (level - decrease < instance.getModifier().getMinLevel()) { | |
removeModifierInstance(false, object, instance.getModifier()); | |
return; | |
} | |
int x = instance.getModifier().getModifierCountValue(instance.getLevel()) - instance.getModifier().getModifierCountValue(instance.getLevel() - decrease); | |
instance.setLevel(instance.getLevel() - decrease); | |
if (x > 0) { | |
modified.addModifierWithoutIncreasingAdditional(x); | |
} | |
}); | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public boolean levelDownModifier(boolean simulate, int decrease, T object, ModifierInstance... modifiersWithData) { | |
if (simulate && object instanceof IModified modified) { | |
List<ModifierInstance> sim = this.modifiers; | |
sim.stream() | |
.filter(instance -> Arrays.stream(modifiersWithData).anyMatch(modifier -> instance.getModifier() == modifier.getModifier() && instance.getModifierData() == modifier.getModifierData())) | |
.forEach(instance -> { | |
int level = instance.getLevel(); | |
if (level - decrease < instance.getModifier().getMinLevel()) { | |
sim.remove(instance); | |
return; | |
} | |
instance.setLevel(instance.getLevel() - decrease); | |
}); | |
return modified.recheck(sim); | |
} | |
if (object instanceof IModified modified) { | |
this.modifiers.stream() | |
.filter(instance -> Arrays.stream(modifiersWithData).anyMatch(modifier -> instance.getModifier() == modifier.getModifier() && instance.getModifierData() == modifier.getModifierData())) | |
.forEach(instance -> { | |
int level = instance.getLevel(); | |
if (level - decrease < instance.getModifier().getMinLevel()) { | |
removeModifierInstance(false, object, instance.getModifier()); | |
return; | |
} | |
int x = instance.getModifier().getModifierCountValue(instance.getLevel()) - instance.getModifier().getModifierCountValue(instance.getLevel() - decrease); | |
instance.setLevel(instance.getLevel() - decrease); | |
if (x > 0) { | |
modified.addModifierWithoutIncreasingAdditional(x); | |
} | |
}); | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public boolean levelSetModifier(boolean simulate, int level, T object, Modifier... modifiers) { | |
if (simulate && object instanceof IModified modified) { | |
List<ModifierInstance> sim = this.modifiers; | |
sim.stream() | |
.filter(instance -> Arrays.stream(modifiers).anyMatch(modifier -> instance.getModifier() == modifier)) | |
.forEach(instance -> { | |
instance.setLevel(level); | |
}); | |
return modified.recheck(sim); | |
} | |
if (object instanceof IModified modified) { | |
this.modifiers.stream() | |
.filter(instance -> Arrays.stream(modifiers).anyMatch(modifier -> instance.getModifier() == modifier)) | |
.forEach(instance -> { | |
int x = instance.getModifier().getModifierCountValue(instance.getLevel()) - instance.getModifier().getModifierCountValue(level); | |
instance.setLevel(level); | |
if (x > 0) { | |
modified.addModifierWithoutIncreasingAdditional(x); | |
} | |
if (x < 0) { | |
modified.decreaseFreeModifiers(x); | |
} | |
}); | |
return true; | |
} | |
return false; | |
} | |
@Override | |
public boolean levelSetModifier(boolean simulate, int level, T object, ModifierInstance... modifiersWithData) { | |
if (simulate && object instanceof IModified modified) { | |
List<ModifierInstance> sim = this.modifiers; | |
sim.stream() | |
.filter(instance -> Arrays.stream(modifiersWithData).anyMatch(modifier -> instance.getModifier() == modifier.getModifier() && instance.getModifierData() == modifier.getModifierData())) | |
.forEach(instance -> { | |
instance.setLevel(level); | |
}); | |
return modified.recheck(sim); | |
} | |
if (object instanceof IModified modified) { | |
this.modifiers.stream() | |
.filter(instance -> Arrays.stream(modifiersWithData).anyMatch(modifier -> instance.getModifier() == modifier.getModifier() && instance.getModifierData() == modifier.getModifierData())) | |
.forEach(instance -> { | |
int x = instance.getModifier().getModifierCountValue(instance.getLevel()) - instance.getModifier().getModifierCountValue(level); | |
instance.setLevel(level); | |
if (x > 0) { | |
modified.addModifierWithoutIncreasingAdditional(x); | |
} | |
if (x < 0) { | |
modified.decreaseFreeModifiers(x); | |
} | |
}); | |
return true; | |
} | |
return false; | |
} | |
@Nonnull | |
@Override | |
public List<ModifierInstance> getModifierInstances() { | |
return modifiers; | |
} | |
@Override | |
public void clearModifiers() { | |
modifiers.clear(); | |
} | |
@Override | |
public ListTag serializeNBT() { | |
final ListTag listNBT = new ListTag(); | |
for (ModifierInstance instance : modifiers) { | |
listNBT.add(instance.serializeNBT()); | |
} | |
return listNBT; | |
} | |
@Override | |
public void deserializeNBT(ListTag tags) { | |
this.modifiers.clear(); | |
for (int i = 0; i < tags.size(); i++) { | |
final CompoundTag compoundTag = tags.getCompound(i); | |
final ModifierInstance instance = new ModifierInstance(); | |
instance.deserializeNBT(compoundTag); | |
this.modifiers.add(instance); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment