diff --git a/src/main/java/de/ellpeck/prettypipes/Registry.java b/src/main/java/de/ellpeck/prettypipes/Registry.java index 277b4f6..cb60a9f 100644 --- a/src/main/java/de/ellpeck/prettypipes/Registry.java +++ b/src/main/java/de/ellpeck/prettypipes/Registry.java @@ -4,20 +4,22 @@ import de.ellpeck.prettypipes.entities.PipeFrameEntity; import de.ellpeck.prettypipes.entities.PipeFrameRenderer; import de.ellpeck.prettypipes.items.*; import de.ellpeck.prettypipes.misc.ItemEqualityType; -import de.ellpeck.prettypipes.pipe.modules.FilterModifierModuleItem; -import de.ellpeck.prettypipes.pipe.modules.LowPriorityModuleItem; -import de.ellpeck.prettypipes.pipe.modules.RedstoneModuleItem; -import de.ellpeck.prettypipes.pipe.modules.SpeedModuleItem; +import de.ellpeck.prettypipes.network.PipeNetwork; +import de.ellpeck.prettypipes.packets.PacketHandler; +import de.ellpeck.prettypipes.pipe.IPipeConnectable; +import de.ellpeck.prettypipes.pipe.PipeBlock; +import de.ellpeck.prettypipes.pipe.PipeRenderer; +import de.ellpeck.prettypipes.pipe.PipeTileEntity; +import de.ellpeck.prettypipes.pipe.containers.AbstractPipeContainer; +import de.ellpeck.prettypipes.pipe.containers.MainPipeContainer; +import de.ellpeck.prettypipes.pipe.containers.MainPipeGui; +import de.ellpeck.prettypipes.pipe.modules.*; import de.ellpeck.prettypipes.pipe.modules.craft.CraftingModuleContainer; import de.ellpeck.prettypipes.pipe.modules.craft.CraftingModuleGui; import de.ellpeck.prettypipes.pipe.modules.craft.CraftingModuleItem; import de.ellpeck.prettypipes.pipe.modules.extraction.ExtractionModuleContainer; import de.ellpeck.prettypipes.pipe.modules.extraction.ExtractionModuleGui; import de.ellpeck.prettypipes.pipe.modules.extraction.ExtractionModuleItem; -import de.ellpeck.prettypipes.network.PipeNetwork; -import de.ellpeck.prettypipes.packets.PacketHandler; -import de.ellpeck.prettypipes.pipe.*; -import de.ellpeck.prettypipes.pipe.containers.*; import de.ellpeck.prettypipes.pipe.modules.filter.FilterIncreaseModuleContainer; import de.ellpeck.prettypipes.pipe.modules.filter.FilterIncreaseModuleGui; import de.ellpeck.prettypipes.pipe.modules.filter.FilterIncreaseModuleItem; @@ -143,6 +145,7 @@ public final class Registry { registry.registerAll(createTieredModule("filter_module", FilterModuleItem::new)); registry.registerAll(createTieredModule("speed_module", SpeedModuleItem::new)); registry.registerAll(createTieredModule("low_priority_module", LowPriorityModuleItem::new)); + registry.registerAll(createTieredModule("high_priority_module", HighPriorityModuleItem::new)); registry.registerAll(createTieredModule("retrieval_module", RetrievalModuleItem::new)); registry.register(new StackSizeModuleItem("stack_size_module")); registry.registerAll(Arrays.stream(ItemEqualityType.values()).map(t -> new FilterModifierModuleItem(t.name().toLowerCase(Locale.ROOT) + "_filter_modifier", t)).toArray(Item[]::new)); diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/modules/HighPriorityModuleItem.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/HighPriorityModuleItem.java new file mode 100644 index 0000000..6e4eb86 --- /dev/null +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/HighPriorityModuleItem.java @@ -0,0 +1,31 @@ +package de.ellpeck.prettypipes.pipe.modules; + +import de.ellpeck.prettypipes.items.IModule; +import de.ellpeck.prettypipes.items.ModuleItem; +import de.ellpeck.prettypipes.items.ModuleTier; +import de.ellpeck.prettypipes.pipe.PipeTileEntity; +import net.minecraft.item.ItemStack; + +public class HighPriorityModuleItem extends ModuleItem { + private final int priority; + + public HighPriorityModuleItem(String name, ModuleTier tier) { + super(name); + this.priority = tier.forTier(50, 100, 200); + } + + @Override + public int getPriority(ItemStack module, PipeTileEntity tile) { + return this.priority; + } + + @Override + public boolean isCompatible(ItemStack module, PipeTileEntity tile, IModule other) { + return !(other instanceof HighPriorityModuleItem) && !(other instanceof LowPriorityModuleItem); + } + + @Override + public boolean hasContainer(ItemStack module, PipeTileEntity tile) { + return false; + } +} diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/modules/LowPriorityModuleItem.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/LowPriorityModuleItem.java index e058ec7..0e54939 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/modules/LowPriorityModuleItem.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/LowPriorityModuleItem.java @@ -21,7 +21,7 @@ public class LowPriorityModuleItem extends ModuleItem { @Override public boolean isCompatible(ItemStack module, PipeTileEntity tile, IModule other) { - return !(other instanceof LowPriorityModuleItem); + return !(other instanceof LowPriorityModuleItem) && !(other instanceof HighPriorityModuleItem); } @Override diff --git a/src/main/resources/assets/prettypipes/lang/en_us.json b/src/main/resources/assets/prettypipes/lang/en_us.json index 49b769f..ef6e031 100644 --- a/src/main/resources/assets/prettypipes/lang/en_us.json +++ b/src/main/resources/assets/prettypipes/lang/en_us.json @@ -19,6 +19,9 @@ "item.prettypipes.low_low_priority_module": "Low Priority Module", "item.prettypipes.medium_low_priority_module": "Lower Priority Module", "item.prettypipes.high_low_priority_module": "Lowest Priority Module", + "item.prettypipes.low_high_priority_module": "High Priority Module", + "item.prettypipes.medium_high_priority_module": "Higher Priority Module", + "item.prettypipes.high_high_priority_module": "Highest Priority Module", "item.prettypipes.low_retrieval_module": "Low Retrieval Module", "item.prettypipes.medium_retrieval_module": "Medium Retrieval Module", "item.prettypipes.high_retrieval_module": "High Retrieval Module", @@ -32,7 +35,8 @@ "info.prettypipes.extraction_module": "Pulls items from adjacent inventories\nFilters and pull rates vary by tier\nHigh tiers prevent over-sending", "info.prettypipes.filter_module": "Restricts flow from pipes into adjacent inventories\nFilter amount varies by tier", "info.prettypipes.speed_module": "Increases speed of items exiting adjacent inventories\nSpeed varies by tier", - "info.prettypipes.low_priority_module": "Decreases the reception priority of adjacent inventories\nLower priority means items will prefer other inventories", + "info.prettypipes.low_priority_module": "Decreases the reception priority of adjacent inventories\nLower priority means items will prefer other inventories, regardless of distance", + "info.prettypipes.high_priority_module": "Increases the reception priority of adjacent inventories\nHigher priority means items will prefer this inventory, regardless of distance", "info.prettypipes.retrieval_module": "Pulls items from other inventories in the network\nFilters and pull rates vary by tier\nHigh tiers prevent over-sending", "info.prettypipes.stack_size_module": "Limits the amount of items that can enter adjacent inventories\nAutomatically prevents over-sending", "info.prettypipes.damage_filter_modifier": "Causes any filter slots to filter by item damage", diff --git a/src/main/resources/assets/prettypipes/models/item/high_high_priority_module.json b/src/main/resources/assets/prettypipes/models/item/high_high_priority_module.json new file mode 100644 index 0000000..3fd323c --- /dev/null +++ b/src/main/resources/assets/prettypipes/models/item/high_high_priority_module.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "prettypipes:item/high_high_priority_module" + } +} diff --git a/src/main/resources/assets/prettypipes/models/item/low_high_priority_module.json b/src/main/resources/assets/prettypipes/models/item/low_high_priority_module.json new file mode 100644 index 0000000..5722fed --- /dev/null +++ b/src/main/resources/assets/prettypipes/models/item/low_high_priority_module.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "prettypipes:item/low_high_priority_module" + } +} diff --git a/src/main/resources/assets/prettypipes/models/item/medium_high_priority_module.json b/src/main/resources/assets/prettypipes/models/item/medium_high_priority_module.json new file mode 100644 index 0000000..459bc06 --- /dev/null +++ b/src/main/resources/assets/prettypipes/models/item/medium_high_priority_module.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "prettypipes:item/medium_high_priority_module" + } +} diff --git a/src/main/resources/assets/prettypipes/textures/item/high_high_priority_module.png b/src/main/resources/assets/prettypipes/textures/item/high_high_priority_module.png new file mode 100644 index 0000000..0849eb5 Binary files /dev/null and b/src/main/resources/assets/prettypipes/textures/item/high_high_priority_module.png differ diff --git a/src/main/resources/assets/prettypipes/textures/item/low_high_priority_module.png b/src/main/resources/assets/prettypipes/textures/item/low_high_priority_module.png new file mode 100644 index 0000000..18933a9 Binary files /dev/null and b/src/main/resources/assets/prettypipes/textures/item/low_high_priority_module.png differ diff --git a/src/main/resources/assets/prettypipes/textures/item/medium_high_priority_module.png b/src/main/resources/assets/prettypipes/textures/item/medium_high_priority_module.png new file mode 100644 index 0000000..ddd356f Binary files /dev/null and b/src/main/resources/assets/prettypipes/textures/item/medium_high_priority_module.png differ diff --git a/src/main/resources/data/prettypipes/recipes/high_high_priority_module.json b/src/main/resources/data/prettypipes/recipes/high_high_priority_module.json new file mode 100644 index 0000000..f78168c --- /dev/null +++ b/src/main/resources/data/prettypipes/recipes/high_high_priority_module.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "CCC", + "CMC", + "CCC" + ], + "key": { + "C": { + "item": "minecraft:paper" + }, + "M": { + "item": "prettypipes:medium_high_priority_module" + } + }, + "result": { + "item": "prettypipes:high_high_priority_module" + } +} \ No newline at end of file diff --git a/src/main/resources/data/prettypipes/recipes/low_high_priority_module.json b/src/main/resources/data/prettypipes/recipes/low_high_priority_module.json new file mode 100644 index 0000000..7778085 --- /dev/null +++ b/src/main/resources/data/prettypipes/recipes/low_high_priority_module.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " C ", + "RMR", + " R " + ], + "key": { + "R": { + "item": "minecraft:redstone" + }, + "C": { + "item": "minecraft:paper" + }, + "M": { + "item": "prettypipes:blank_module" + } + }, + "result": { + "item": "prettypipes:low_high_priority_module" + } +} \ No newline at end of file diff --git a/src/main/resources/data/prettypipes/recipes/medium_high_priority_module.json b/src/main/resources/data/prettypipes/recipes/medium_high_priority_module.json new file mode 100644 index 0000000..f3be962 --- /dev/null +++ b/src/main/resources/data/prettypipes/recipes/medium_high_priority_module.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " C ", + "CMC", + " C " + ], + "key": { + "C": { + "item": "minecraft:paper" + }, + "M": { + "item": "prettypipes:low_high_priority_module" + } + }, + "result": { + "item": "prettypipes:medium_high_priority_module" + } +} \ No newline at end of file