diff options
| author | D-Cysteine <54219287+D-Cysteine@users.noreply.github.com> | 2021-12-08 16:49:20 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-09 00:49:20 +0100 |
| commit | 695012134efafe33c839a26b4b00e14718ed74fa (patch) | |
| tree | cf6dce3626c7ab1ae383c1651f24405b96c39652 /src/main/java/gregtech/api | |
| parent | 0b70f6cd6ff8b224600fc8e47816912aa8fce223 (diff) | |
| download | GT5-Unofficial-695012134efafe33c839a26b4b00e14718ed74fa.tar.gz GT5-Unofficial-695012134efafe33c839a26b4b00e14718ed74fa.tar.bz2 GT5-Unofficial-695012134efafe33c839a26b4b00e14718ed74fa.zip | |
Add threshold support to item and fluid covers (#785)
* Add threshold support to item and fluid covers
* Switch to storing in NBT
* Add handling for migration path
* Adjust item threshold max value
Diffstat (limited to 'src/main/java/gregtech/api')
4 files changed, 18 insertions, 4 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java index bff79743be..fc5fa64d91 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java @@ -176,9 +176,10 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE GT_CoverBehaviorBase<?> tBehavior = getCoverBehaviorAtSideNew(i); if (tBehavior == null) continue; - mCoverData[i] = tBehavior.createDataObject(); if (aNBT.hasKey(COVER_DATA_NBT_KEYS[i])) - mCoverData[i].loadDataFromNBT(aNBT.getTag(COVER_DATA_NBT_KEYS[i])); + mCoverData[i] = tBehavior.createDataObject(aNBT.getTag(COVER_DATA_NBT_KEYS[i])); + else + mCoverData[i] = tBehavior.createDataObject(); } } if (mSidedRedstone.length != 6) mSidedRedstone = new byte[]{0, 0, 0, 0, 0, 0}; diff --git a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java index 50ef2632d9..c0fcc0708f 100644 --- a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java +++ b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java @@ -8,6 +8,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagInt; import net.minecraft.world.World; import net.minecraftforge.fluids.Fluid; @@ -31,7 +32,12 @@ public abstract class GT_CoverBehaviorBase<T extends ISerializableObject> { public abstract T createDataObject(); - public T createDataObject(NBTBase aNBT) { + public final T createDataObject(NBTBase aNBT) { + // Handle legacy data (migrating from GT_CoverBehavior to GT_CoverBehaviorBase) + if (aNBT instanceof NBTTagInt) { + return createDataObject(((NBTTagInt) aNBT).func_150287_d()); + } + T ret = createDataObject(); ret.loadDataFromNBT(aNBT); return ret; diff --git a/src/main/java/gregtech/api/util/GT_LanguageManager.java b/src/main/java/gregtech/api/util/GT_LanguageManager.java index 767c830f79..9121e41c33 100644 --- a/src/main/java/gregtech/api/util/GT_LanguageManager.java +++ b/src/main/java/gregtech/api/util/GT_LanguageManager.java @@ -337,6 +337,8 @@ public class GT_LanguageManager { addStringLocalization("Interaction_DESCRIPTION_Index_218", "Transfer size mode. Add exactly this many items in destination input slots as long as there is room."); addStringLocalization("Interaction_DESCRIPTION_Index_219", "Single recipe locking enabled. Will lock to next recipe."); addStringLocalization("Interaction_DESCRIPTION_Index_220", "Single recipe locking disabled."); + addStringLocalization("Interaction_DESCRIPTION_Index_221", "Item threshold"); + addStringLocalization("Interaction_DESCRIPTION_Index_222", "Fluid threshold"); addStringLocalization("Interaction_DESCRIPTION_Index_500", "Fitting: Loose - More Flow"); addStringLocalization("Interaction_DESCRIPTION_Index_501", "Fitting: Tight - More Efficiency"); diff --git a/src/main/java/gregtech/api/util/ISerializableObject.java b/src/main/java/gregtech/api/util/ISerializableObject.java index 51fa40e55a..b31abaa843 100644 --- a/src/main/java/gregtech/api/util/ISerializableObject.java +++ b/src/main/java/gregtech/api/util/ISerializableObject.java @@ -24,6 +24,11 @@ public interface ISerializableObject { @Nonnull ISerializableObject copy(); + /** + * If you are overriding this, you must <b>NOT</b> return {@link NBTTagInt} here! That return + * type is how we tell that we are loading legacy data, and only {@link LegacyCoverData} is + * allowed to return it. You probably want to return {@link NBTTagCompound} anyway. + */ @Nonnull NBTBase saveDataToNBT(); @@ -109,7 +114,7 @@ public interface ISerializableObject { @Override public void loadDataFromNBT(NBTBase aNBT) { - mData = aNBT instanceof NBTBase.NBTPrimitive ? ((NBTBase.NBTPrimitive) aNBT).func_150287_d() : 0; + mData = aNBT instanceof NBTTagInt ? ((NBTTagInt) aNBT).func_150287_d() : 0; } @Override |
