mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-11-16 07:24:32 +01:00
2040d66c3e
- Fixed some inconsistencies with a tanks' fluidhandler invalidation when resized - Patched crashes in present fluid handling of the basin - Tanks now slightly shade horizontal faces of the contained liquid - Tanks no longer resend data every tick when filled gradually - Introduced a new lerped value type with better design decisions - Refactored Smart tileentity serialization to better support custom overrides in contained behaviours - Pumps propagate flows in the pipe networks in front and behind itself. - Pumps collect all possible in and outputs across the reachable pipe graph as endpoints - Flows move across multiple branches of a pipe network when both are equally viable - Open-ended pipes are treated as endpoints and leak fluid into and out of a block space - Open endpoints serialize stateful information about fluid units gathered and held at the interface - Open endpoints turn a fluid block into 1000 fluid units and back - Open endpoints undo their transaction when their flow changes from pull to push - Open endpoints cannot pull fluids back when a full liquid block was not placed yet - Open endpoints waterlog blocks when the provided fluid is water - A collision response is triggered when different types of fluids meet at open endpoints - Fluids are transferred instantly by the throughput of a completed flow per tick - Pumps cut flows when vital pipes are removed - Pumps do not lose progress of finished flows when an unrelated part of the pipe network changes - Pumps do not lose progress of finished flows when reversed - Pumps distribute their throughput across available input flows evenly - Pumps distribute gathered input fluid across outputs evenly - Pumps expose furthest reachable pipefaces to other pumps for chained transfer - Chained pumps with fully overlapping flow sections provide their endpoints at the entrance of the other pump - Chained pumps with overlapping flow sections participate in two shared endpoints, one for each pump dominating the contested region - Chained pumps with overlapping flow only transfer via the optimal of the two possible endpoints based on their speeds - Chained pumps of equal speed pick one of the two available endpoints deterministically - Pumps transfer without flows when no pipe is between the pump and the endpoint - Pumps serialize and recover stateful information about held fluid units at open endpoints - Chained pumps do not actively transfer when both are partaking with push flows (or both pulling) - A pull flow originating from an inter-pump endpoint only commences when the corresponding push flow is completed - Chained pumps re-determine the optimal flow when the speed of one is changed at runtime - Throughput of chained pumps is determined by their weakest link in terms of speed - Endpoints created for chained pumps is treated equally to other available endpoints when fluid is distributed - Pipes do not contain a physical amount of fluid. - Pipes never hold serialized vital stateful information about fluid transfer. - Pipes synchronize local flow progress and fluid type to clients - Flows in a pipe progress with the speed of the network flow - A networks flow speed depends on the speed of the aggregated pump - Pipe flows of different flow graphs of different pumps interact with each other - A collision response is triggered when two different types of fluid meet within a pipe - Pipes spawn particles to illustrate contained flows/liquids of flows - The fluid transfer role is exposed through a TE behaviour with some callbacks and properties - Open endpoints show particles when interacting with in-world fluids
35 lines
907 B
Java
35 lines
907 B
Java
package com.simibubi.create;
|
|
|
|
import net.minecraft.client.Minecraft;
|
|
import net.minecraft.util.ResourceLocation;
|
|
import net.minecraftforge.api.distmarker.Dist;
|
|
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
|
|
|
|
@EventBusSubscriber(value = Dist.CLIENT)
|
|
public enum AllSpecialTextures {
|
|
|
|
BLANK("blank.png"),
|
|
CHECKERED("checkerboard.png"),
|
|
THIN_CHECKERED("thin_checkerboard.png"),
|
|
CUTOUT_CHECKERED("cutout_checkerboard.png"),
|
|
HIGHLIGHT_CHECKERED("highlighted_checkerboard.png"),
|
|
SELECTION("selection.png"),
|
|
|
|
;
|
|
|
|
public static final String ASSET_PATH = "textures/special/";
|
|
private ResourceLocation location;
|
|
|
|
private AllSpecialTextures(String filename) {
|
|
location = new ResourceLocation(Create.ID, ASSET_PATH + filename);
|
|
}
|
|
|
|
public void bind() {
|
|
Minecraft.getInstance().getTextureManager().bindTexture(location);
|
|
}
|
|
|
|
public ResourceLocation getLocation() {
|
|
return location;
|
|
}
|
|
|
|
} |