Fixed issues for items without nbt, closes #2 closes #3

This commit is contained in:
Buuz135 2021-12-29 23:10:40 +01:00
parent bd811b861c
commit 1441cf69fe
6 changed files with 116 additions and 100 deletions

View File

@ -12,7 +12,7 @@ buildscript {
apply plugin: 'net.minecraftforge.gradle' apply plugin: 'net.minecraftforge.gradle'
group = 'com.buuz135' group = 'com.buuz135'
version = '1.18.1-0.0.2' version = '1.18.1-0.0.4'
java { java {
archivesBaseName = 'functionalstorage' archivesBaseName = 'functionalstorage'

View File

@ -9,8 +9,8 @@ import com.buuz135.functionalstorage.client.ControllerRenderer;
import com.buuz135.functionalstorage.client.DrawerRenderer; import com.buuz135.functionalstorage.client.DrawerRenderer;
import com.buuz135.functionalstorage.data.FunctionalStorageBlockTagsProvider; import com.buuz135.functionalstorage.data.FunctionalStorageBlockTagsProvider;
import com.buuz135.functionalstorage.data.FunctionalStorageBlockstateProvider; import com.buuz135.functionalstorage.data.FunctionalStorageBlockstateProvider;
import com.buuz135.functionalstorage.data.FunctionalStorageLangProvider;
import com.buuz135.functionalstorage.data.FunctionalStorageItemTagsProvider; import com.buuz135.functionalstorage.data.FunctionalStorageItemTagsProvider;
import com.buuz135.functionalstorage.data.FunctionalStorageLangProvider;
import com.buuz135.functionalstorage.item.ConfigurationToolItem; import com.buuz135.functionalstorage.item.ConfigurationToolItem;
import com.buuz135.functionalstorage.item.LinkingToolItem; import com.buuz135.functionalstorage.item.LinkingToolItem;
import com.buuz135.functionalstorage.item.StorageUpgradeItem; import com.buuz135.functionalstorage.item.StorageUpgradeItem;
@ -57,8 +57,8 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import java.awt.*; import java.awt.*;
import java.util.*;
import java.util.List; import java.util.List;
import java.util.*;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -107,7 +107,7 @@ public class FunctionalStorage extends ModuleController {
DRAWER_CONTROLLER = getRegistries().register(Block.class, "storage_controller", DrawerControllerBlock::new); DRAWER_CONTROLLER = getRegistries().register(Block.class, "storage_controller", DrawerControllerBlock::new);
LINKING_TOOL = getRegistries().register(Item.class, "linking_tool", LinkingToolItem::new); LINKING_TOOL = getRegistries().register(Item.class, "linking_tool", LinkingToolItem::new);
for (StorageUpgradeItem.StorageTier value : StorageUpgradeItem.StorageTier.values()) { for (StorageUpgradeItem.StorageTier value : StorageUpgradeItem.StorageTier.values()) {
STORAGE_UPGRADES.put(value, getRegistries().register(Item.class, value.name().toLowerCase(Locale.ROOT) + (value == StorageUpgradeItem.StorageTier.IRON ? "_downgrade" : "_upgrade"),() -> new StorageUpgradeItem(value))); STORAGE_UPGRADES.put(value, getRegistries().register(Item.class, value.name().toLowerCase(Locale.ROOT) + (value == StorageUpgradeItem.StorageTier.IRON ? "_downgrade" : "_upgrade"), () -> new StorageUpgradeItem(value)));
} }
COLLECTOR_UPGRADE = getRegistries().register(Item.class, "collector_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY)); COLLECTOR_UPGRADE = getRegistries().register(Item.class, "collector_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY));
PULLING_UPGRADE = getRegistries().register(Item.class, "puller_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY)); PULLING_UPGRADE = getRegistries().register(Item.class, "puller_upgrade", () -> new UpgradeItem(new Item.Properties(), UpgradeItem.Type.UTILITY));
@ -117,7 +117,7 @@ public class FunctionalStorage extends ModuleController {
CONFIGURATION_TOOL = getRegistries().register(Item.class, "configuration_tool", ConfigurationToolItem::new); CONFIGURATION_TOOL = getRegistries().register(Item.class, "configuration_tool", ConfigurationToolItem::new);
} }
public enum DrawerType{ public enum DrawerType {
X_1(1, 32 * 64, "1x1"), X_1(1, 32 * 64, "1x1"),
X_2(2, 16 * 64, "1x2"), X_2(2, 16 * 64, "1x2"),
X_4(4, 8 * 64, "2x2"); X_4(4, 8 * 64, "2x2");
@ -126,7 +126,7 @@ public class FunctionalStorage extends ModuleController {
private final int slotAmount; private final int slotAmount;
private final String displayName; private final String displayName;
private DrawerType(int slots, int slotAmount, String displayName){ private DrawerType(int slots, int slotAmount, String displayName) {
this.slots = slots; this.slots = slots;
this.slotAmount = slotAmount; this.slotAmount = slotAmount;
this.displayName = displayName; this.displayName = displayName;
@ -146,41 +146,36 @@ public class FunctionalStorage extends ModuleController {
} }
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void onClient(){ public void onClient() {
EventManager.mod(EntityRenderersEvent.RegisterRenderers.class).process(registerRenderers -> { EventManager.mod(EntityRenderersEvent.RegisterRenderers.class).process(registerRenderers -> {
for (DrawerType value : DrawerType.values()) { for (DrawerType value : DrawerType.values()) {
DRAWER_TYPES.get(value).forEach(blockRegistryObject -> { DRAWER_TYPES.get(value).forEach(blockRegistryObject -> {
registerRenderers.registerBlockEntityRenderer(((BasicTileBlock)blockRegistryObject.get()).getTileEntityType(), p_173571_ -> new DrawerRenderer()); registerRenderers.registerBlockEntityRenderer(((BasicTileBlock) blockRegistryObject.get()).getTileEntityType(), p_173571_ -> new DrawerRenderer());
}); });
} }
registerRenderers.registerBlockEntityRenderer(((BasicTileBlock)COMPACTING_DRAWER.get()).getTileEntityType(), p_173571_ -> new CompactingDrawerRenderer()); registerRenderers.registerBlockEntityRenderer(((BasicTileBlock) COMPACTING_DRAWER.get()).getTileEntityType(), p_173571_ -> new CompactingDrawerRenderer());
registerRenderers.registerBlockEntityRenderer(((BasicTileBlock)DRAWER_CONTROLLER.get()).getTileEntityType(), p -> new ControllerRenderer()); registerRenderers.registerBlockEntityRenderer(((BasicTileBlock) DRAWER_CONTROLLER.get()).getTileEntityType(), p -> new ControllerRenderer());
}).subscribe(); }).subscribe();
EventManager.mod(ColorHandlerEvent.Item.class).process(item -> { EventManager.mod(ColorHandlerEvent.Item.class).process(item -> {
item.getItemColors().register((stack, tint) -> { item.getItemColors().register((stack, tint) -> {
if(stack.hasTag()){ CompoundTag tag = stack.getOrCreateTag();
CompoundTag tag = stack.getOrCreateTag(); LinkingToolItem.LinkingMode linkingMode = LinkingToolItem.getLinkingMode(stack);
LinkingToolItem.LinkingMode linkingMode = LinkingToolItem.LinkingMode.valueOf(tag.getString(LinkingToolItem.NBT_MODE)); LinkingToolItem.ActionMode linkingAction = LinkingToolItem.getActionMode(stack);
LinkingToolItem.ActionMode linkingAction = LinkingToolItem.ActionMode.valueOf(tag.getString(LinkingToolItem.NBT_ACTION)); if (tint == 3 && tag.contains(LinkingToolItem.NBT_CONTROLLER)) {
if (tint == 3 && tag.contains(LinkingToolItem.NBT_CONTROLLER)){ return Color.RED.getRGB();
return Color.RED.getRGB(); }
} if (tint == 1) {
if (tint == 1){ return linkingMode.getColor().getValue();
return linkingMode.getColor().getValue(); }
} if (tint == 2) {
if (tint == 2){ return linkingAction.getColor().getValue();
return linkingAction.getColor().getValue();
}
} }
return 0xffffff; return 0xffffff;
}, LINKING_TOOL.get()); }, LINKING_TOOL.get());
item.getItemColors().register((stack, tint) -> { item.getItemColors().register((stack, tint) -> {
if (stack.hasTag()){ ConfigurationToolItem.ConfigurationAction action = ConfigurationToolItem.getAction(stack);
CompoundTag tag = stack.getOrCreateTag(); if (tint == 1) {
ConfigurationToolItem.ConfigurationAction action = ConfigurationToolItem.ConfigurationAction.valueOf(tag.getString(ConfigurationToolItem.NBT_MODE)); return action.getColor().getValue();
if (tint == 1){
return action.getColor().getValue();
}
} }
return 0xffffff; return 0xffffff;
}, CONFIGURATION_TOOL.get()); }, CONFIGURATION_TOOL.get());
@ -298,7 +293,7 @@ public class FunctionalStorage extends ModuleController {
.save(consumer); .save(consumer);
} }
}); });
event.getGenerator().addProvider(new FunctionalStorageItemTagsProvider(event.getGenerator(),new BlockTagsProvider(event.getGenerator()), MOD_ID, event.getExistingFileHelper())); event.getGenerator().addProvider(new FunctionalStorageItemTagsProvider(event.getGenerator(), new BlockTagsProvider(event.getGenerator()), MOD_ID, event.getExistingFileHelper()));
event.getGenerator().addProvider(new FunctionalStorageLangProvider(event.getGenerator(), MOD_ID, "en_us")); event.getGenerator().addProvider(new FunctionalStorageLangProvider(event.getGenerator(), MOD_ID, "en_us"));
event.getGenerator().addProvider(new FunctionalStorageBlockTagsProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper())); event.getGenerator().addProvider(new FunctionalStorageBlockTagsProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper()));
event.getGenerator().addProvider(new ItemModelProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper()) { event.getGenerator().addProvider(new ItemModelProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper()) {
@ -313,8 +308,8 @@ public class FunctionalStorage extends ModuleController {
item(VOID_UPGRADE.get()); item(VOID_UPGRADE.get());
} }
private void item(Item item){ private void item(Item item) {
singleTexture(item.getRegistryName().getPath(), new ResourceLocation("minecraft:item/generated"), "layer0" ,new ResourceLocation(MOD_ID, "items/" + item.getRegistryName().getPath())); singleTexture(item.getRegistryName().getPath(), new ResourceLocation("minecraft:item/generated"), "layer0", new ResourceLocation(MOD_ID, "items/" + item.getRegistryName().getPath()));
} }
}); });
event.getGenerator().addProvider(new BlockModelProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper()) { event.getGenerator().addProvider(new BlockModelProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper()) {

View File

@ -132,7 +132,7 @@ public abstract class ControllableDrawerTile<T extends ControllableDrawerTile<T>
if (!stack.isEmpty()){ if (!stack.isEmpty()){
Item item = stack.getItem(); Item item = stack.getItem();
if (item.equals(FunctionalStorage.PULLING_UPGRADE.get())){ if (item.equals(FunctionalStorage.PULLING_UPGRADE.get())){
Direction direction = Direction.byName(stack.getOrCreateTag().getString("Direction")); Direction direction = UpgradeItem.getDirection(stack);
TileUtil.getTileEntity(level, pos.relative(direction)).ifPresent(blockEntity1 -> { TileUtil.getTileEntity(level, pos.relative(direction)).ifPresent(blockEntity1 -> {
blockEntity1.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, direction.getOpposite()).ifPresent(iItemHandler -> { blockEntity1.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, direction.getOpposite()).ifPresent(iItemHandler -> {
for (int otherSlot = 0; otherSlot < iItemHandler.getSlots(); otherSlot++) { for (int otherSlot = 0; otherSlot < iItemHandler.getSlots(); otherSlot++) {
@ -153,7 +153,7 @@ public abstract class ControllableDrawerTile<T extends ControllableDrawerTile<T>
}); });
} }
if (item.equals(FunctionalStorage.PUSHING_UPGRADE.get())){ if (item.equals(FunctionalStorage.PUSHING_UPGRADE.get())){
Direction direction = Direction.byName(stack.getOrCreateTag().getString("Direction")); Direction direction = UpgradeItem.getDirection(stack);
TileUtil.getTileEntity(level, pos.relative(direction)).ifPresent(blockEntity1 -> { TileUtil.getTileEntity(level, pos.relative(direction)).ifPresent(blockEntity1 -> {
blockEntity1.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, direction.getOpposite()).ifPresent(otherHandler -> { blockEntity1.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, direction.getOpposite()).ifPresent(otherHandler -> {
for (int otherSlot = 0; otherSlot < getStorage().getSlots(); otherSlot++) { for (int otherSlot = 0; otherSlot < getStorage().getSlots(); otherSlot++) {
@ -174,7 +174,7 @@ public abstract class ControllableDrawerTile<T extends ControllableDrawerTile<T>
}); });
} }
if (item.equals(FunctionalStorage.COLLECTOR_UPGRADE.get())){ if (item.equals(FunctionalStorage.COLLECTOR_UPGRADE.get())){
Direction direction = Direction.byName(stack.getOrCreateTag().getString("Direction")); Direction direction = UpgradeItem.getDirection(stack);
AABB box = new AABB(pos.relative(direction)); AABB box = new AABB(pos.relative(direction));
for (ItemEntity entitiesOfClass : level.getEntitiesOfClass(ItemEntity.class, box)) { for (ItemEntity entitiesOfClass : level.getEntitiesOfClass(ItemEntity.class, box)) {
ItemStack pulledStack = ItemHandlerHelper.copyStackWithSize(entitiesOfClass.getItem(), Math.min(entitiesOfClass.getItem().getCount(), 4)); ItemStack pulledStack = ItemHandlerHelper.copyStackWithSize(entitiesOfClass.getItem(), Math.min(entitiesOfClass.getItem().getCount(), 4));

View File

@ -2,12 +2,10 @@ package com.buuz135.functionalstorage.item;
import com.buuz135.functionalstorage.FunctionalStorage; import com.buuz135.functionalstorage.FunctionalStorage;
import com.buuz135.functionalstorage.block.tile.ControllableDrawerTile; import com.buuz135.functionalstorage.block.tile.ControllableDrawerTile;
import com.buuz135.functionalstorage.block.tile.DrawerControllerTile;
import com.hrznstudio.titanium.item.BasicItem; import com.hrznstudio.titanium.item.BasicItem;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList; import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.*; import net.minecraft.network.chat.*;
@ -32,6 +30,13 @@ public class ConfigurationToolItem extends BasicItem {
public static final String NBT_MODE = "Mode"; public static final String NBT_MODE = "Mode";
public static ConfigurationAction getAction(ItemStack stack) {
if (stack.hasTag()) {
return ConfigurationAction.valueOf(stack.getOrCreateTag().getString(NBT_MODE));
}
return ConfigurationAction.LOCKING;
}
public ConfigurationToolItem() { public ConfigurationToolItem() {
super(new Properties().tab(FunctionalStorage.TAB).stacksTo(1)); super(new Properties().tab(FunctionalStorage.TAB).stacksTo(1));
} }
@ -42,7 +47,7 @@ public class ConfigurationToolItem extends BasicItem {
initNbt(p_41447_); initNbt(p_41447_);
} }
private ItemStack initNbt(ItemStack stack){ private ItemStack initNbt(ItemStack stack) {
stack.getOrCreateTag().putString(NBT_MODE, ConfigurationAction.LOCKING.name()); stack.getOrCreateTag().putString(NBT_MODE, ConfigurationAction.LOCKING.name());
return stack; return stack;
} }
@ -60,14 +65,14 @@ public class ConfigurationToolItem extends BasicItem {
ItemStack stack = context.getItemInHand(); ItemStack stack = context.getItemInHand();
Level level = context.getLevel(); Level level = context.getLevel();
BlockEntity blockEntity = level.getBlockEntity(pos); BlockEntity blockEntity = level.getBlockEntity(pos);
ConfigurationAction configuractionAction = ConfigurationAction.valueOf(stack.getOrCreateTag().getString(NBT_MODE)); ConfigurationAction configuractionAction = getAction(stack);
if (blockEntity instanceof ControllableDrawerTile){ if (blockEntity instanceof ControllableDrawerTile) {
if (configuractionAction == ConfigurationAction.LOCKING){ if (configuractionAction == ConfigurationAction.LOCKING) {
((ControllableDrawerTile<?>) blockEntity).toggleLocking(); ((ControllableDrawerTile<?>) blockEntity).toggleLocking();
}else{ } else {
((ControllableDrawerTile<?>) blockEntity).toggleOption(configuractionAction); ((ControllableDrawerTile<?>) blockEntity).toggleOption(configuractionAction);
} }
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
} }
return super.useOn(context); return super.useOn(context);
} }
@ -75,10 +80,10 @@ public class ConfigurationToolItem extends BasicItem {
@Override @Override
public InteractionResultHolder<ItemStack> use(Level p_41432_, Player player, InteractionHand hand) { public InteractionResultHolder<ItemStack> use(Level p_41432_, Player player, InteractionHand hand) {
ItemStack stack = player.getItemInHand(hand); ItemStack stack = player.getItemInHand(hand);
if (!stack.isEmpty() && stack.hasTag()){ if (!stack.isEmpty()) {
if (player.isShiftKeyDown()){ if (player.isShiftKeyDown()) {
ConfigurationAction action = ConfigurationAction.valueOf(stack.getOrCreateTag().getString(NBT_MODE)); ConfigurationAction action = getAction(stack);
ConfigurationAction newAction = ConfigurationAction.values()[(Arrays.asList(ConfigurationAction.values()).indexOf(action) + 1 ) % ConfigurationAction.values().length]; ConfigurationAction newAction = ConfigurationAction.values()[(Arrays.asList(ConfigurationAction.values()).indexOf(action) + 1) % ConfigurationAction.values().length];
stack.getOrCreateTag().putString(NBT_MODE, newAction.name()); stack.getOrCreateTag().putString(NBT_MODE, newAction.name());
player.displayClientMessage(new TextComponent("Swapped mode to ").setStyle(Style.EMPTY.withColor(newAction.getColor())) player.displayClientMessage(new TextComponent("Swapped mode to ").setStyle(Style.EMPTY.withColor(newAction.getColor()))
.append(new TranslatableComponent("configurationtool.configmode." + newAction.name().toLowerCase(Locale.ROOT))), true); .append(new TranslatableComponent("configurationtool.configmode." + newAction.name().toLowerCase(Locale.ROOT))), true);
@ -92,14 +97,12 @@ public class ConfigurationToolItem extends BasicItem {
@Override @Override
public void addTooltipDetails(@Nullable BasicItem.Key key, ItemStack stack, List<Component> tooltip, boolean advanced) { public void addTooltipDetails(@Nullable BasicItem.Key key, ItemStack stack, List<Component> tooltip, boolean advanced) {
super.addTooltipDetails(key, stack, tooltip, advanced); super.addTooltipDetails(key, stack, tooltip, advanced);
if (stack.hasTag()){ ConfigurationAction linkingMode = getAction(stack);
ConfigurationAction linkingMode = ConfigurationAction.valueOf(stack.getOrCreateTag().getString(NBT_MODE)); if (key == null) {
if (key == null){ tooltip.add(new TranslatableComponent("configurationtool.configmode").withStyle(ChatFormatting.YELLOW)
tooltip.add(new TranslatableComponent("configurationtool.configmode").withStyle(ChatFormatting.YELLOW) .append(new TranslatableComponent("configurationtool.configmode." + linkingMode.name().toLowerCase(Locale.ROOT)).withStyle(Style.EMPTY.withColor(linkingMode.getColor()))));
.append(new TranslatableComponent("configurationtool.configmode." + linkingMode.name().toLowerCase(Locale.ROOT) ).withStyle(Style.EMPTY.withColor(linkingMode.getColor())))); tooltip.add(new TextComponent("").withStyle(ChatFormatting.GRAY));
tooltip.add(new TextComponent("").withStyle(ChatFormatting.GRAY)); tooltip.add(new TranslatableComponent("configurationtool.use").withStyle(ChatFormatting.GRAY));
tooltip.add(new TranslatableComponent("configurationtool.use").withStyle(ChatFormatting.GRAY));
}
} }
} }
@ -108,7 +111,7 @@ public class ConfigurationToolItem extends BasicItem {
return key == null; return key == null;
} }
public enum ConfigurationAction{ public enum ConfigurationAction {
LOCKING(TextColor.fromRgb(new Color(40, 131, 250).getRGB())), LOCKING(TextColor.fromRgb(new Color(40, 131, 250).getRGB())),
TOGGLE_NUMBERS(TextColor.fromRgb(new Color(250, 145, 40).getRGB())), TOGGLE_NUMBERS(TextColor.fromRgb(new Color(250, 145, 40).getRGB())),
TOGGLE_RENDER(TextColor.fromRgb(new Color(100, 250, 40).getRGB())), TOGGLE_RENDER(TextColor.fromRgb(new Color(100, 250, 40).getRGB())),

View File

@ -9,11 +9,8 @@ import net.minecraft.core.BlockPos;
import net.minecraft.core.NonNullList; import net.minecraft.core.NonNullList;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.Style;
import net.minecraft.network.chat.TextColor;
import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.chat.*;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundEvents;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
@ -39,6 +36,20 @@ public class LinkingToolItem extends BasicItem {
public static final String NBT_ACTION = "Action"; public static final String NBT_ACTION = "Action";
public static final String NBT_FIRST = "First"; public static final String NBT_FIRST = "First";
public static LinkingMode getLinkingMode(ItemStack stack) {
if (stack.hasTag() && stack.getTag().contains(NBT_MODE)) {
return LinkingMode.valueOf(stack.getOrCreateTag().getString(NBT_MODE));
}
return LinkingMode.SINGLE;
}
public static ActionMode getActionMode(ItemStack stack) {
if (stack.hasTag() && stack.getTag().contains(NBT_ACTION)) {
return ActionMode.valueOf(stack.getOrCreateTag().getString(NBT_ACTION));
}
return ActionMode.ADD;
}
public LinkingToolItem() { public LinkingToolItem() {
super(new Properties().tab(FunctionalStorage.TAB).stacksTo(1)); super(new Properties().tab(FunctionalStorage.TAB).stacksTo(1));
} }
@ -49,7 +60,7 @@ public class LinkingToolItem extends BasicItem {
initNbt(p_41447_); initNbt(p_41447_);
} }
private ItemStack initNbt(ItemStack stack){ private ItemStack initNbt(ItemStack stack) {
stack.getOrCreateTag().putString(NBT_MODE, LinkingMode.SINGLE.name()); stack.getOrCreateTag().putString(NBT_MODE, LinkingMode.SINGLE.name());
stack.getOrCreateTag().putString(NBT_ACTION, ActionMode.ADD.name()); stack.getOrCreateTag().putString(NBT_ACTION, ActionMode.ADD.name());
return stack; return stack;
@ -68,9 +79,9 @@ public class LinkingToolItem extends BasicItem {
ItemStack stack = context.getItemInHand(); ItemStack stack = context.getItemInHand();
Level level = context.getLevel(); Level level = context.getLevel();
BlockEntity blockEntity = level.getBlockEntity(pos); BlockEntity blockEntity = level.getBlockEntity(pos);
LinkingMode linkingMode = LinkingMode.valueOf(stack.getOrCreateTag().getString(NBT_MODE)); LinkingMode linkingMode = getLinkingMode(stack);
ActionMode linkingAction = ActionMode.valueOf(stack.getOrCreateTag().getString(NBT_ACTION)); ActionMode linkingAction = getActionMode(stack);
if (blockEntity instanceof DrawerControllerTile){ if (blockEntity instanceof DrawerControllerTile) {
CompoundTag controller = new CompoundTag(); CompoundTag controller = new CompoundTag();
controller.putInt("X", pos.getX()); controller.putInt("X", pos.getX());
controller.putInt("Y", pos.getY()); controller.putInt("Y", pos.getY());
@ -79,19 +90,19 @@ public class LinkingToolItem extends BasicItem {
context.getPlayer().playSound(SoundEvents.ITEM_FRAME_ADD_ITEM, 0.5f, 1); context.getPlayer().playSound(SoundEvents.ITEM_FRAME_ADD_ITEM, 0.5f, 1);
context.getPlayer().displayClientMessage(new TextComponent("Controller configured to the tool").withStyle(ChatFormatting.GREEN), true); context.getPlayer().displayClientMessage(new TextComponent("Controller configured to the tool").withStyle(ChatFormatting.GREEN), true);
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
} else if (blockEntity instanceof ControllableDrawerTile && stack.getOrCreateTag().contains(NBT_CONTROLLER)){ } else if (blockEntity instanceof ControllableDrawerTile && stack.getOrCreateTag().contains(NBT_CONTROLLER)) {
CompoundTag controllerNBT = stack.getOrCreateTag().getCompound(NBT_CONTROLLER); CompoundTag controllerNBT = stack.getOrCreateTag().getCompound(NBT_CONTROLLER);
BlockEntity controller = level.getBlockEntity(new BlockPos(controllerNBT.getInt("X"), controllerNBT.getInt("Y"), controllerNBT.getInt("Z"))); BlockEntity controller = level.getBlockEntity(new BlockPos(controllerNBT.getInt("X"), controllerNBT.getInt("Y"), controllerNBT.getInt("Z")));
if (controller instanceof DrawerControllerTile){ if (controller instanceof DrawerControllerTile) {
if (linkingMode == LinkingMode.SINGLE){ if (linkingMode == LinkingMode.SINGLE) {
((ControllableDrawerTile<?>) blockEntity).setControllerPos(controller.getBlockPos()); ((ControllableDrawerTile<?>) blockEntity).setControllerPos(controller.getBlockPos());
((DrawerControllerTile) controller).addConnectedDrawers(linkingAction, pos); ((DrawerControllerTile) controller).addConnectedDrawers(linkingAction, pos);
context.getPlayer().displayClientMessage(new TextComponent("Linked drawer to the controller").setStyle(Style.EMPTY.withColor(linkingMode.color)), true); context.getPlayer().displayClientMessage(new TextComponent("Linked drawer to the controller").setStyle(Style.EMPTY.withColor(linkingMode.color)), true);
}else{ } else {
if (stack.getOrCreateTag().contains(NBT_FIRST)){ if (stack.getOrCreateTag().contains(NBT_FIRST)) {
CompoundTag firstpos = stack.getOrCreateTag().getCompound(NBT_FIRST); CompoundTag firstpos = stack.getOrCreateTag().getCompound(NBT_FIRST);
BlockPos firstPos = new BlockPos(firstpos.getInt("X"), firstpos.getInt("Y"), firstpos.getInt("Z")); BlockPos firstPos = new BlockPos(firstpos.getInt("X"), firstpos.getInt("Y"), firstpos.getInt("Z"));
AABB aabb = new AABB(Math.min(firstPos.getX(), pos.getX()),Math.min(firstPos.getY(), pos.getY()),Math.min(firstPos.getZ(), pos.getZ()), Math.max(firstPos.getX(), pos.getX()) + 1,Math.max(firstPos.getY(), pos.getY())+1,Math.max(firstPos.getZ(), pos.getZ())+1) ; AABB aabb = new AABB(Math.min(firstPos.getX(), pos.getX()), Math.min(firstPos.getY(), pos.getY()), Math.min(firstPos.getZ(), pos.getZ()), Math.max(firstPos.getX(), pos.getX()) + 1, Math.max(firstPos.getY(), pos.getY()) + 1, Math.max(firstPos.getZ(), pos.getZ()) + 1);
((DrawerControllerTile) controller).addConnectedDrawers(linkingAction, getBlockPosInAABB(aabb).toArray(BlockPos[]::new)); ((DrawerControllerTile) controller).addConnectedDrawers(linkingAction, getBlockPosInAABB(aabb).toArray(BlockPos[]::new));
stack.getOrCreateTag().remove(NBT_FIRST); stack.getOrCreateTag().remove(NBT_FIRST);
} else { } else {
@ -112,10 +123,10 @@ public class LinkingToolItem extends BasicItem {
@Override @Override
public InteractionResultHolder<ItemStack> use(Level p_41432_, Player player, InteractionHand hand) { public InteractionResultHolder<ItemStack> use(Level p_41432_, Player player, InteractionHand hand) {
ItemStack stack = player.getItemInHand(hand); ItemStack stack = player.getItemInHand(hand);
if (!stack.isEmpty() && stack.hasTag()){ if (!stack.isEmpty()) {
if (player.isShiftKeyDown()){ if (player.isShiftKeyDown()) {
LinkingMode linkingMode = LinkingMode.valueOf(stack.getOrCreateTag().getString(NBT_MODE)); LinkingMode linkingMode = getLinkingMode(stack);
if (linkingMode == LinkingMode.SINGLE){ if (linkingMode == LinkingMode.SINGLE) {
stack.getOrCreateTag().putString(NBT_MODE, LinkingMode.MULTIPLE.name()); stack.getOrCreateTag().putString(NBT_MODE, LinkingMode.MULTIPLE.name());
player.displayClientMessage(new TextComponent("Swapped mode to " + LinkingMode.MULTIPLE.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(LinkingMode.MULTIPLE.getColor())), true); player.displayClientMessage(new TextComponent("Swapped mode to " + LinkingMode.MULTIPLE.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(LinkingMode.MULTIPLE.getColor())), true);
} else { } else {
@ -123,8 +134,8 @@ public class LinkingToolItem extends BasicItem {
player.displayClientMessage(new TextComponent("Swapped mode to " + LinkingMode.SINGLE.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(LinkingMode.SINGLE.getColor())), true); player.displayClientMessage(new TextComponent("Swapped mode to " + LinkingMode.SINGLE.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(LinkingMode.SINGLE.getColor())), true);
} }
} else { } else {
ActionMode linkingMode = ActionMode.valueOf(stack.getOrCreateTag().getString(NBT_ACTION)); ActionMode linkingMode = getActionMode(stack);
if (linkingMode == ActionMode.ADD){ if (linkingMode == ActionMode.ADD) {
stack.getOrCreateTag().putString(NBT_ACTION, ActionMode.REMOVE.name()); stack.getOrCreateTag().putString(NBT_ACTION, ActionMode.REMOVE.name());
player.displayClientMessage(new TextComponent("Swapped action to " + ActionMode.REMOVE.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(ActionMode.REMOVE.getColor())), true); player.displayClientMessage(new TextComponent("Swapped action to " + ActionMode.REMOVE.name().toLowerCase(Locale.ROOT)).setStyle(Style.EMPTY.withColor(ActionMode.REMOVE.getColor())), true);
} else { } else {
@ -141,25 +152,22 @@ public class LinkingToolItem extends BasicItem {
@Override @Override
public void addTooltipDetails(@Nullable BasicItem.Key key, ItemStack stack, List<Component> tooltip, boolean advanced) { public void addTooltipDetails(@Nullable BasicItem.Key key, ItemStack stack, List<Component> tooltip, boolean advanced) {
super.addTooltipDetails(key, stack, tooltip, advanced); super.addTooltipDetails(key, stack, tooltip, advanced);
if (stack.hasTag()){ LinkingMode linkingMode = getLinkingMode(stack);
LinkingMode linkingMode = LinkingMode.valueOf(stack.getOrCreateTag().getString(NBT_MODE)); ActionMode linkingAction = getActionMode(stack);
ActionMode linkingAction = ActionMode.valueOf(stack.getOrCreateTag().getString(NBT_ACTION)); if (key == null) {
if (key == null){ tooltip.add(new TranslatableComponent("linkingtool.linkingmode").withStyle(ChatFormatting.YELLOW)
tooltip.add(new TranslatableComponent("linkingtool.linkingmode").withStyle(ChatFormatting.YELLOW) .append(new TranslatableComponent("linkingtool.linkingmode." + linkingMode.name().toLowerCase(Locale.ROOT)).withStyle(Style.EMPTY.withColor(linkingMode.getColor()))));
.append(new TranslatableComponent("linkingtool.linkingmode." + linkingMode.name().toLowerCase(Locale.ROOT) ).withStyle(Style.EMPTY.withColor(linkingMode.getColor())))); tooltip.add(new TranslatableComponent("linkingtool.linkingaction").withStyle(ChatFormatting.YELLOW)
tooltip.add(new TranslatableComponent("linkingtool.linkingaction").withStyle(ChatFormatting.YELLOW) .append(new TranslatableComponent("linkingtool.linkingaction." + linkingAction.name().toLowerCase(Locale.ROOT)).withStyle(Style.EMPTY.withColor(linkingAction.getColor()))));
.append(new TranslatableComponent("linkingtool.linkingaction." + linkingAction.name().toLowerCase(Locale.ROOT)).withStyle(Style.EMPTY.withColor(linkingAction.getColor())))); if (stack.getOrCreateTag().contains(NBT_CONTROLLER)) {
if (stack.getOrCreateTag().contains(NBT_CONTROLLER)){ tooltip.add(new TranslatableComponent("linkingtool.controller").withStyle(ChatFormatting.YELLOW)
tooltip.add(new TranslatableComponent("linkingtool.controller").withStyle(ChatFormatting.YELLOW) .append(new TextComponent(stack.getOrCreateTag().getCompound(NBT_CONTROLLER).getInt("X") + "" + ChatFormatting.WHITE + ", " + ChatFormatting.DARK_AQUA + stack.getOrCreateTag().getCompound(NBT_CONTROLLER).getInt("Y") + ChatFormatting.WHITE + ", " + ChatFormatting.DARK_AQUA + stack.getOrCreateTag().getCompound(NBT_CONTROLLER).getInt("Z")).withStyle(ChatFormatting.DARK_AQUA)));
.append(new TextComponent(stack.getOrCreateTag().getCompound(NBT_CONTROLLER).getInt("X") +""+ ChatFormatting.WHITE + ", " + ChatFormatting.DARK_AQUA + stack.getOrCreateTag().getCompound(NBT_CONTROLLER).getInt("Y") + ChatFormatting.WHITE + ", " + ChatFormatting.DARK_AQUA + stack.getOrCreateTag().getCompound(NBT_CONTROLLER).getInt("Z")).withStyle(ChatFormatting.DARK_AQUA))); } else {
} else { tooltip.add(new TranslatableComponent("linkingtool.controller").withStyle(ChatFormatting.YELLOW).append(new TextComponent("???").withStyle(ChatFormatting.DARK_AQUA)));
tooltip.add(new TranslatableComponent("linkingtool.controller").withStyle(ChatFormatting.YELLOW).append(new TextComponent("???").withStyle(ChatFormatting.DARK_AQUA)));
}
tooltip.add(new TextComponent(""));
tooltip.add(new TranslatableComponent("linkingtool.linkingmode." + linkingMode.name().toLowerCase(Locale.ROOT) + ".desc").withStyle(ChatFormatting.GRAY));
tooltip.add(new TranslatableComponent("linkingtool.use").withStyle(ChatFormatting.GRAY));
} }
tooltip.add(new TextComponent(""));
tooltip.add(new TranslatableComponent("linkingtool.linkingmode." + linkingMode.name().toLowerCase(Locale.ROOT) + ".desc").withStyle(ChatFormatting.GRAY));
tooltip.add(new TranslatableComponent("linkingtool.use").withStyle(ChatFormatting.GRAY));
} }
} }
@ -180,7 +188,7 @@ public class LinkingToolItem extends BasicItem {
return key == null; return key == null;
} }
public enum LinkingMode{ public enum LinkingMode {
SINGLE(TextColor.fromRgb(Color.cyan.getRGB())), SINGLE(TextColor.fromRgb(Color.cyan.getRGB())),
MULTIPLE(TextColor.fromRgb(Color.GREEN.getRGB())); MULTIPLE(TextColor.fromRgb(Color.GREEN.getRGB()));
@ -195,7 +203,7 @@ public class LinkingToolItem extends BasicItem {
} }
} }
public enum ActionMode{ public enum ActionMode {
ADD(TextColor.fromRgb(new Color(40, 131, 250).getRGB())), ADD(TextColor.fromRgb(new Color(40, 131, 250).getRGB())),
REMOVE(TextColor.fromRgb(new Color(250, 145, 40).getRGB())); REMOVE(TextColor.fromRgb(new Color(250, 145, 40).getRGB()));

View File

@ -26,6 +26,17 @@ import java.util.Locale;
public class UpgradeItem extends BasicItem { public class UpgradeItem extends BasicItem {
public static Direction getDirection(ItemStack stack){
if (stack.hasTag()){
Item item = stack.getItem();
if (item.equals(FunctionalStorage.PULLING_UPGRADE.get()) || item.equals(FunctionalStorage.PUSHING_UPGRADE.get()) || item.equals(FunctionalStorage.COLLECTOR_UPGRADE.get())){
return Direction.byName(stack.getOrCreateTag().getString("Direction"));
}
}
return Direction.NORTH;
}
private final Type type; private final Type type;
public UpgradeItem(Properties properties, Type type) { public UpgradeItem(Properties properties, Type type) {
@ -61,10 +72,10 @@ public class UpgradeItem extends BasicItem {
@Override @Override
public boolean overrideOtherStackedOnMe(ItemStack first, ItemStack second, Slot p_150894_, ClickAction clickAction, Player p_150896_, SlotAccess p_150897_) { public boolean overrideOtherStackedOnMe(ItemStack first, ItemStack second, Slot p_150894_, ClickAction clickAction, Player p_150896_, SlotAccess p_150897_) {
if (clickAction == ClickAction.SECONDARY && first.getCount() == 1 && first.hasTag()){ if (clickAction == ClickAction.SECONDARY && first.getCount() == 1){
Item item = first.getItem(); Item item = first.getItem();
if (item.equals(FunctionalStorage.PULLING_UPGRADE.get()) || item.equals(FunctionalStorage.PUSHING_UPGRADE.get()) || item.equals(FunctionalStorage.COLLECTOR_UPGRADE.get())){ if (item.equals(FunctionalStorage.PULLING_UPGRADE.get()) || item.equals(FunctionalStorage.PUSHING_UPGRADE.get()) || item.equals(FunctionalStorage.COLLECTOR_UPGRADE.get())){
Direction direction = Direction.byName(first.getOrCreateTag().getString("Direction")); Direction direction = getDirection(first);
Direction next = Direction.values()[(Arrays.asList(Direction.values()).indexOf(direction) + 1 ) % Direction.values().length]; Direction next = Direction.values()[(Arrays.asList(Direction.values()).indexOf(direction) + 1 ) % Direction.values().length];
first.getOrCreateTag().putString("Direction", next.name()); first.getOrCreateTag().putString("Direction", next.name());
p_150896_.playSound(SoundEvents.UI_BUTTON_CLICK, 0.5f, 1); p_150896_.playSound(SoundEvents.UI_BUTTON_CLICK, 0.5f, 1);
@ -78,10 +89,9 @@ public class UpgradeItem extends BasicItem {
public void addTooltipDetails(@Nullable BasicItem.Key key, ItemStack stack, List<Component> tooltip, boolean advanced) { public void addTooltipDetails(@Nullable BasicItem.Key key, ItemStack stack, List<Component> tooltip, boolean advanced) {
super.addTooltipDetails(key, stack, tooltip, advanced); super.addTooltipDetails(key, stack, tooltip, advanced);
tooltip.add(new TranslatableComponent("upgrade.type").withStyle(ChatFormatting.YELLOW).append(new TranslatableComponent("upgrade.type." + getType().name().toLowerCase(Locale.ROOT)).withStyle(ChatFormatting.WHITE))); tooltip.add(new TranslatableComponent("upgrade.type").withStyle(ChatFormatting.YELLOW).append(new TranslatableComponent("upgrade.type." + getType().name().toLowerCase(Locale.ROOT)).withStyle(ChatFormatting.WHITE)));
if (!stack.hasTag()) return;
Item item = stack.getItem(); Item item = stack.getItem();
if (item.equals(FunctionalStorage.PULLING_UPGRADE.get()) || item.equals(FunctionalStorage.PUSHING_UPGRADE.get()) || item.equals(FunctionalStorage.COLLECTOR_UPGRADE.get())){ if (item.equals(FunctionalStorage.PULLING_UPGRADE.get()) || item.equals(FunctionalStorage.PUSHING_UPGRADE.get()) || item.equals(FunctionalStorage.COLLECTOR_UPGRADE.get())){
tooltip.add(new TranslatableComponent("item.utility.direction").withStyle(ChatFormatting.YELLOW).append(new TranslatableComponent(WordUtils.capitalize(stack.getTag().getString("Direction").toLowerCase(Locale.ROOT))).withStyle(ChatFormatting.WHITE))); tooltip.add(new TranslatableComponent("item.utility.direction").withStyle(ChatFormatting.YELLOW).append(new TranslatableComponent(WordUtils.capitalize(getDirection(stack).name().toLowerCase(Locale.ROOT))).withStyle(ChatFormatting.WHITE)));
tooltip.add(new TextComponent("")); tooltip.add(new TextComponent(""));
tooltip.add(new TranslatableComponent("item.utility.direction.desc").withStyle(ChatFormatting.GRAY)); tooltip.add(new TranslatableComponent("item.utility.direction.desc").withStyle(ChatFormatting.GRAY));
} }