Start making use of partial item

This commit is contained in:
zontreck 2024-04-01 17:00:05 -07:00
parent afb21dd2c8
commit 48c83245c9
5 changed files with 49 additions and 13 deletions

View file

@ -45,7 +45,6 @@ public class CompressionChamberBlockEntity extends BlockEntity implements MenuPr
super(ModEntities.COMPRESSION_CHAMBER.get(), pPos, pBlockState); super(ModEntities.COMPRESSION_CHAMBER.get(), pPos, pBlockState);
outputSlot = new OutputItemStackHandler(outputItems); outputSlot = new OutputItemStackHandler(outputItems);
inputSlot = new InputItemStackHandler(itemsHandler);
data = new ContainerData() { data = new ContainerData() {
@Override @Override
@ -91,7 +90,6 @@ public class CompressionChamberBlockEntity extends BlockEntity implements MenuPr
} }
}; };
private ItemStackHandler outputSlot; private ItemStackHandler outputSlot;
private ItemStackHandler inputSlot;
private final OTEEnergy ENERGY_STORAGE = new OTEEnergy(ENERGY_REQUIREMENT*3, ENERGY_REQUIREMENT*512) { private final OTEEnergy ENERGY_STORAGE = new OTEEnergy(ENERGY_REQUIREMENT*3, ENERGY_REQUIREMENT*512) {
@ -149,7 +147,7 @@ public class CompressionChamberBlockEntity extends BlockEntity implements MenuPr
public void onLoad() public void onLoad()
{ {
super.onLoad(); super.onLoad();
lazyItemHandler = LazyOptional.of(()->inputSlot); lazyItemHandler = LazyOptional.of(()->itemsHandler);
lazyOutputItems = LazyOptional.of(()->outputSlot); lazyOutputItems = LazyOptional.of(()->outputSlot);
lazyEnergyHandler = LazyOptional.of(()->ENERGY_STORAGE); lazyEnergyHandler = LazyOptional.of(()->ENERGY_STORAGE);
} }

View file

@ -59,7 +59,6 @@ public class ItemScrubberBlockEntity extends BlockEntity implements MenuProvider
} }
}; };
private ItemStackHandler outputSlot; private ItemStackHandler outputSlot;
private ItemStackHandler inputSlot;
private final OTEEnergy ENERGY_STORAGE = new OTEEnergy(ENERGY_REQ*3, ENERGY_REQ+512) { private final OTEEnergy ENERGY_STORAGE = new OTEEnergy(ENERGY_REQ*3, ENERGY_REQ+512) {
@ -81,7 +80,6 @@ public class ItemScrubberBlockEntity extends BlockEntity implements MenuProvider
public ItemScrubberBlockEntity(BlockPos pos, BlockState state) { public ItemScrubberBlockEntity(BlockPos pos, BlockState state) {
super(ModEntities.ITEM_SCRUBBER.get(), pos, state); super(ModEntities.ITEM_SCRUBBER.get(), pos, state);
outputSlot = new OutputItemStackHandler(outputItems); outputSlot = new OutputItemStackHandler(outputItems);
inputSlot = new InputItemStackHandler(itemsHandler);
this.data = new ContainerData() { this.data = new ContainerData() {
@ -152,7 +150,7 @@ public class ItemScrubberBlockEntity extends BlockEntity implements MenuProvider
public void onLoad() public void onLoad()
{ {
super.onLoad(); super.onLoad();
lazyItemHandler = LazyOptional.of(()->inputSlot); lazyItemHandler = LazyOptional.of(()->itemsHandler);
lazyOutputItems = LazyOptional.of(()->outputSlot); lazyOutputItems = LazyOptional.of(()->outputSlot);
lazyEnergyHandler = LazyOptional.of(()->ENERGY_STORAGE); lazyEnergyHandler = LazyOptional.of(()->ENERGY_STORAGE);
} }

View file

@ -6,6 +6,8 @@ import dev.zontreck.libzontreck.util.ItemUtils;
import dev.zontreck.otemod.implementation.energy.IThresholdsEnergy; import dev.zontreck.otemod.implementation.energy.IThresholdsEnergy;
import dev.zontreck.otemod.implementation.energy.OTEEnergy; import dev.zontreck.otemod.implementation.energy.OTEEnergy;
import dev.zontreck.otemod.implementation.scrubber.MagicalScrubberMenu; import dev.zontreck.otemod.implementation.scrubber.MagicalScrubberMenu;
import dev.zontreck.otemod.items.ModItems;
import dev.zontreck.otemod.items.PartialItem;
import dev.zontreck.otemod.networking.ModMessages; import dev.zontreck.otemod.networking.ModMessages;
import dev.zontreck.otemod.networking.packets.EnergySyncS2CPacket; import dev.zontreck.otemod.networking.packets.EnergySyncS2CPacket;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -64,7 +66,6 @@ public class MagicalScrubberBlockEntity extends BlockEntity implements MenuProvi
} }
}; };
private ItemStackHandler outputSlot; private ItemStackHandler outputSlot;
private ItemStackHandler inputSlot;
private final OTEEnergy ENERGY_STORAGE = new OTEEnergy(ENERGY_REQ*3, ENERGY_REQ+512) { private final OTEEnergy ENERGY_STORAGE = new OTEEnergy(ENERGY_REQ*3, ENERGY_REQ+512) {
@ -85,7 +86,6 @@ public class MagicalScrubberBlockEntity extends BlockEntity implements MenuProvi
public MagicalScrubberBlockEntity(BlockPos pos, BlockState state) { public MagicalScrubberBlockEntity(BlockPos pos, BlockState state) {
super(ModEntities.MAGICAL_SCRUBBER.get(), pos, state); super(ModEntities.MAGICAL_SCRUBBER.get(), pos, state);
outputSlot = new OutputItemStackHandler(outputItems); outputSlot = new OutputItemStackHandler(outputItems);
inputSlot = new InputItemStackHandler(itemsHandler);
this.data = new ContainerData() { this.data = new ContainerData() {
@ -156,7 +156,7 @@ public class MagicalScrubberBlockEntity extends BlockEntity implements MenuProvi
public void onLoad() public void onLoad()
{ {
super.onLoad(); super.onLoad();
lazyItemHandler = LazyOptional.of(()->inputSlot); lazyItemHandler = LazyOptional.of(()->itemsHandler);
lazyOutputItems = LazyOptional.of(()->outputSlot); lazyOutputItems = LazyOptional.of(()->outputSlot);
lazyEnergyHandler = LazyOptional.of(()->ENERGY_STORAGE); lazyEnergyHandler = LazyOptional.of(()->ENERGY_STORAGE);
} }
@ -256,6 +256,13 @@ public class MagicalScrubberBlockEntity extends BlockEntity implements MenuProvi
//Map<Enchantment, Integer> enchants = main.getAllEnchantments(); //Map<Enchantment, Integer> enchants = main.getAllEnchantments();
Map<Enchantment, Integer> enchantments = ItemUtils.getEnchantments(main.copy()); Map<Enchantment, Integer> enchantments = ItemUtils.getEnchantments(main.copy());
if(!main.is(ModItems.PARTIAL_ITEM.get()))
{
entity.itemsHandler.setStackInSlot(0, PartialItem.makePartialItem(main, true, false));
entity.resetProgress();
return;
}
if(enchantments.size()>0) if(enchantments.size()>0)
{ {
Iterator<Map.Entry<Enchantment,Integer>> iEntries = enchantments.entrySet().iterator(); Iterator<Map.Entry<Enchantment,Integer>> iEntries = enchantments.entrySet().iterator();

View file

@ -58,7 +58,6 @@ public class UncrafterBlockEntity extends BlockEntity implements MenuProvider, I
} }
}; };
private ItemStackHandler outputSlot; private ItemStackHandler outputSlot;
private ItemStackHandler inputSlot;
private final OTEEnergy ENERGY_STORAGE = new OTEEnergy(ENERGY_REQ*3, ENERGY_REQ+512) { private final OTEEnergy ENERGY_STORAGE = new OTEEnergy(ENERGY_REQ*3, ENERGY_REQ+512) {
@ -79,7 +78,6 @@ public class UncrafterBlockEntity extends BlockEntity implements MenuProvider, I
public UncrafterBlockEntity(BlockPos pos, BlockState state) { public UncrafterBlockEntity(BlockPos pos, BlockState state) {
super(ModEntities.UNCRAFTER.get(), pos, state); super(ModEntities.UNCRAFTER.get(), pos, state);
outputSlot = new OutputItemStackHandler(outputItems); outputSlot = new OutputItemStackHandler(outputItems);
inputSlot = new InputItemStackHandler(itemsHandler);
this.data = new ContainerData() { this.data = new ContainerData() {
@ -150,7 +148,7 @@ public class UncrafterBlockEntity extends BlockEntity implements MenuProvider, I
public void onLoad() public void onLoad()
{ {
super.onLoad(); super.onLoad();
lazyItemHandler = LazyOptional.of(()->inputSlot); lazyItemHandler = LazyOptional.of(()->itemsHandler);
lazyOutputItems = LazyOptional.of(()->outputSlot); lazyOutputItems = LazyOptional.of(()->outputSlot);
lazyEnergyHandler = LazyOptional.of(()->ENERGY_STORAGE); lazyEnergyHandler = LazyOptional.of(()->ENERGY_STORAGE);
} }

View file

@ -9,18 +9,35 @@ import net.minecraft.server.commands.GiveCommand;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.item.enchantment.EnchantmentHelper;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
public class PartialItem extends Item public class PartialItem extends Item
{ {
private static final String TAG_UNCRAFT_REMAIN = "remaining"; private static final String TAG_UNCRAFT_REMAIN = "remaining";
private static final String TAG_UNCRAFT_LIST = "Items"; private static final String TAG_UNCRAFT_LIST = "Items";
@Override
public boolean isEnchantable(ItemStack p_41456_) {
return true;
}
@Override
public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) {
return false;
}
@Override
public boolean isBookEnchantable(ItemStack stack, ItemStack book) {
return false;
}
public PartialItem() { public PartialItem() {
super (new Properties().fireResistant()); super (new Properties().fireResistant());
@ -36,8 +53,12 @@ public class PartialItem extends Item
{ {
tooltip.add(ChatHelpers.macro("!Dark_Red!Number of uncraft steps remaining: [0]", "!Yellow!" + stack.getTag().getInt(TAG_UNCRAFT_REMAIN))); tooltip.add(ChatHelpers.macro("!Dark_Red!Number of uncraft steps remaining: [0]", "!Yellow!" + stack.getTag().getInt(TAG_UNCRAFT_REMAIN)));
} }
if(stack.getTag().contains(ItemStack.TAG_ENCH))
{
tooltip.add(ChatHelpers.macro("!Dark_Red!Number of Enchantments remaining: [0]", "!Yellow!" + stack.getTag().getList(ItemStack.TAG_ENCH, Tag.TAG_COMPOUND).size()));
}
} else { } else {
tooltip.add(ChatHelpers.macro("!Dark_Red!This partial item appears to be invalid, and contains no item fragments.")); tooltip.add(ChatHelpers.macro("!Dark_Red!This partial item appears to be invalid, and contains no fragments."));
} }
} }
@ -67,4 +88,18 @@ public class PartialItem extends Item
{ {
return ForgeRegistries.ITEMS.getValue(new ResourceLocation(item)); return ForgeRegistries.ITEMS.getValue(new ResourceLocation(item));
} }
public static ItemStack makePartialItem(ItemStack original, boolean enchantMode, boolean uncraftMode)
{
if(enchantMode)
{
ItemStack partial = new ItemStack(ModItems.PARTIAL_ITEM.get(), 1);
CompoundTag tag = new CompoundTag();
tag.put(ItemStack.TAG_ENCH, original.getTag().get(ItemStack.TAG_ENCH));
partial.setTag(tag);
return partial;
} else return original;
}
} }