diff --git a/src/main/java/de/ellpeck/prettypipes/Registry.java b/src/main/java/de/ellpeck/prettypipes/Registry.java index d5800b5..462576c 100644 --- a/src/main/java/de/ellpeck/prettypipes/Registry.java +++ b/src/main/java/de/ellpeck/prettypipes/Registry.java @@ -1,18 +1,19 @@ package de.ellpeck.prettypipes; import de.ellpeck.prettypipes.items.ModuleItem; -import de.ellpeck.prettypipes.pipe.extraction.ExtractionModuleContainer; -import de.ellpeck.prettypipes.pipe.extraction.ExtractionModuleGui; -import de.ellpeck.prettypipes.pipe.extraction.ExtractionModuleItem; +import de.ellpeck.prettypipes.pipe.modules.SpeedModuleItem; +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.items.ModuleTier; import de.ellpeck.prettypipes.items.WrenchItem; 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.insertion.FilterModuleContainer; -import de.ellpeck.prettypipes.pipe.insertion.FilterModuleGui; -import de.ellpeck.prettypipes.pipe.insertion.FilterModuleItem; +import de.ellpeck.prettypipes.pipe.modules.containers.*; +import de.ellpeck.prettypipes.pipe.modules.insertion.FilterModuleContainer; +import de.ellpeck.prettypipes.pipe.modules.insertion.FilterModuleGui; +import de.ellpeck.prettypipes.pipe.modules.insertion.FilterModuleItem; import net.minecraft.block.Block; import net.minecraft.client.gui.ScreenManager; import net.minecraft.client.renderer.RenderType; @@ -44,7 +45,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.function.BiFunction; -import java.util.function.Function; @Mod.EventBusSubscriber(bus = Bus.MOD) public final class Registry { @@ -83,6 +83,7 @@ public final class Registry { ); registry.registerAll(createTieredModule("extraction_module", ExtractionModuleItem::new)); registry.registerAll(createTieredModule("filter_module", FilterModuleItem::new)); + registry.registerAll(createTieredModule("speed_module", SpeedModuleItem::new)); ForgeRegistries.BLOCKS.getValues().stream() .filter(b -> b.getRegistryName().getNamespace().equals(PrettyPipes.ID)) diff --git a/src/main/java/de/ellpeck/prettypipes/items/IModule.java b/src/main/java/de/ellpeck/prettypipes/items/IModule.java index 84f3848..8b7e43f 100644 --- a/src/main/java/de/ellpeck/prettypipes/items/IModule.java +++ b/src/main/java/de/ellpeck/prettypipes/items/IModule.java @@ -1,6 +1,6 @@ package de.ellpeck.prettypipes.items; -import de.ellpeck.prettypipes.pipe.containers.AbstractPipeContainer; +import de.ellpeck.prettypipes.pipe.modules.containers.AbstractPipeContainer; import de.ellpeck.prettypipes.pipe.PipeTileEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; @@ -22,4 +22,6 @@ public interface IModule { boolean hasContainer(ItemStack module, PipeTileEntity tile); AbstractPipeContainer getContainer(ItemStack module, PipeTileEntity tile, int windowId, PlayerInventory inv, PlayerEntity player, int moduleIndex); + + float getItemSpeedIncrease(ItemStack module, PipeTileEntity tile); } diff --git a/src/main/java/de/ellpeck/prettypipes/items/ModuleItem.java b/src/main/java/de/ellpeck/prettypipes/items/ModuleItem.java index 45df70a..aa6c4ad 100644 --- a/src/main/java/de/ellpeck/prettypipes/items/ModuleItem.java +++ b/src/main/java/de/ellpeck/prettypipes/items/ModuleItem.java @@ -2,7 +2,7 @@ package de.ellpeck.prettypipes.items; import de.ellpeck.prettypipes.PrettyPipes; import de.ellpeck.prettypipes.Registry; -import de.ellpeck.prettypipes.pipe.containers.AbstractPipeContainer; +import de.ellpeck.prettypipes.pipe.modules.containers.AbstractPipeContainer; import de.ellpeck.prettypipes.pipe.PipeTileEntity; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.resources.I18n; @@ -15,7 +15,6 @@ import net.minecraft.util.text.*; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.items.IItemHandler; import javax.annotation.Nullable; @@ -67,4 +66,9 @@ public abstract class ModuleItem extends Item implements IModule { public AbstractPipeContainer getContainer(ItemStack module, PipeTileEntity tile, int windowId, PlayerInventory inv, PlayerEntity player, int moduleIndex) { return null; } + + @Override + public float getItemSpeedIncrease(ItemStack module, PipeTileEntity tile) { + return 0; + } } diff --git a/src/main/java/de/ellpeck/prettypipes/network/PipeItem.java b/src/main/java/de/ellpeck/prettypipes/network/PipeItem.java index 3df4900..b2b4dc2 100644 --- a/src/main/java/de/ellpeck/prettypipes/network/PipeItem.java +++ b/src/main/java/de/ellpeck/prettypipes/network/PipeItem.java @@ -28,6 +28,7 @@ import java.util.function.Consumer; public class PipeItem implements INBTSerializable { public ItemStack stack; + public float speed; public float x; public float y; public float z; @@ -45,8 +46,9 @@ public class PipeItem implements INBTSerializable { private boolean dropOnObstruction; private long lastWorldTick; - public PipeItem(ItemStack stack) { + public PipeItem(ItemStack stack, float speed) { this.stack = stack; + this.speed = speed; } public PipeItem(CompoundNBT nbt) { @@ -79,7 +81,7 @@ public class PipeItem implements INBTSerializable { return; this.lastWorldTick = worldTick; - float speed = 0.05F; + float currSpeed = this.speed; BlockPos myPos = new BlockPos(this.x, this.y, this.z); if (!myPos.equals(currPipe.getPos()) && (this.reachedDestination() || !myPos.equals(this.startInventory))) { // we're done with the current pipe, so switch to the next one @@ -102,7 +104,7 @@ public class PipeItem implements INBTSerializable { } } else { double dist = new Vec3d(this.currGoalPos).squareDistanceTo(this.x - 0.5F, this.y - 0.5F, this.z - 0.5F); - if (dist < speed * speed) { + if (dist < this.speed * this.speed) { // we're past the start of the pipe, so move to the center of the next pipe PipeTileEntity next = this.getNextTile(currPipe, false); if (next == null) { @@ -115,7 +117,19 @@ public class PipeItem implements INBTSerializable { return; } } else { - this.currGoalPos = next.getPos(); + BlockPos nextPos = next.getPos(); + if (dist >= 0.001F) { + // when going around corners, we want to move right up to the corner + Vec3d motion = new Vec3d(this.x - this.lastX, this.y - this.lastY, this.z - this.lastZ); + Vec3d diff = new Vec3d(nextPos.getX() + 0.5F - this.x, nextPos.getY() + 0.5F - this.y, nextPos.getZ() + 0.5F - this.z); + if (motion.crossProduct(diff).length() >= 0.001F) { + currSpeed = (float) Math.sqrt(dist); + } else { + this.currGoalPos = nextPos; + } + } else { + this.currGoalPos = nextPos; + } } } } @@ -126,15 +140,15 @@ public class PipeItem implements INBTSerializable { Vec3d dist = new Vec3d(this.currGoalPos.getX() + 0.5F - this.x, this.currGoalPos.getY() + 0.5F - this.y, this.currGoalPos.getZ() + 0.5F - this.z); dist = dist.normalize(); - this.x += dist.x * speed; - this.y += dist.y * speed; - this.z += dist.z * speed; + this.x += dist.x * currSpeed; + this.y += dist.y * currSpeed; + this.z += dist.z * currSpeed; } private void onPathObstructed(PipeTileEntity currPipe, boolean tryReturn) { if (!this.dropOnObstruction && tryReturn) { PipeNetwork network = PipeNetwork.get(currPipe.getWorld()); - if (network.routeItemToLocation(currPipe.getPos(), this.destInventory, this.startPipe, this.startInventory, () -> this)) { + if (network.routeItemToLocation(currPipe.getPos(), this.destInventory, this.startPipe, this.startInventory, speed -> this)) { this.dropOnObstruction = true; return; } @@ -176,6 +190,7 @@ public class PipeItem implements INBTSerializable { public CompoundNBT serializeNBT() { CompoundNBT nbt = new CompoundNBT(); nbt.put("stack", this.stack.serializeNBT()); + nbt.putFloat("speed", this.speed); nbt.put("start_pipe", NBTUtil.writeBlockPos(this.startPipe)); nbt.put("start_inv", NBTUtil.writeBlockPos(this.startInventory)); nbt.put("dest_pipe", NBTUtil.writeBlockPos(this.destPipe)); @@ -196,6 +211,7 @@ public class PipeItem implements INBTSerializable { @Override public void deserializeNBT(CompoundNBT nbt) { this.stack = ItemStack.read(nbt.getCompound("stack")); + this.speed = nbt.getFloat("speed"); this.startPipe = NBTUtil.readBlockPos(nbt.getCompound("start_pipe")); this.startInventory = NBTUtil.readBlockPos(nbt.getCompound("start_inv")); this.destPipe = NBTUtil.readBlockPos(nbt.getCompound("dest_pipe")); diff --git a/src/main/java/de/ellpeck/prettypipes/network/PipeNetwork.java b/src/main/java/de/ellpeck/prettypipes/network/PipeNetwork.java index f82e068..d72aa5c 100644 --- a/src/main/java/de/ellpeck/prettypipes/network/PipeNetwork.java +++ b/src/main/java/de/ellpeck/prettypipes/network/PipeNetwork.java @@ -34,6 +34,7 @@ import org.jgrapht.traverse.BreadthFirstIterator; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.*; +import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collectors; @@ -109,10 +110,10 @@ public class PipeNetwork implements ICapabilitySerializable, GraphL } public boolean tryInsertItem(BlockPos startPipePos, BlockPos startInventory, ItemStack stack) { - return this.routeItem(startPipePos, startInventory, stack, () -> new PipeItem(stack)); + return this.routeItem(startPipePos, startInventory, stack, speed -> new PipeItem(stack, speed)); } - public boolean routeItem(BlockPos startPipePos, BlockPos startInventory, ItemStack stack, Supplier itemSupplier) { + public boolean routeItem(BlockPos startPipePos, BlockPos startInventory, ItemStack stack, Function itemSupplier) { if (!this.isNode(startPipePos)) return false; if (!this.world.isBlockLoaded(startPipePos)) @@ -133,7 +134,7 @@ public class PipeNetwork implements ICapabilitySerializable, GraphL return false; } - public boolean routeItemToLocation(BlockPos startPipePos, BlockPos startInventory, BlockPos destPipe, BlockPos destInventory, Supplier itemSupplier) { + public boolean routeItemToLocation(BlockPos startPipePos, BlockPos startInventory, BlockPos destPipe, BlockPos destInventory, Function itemSupplier) { if (!this.isNode(startPipePos)) return false; if (!this.world.isBlockLoaded(startPipePos)) @@ -146,7 +147,7 @@ public class PipeNetwork implements ICapabilitySerializable, GraphL this.endProfile(); if (path == null) return false; - PipeItem item = itemSupplier.get(); + PipeItem item = itemSupplier.apply(startPipe.getItemSpeed()); item.setDestination(startPipePos, startInventory, destPipe, destInventory, path); if (!startPipe.items.contains(item)) startPipe.items.add(item); diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/PipeTileEntity.java b/src/main/java/de/ellpeck/prettypipes/pipe/PipeTileEntity.java index 6667fe5..c779750 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/PipeTileEntity.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/PipeTileEntity.java @@ -4,7 +4,7 @@ import de.ellpeck.prettypipes.PrettyPipes; import de.ellpeck.prettypipes.Registry; import de.ellpeck.prettypipes.items.IModule; import de.ellpeck.prettypipes.network.PipeItem; -import de.ellpeck.prettypipes.pipe.containers.MainPipeContainer; +import de.ellpeck.prettypipes.pipe.modules.containers.MainPipeContainer; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.container.Container; @@ -122,6 +122,11 @@ public class PipeTileEntity extends TileEntity implements INamedContainerProvide return this.streamModules().mapToInt(m -> m.getRight().getPriority(m.getLeft(), this)).max().orElse(0); } + public float getItemSpeed() { + float speed = (float) this.streamModules().mapToDouble(m -> m.getRight().getItemSpeedIncrease(m.getLeft(), this)).sum(); + return 0.05F + speed; + } + public IItemHandler getItemHandler(Direction dir) { if (!this.isConnected(dir)) return null; @@ -139,7 +144,7 @@ public class PipeTileEntity extends TileEntity implements INamedContainerProvide return Arrays.stream(Direction.values()).anyMatch(this::isConnectedInventory); } - public Stream> streamModules() { + private Stream> streamModules() { Stream.Builder> builder = Stream.builder(); for (int i = 0; i < this.modules.getSlots(); i++) { ItemStack stack = this.modules.getStackInSlot(i); diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/modules/SpeedModuleItem.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/SpeedModuleItem.java new file mode 100644 index 0000000..8719ffb --- /dev/null +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/SpeedModuleItem.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 SpeedModuleItem extends ModuleItem { + private final float speedIncrease; + + public SpeedModuleItem(String name, ModuleTier tier) { + super(name); + this.speedIncrease = tier.forTier(0.05F, 0.1F, 0.2F); + } + + @Override + public boolean isCompatible(ItemStack module, PipeTileEntity tile, IModule other) { + return !(other instanceof SpeedModuleItem); + } + + @Override + public boolean hasContainer(ItemStack module, PipeTileEntity tile) { + return false; + } + + @Override + public float getItemSpeedIncrease(ItemStack module, PipeTileEntity tile) { + return this.speedIncrease; + } +} diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeContainer.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/containers/AbstractPipeContainer.java similarity index 98% rename from src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeContainer.java rename to src/main/java/de/ellpeck/prettypipes/pipe/modules/containers/AbstractPipeContainer.java index b574f12..89a3e43 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeContainer.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/containers/AbstractPipeContainer.java @@ -1,4 +1,4 @@ -package de.ellpeck.prettypipes.pipe.containers; +package de.ellpeck.prettypipes.pipe.modules.containers; import de.ellpeck.prettypipes.Utility; import de.ellpeck.prettypipes.items.IModule; diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeGui.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/containers/AbstractPipeGui.java similarity index 99% rename from src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeGui.java rename to src/main/java/de/ellpeck/prettypipes/pipe/modules/containers/AbstractPipeGui.java index ea1ebe8..fac88e7 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/containers/AbstractPipeGui.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/containers/AbstractPipeGui.java @@ -1,4 +1,4 @@ -package de.ellpeck.prettypipes.pipe.containers; +package de.ellpeck.prettypipes.pipe.modules.containers; import de.ellpeck.prettypipes.PrettyPipes; import de.ellpeck.prettypipes.Registry; diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/containers/MainPipeContainer.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/containers/MainPipeContainer.java similarity index 92% rename from src/main/java/de/ellpeck/prettypipes/pipe/containers/MainPipeContainer.java rename to src/main/java/de/ellpeck/prettypipes/pipe/modules/containers/MainPipeContainer.java index d927219..94599db 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/containers/MainPipeContainer.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/containers/MainPipeContainer.java @@ -1,4 +1,4 @@ -package de.ellpeck.prettypipes.pipe.containers; +package de.ellpeck.prettypipes.pipe.modules.containers; import de.ellpeck.prettypipes.items.IModule; import net.minecraft.entity.player.PlayerEntity; diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/containers/MainPipeGui.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/containers/MainPipeGui.java similarity index 85% rename from src/main/java/de/ellpeck/prettypipes/pipe/containers/MainPipeGui.java rename to src/main/java/de/ellpeck/prettypipes/pipe/modules/containers/MainPipeGui.java index 9a44072..a50077b 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/containers/MainPipeGui.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/containers/MainPipeGui.java @@ -1,4 +1,4 @@ -package de.ellpeck.prettypipes.pipe.containers; +package de.ellpeck.prettypipes.pipe.modules.containers; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.util.text.ITextComponent; diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/extraction/ExtractionModuleContainer.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/extraction/ExtractionModuleContainer.java similarity index 90% rename from src/main/java/de/ellpeck/prettypipes/pipe/extraction/ExtractionModuleContainer.java rename to src/main/java/de/ellpeck/prettypipes/pipe/modules/extraction/ExtractionModuleContainer.java index 657de09..a2f0963 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/extraction/ExtractionModuleContainer.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/extraction/ExtractionModuleContainer.java @@ -1,8 +1,8 @@ -package de.ellpeck.prettypipes.pipe.extraction; +package de.ellpeck.prettypipes.pipe.modules.extraction; import de.ellpeck.prettypipes.misc.ItemFilter; import de.ellpeck.prettypipes.misc.ItemFilter.IFilteredContainer; -import de.ellpeck.prettypipes.pipe.containers.AbstractPipeContainer; +import de.ellpeck.prettypipes.pipe.modules.containers.AbstractPipeContainer; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.container.ContainerType; import net.minecraft.inventory.container.Slot; diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/extraction/ExtractionModuleGui.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/extraction/ExtractionModuleGui.java similarity index 83% rename from src/main/java/de/ellpeck/prettypipes/pipe/extraction/ExtractionModuleGui.java rename to src/main/java/de/ellpeck/prettypipes/pipe/modules/extraction/ExtractionModuleGui.java index a4754c3..4495baf 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/extraction/ExtractionModuleGui.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/extraction/ExtractionModuleGui.java @@ -1,6 +1,6 @@ -package de.ellpeck.prettypipes.pipe.extraction; +package de.ellpeck.prettypipes.pipe.modules.extraction; -import de.ellpeck.prettypipes.pipe.containers.AbstractPipeGui; +import de.ellpeck.prettypipes.pipe.modules.containers.AbstractPipeGui; import net.minecraft.client.gui.widget.Widget; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.util.text.ITextComponent; diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/extraction/ExtractionModuleItem.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/extraction/ExtractionModuleItem.java similarity index 95% rename from src/main/java/de/ellpeck/prettypipes/pipe/extraction/ExtractionModuleItem.java rename to src/main/java/de/ellpeck/prettypipes/pipe/modules/extraction/ExtractionModuleItem.java index 035d6b7..797b72c 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/extraction/ExtractionModuleItem.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/extraction/ExtractionModuleItem.java @@ -1,4 +1,4 @@ -package de.ellpeck.prettypipes.pipe.extraction; +package de.ellpeck.prettypipes.pipe.modules.extraction; import de.ellpeck.prettypipes.Registry; import de.ellpeck.prettypipes.items.ModuleItem; @@ -7,7 +7,7 @@ import de.ellpeck.prettypipes.pipe.PipeTileEntity; import de.ellpeck.prettypipes.items.IModule; import de.ellpeck.prettypipes.items.ModuleTier; import de.ellpeck.prettypipes.network.PipeNetwork; -import de.ellpeck.prettypipes.pipe.containers.AbstractPipeContainer; +import de.ellpeck.prettypipes.pipe.modules.containers.AbstractPipeContainer; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/insertion/FilterModuleContainer.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/insertion/FilterModuleContainer.java similarity index 89% rename from src/main/java/de/ellpeck/prettypipes/pipe/insertion/FilterModuleContainer.java rename to src/main/java/de/ellpeck/prettypipes/pipe/modules/insertion/FilterModuleContainer.java index db4fbf2..f3a5bb5 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/insertion/FilterModuleContainer.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/insertion/FilterModuleContainer.java @@ -1,13 +1,12 @@ -package de.ellpeck.prettypipes.pipe.insertion; +package de.ellpeck.prettypipes.pipe.modules.insertion; import de.ellpeck.prettypipes.misc.ItemFilter; import de.ellpeck.prettypipes.misc.ItemFilter.IFilteredContainer; -import de.ellpeck.prettypipes.pipe.containers.AbstractPipeContainer; +import de.ellpeck.prettypipes.pipe.modules.containers.AbstractPipeContainer; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.container.ContainerType; import net.minecraft.inventory.container.Slot; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; import javax.annotation.Nullable; diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/insertion/FilterModuleGui.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/insertion/FilterModuleGui.java similarity index 85% rename from src/main/java/de/ellpeck/prettypipes/pipe/insertion/FilterModuleGui.java rename to src/main/java/de/ellpeck/prettypipes/pipe/modules/insertion/FilterModuleGui.java index 73e8758..8eb3789 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/insertion/FilterModuleGui.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/insertion/FilterModuleGui.java @@ -1,6 +1,6 @@ -package de.ellpeck.prettypipes.pipe.insertion; +package de.ellpeck.prettypipes.pipe.modules.insertion; -import de.ellpeck.prettypipes.pipe.containers.AbstractPipeGui; +import de.ellpeck.prettypipes.pipe.modules.containers.AbstractPipeGui; import net.minecraft.client.gui.widget.Widget; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.util.math.MathHelper; diff --git a/src/main/java/de/ellpeck/prettypipes/pipe/insertion/FilterModuleItem.java b/src/main/java/de/ellpeck/prettypipes/pipe/modules/insertion/FilterModuleItem.java similarity index 92% rename from src/main/java/de/ellpeck/prettypipes/pipe/insertion/FilterModuleItem.java rename to src/main/java/de/ellpeck/prettypipes/pipe/modules/insertion/FilterModuleItem.java index 90ef4fc..d434433 100644 --- a/src/main/java/de/ellpeck/prettypipes/pipe/insertion/FilterModuleItem.java +++ b/src/main/java/de/ellpeck/prettypipes/pipe/modules/insertion/FilterModuleItem.java @@ -1,4 +1,4 @@ -package de.ellpeck.prettypipes.pipe.insertion; +package de.ellpeck.prettypipes.pipe.modules.insertion; import de.ellpeck.prettypipes.Registry; import de.ellpeck.prettypipes.items.IModule; @@ -6,7 +6,7 @@ import de.ellpeck.prettypipes.items.ModuleItem; import de.ellpeck.prettypipes.items.ModuleTier; import de.ellpeck.prettypipes.misc.ItemFilter; import de.ellpeck.prettypipes.pipe.PipeTileEntity; -import de.ellpeck.prettypipes.pipe.containers.AbstractPipeContainer; +import de.ellpeck.prettypipes.pipe.modules.containers.AbstractPipeContainer; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; diff --git a/src/main/resources/assets/prettypipes/lang/en_us.json b/src/main/resources/assets/prettypipes/lang/en_us.json index 96494a4..e7b675b 100644 --- a/src/main/resources/assets/prettypipes/lang/en_us.json +++ b/src/main/resources/assets/prettypipes/lang/en_us.json @@ -6,8 +6,12 @@ "item.prettypipes.low_filter_module": "Low Filter Module", "item.prettypipes.medium_filter_module": "Medium Filter Module", "item.prettypipes.high_filter_module": "High Filter Module", + "item.prettypipes.low_speed_module": "Low Speed Increase Module", + "item.prettypipes.medium_speed_module": "Medium Speed Increase Module", + "item.prettypipes.high_speed_module": "High Speed Increase Module", "info.prettypipes.extraction_module": "Pulls items from adjacent inventories\nFilters and pull rates vary by tier", "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", "block.prettypipes.pipe": "Pipe", "itemGroup.prettypipes": "Pretty Pipes", "container.prettypipes.pipe": "Pipe", diff --git a/src/main/resources/assets/prettypipes/models/item/high_speed_module.json b/src/main/resources/assets/prettypipes/models/item/high_speed_module.json new file mode 100644 index 0000000..7226fa8 --- /dev/null +++ b/src/main/resources/assets/prettypipes/models/item/high_speed_module.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "prettypipes:item/high_speed_module" + } +} diff --git a/src/main/resources/assets/prettypipes/models/item/low_speed_module.json b/src/main/resources/assets/prettypipes/models/item/low_speed_module.json new file mode 100644 index 0000000..73f4442 --- /dev/null +++ b/src/main/resources/assets/prettypipes/models/item/low_speed_module.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "prettypipes:item/low_speed_module" + } +} diff --git a/src/main/resources/assets/prettypipes/models/item/medium_speed_module.json b/src/main/resources/assets/prettypipes/models/item/medium_speed_module.json new file mode 100644 index 0000000..d51b86c --- /dev/null +++ b/src/main/resources/assets/prettypipes/models/item/medium_speed_module.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "prettypipes:item/medium_speed_module" + } +} diff --git a/src/main/resources/assets/prettypipes/textures/item/high_speed_module.png b/src/main/resources/assets/prettypipes/textures/item/high_speed_module.png new file mode 100644 index 0000000..1589633 Binary files /dev/null and b/src/main/resources/assets/prettypipes/textures/item/high_speed_module.png differ diff --git a/src/main/resources/assets/prettypipes/textures/item/low_speed_module.png b/src/main/resources/assets/prettypipes/textures/item/low_speed_module.png new file mode 100644 index 0000000..5ad40b1 Binary files /dev/null and b/src/main/resources/assets/prettypipes/textures/item/low_speed_module.png differ diff --git a/src/main/resources/assets/prettypipes/textures/item/medium_speed_module.png b/src/main/resources/assets/prettypipes/textures/item/medium_speed_module.png new file mode 100644 index 0000000..d67acf4 Binary files /dev/null and b/src/main/resources/assets/prettypipes/textures/item/medium_speed_module.png differ