Compare commits

..

No commits in common. "9000eb3fabd1bb35ee20939af5e2c6d7e6d12b76" and "764ded58556f2323594d1cbba3392b30a0bfa7c1" have entirely different histories.

8 changed files with 92 additions and 146 deletions

View file

@ -79,7 +79,7 @@ public class CommonEvents {
boolean changed = false; boolean changed = false;
boolean isVoid = ((Sack) invStack.getItem()).isVoid; boolean isVoid = ((Sack) invStack.getItem()).isVoid;
FilterSettings filter = new FilterSettings(4, false, false, false, false); FilterSettings filter = new FilterSettings(4, false, false);
filter.readFromNBT(invStack.getOrCreateTag(), "Filter"); filter.readFromNBT(invStack.getOrCreateTag(), "Filter");
if (isVoid) { if (isVoid) {

View file

@ -32,7 +32,7 @@ import java.util.UUID;
public class SackContainer extends AbstractContainerMenu implements IButtonReactor { public class SackContainer extends AbstractContainerMenu implements IButtonReactor {
public final FilterSettings filter = new FilterSettings(4, false,false, false, false); public final FilterSettings filter = new FilterSettings(4, false,false);
private final ItemStackHandlerAA bagInventory; private final ItemStackHandlerAA bagInventory;
private final Inventory inventory; private final Inventory inventory;
public boolean autoInsert; public boolean autoInsert;

View file

@ -19,7 +19,7 @@ import net.minecraft.world.item.ItemStack;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
public class VoidSackContainer extends AbstractContainerMenu implements IButtonReactor { public class VoidSackContainer extends AbstractContainerMenu implements IButtonReactor {
public final FilterSettings filter = new FilterSettings(4, false,false, false, false); public final FilterSettings filter = new FilterSettings(4, false,false);
private final ItemStackHandlerAA bagInventory; private final ItemStackHandlerAA bagInventory;
private final Inventory inventory; private final Inventory inventory;

View file

@ -32,8 +32,6 @@ public class FilterSettingsGui {
public Button whitelistButton; public Button whitelistButton;
public Button modButton; public Button modButton;
public Button damageButton;
public Button nbtButton;
public FilterSettingsGui(FilterSettings settings, int x, int y, boolean vertical, Consumer<AbstractButton> buttonConsumer, Consumer<Integer> clickConsumer, int idOffset) { public FilterSettingsGui(FilterSettings settings, int x, int y, boolean vertical, Consumer<AbstractButton> buttonConsumer, Consumer<Integer> clickConsumer, int idOffset) {
this.theSettings = settings; this.theSettings = settings;
@ -44,12 +42,10 @@ public class FilterSettingsGui {
}) })
.bounds(x, y, 16, 12).build(); .bounds(x, y, 16, 12).build();
buttonConsumer.accept(this.whitelistButton); buttonConsumer.accept(this.whitelistButton);
if (vertical) if (vertical)
y += 14; y += 14;
else else
x += 18; x += 18;
this.modButton = Button.builder(Component.literal("MO"), $ -> { this.modButton = Button.builder(Component.literal("MO"), $ -> {
theSettings.respectMod = !theSettings.respectMod; theSettings.respectMod = !theSettings.respectMod;
clickConsumer.accept(idOffset + 1); clickConsumer.accept(idOffset + 1);
@ -57,33 +53,17 @@ public class FilterSettingsGui {
.bounds(x, y, 16, 12).build(); .bounds(x, y, 16, 12).build();
buttonConsumer.accept(this.modButton); buttonConsumer.accept(this.modButton);
if (vertical)
y += 14;
else
x += 18;
this.damageButton = Button.builder(Component.literal("DM"), $ -> {
theSettings.matchDamage = !theSettings.matchDamage;
clickConsumer.accept(idOffset + 2);
})
.bounds(x, y, 16, 12).build();
buttonConsumer.accept(this.damageButton);
if (vertical)
y += 14;
else
x += 18;
this.nbtButton = Button.builder(Component.literal("DA"), $ -> {
theSettings.matchNBT = !theSettings.matchNBT;
clickConsumer.accept(idOffset + 2);
})
.bounds(x, y, 16, 12).build();
buttonConsumer.accept(this.nbtButton);
this.tick(); this.tick();
} }
/* public void buttonClicked(int id) {
CompoundTag data = new CompoundTag();
data.putInt("ButtonID", id);
data.putInt("PlayerID", Minecraft.getInstance().player.getId());
data.putString("WorldID", Minecraft.getInstance().level.dimension().location().toString());
PacketDistributor.SERVER.noArg().send(new PacketClientToServer(data, PacketHandler.GUI_BUTTON_TO_CONTAINER_HANDLER));
}*/
public void tick() { public void tick() {
this.whitelistButton.setMessage(Component.literal("WH").withStyle(this.theSettings.isWhitelist this.whitelistButton.setMessage(Component.literal("WH").withStyle(this.theSettings.isWhitelist
? ChatFormatting.DARK_GREEN ? ChatFormatting.DARK_GREEN
@ -91,12 +71,6 @@ public class FilterSettingsGui {
this.modButton.setMessage(Component.literal("MO").withStyle(this.theSettings.respectMod this.modButton.setMessage(Component.literal("MO").withStyle(this.theSettings.respectMod
? ChatFormatting.DARK_GREEN ? ChatFormatting.DARK_GREEN
: ChatFormatting.RED)); : ChatFormatting.RED));
this.damageButton.setMessage(Component.literal("DM").withStyle(this.theSettings.matchDamage
? ChatFormatting.DARK_GREEN
: ChatFormatting.RED));
this.nbtButton.setMessage(Component.literal("DA").withStyle(this.theSettings.matchNBT
? ChatFormatting.DARK_GREEN
: ChatFormatting.RED));
} }
public void drawHover(GuiGraphics guiGraphics, int mouseX, int mouseY) { public void drawHover(GuiGraphics guiGraphics, int mouseX, int mouseY) {
@ -104,22 +78,16 @@ public class FilterSettingsGui {
List<Component> list = new ArrayList<>(); List<Component> list = new ArrayList<>();
if (this.whitelistButton.isMouseOver(mouseX, mouseY)) { if (this.whitelistButton.isMouseOver(mouseX, mouseY)) {
list.add((this.theSettings.isWhitelist list.add((this.theSettings.isWhitelist
? Component.translatable("info.actuallyadditions.gui.whitelist") ? Component.translatable("info." + ActuallyAdditions.MODID + ".gui.whitelist")
: Component.translatable("info.actuallyadditions.gui.blacklist")).withStyle(ChatFormatting.BOLD)); : Component.translatable("info." + ActuallyAdditions.MODID + ".gui.blacklist")).withStyle(ChatFormatting.BOLD));
list.add(Component.translatable("info.actuallyadditions.gui.whitelistInfo")); list.add(Component.translatable("info." + ActuallyAdditions.MODID + ".gui.whitelistInfo"));
} else if (this.modButton.isMouseOver(mouseX, mouseY)) { } else if (this.modButton.isMouseOver(mouseX, mouseY)) {
list.add((this.theSettings.respectMod list.add((this.theSettings.respectMod
? Component.translatable("info.actuallyadditions.gui.respectMod") ? Component.translatable("info." + ActuallyAdditions.MODID + ".gui.respectMod")
: Component.translatable("info.actuallyadditions.gui.ignoreMod")).withStyle(ChatFormatting.BOLD)); : Component.translatable("info." + ActuallyAdditions.MODID + ".gui.ignoreMod")).withStyle(ChatFormatting.BOLD));
list.add(Component.translatable("info.actuallyadditions.gui.respectModInfo")); list.add(Component.translatable("info." + ActuallyAdditions.MODID + ".gui.respectModInfo"));
} else if (this.modButton.isMouseOver(mouseX, mouseY)) {
list.add((this.theSettings.matchDamage
? Component.translatable("info.actuallyadditions.gui.respectDamage")
: Component.translatable("info.actuallyadditions.gui.ignoreDamage")).withStyle(ChatFormatting.BOLD));
} else if (this.modButton.isMouseOver(mouseX, mouseY)) {
list.add((this.theSettings.matchNBT
? Component.translatable("info.actuallyadditions.gui.respectNBT")
: Component.translatable("info.actuallyadditions.gui.ignoreNBT")).withStyle(ChatFormatting.BOLD));
} }
//TODO tooltips still jank //TODO tooltips still jank
if (!list.isEmpty()) { if (!list.isEmpty()) {

View file

@ -25,21 +25,15 @@ public class FilterSettings {
public final ItemStackHandlerAA filterInventory; public final ItemStackHandlerAA filterInventory;
public boolean isWhitelist; public boolean isWhitelist;
public boolean respectMod; public boolean respectMod;
public boolean matchDamage;
public boolean matchNBT;
private boolean lastWhitelist; private boolean lastWhitelist;
private boolean lastRespectMod; private boolean lastRespectMod;
private boolean lastMatchDamage;
private boolean lastMatchNBT;
public enum Buttons { public enum Buttons {
WHITELIST, WHITELIST,
MOD, MOD
DAMAGE,
NBT
} }
public FilterSettings(int slots, boolean defaultWhitelist, boolean defaultRespectMod, boolean defaultMatchDamage, boolean defaultMatchNBT) { public FilterSettings(int slots, boolean defaultWhitelist, boolean defaultRespectMod) {
this.filterInventory = new ItemStackHandlerAA(slots) { this.filterInventory = new ItemStackHandlerAA(slots) {
@Override @Override
protected void onContentsChanged(int slot) { protected void onContentsChanged(int slot) {
@ -50,13 +44,11 @@ public class FilterSettings {
this.isWhitelist = defaultWhitelist; this.isWhitelist = defaultWhitelist;
this.respectMod = defaultRespectMod; this.respectMod = defaultRespectMod;
this.matchDamage = defaultMatchDamage;
this.matchNBT = defaultMatchNBT;
} }
public void onContentsChanged() {} public void onContentsChanged() {}
public static boolean check(ItemStack stack, ItemStackHandlerAA filter, boolean whitelist, boolean mod, boolean damage, boolean nbt) { public static boolean check(ItemStack stack, ItemStackHandlerAA filter, boolean whitelist, boolean mod) {
if (!stack.isEmpty()) { if (!stack.isEmpty()) {
for (int i = 0; i < filter.getSlots(); i++) { for (int i = 0; i < filter.getSlots(); i++) {
ItemStack slot = filter.getStackInSlot(i); ItemStack slot = filter.getStackInSlot(i);
@ -67,7 +59,7 @@ public class FilterSettings {
DrillItem.loadSlotsFromNBT(inv, slot); DrillItem.loadSlotsFromNBT(inv, slot);
for (int k = 0; k < inv.getSlots(); k++) { for (int k = 0; k < inv.getSlots(); k++) {
ItemStack filterSlot = inv.getStackInSlot(k); ItemStack filterSlot = inv.getStackInSlot(k);
if (!filterSlot.isEmpty() && areEqualEnough(filterSlot, stack, mod, damage, nbt)) { if (!filterSlot.isEmpty() && areEqualEnough(filterSlot, stack, mod)) {
return whitelist; return whitelist;
} }
} }
@ -83,7 +75,7 @@ public class FilterSettings {
} }
} }
} }
else if (areEqualEnough(slot, stack, mod, damage, nbt)) { else if (areEqualEnough(slot, stack, mod)) {
return whitelist; return whitelist;
} }
} }
@ -92,31 +84,20 @@ public class FilterSettings {
return !whitelist; return !whitelist;
} }
private static boolean areEqualEnough(ItemStack first, ItemStack second, boolean mod, boolean damage, boolean nbt) { private static boolean areEqualEnough(ItemStack first, ItemStack second, boolean mod) {
if (mod) Item firstItem = first.getItem();
return checkMod(first, second) && checkDamage(first, second, damage); Item secondItem = second.getItem();
if (mod && BuiltInRegistries.ITEM.getKey(firstItem).getNamespace().equals(BuiltInRegistries.ITEM.getKey(secondItem).getNamespace())) {
return true;
}
return checkItem(first, second, nbt) && checkDamage(first, second, damage); return firstItem == secondItem;
}
public static boolean checkDamage(ItemStack first, ItemStack second, boolean damage) {
return !damage || first.getDamageValue() == second.getDamageValue();
}
public static boolean checkItem(ItemStack first, ItemStack second, boolean nbt) {
return nbt? ItemStack.isSameItemSameTags(first, second) : ItemStack.isSameItem(first, second);
}
public static boolean checkMod(ItemStack first, ItemStack second) {
return BuiltInRegistries.ITEM.getKey(first.getItem()).getNamespace().equals(BuiltInRegistries.ITEM.getKey(second.getItem()).getNamespace());
} }
public void writeToNBT(CompoundTag tag, String name) { public void writeToNBT(CompoundTag tag, String name) {
CompoundTag compound = new CompoundTag(); CompoundTag compound = new CompoundTag();
compound.putBoolean("Whitelist", this.isWhitelist); compound.putBoolean("Whitelist", this.isWhitelist);
compound.putBoolean("Mod", this.respectMod); compound.putBoolean("Mod", this.respectMod);
compound.putBoolean("Damage", this.matchDamage);
compound.putBoolean("NBT", this.matchNBT);
compound.put("Items", filterInventory.serializeNBT()); compound.put("Items", filterInventory.serializeNBT());
tag.put(name, compound); tag.put(name, compound);
} }
@ -125,20 +106,16 @@ public class FilterSettings {
CompoundTag compound = tag.getCompound(name); CompoundTag compound = tag.getCompound(name);
this.isWhitelist = compound.getBoolean("Whitelist"); this.isWhitelist = compound.getBoolean("Whitelist");
this.respectMod = compound.getBoolean("Mod"); this.respectMod = compound.getBoolean("Mod");
this.matchDamage = compound.getBoolean("Damage");
this.matchNBT = compound.getBoolean("NBT");
this.filterInventory.deserializeNBT(compound.getCompound("Items")); this.filterInventory.deserializeNBT(compound.getCompound("Items"));
} }
public boolean needsUpdateSend() { public boolean needsUpdateSend() {
return this.lastWhitelist != this.isWhitelist || this.lastRespectMod != this.respectMod || this.lastMatchDamage != this.matchDamage || this.lastMatchNBT != this.matchNBT; return this.lastWhitelist != this.isWhitelist || this.lastRespectMod != this.respectMod;
} }
public void updateLasts() { public void updateLasts() {
this.lastWhitelist = this.isWhitelist; this.lastWhitelist = this.isWhitelist;
this.lastRespectMod = this.respectMod; this.lastRespectMod = this.respectMod;
this.lastMatchDamage = this.matchDamage;
this.lastMatchNBT = this.matchNBT;
} }
public void onButtonPressed(int id) { public void onButtonPressed(int id) {
@ -146,15 +123,11 @@ public class FilterSettings {
this.isWhitelist = !this.isWhitelist; this.isWhitelist = !this.isWhitelist;
} else if (id == Buttons.MOD.ordinal()) { } else if (id == Buttons.MOD.ordinal()) {
this.respectMod = !this.respectMod; this.respectMod = !this.respectMod;
} else if (id == Buttons.DAMAGE.ordinal()) {
this.matchDamage = !this.matchDamage;
} else if (id == Buttons.NBT.ordinal()) {
this.matchNBT = !this.matchNBT;
} }
} }
public boolean check(ItemStack stack) { public boolean check(ItemStack stack) {
return !this.needsCheck() || check(stack, this.filterInventory, this.isWhitelist, this.respectMod, this.matchDamage, this.matchNBT); return !this.needsCheck() || check(stack, this.filterInventory, this.isWhitelist, this.respectMod);
} }
public boolean needsCheck() { public boolean needsCheck() {

View file

@ -35,8 +35,8 @@ import java.util.Optional;
public class TileEntityLaserRelayItemAdvanced extends TileEntityLaserRelayItem implements IButtonReactor, MenuProvider { public class TileEntityLaserRelayItemAdvanced extends TileEntityLaserRelayItem implements IButtonReactor, MenuProvider {
public FilterSettings leftFilter = new FilterSettings(12, true, false, false, false); public FilterSettings leftFilter = new FilterSettings(12, true, false);
public FilterSettings rightFilter = new FilterSettings(12, true, false, false, false); public FilterSettings rightFilter = new FilterSettings(12, true, false);
public TileEntityLaserRelayItemAdvanced(BlockPos pos, BlockState state) { public TileEntityLaserRelayItemAdvanced(BlockPos pos, BlockState state) {
super(ActuallyBlocks.LASER_RELAY_ITEM_ADVANCED.getTileEntityType(), pos, state); super(ActuallyBlocks.LASER_RELAY_ITEM_ADVANCED.getTileEntityType(), pos, state);
@ -118,7 +118,7 @@ public class TileEntityLaserRelayItemAdvanced extends TileEntityLaserRelayItem i
ItemStack copy = stack.copy(); ItemStack copy = stack.copy();
copy.setCount(1); copy.setCount(1);
if (!FilterSettings.check(copy, usedSettings.filterInventory, true, usedSettings.respectMod, usedSettings.matchDamage, usedSettings.matchNBT)) { if (!FilterSettings.check(copy, usedSettings.filterInventory, true, usedSettings.respectMod)) {
for (int k = 0; k < usedSettings.filterInventory.getSlots(); k++) { for (int k = 0; k < usedSettings.filterInventory.getSlots(); k++) {
ItemStack slot = usedSettings.filterInventory.getStackInSlot(k); ItemStack slot = usedSettings.filterInventory.getStackInSlot(k);
if (!slot.isEmpty()) { if (!slot.isEmpty()) {

View file

@ -39,7 +39,7 @@ import java.util.List;
public class TileEntityRangedCollector extends TileEntityInventoryBase implements IButtonReactor, MenuProvider { public class TileEntityRangedCollector extends TileEntityInventoryBase implements IButtonReactor, MenuProvider {
public static final int RANGE = 6; public static final int RANGE = 6;
public FilterSettings filter = new FilterSettings(12, true, false, false, false); public FilterSettings filter = new FilterSettings(12, true, false);
public TileEntityRangedCollector(BlockPos pos, BlockState state) { public TileEntityRangedCollector(BlockPos pos, BlockState state) {
super(ActuallyBlocks.RANGED_COLLECTOR.getTileEntityType(), pos, state, 6); super(ActuallyBlocks.RANGED_COLLECTOR.getTileEntityType(), pos, state, 6);

View file

@ -109,16 +109,16 @@
"block.actuallyadditions.crusher": "Crusher", "block.actuallyadditions.crusher": "Crusher",
"block.actuallyadditions.crusher_double": "Double Crusher", "block.actuallyadditions.crusher_double": "Double Crusher",
"block.actuallyadditions.powered_furnace": "Powered Furnace", "block.actuallyadditions.powered_furnace": "Powered Furnace",
"block.actuallyadditions.fishing_net": "Fishing Net (WIP)", "block.actuallyadditions.fishing_net": "Fishing Net (wip)",
"block.actuallyadditions.heat_collector": "Heat Collector", "block.actuallyadditions.heat_collector": "Heat Collector",
"block.actuallyadditions.item_repairer": "Item Repairer (WIP)", "block.actuallyadditions.item_repairer": "Item Repairer (wip)",
"block.actuallyadditions.wood_casing": "Wood Casing", "block.actuallyadditions.wood_casing": "Wood Casing",
"block.actuallyadditions.greenhouse_glass": "Greenhouse Glass", "block.actuallyadditions.greenhouse_glass": "Greenhouse Glass",
"block.actuallyadditions.energizer": "Energizer", "block.actuallyadditions.energizer": "Energizer",
"block.actuallyadditions.enervator": "Enervator", "block.actuallyadditions.enervator": "Enervator",
"block.actuallyadditions.rice": "Rice Plant", "block.actuallyadditions.rice": "Rice Plant",
"block.actuallyadditions.coal_generator": "Coal Generator", "block.actuallyadditions.coal_generator": "Coal Generator",
"block.actuallyadditions.lamp_controller": "Lamp Controller (WIP)", "block.actuallyadditions.lamp_controller": "Lamp Controller (wip)",
"block.actuallyadditions.lamp_white": "White Lamp", "block.actuallyadditions.lamp_white": "White Lamp",
"block.actuallyadditions.lamp_orange": "Orange Lamp", "block.actuallyadditions.lamp_orange": "Orange Lamp",
"block.actuallyadditions.lamp_magenta": "Magenta Lamp", "block.actuallyadditions.lamp_magenta": "Magenta Lamp",
@ -155,7 +155,7 @@
"block.actuallyadditions.ethetic_green_slab": "Ethetic Green Quartz Slab", "block.actuallyadditions.ethetic_green_slab": "Ethetic Green Quartz Slab",
"block.actuallyadditions.ethetic_white_slab": "Ethetic Quartz Slab", "block.actuallyadditions.ethetic_white_slab": "Ethetic Quartz Slab",
"block.actuallyadditions.canola": "Canola Plant", "block.actuallyadditions.canola": "Canola Plant",
"block.actuallyadditions.treasure_chest": "Treasure Chest (WIP)", "block.actuallyadditions.treasure_chest": "Treasure Chest (wip)",
"block.actuallyadditions.canola_press": "Canola Press", "block.actuallyadditions.canola_press": "Canola Press",
"block.actuallyadditions.fermenting_barrel": "Fermenting Barrel", "block.actuallyadditions.fermenting_barrel": "Fermenting Barrel",
"block.actuallyadditions.canola_oil": "Canola Oil", "block.actuallyadditions.canola_oil": "Canola Oil",
@ -176,7 +176,7 @@
"block.actuallyadditions.laser_relay": "Energy Laser Relay", "block.actuallyadditions.laser_relay": "Energy Laser Relay",
"block.actuallyadditions.laser_relay_advanced": "Advanced Energy Laser Relay", "block.actuallyadditions.laser_relay_advanced": "Advanced Energy Laser Relay",
"block.actuallyadditions.laser_relay_extreme": "Extreme Energy Laser Relay", "block.actuallyadditions.laser_relay_extreme": "Extreme Energy Laser Relay",
"block.actuallyadditions.laser_relay_fluids": "Fluid Laser Relay (WIP)", "block.actuallyadditions.laser_relay_fluids": "Fluid Laser Relay (wip)",
"block.actuallyadditions.iron_casing": "Iron Casing", "block.actuallyadditions.iron_casing": "Iron Casing",
"block.actuallyadditions.black_lotus": "Black Lotus", "block.actuallyadditions.black_lotus": "Black Lotus",
"block.actuallyadditions.ethetic_white_wall": "Ethetic Quartz Wall", "block.actuallyadditions.ethetic_white_wall": "Ethetic Quartz Wall",
@ -210,16 +210,16 @@
"block.actuallyadditions.black_quartz_pillar_wall": "Black Quartz Pillar Wall", "block.actuallyadditions.black_quartz_pillar_wall": "Black Quartz Pillar Wall",
"block.actuallyadditions.black_quartz_pillar_stair": "Black Quartz Pillar Stairs", "block.actuallyadditions.black_quartz_pillar_stair": "Black Quartz Pillar Stairs",
"block.actuallyadditions.black_quartz_pillar_slab": "Black Quartz Pillar Slab", "block.actuallyadditions.black_quartz_pillar_slab": "Black Quartz Pillar Slab",
"block.actuallyadditions.laser_relay_item": "Item Laser Relay (WIP)", "block.actuallyadditions.laser_relay_item": "Item Laser Relay (wip)",
"block.actuallyadditions.laser_relay_item_advanced": "Advanced Item Laser Relay (WIP)", "block.actuallyadditions.laser_relay_item_advanced": "Advanced Item Laser Relay (wip)",
"block.actuallyadditions.item_interface": "Item Interface (WIP)", "block.actuallyadditions.item_interface": "Item Interface (wip)",
"block.actuallyadditions.hopping_item_interface": "Hopping Item Interface (WIP)", "block.actuallyadditions.hopping_item_interface": "Hopping Item Interface (wip)",
"block.actuallyadditions.booklet_stand": "Wall-Mount Manual (WIP)", "block.actuallyadditions.booklet_stand": "Wall-Mount Manual (wip)",
"block.actuallyadditions.display_stand": "Display Stand", "block.actuallyadditions.display_stand": "Display Stand",
"block.actuallyadditions.shock_suppressor": "Shock Absorber", "block.actuallyadditions.shock_suppressor": "Shock Absorber",
"block.actuallyadditions.tiny_torch": "Tiny Torch", "block.actuallyadditions.tiny_torch": "Tiny Torch",
"block.actuallyadditions.empowerer": "Empowerer", "block.actuallyadditions.empowerer": "Empowerer",
"block.actuallyadditions.distributor_item": "Item Distributor (WIP)", "block.actuallyadditions.distributor_item": "Item Distributor (wip)",
"block.actuallyadditions.bio_reactor": "Bio Reactor", "block.actuallyadditions.bio_reactor": "Bio Reactor",
"block.actuallyadditions.farmer": "Farmer", "block.actuallyadditions.farmer": "Farmer",
"block.actuallyadditions.battery_box": "Battery Box", "block.actuallyadditions.battery_box": "Battery Box",
@ -257,9 +257,9 @@
"block.actuallyadditions.atomic_reconstructor.info.2.12": "Replacer", "block.actuallyadditions.atomic_reconstructor.info.2.12": "Replacer",
"block.actuallyadditions.atomic_reconstructor.info.2.13": "Differentiator", "block.actuallyadditions.atomic_reconstructor.info.2.13": "Differentiator",
"block.actuallyadditions.atomic_reconstructor.info.2.14": "Receiver", "block.actuallyadditions.atomic_reconstructor.info.2.14": "Receiver",
"block.actuallyadditions.crate_small": "Small Storage Crate (WIP)", "block.actuallyadditions.crate_small": "Small Storage Crate (wip)",
"block.actuallyadditions.crate_medium": "Medium Storage Crate (WIP)", "block.actuallyadditions.crate_medium": "Medium Storage Crate (wip)",
"block.actuallyadditions.crate_large": "Large Storage Crate (WIP)", "block.actuallyadditions.crate_large": "Large Storage Crate (wip)",
"_comment": "Items", "_comment": "Items",
"item.actuallyadditions.drill_blue": "Blue Drill", "item.actuallyadditions.drill_blue": "Blue Drill",
"item.actuallyadditions.drill_light_blue": "Light Blue Drill", "item.actuallyadditions.drill_light_blue": "Light Blue Drill",
@ -288,13 +288,13 @@
"item.actuallyadditions.triple_battery": "Triple Battery", "item.actuallyadditions.triple_battery": "Triple Battery",
"item.actuallyadditions.quadruple_battery": "Quadruple Battery", "item.actuallyadditions.quadruple_battery": "Quadruple Battery",
"item.actuallyadditions.quintuple_battery": "Quintuple Battery", "item.actuallyadditions.quintuple_battery": "Quintuple Battery",
"item.actuallyadditions.ring_of_growth": "Ring of Growth (WIP)", "item.actuallyadditions.ring_of_growth": "Ring of Growth (wip)",
"item.actuallyadditions.ring_of_magnetizing": "Ring of Magnetizing", "item.actuallyadditions.ring_of_magnetizing": "Ring of Magnetizing",
"item.actuallyadditions.canola_oil_bucket": "Canola Oil Bucket", "item.actuallyadditions.canola_oil_bucket": "Canola Oil Bucket",
"item.actuallyadditions.refined_canola_oil_bucket": "Refined Canola Oil Bucket", "item.actuallyadditions.refined_canola_oil_bucket": "Refined Canola Oil Bucket",
"item.actuallyadditions.crystallized_oil_bucket": "Crystallized Oil Bucket", "item.actuallyadditions.crystallized_oil_bucket": "Crystallized Oil Bucket",
"item.actuallyadditions.empowered_oil_bucket": "Empowered Oil Bucket", "item.actuallyadditions.empowered_oil_bucket": "Empowered Oil Bucket",
"item.actuallyadditions.wings_of_the_bats": "Wings Of The Bats (WIP)", "item.actuallyadditions.wings_of_the_bats": "Wings Of The Bats (wip)",
"item.actuallyadditions.bats_wing": "Bat's Wing", "item.actuallyadditions.bats_wing": "Bat's Wing",
"item.actuallyadditions.wooden_aiot": "Wooden AIOT", "item.actuallyadditions.wooden_aiot": "Wooden AIOT",
"item.actuallyadditions.stone_aiot": "Stone AIOT", "item.actuallyadditions.stone_aiot": "Stone AIOT",
@ -319,10 +319,10 @@
"item.actuallyadditions.drill_upgrade_block_placing": "Drill Block Placing Augment", "item.actuallyadditions.drill_upgrade_block_placing": "Drill Block Placing Augment",
"item.actuallyadditions.drill_upgrade_three_by_three": "Drill Area Augment I", "item.actuallyadditions.drill_upgrade_three_by_three": "Drill Area Augment I",
"item.actuallyadditions.drill_upgrade_five_by_five": "Drill Area Augment II", "item.actuallyadditions.drill_upgrade_five_by_five": "Drill Area Augment II",
"item.actuallyadditions.dough": "Dough (WIP)", "item.actuallyadditions.dough": "Dough (wip)",
"item.actuallyadditions.black_quartz": "Black Quartz", "item.actuallyadditions.black_quartz": "Black Quartz",
"item.actuallyadditions.ring": "Ring", "item.actuallyadditions.ring": "Ring",
"item.actuallyadditions.ring.storage": "Blaze Stored (WIP)", "item.actuallyadditions.ring.storage": "Blaze Stored (wip)",
"item.actuallyadditions.teleport_staff": "Teleport Staff", "item.actuallyadditions.teleport_staff": "Teleport Staff",
"item.actuallyadditions.leaf_blower": "Leaf Blower", "item.actuallyadditions.leaf_blower": "Leaf Blower",
"item.actuallyadditions.advanced_leaf_blower": "Advanced Leaf Blower", "item.actuallyadditions.advanced_leaf_blower": "Advanced Leaf Blower",
@ -330,17 +330,17 @@
"item.actuallyadditions.basic_coil": "Basic Coil", "item.actuallyadditions.basic_coil": "Basic Coil",
"item.actuallyadditions.advanced_coil": "Advanced Coil", "item.actuallyadditions.advanced_coil": "Advanced Coil",
"item.actuallyadditions.solidified_experience": "Solidified Experience", "item.actuallyadditions.solidified_experience": "Solidified Experience",
"item.actuallyadditions.dust_iron": "Crushed Iron (WIP)", "item.actuallyadditions.dust_iron": "Crushed Iron (wip)",
"item.actuallyadditions.dust_gold": "Crushed Gold (WIP)", "item.actuallyadditions.dust_gold": "Crushed Gold (wip)",
"item.actuallyadditions.dust_diamond": "Crushed Diamond (WIP)", "item.actuallyadditions.dust_diamond": "Crushed Diamond (wip)",
"item.actuallyadditions.dust_lapis": "Crushed Lapis (WIP)", "item.actuallyadditions.dust_lapis": "Crushed Lapis (wip)",
"item.actuallyadditions.dust_emerald": "Crushed Emerald (WIP)", "item.actuallyadditions.dust_emerald": "Crushed Emerald (wip)",
"item.actuallyadditions.dust_quartz": "Crushed Quartz (WIP)", "item.actuallyadditions.dust_quartz": "Crushed Quartz (wip)",
"item.actuallyadditions.dust_coal": "Crushed Coal (WIP)", "item.actuallyadditions.dust_coal": "Crushed Coal (wip)",
"item.actuallyadditions.dust_quartz_black": "Crushed Black Quartz (WIP)", "item.actuallyadditions.dust_quartz_black": "Crushed Black Quartz (wip)",
"item.actuallyadditions.flax_seeds": "Flax Seeds", "item.actuallyadditions.flax_seeds": "Flax Seeds",
"item.actuallyadditions.booklet": "Actually Additions Manual (WIP)", "item.actuallyadditions.booklet": "Actually Additions Manual (wip)",
"item.actuallyadditions.rarmor_module_reconstructor": "Reconstruction Module (WIP)", "item.actuallyadditions.rarmor_module_reconstructor": "Reconstruction Module (wip)",
"item.actuallyadditions.laser_wrench": "Laser Wrench", "item.actuallyadditions.laser_wrench": "Laser Wrench",
"item.actuallyadditions.drill_core": "Drill Core", "item.actuallyadditions.drill_core": "Drill Core",
"item.actuallyadditions.restonia_crystal": "Restonia Crystal", "item.actuallyadditions.restonia_crystal": "Restonia Crystal",
@ -360,7 +360,7 @@
"item.actuallyadditions.lens_of_detonation": "Lens of Detonation", "item.actuallyadditions.lens_of_detonation": "Lens of Detonation",
"item.actuallyadditions.lens_of_certain_death": "Lens of Certain Death", "item.actuallyadditions.lens_of_certain_death": "Lens of Certain Death",
"item.actuallyadditions.lens_of_disenchanting": "Lens of Disenchanting", "item.actuallyadditions.lens_of_disenchanting": "Lens of Disenchanting",
"item.actuallyadditions.crate_keeper": "Storage Crate Keeper (WIP)", "item.actuallyadditions.crate_keeper": "Storage Crate Keeper (wip)",
"item.actuallyadditions.paxel_crystal_red": "Restonia Crystal AIOT", "item.actuallyadditions.paxel_crystal_red": "Restonia Crystal AIOT",
"item.actuallyadditions.paxel_crystal_blue": "Palis Crystal AIOT", "item.actuallyadditions.paxel_crystal_blue": "Palis Crystal AIOT",
"item.actuallyadditions.paxel_crystal_light_blue": "Diamatine Crystal AIOT", "item.actuallyadditions.paxel_crystal_light_blue": "Diamatine Crystal AIOT",
@ -368,11 +368,11 @@
"item.actuallyadditions.paxel_crystal_white": "Enori Crystal AIOT)", "item.actuallyadditions.paxel_crystal_white": "Enori Crystal AIOT)",
"item.actuallyadditions.paxel_crystal_green": "Emeradic Crystal AIOT", "item.actuallyadditions.paxel_crystal_green": "Emeradic Crystal AIOT",
"item.actuallyadditions.ender_star": "Ender Star", "item.actuallyadditions.ender_star": "Ender Star",
"item.actuallyadditions.minecart_firework_box": "Firework Box Cart (WIP)", "item.actuallyadditions.minecart_firework_box": "Firework Box Cart (wip)",
"item.actuallyadditions.water_bowl": "Bowl of Water", "item.actuallyadditions.water_bowl": "Bowl of Water",
"item.actuallyadditions.filter": "Item Filter", "item.actuallyadditions.filter": "Item Filter",
"item.actuallyadditions.biomass": "Biomass (WIP)", "item.actuallyadditions.biomass": "Biomass (wip)",
"item.actuallyadditions.biocoal": "Bio Coal (WIP)", "item.actuallyadditions.biocoal": "Bio Coal (wip)",
"item.actuallyadditions.player_probe": "Player Probe", "item.actuallyadditions.player_probe": "Player Probe",
"item.actuallyadditions.worm": "Worm", "item.actuallyadditions.worm": "Worm",
"item.actuallyadditions.travelers_sack": "Traveler's Sack", "item.actuallyadditions.travelers_sack": "Traveler's Sack",
@ -380,12 +380,12 @@
"item.actuallyadditions.crystallized_canola_seed": "Crystallized Canola Seed", "item.actuallyadditions.crystallized_canola_seed": "Crystallized Canola Seed",
"item.actuallyadditions.empowered_canola_seed": "Empowered Canola Seed", "item.actuallyadditions.empowered_canola_seed": "Empowered Canola Seed",
"item.actuallyadditions.lens_of_the_miner": "Lens of the Miner", "item.actuallyadditions.lens_of_the_miner": "Lens of the Miner",
"item.actuallyadditions.lens_of_the_killer": "Lens of the Killer (WIP)", "item.actuallyadditions.lens_of_the_killer": "Lens of the Killer (wip)",
"item.actuallyadditions.handheld_filler": "Handheld Filler", "item.actuallyadditions.handheld_filler": "Handheld Filler",
"item.actuallyadditions.laser_upgrade_invisibility": "Laser Relay Modifier: Invisibility (WIP)", "item.actuallyadditions.laser_upgrade_invisibility": "Laser Relay Modifier: Invisibility (wip)",
"item.actuallyadditions.engineers_goggles": "Engineer's Goggles", "item.actuallyadditions.engineers_goggles": "Engineer's Goggles",
"item.actuallyadditions.engineers_goggles_advanced": "Engineer's Infrared Goggles", "item.actuallyadditions.engineers_goggles_advanced": "Engineer's Infrared Goggles",
"item.actuallyadditions.laser_upgrade_range": "Laser Relay Modifier: Range (WIP)", "item.actuallyadditions.laser_upgrade_range": "Laser Relay Modifier: Range (wip)",
"item.actuallyadditions.restonia_crystal_shard": "Red Crystal Shard", "item.actuallyadditions.restonia_crystal_shard": "Red Crystal Shard",
"item.actuallyadditions.palis_crystal_shard": "Blue Crystal Shard", "item.actuallyadditions.palis_crystal_shard": "Blue Crystal Shard",
"item.actuallyadditions.diamatine_crystal_shard": "Light Blue Crystal Shard", "item.actuallyadditions.diamatine_crystal_shard": "Light Blue Crystal Shard",
@ -440,7 +440,7 @@
"tooltip.actuallyadditions.playerProbe.notice": "Look out! Someone tried to probe you and strap you to a Player Interface, but they failed!", "tooltip.actuallyadditions.playerProbe.notice": "Look out! Someone tried to probe you and strap you to a Player Interface, but they failed!",
"tooltip.actuallyadditions.battery.discharge": "Charging other items in inventory", "tooltip.actuallyadditions.battery.discharge": "Charging other items in inventory",
"tooltip.actuallyadditions.battery.noDischarge": "Not charging other items in inventory", "tooltip.actuallyadditions.battery.noDischarge": "Not charging other items in inventory",
"tooltip.actuallyadditions.battery.changeMode": "Sneak-right-click to toggle", "tooltip.actuallyadditions.battery.changeMode": "Sneak-right-click to toggle.",
"tooltip.actuallyadditions.previouslyDoubleFurnace": "Previously \"Double Furnace\"", "tooltip.actuallyadditions.previouslyDoubleFurnace": "Previously \"Double Furnace\"",
"tooltip.actuallyadditions.previouslyBag": "Previously \"Bag\"", "tooltip.actuallyadditions.previouslyBag": "Previously \"Bag\"",
"tooltip.actuallyadditions.previouslyVoidBag": "Previously \"Void Bag\"", "tooltip.actuallyadditions.previouslyVoidBag": "Previously \"Void Bag\"",
@ -463,16 +463,21 @@
"info.actuallyadditions.gui.all": "All", "info.actuallyadditions.gui.all": "All",
"info.actuallyadditions.gui.put": "Put", "info.actuallyadditions.gui.put": "Put",
"info.actuallyadditions.gui.pull": "Pull", "info.actuallyadditions.gui.pull": "Pull",
"info.actuallyadditions.gui.whitelist": "Allowlist", "info.actuallyadditions.gui.whitelist": "Whitelist",
"info.actuallyadditions.gui.blacklist": "Blocklist", "info.actuallyadditions.gui.blacklist": "Blacklist",
"info.actuallyadditions.gui.whitelistInfo": "To let all items through, an empty blocklist can be used, to let no items through, an empty allowlist can be used. To configure certain items, place them or configured Item Filters in the slots.", "info.actuallyadditions.gui.whitelistInfo": "To let all items through, an empty blacklist can be used, to let no items through, an empty whitelist can be used. To configure certain items, place them or configured Item Filters in the slots.",
"info.actuallyadditions.gui.respectDamage": "Respecting Damage", "info.actuallyadditions.gui.respectMeta": "Respecting Metadata",
"info.actuallyadditions.gui.ignoreDamage": "Ignoring Damage", "info.actuallyadditions.gui.ignoreMeta": "Ignoring Metadata",
"info.actuallyadditions.gui.respectNBT": "Respecting NBT Data", "info.actuallyadditions.gui.respectNBT": "Respecting NBT",
"info.actuallyadditions.gui.ignoreNBT": "Ignoring NBT Data", "info.actuallyadditions.gui.ignoreNBT": "Ignoring NBT",
"info.actuallyadditions.gui.ignoreMod": "Mod Mode Off", "info.actuallyadditions.gui.ignoreMod": "Mod Mode Off",
"info.actuallyadditions.gui.respectMod": "Mod Mode On", "info.actuallyadditions.gui.respectMod": "Mod Mode On",
"info.actuallyadditions.gui.respectModInfo": "If this is enabled, the filter will compare the mods items come from §cinstead of comparing the items themselves§r. This can be useful for storage systems with mod-based chests. Can be combined with damage matching, but that normally isn't very useful.", "info.actuallyadditions.gui.respectModInfo": "If this is enabled, the filter will compare the mods items come from §cinstead of comparing the items themselves§r. This can be useful for storage systems with mod-based chests. Can also be combined with the other options, but that normally isn't very useful.",
"info.actuallyadditions.gui.ignoreOredict": "Ignoring OreDictionary",
"info.actuallyadditions.gui.respectOredictSoft": "Soft Respecting OreDictionary",
"info.actuallyadditions.gui.respectOredictHard": "Hard Respecting OreDictionary",
"info.actuallyadditions.gui.respectOredictInfo.one": "The item being passed only has to contain §2only one§r of the OreDictionary tags of the item in the filter.",
"info.actuallyadditions.gui.respectOredictInfo.all": "The item being passed has to contain §2all§r of the OreDictionary tags of the item in the filter.",
"info.actuallyadditions.gui.autosplititems.on": "Auto-Split Items On", "info.actuallyadditions.gui.autosplititems.on": "Auto-Split Items On",
"info.actuallyadditions.gui.autosplititems.off": "Auto-Split Items Off", "info.actuallyadditions.gui.autosplititems.off": "Auto-Split Items Off",
"info.actuallyadditions.gui.inbound": "INBOUND", "info.actuallyadditions.gui.inbound": "INBOUND",
@ -481,8 +486,8 @@
"info.actuallyadditions.gui.coffee_amount": "%d/%d Coffee", "info.actuallyadditions.gui.coffee_amount": "%d/%d Coffee",
"info.actuallyadditions.gui.ok": "Ok", "info.actuallyadditions.gui.ok": "Ok",
"info.actuallyadditions.gui.the": "the", "info.actuallyadditions.gui.the": "the",
"info.actuallyadditions.gui.smart": "Smart Allowlist", "info.actuallyadditions.gui.smart": "Smart Whitelist",
"info.actuallyadditions.gui.smartInfo": "When pressing this, all items from inventories adjacent to this relay will be added to this part of the white- or blocklist. Adding Item Filters to the list before will cause them to also be filled.", "info.actuallyadditions.gui.smartInfo": "When pressing this, all items from inventories adjacent to this relay will be added to this part of the white- or blacklist. Adding Item Filters to the list before will cause them to also be filled.",
"info.actuallyadditions.inputter.info.1": "This is the first Slot in the connected Inventory to <p> at.", "info.actuallyadditions.inputter.info.1": "This is the first Slot in the connected Inventory to <p> at.",
"info.actuallyadditions.inputter.info.2": "This is the slot after the last Slot in the connected Inventory to <p> at. What that means: If you, for example, write 2 in the field to the left and 5 in this one, it will <p> at Slot 2, 3, and 4.", "info.actuallyadditions.inputter.info.2": "This is the slot after the last Slot in the connected Inventory to <p> at. What that means: If you, for example, write 2 in the field to the left and 5 in this one, it will <p> at Slot 2, 3, and 4.",
"info.actuallyadditions.nolens": "No Lens", "info.actuallyadditions.nolens": "No Lens",
@ -826,7 +831,7 @@
"booklet.actuallyadditions.chapter.dropper": "Automatic Precision Dropper", "booklet.actuallyadditions.chapter.dropper": "Automatic Precision Dropper",
"booklet.actuallyadditions.chapter.dropper.text.1": "The <item>Automatic Precision Dropper<r> works much like a normal dropper, but it will drop items <imp>without needing a Redstone Signal<r>. <n>It also won't spit them out all over the ground, but it will <imp>drop them straight into the direction you point it at<r>! <n>When right-clicking it with a <item>Redstone Torch<r> in hand, it will change between a mode where it <imp>gets deactivated by Redstone<r> and a mode where it <imp>responds to pulses<r>.", "booklet.actuallyadditions.chapter.dropper.text.1": "The <item>Automatic Precision Dropper<r> works much like a normal dropper, but it will drop items <imp>without needing a Redstone Signal<r>. <n>It also won't spit them out all over the ground, but it will <imp>drop them straight into the direction you point it at<r>! <n>When right-clicking it with a <item>Redstone Torch<r> in hand, it will change between a mode where it <imp>gets deactivated by Redstone<r> and a mode where it <imp>responds to pulses<r>.",
"booklet.actuallyadditions.chapter.rangedCollector": "Ranged Collector", "booklet.actuallyadditions.chapter.rangedCollector": "Ranged Collector",
"booklet.actuallyadditions.chapter.rangedCollector.text.1": "The <item>Ranged Collector<r> works much like a hopper, in that it <imp>collects items around it<r>, having the power, however, to pick up items that are in an area of <imp><range> blocks<r> around it. <n>It has a <imp>filter<r> that can be set to <imp>white- or blocklist<r>. <n>This comes with a disadvantage, however: It doesn't auto-output its items.", "booklet.actuallyadditions.chapter.rangedCollector.text.1": "The <item>Ranged Collector<r> works much like a hopper, in that it <imp>collects items around it<r>, having the power, however, to pick up items that are in an area of <imp><range> blocks<r> around it. <n>It has a <imp>filter<r> that can be set to <imp>white- or blacklist<r>. <n>This comes with a disadvantage, however: It doesn't auto-output its items.",
"booklet.actuallyadditions.chapter.hairBalls": "Ball of Fur-s", "booklet.actuallyadditions.chapter.hairBalls": "Ball of Fur-s",
"booklet.actuallyadditions.chapter.hairBalls.text.1": "<item>Balls of Fur<r> dropped by <imp>live<r> cats. <n>More information on the next page.", "booklet.actuallyadditions.chapter.hairBalls.text.1": "<item>Balls of Fur<r> dropped by <imp>live<r> cats. <n>More information on the next page.",
"booklet.actuallyadditions.chapter.hairBalls.text.2": "<item>Balls of Fur<r> are an item rarely dropped by <imp>cats<r> which have been <imp>tamed<r> by the player. <n>Cats are very mysterious creatures as they <imp>appear to get everything stuck in their fur<r>. <item>Balls of Fur<r> may seem disgusting at first, but when removing all of the hair by <imp>right-clicking<r>, they will reveal some <imp>valuable items<r>. <n>Or just some String. <n><n><n><i>FUURRRRRR!!", "booklet.actuallyadditions.chapter.hairBalls.text.2": "<item>Balls of Fur<r> are an item rarely dropped by <imp>cats<r> which have been <imp>tamed<r> by the player. <n>Cats are very mysterious creatures as they <imp>appear to get everything stuck in their fur<r>. <item>Balls of Fur<r> may seem disgusting at first, but when removing all of the hair by <imp>right-clicking<r>, they will reveal some <imp>valuable items<r>. <n>Or just some String. <n><n><n><i>FUURRRRRR!!",
@ -844,7 +849,7 @@
"booklet.actuallyadditions.chapter.crystals.text.1": "The <item>Atomic Reconstructor<r> is used to craft <item>Crystals<r>, which are the main crafting ingredient in most items from <imp>Actually Additions<r>. <n>Upon being supplied with power, it shoots out a Laser. <tifisgrin>When the Laser hits a block<r>, it will convert all surrounding items and blocks, provided they can be converted.", "booklet.actuallyadditions.chapter.crystals.text.1": "The <item>Atomic Reconstructor<r> is used to craft <item>Crystals<r>, which are the main crafting ingredient in most items from <imp>Actually Additions<r>. <n>Upon being supplied with power, it shoots out a Laser. <tifisgrin>When the Laser hits a block<r>, it will convert all surrounding items and blocks, provided they can be converted.",
"booklet.actuallyadditions.chapter.crystals.text.2": "When shooting a laser, it uses <imp>1000 CF<r>, but additional rates vary depending on the conversion. <n>There are various <item>Lenses<r> that can be attached to the Reconstructor that don't all follow the default behavior of the Reconstructor and are able to do some neat things. <n>See the <imp>Reconstruction section<r> in the booklet <imp>for more information<r>.", "booklet.actuallyadditions.chapter.crystals.text.2": "When shooting a laser, it uses <imp>1000 CF<r>, but additional rates vary depending on the conversion. <n>There are various <item>Lenses<r> that can be attached to the Reconstructor that don't all follow the default behavior of the Reconstructor and are able to do some neat things. <n>See the <imp>Reconstruction section<r> in the booklet <imp>for more information<r>.",
"booklet.actuallyadditions.chapter.crystals.text.3": "When right-clicking the Reconstructor with a <item>Redstone Torch<r> in hand, it will change between a mode where it <imp>gets deactivated by Redstone<r> and a mode where it <imp>responds to pulses<r>. It should be noted that any recipes listed without information about Lenses <imp>don't use one<r>. <n><i>I thought that was obvious.", "booklet.actuallyadditions.chapter.crystals.text.3": "When right-clicking the Reconstructor with a <item>Redstone Torch<r> in hand, it will change between a mode where it <imp>gets deactivated by Redstone<r> and a mode where it <imp>responds to pulses<r>. It should be noted that any recipes listed without information about Lenses <imp>don't use one<r>. <n><i>I thought that was obvious.",
"booklet.actuallyadditions.chapter.crystals.text.5": "When you have crafted a couple of items, you might want to find a way to <imp>automate this<r>. <n>There is a very simple way to do accomplish this: <n>Place the <item>Atomic Reconstructor<r> down facing into a <item>Precision Dropper<r> (to find it, look it up in the <imp>All Items<r> Entry!). <n>Next, place a <item>Ranged Collector<r> in the area that has the converted items set as a allowlist. <n>Now you can just chuck your raw materials into the Dropper to convert them!", "booklet.actuallyadditions.chapter.crystals.text.5": "When you have crafted a couple of items, you might want to find a way to <imp>automate this<r>. <n>There is a very simple way to do accomplish this: <n>Place the <item>Atomic Reconstructor<r> down facing into a <item>Precision Dropper<r> (to find it, look it up in the <imp>All Items<r> Entry!). <n>Next, place a <item>Ranged Collector<r> in the area that has the converted items set as a whitelist. <n>Now you can just chuck your raw materials into the Dropper to convert them!",
"booklet.actuallyadditions.chapter.crystals.text.6": "<n><n><n><i>Molecular Transformilator", "booklet.actuallyadditions.chapter.crystals.text.6": "<n><n><n><i>Molecular Transformilator",
"booklet.actuallyadditions.chapter.book_tutorial": "Intro to the Manual", "booklet.actuallyadditions.chapter.book_tutorial": "Intro to the Manual",
"booklet.actuallyadditions.chapter.book_tutorial.text.1": "The <item>Actually Additions Manual<r>, the book you are looking at right now, contains a variety of <imp>useful information about all of the items<r>. <n>Once you get the hang of it, it is very easy to navigate. Here is a quick rundown: <n><n>While you are in a <item>chapter<r>, like this one, you can use the <imp>white buttons at the bottom<r> to turn the page back or forwards. This can also be done by <imp>using the scroll wheel<r>. <n>Chapters, however, aren't the only thing that this book consists of.", "booklet.actuallyadditions.chapter.book_tutorial.text.1": "The <item>Actually Additions Manual<r>, the book you are looking at right now, contains a variety of <imp>useful information about all of the items<r>. <n>Once you get the hang of it, it is very easy to navigate. Here is a quick rundown: <n><n>While you are in a <item>chapter<r>, like this one, you can use the <imp>white buttons at the bottom<r> to turn the page back or forwards. This can also be done by <imp>using the scroll wheel<r>. <n>Chapters, however, aren't the only thing that this book consists of.",
@ -890,7 +895,7 @@
"booklet.actuallyadditions.chapter.itemInterfaces.text.1": "The <item>Item Interface<r> is the way to <imp>interact<r> with an <item>Item Laser Relay<r> network. On its own, such a network will just <imp>\"know about\"<r> all of the <imp>items and slots<r> that connected containers have. <n>The <item>Item Interface<r>, however, can be used to directly <imp>interact<r> with these items. The way the <item>Item Interface<r> works is that it basically <imp>pretends<r> to be a <imp>very large chest<r> containing <imp>every slot<r> of every container that is connected.", "booklet.actuallyadditions.chapter.itemInterfaces.text.1": "The <item>Item Interface<r> is the way to <imp>interact<r> with an <item>Item Laser Relay<r> network. On its own, such a network will just <imp>\"know about\"<r> all of the <imp>items and slots<r> that connected containers have. <n>The <item>Item Interface<r>, however, can be used to directly <imp>interact<r> with these items. The way the <item>Item Interface<r> works is that it basically <imp>pretends<r> to be a <imp>very large chest<r> containing <imp>every slot<r> of every container that is connected.",
"booklet.actuallyadditions.chapter.itemInterfaces.text.2": "What this means is that you can <imp>use a Hopper<r> or any other item transport mechanic on the Item Interface and it will function like a chest, being able to <imp>accept items<r> and have items <imp>pulled out of it<r>. But instead of any items being stored inside of the <item>Item Interface<r> they will go to and be pulled from <imp>the Laser Relay network<r>. <n><n>To actually <imp>connect<r> an <item>Item Interface<r> to a network, just <imp>place<r> an <item>Item Laser Relay<r> next to one.", "booklet.actuallyadditions.chapter.itemInterfaces.text.2": "What this means is that you can <imp>use a Hopper<r> or any other item transport mechanic on the Item Interface and it will function like a chest, being able to <imp>accept items<r> and have items <imp>pulled out of it<r>. But instead of any items being stored inside of the <item>Item Interface<r> they will go to and be pulled from <imp>the Laser Relay network<r>. <n><n>To actually <imp>connect<r> an <item>Item Interface<r> to a network, just <imp>place<r> an <item>Item Laser Relay<r> next to one.",
"booklet.actuallyadditions.chapter.itemRelaysAdvanced": "Advanced Item Laser Relays", "booklet.actuallyadditions.chapter.itemRelaysAdvanced": "Advanced Item Laser Relays",
"booklet.actuallyadditions.chapter.itemRelaysAdvanced.text.1": "Soon you will find that sometimes you will need to <imp>white- and blocklist<r> what you actaully want to go into a container. <n>The <item>Advanced Item Laser Relay<r> is able to do just that. When <imp>right-clicking<r>, you can configure a <imp>Allowlist<r> or <imp>Blocklist<r> inside of the GUI. <n>This list has two sides, however. The <imp>INBOUND<r> side basically means \"things that are trying to go into the container the Relay is attached to\", while <imp>OUTBOUND<r> means \"things that are trying to exit the attached container\".", "booklet.actuallyadditions.chapter.itemRelaysAdvanced.text.1": "Soon you will find that sometimes you will need to <imp>white- and blacklist<r> what you actaully want to go into a container. <n>The <item>Advanced Item Laser Relay<r> is able to do just that. When <imp>right-clicking<r>, you can configure a <imp>Whitelist<r> or <imp>Blacklist<r> inside of the GUI. <n>This list has two sides, however. The <imp>INBOUND<r> side basically means \"things that are trying to go into the container the Relay is attached to\", while <imp>OUTBOUND<r> means \"things that are trying to exit the attached container\".",
"booklet.actuallyadditions.chapter.itemRelaysAdvanced.text.2": "This doesn't only work on <imp>storage containers<r> in the network, but also for <item>Item Interfaces<r>, meaning that you are able to set up a storage system and only pull out specific items in certain places.", "booklet.actuallyadditions.chapter.itemRelaysAdvanced.text.2": "This doesn't only work on <imp>storage containers<r> in the network, but also for <item>Item Interfaces<r>, meaning that you are able to set up a storage system and only pull out specific items in certain places.",
"booklet.actuallyadditions.chapter.itemInterfacesHopping": "Hopping Item Interface", "booklet.actuallyadditions.chapter.itemInterfacesHopping": "Hopping Item Interface",
"booklet.actuallyadditions.chapter.itemInterfacesHopping.text.1": "The <item>Hopping Item Interface<r> works the same as a normal <item>Item Interface<r>, meaning that you can <imp>connect<r> them to an <item>Item Laser Relay<r> network by placing one <imp>next to it<r>. <n>However, whereas you need to pipe items into the normal <item>Item Interface<r>, the <item>Hopping Item Interface<r> will <imp>pull and push<r> items <imp>on its own<r>. It has <imp>every functionality<r> that the <item>Hopper<r> has, but instead of storing items in an <imp>internal inventory<r>, it stores them in <imp>the network<r>.", "booklet.actuallyadditions.chapter.itemInterfacesHopping.text.1": "The <item>Hopping Item Interface<r> works the same as a normal <item>Item Interface<r>, meaning that you can <imp>connect<r> them to an <item>Item Laser Relay<r> network by placing one <imp>next to it<r>. <n>However, whereas you need to pipe items into the normal <item>Item Interface<r>, the <item>Hopping Item Interface<r> will <imp>pull and push<r> items <imp>on its own<r>. It has <imp>every functionality<r> that the <item>Hopper<r> has, but instead of storing items in an <imp>internal inventory<r>, it stores them in <imp>the network<r>.",
@ -906,7 +911,7 @@
"booklet.actuallyadditions.chapter.displayStand.text.1": "The <item>Display Stand<r> is a block that can, for one, <imp>display any item or block<r> by right-clicking with it onto the display stand. It will then be floating around on top. <n>To take it out of there again, just right-click with an empty hand. <n><n>The other feature, however, is that some items can be put onto it, <imp>having special effects<r>. This, however, will require the stand to <imp>get CF<r>. Read more on the next page.", "booklet.actuallyadditions.chapter.displayStand.text.1": "The <item>Display Stand<r> is a block that can, for one, <imp>display any item or block<r> by right-clicking with it onto the display stand. It will then be floating around on top. <n>To take it out of there again, just right-click with an empty hand. <n><n>The other feature, however, is that some items can be put onto it, <imp>having special effects<r>. This, however, will require the stand to <imp>get CF<r>. Read more on the next page.",
"booklet.actuallyadditions.chapter.displayStand.text.2": "The <item>Leaf Blower<r> and <item>Advanced Leaf Blower<r> can be placed onto the display stand, resulting in the grass and leaves around it to be blown away. <n><n><item>Potion Rings<r> can be placed onto the display stand. The normal version will give the specified potion effect to <imp>only one<r> living entity in a small area, while the advanced version will <imp>give a potion effect to all living entities<r> in a <imp>big area<r> while using up a significant amount of <imp>CF<r>.", "booklet.actuallyadditions.chapter.displayStand.text.2": "The <item>Leaf Blower<r> and <item>Advanced Leaf Blower<r> can be placed onto the display stand, resulting in the grass and leaves around it to be blown away. <n><n><item>Potion Rings<r> can be placed onto the display stand. The normal version will give the specified potion effect to <imp>only one<r> living entity in a small area, while the advanced version will <imp>give a potion effect to all living entities<r> in a <imp>big area<r> while using up a significant amount of <imp>CF<r>.",
"booklet.actuallyadditions.chapter.itemFilter": "Item Filter", "booklet.actuallyadditions.chapter.itemFilter": "Item Filter",
"booklet.actuallyadditions.chapter.itemFilter.text.1": "The <item>Item Filter<r> can be used in <item>Advanced Item Laser Relays<r>, <item>ESDs<r> and <item>Ranged Collectors<r> to <imp>enlargen the size of their whitelist<r>. This can be done by right-clicking with the filter in hand and placing items to be filtered inside of it. The filter can then be placed into any allowlist slot in the desired machine. <n>For more information on this, <imp>hover over the allowlist buttons in the GUIs of allowlistable machines<r>!", "booklet.actuallyadditions.chapter.itemFilter.text.1": "The <item>Item Filter<r> can be used in <item>Advanced Item Laser Relays<r>, <item>ESDs<r> and <item>Ranged Collectors<r> to <imp>enlargen the size of their whitelist<r>. This can be done by right-clicking with the filter in hand and placing items to be filtered inside of it. The filter can then be placed into any whitelist slot in the desired machine. <n>For more information on this, <imp>hover over the whitelist buttons in the GUIs of whitelistable machines<r>!",
"booklet.actuallyadditions.chapter.video_guide": "A Video Guide", "booklet.actuallyadditions.chapter.video_guide": "A Video Guide",
"booklet.actuallyadditions.chapter.video_guide.booty.text.1": "If you want to have a <imp>visual introduction<r> to see what <item>Actually Additions<r> has to offer, you can watch this really awesome video by a friend of mine, <item>Booty Toast<r> (yes, weird name, I know).", "booklet.actuallyadditions.chapter.video_guide.booty.text.1": "If you want to have a <imp>visual introduction<r> to see what <item>Actually Additions<r> has to offer, you can watch this really awesome video by a friend of mine, <item>Booty Toast<r> (yes, weird name, I know).",
"booklet.actuallyadditions.chapter.video_guide.booty.text.2": "<n>His video covers most of the main stuff the mod has to offer, however it is <imp>a bit outdated<r> and doesn't cover everything. It's still a <imp>great introduction to the mod<r> though.", "booklet.actuallyadditions.chapter.video_guide.booty.text.2": "<n>His video covers most of the main stuff the mod has to offer, however it is <imp>a bit outdated<r> and doesn't cover everything. It's still a <imp>great introduction to the mod<r> though.",