diff --git a/build.gradle b/build.gradle index 473f4663..dd537b76 100644 --- a/build.gradle +++ b/build.gradle @@ -216,12 +216,8 @@ dependencies { // Forge minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" - //implementation fg.deobf("blank:Xycraft+Core:0.5.2") - //runtimeOnly fg.deobf("blank:Xycraft+Override:0.5.2") - //runtimeOnly fg.deobf("blank:Xycraft+World:0.5.2") - // Registrate - implementation fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}") + implementation fg.deobf("com.tterrag.registrate:Registrate:MC1.20-${registrate_version}") jarJar(group: 'com.tterrag.registrate', name: 'Registrate', version: "${registrate_version_range}") // GraphLib diff --git a/gradle.properties b/gradle.properties index a67c7f33..2d67badd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -25,8 +25,8 @@ mappings_channel=sugarcane mappings_version=2023.07.23 # Dependencies -registrate_version=MC1.20-1.3.3 -registrate_version_range=[MC1.20-1.3.3,) +registrate_version=1.3.11 +registrate_version_range=[MC1.20,) jei_version=15.2.0.22 graphlib_version=3.0.4 diff --git a/src/api/java/com/enderio/api/capability/ISideConfig.java b/src/api/java/com/enderio/api/capability/SideConfig.java similarity index 92% rename from src/api/java/com/enderio/api/capability/ISideConfig.java rename to src/api/java/com/enderio/api/capability/SideConfig.java index 3ad13232..72363f34 100644 --- a/src/api/java/com/enderio/api/capability/ISideConfig.java +++ b/src/api/java/com/enderio/api/capability/SideConfig.java @@ -5,7 +5,7 @@ /** * Capability for getting the IO mode of the side of a block. */ -public interface ISideConfig { +public interface SideConfig { /** * Get the IO mode of this side. */ diff --git a/src/api/java/com/enderio/api/capacitor/ICapacitorData.java b/src/api/java/com/enderio/api/capacitor/CapacitorData.java similarity index 61% rename from src/api/java/com/enderio/api/capacitor/ICapacitorData.java rename to src/api/java/com/enderio/api/capacitor/CapacitorData.java index 50edb59a..9bf7e2a5 100644 --- a/src/api/java/com/enderio/api/capacitor/ICapacitorData.java +++ b/src/api/java/com/enderio/api/capacitor/CapacitorData.java @@ -2,20 +2,16 @@ import java.util.Map; +// TODO: Instead of loot capacitors having lists of specialized machines, have different loot capacitor items for different +// machine categories. +// TODO: Loot capacitor types (Sculk, Soul) found in respective dungeons/structures. // TODO: End game capacitor fabrication with mob fighting? Souls? Capacitor sacrifice? -// TODO: Capacitor filter for conduits. - -/** - * Capacitor data. - * This defines a capacitor that stores. - * Can be attached to an item as a capability. - */ -public interface ICapacitorData { +public interface CapacitorData { /** * Get the base modifier of the capacitor. */ - float getBase(); + float base(); /** * Get the modifier value for the given capacitor modifier type. @@ -26,5 +22,5 @@ public interface ICapacitorData { * Get a map of all modifiers and levels. * @implNote When implementing this, only return modifiers that have been changed, don't return 1's as these will pollute tooltips. */ - Map getAllModifiers(); + Map modifiers(); } diff --git a/src/api/java/com/enderio/api/capacitor/CapacitorModifier.java b/src/api/java/com/enderio/api/capacitor/CapacitorModifier.java index 30b0b7cc..2114de7a 100644 --- a/src/api/java/com/enderio/api/capacitor/CapacitorModifier.java +++ b/src/api/java/com/enderio/api/capacitor/CapacitorModifier.java @@ -1,6 +1,8 @@ package com.enderio.api.capacitor; +import com.mojang.serialization.Codec; import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.StringRepresentable; import java.util.List; import java.util.Locale; @@ -8,24 +10,37 @@ /** * Capacitor key types, for use in loot capacitors for targeting increases to general stats. */ -public enum CapacitorModifier { - ENERGY_CAPACITY, - ENERGY_USE, +public enum CapacitorModifier implements StringRepresentable { + ENERGY_CAPACITY(1), + ENERGY_USE(2), + FUEL_EFFICIENCY(3), + BURNING_ENERGY_GENERATION(4), /** * This should always go last as the loot picker will exclude the final item in this enum * @apiNote Capacitors should never multiply the FIXED modifiers... */ - FIXED; + FIXED(0); - public final ResourceLocation id; + public static final Codec CODEC = StringRepresentable.fromEnum(CapacitorModifier::values); + + private final int id; + public final ResourceLocation modifierId; public static final List SELECTABLE_MODIFIERS = List.of( ENERGY_CAPACITY, - ENERGY_USE + ENERGY_USE, + FUEL_EFFICIENCY, + BURNING_ENERGY_GENERATION ); - CapacitorModifier() { - this.id = new ResourceLocation("enderio", "capacitor." + name().toLowerCase(Locale.ROOT)); + CapacitorModifier(int id) { + this.id = id; + this.modifierId = new ResourceLocation("enderio", "capacitor." + name().toLowerCase(Locale.ROOT)); + } + + @Override + public String getSerializedName() { + return name().toLowerCase(Locale.ROOT); } } diff --git a/src/api/java/com/enderio/api/capacitor/ICapacitorScalable.java b/src/api/java/com/enderio/api/capacitor/CapacitorScalable.java similarity index 67% rename from src/api/java/com/enderio/api/capacitor/ICapacitorScalable.java rename to src/api/java/com/enderio/api/capacitor/CapacitorScalable.java index dc7196db..f3e4ee7c 100644 --- a/src/api/java/com/enderio/api/capacitor/ICapacitorScalable.java +++ b/src/api/java/com/enderio/api/capacitor/CapacitorScalable.java @@ -7,7 +7,7 @@ * This is designed so that things scaled by capacitors can be provided into non-specific domains. * It also allows for the base value of a scalable to be powered by configs. */ -public interface ICapacitorScalable { - Supplier scaleF(Supplier data); - Supplier scaleI(Supplier data); +public interface CapacitorScalable { + Supplier scaleF(Supplier data); + Supplier scaleI(Supplier data); } diff --git a/src/api/java/com/enderio/api/capacitor/FixedScalable.java b/src/api/java/com/enderio/api/capacitor/FixedScalable.java index f7909f16..569b9599 100644 --- a/src/api/java/com/enderio/api/capacitor/FixedScalable.java +++ b/src/api/java/com/enderio/api/capacitor/FixedScalable.java @@ -6,16 +6,16 @@ * A fixed value that implements ICapacitorScalable. * This is a utility and will always return the value provided in the constructor. */ -public record FixedScalable(Supplier value) implements ICapacitorScalable { +public record FixedScalable(Supplier value) implements CapacitorScalable { public static final FixedScalable ZERO = new FixedScalable(() -> 0); @Override - public Supplier scaleF(Supplier data) { + public Supplier scaleF(Supplier data) { return () -> (float) value.get(); } @Override - public Supplier scaleI(Supplier data) { + public Supplier scaleI(Supplier data) { return value; } } diff --git a/src/api/java/com/enderio/api/capacitor/LinearScalable.java b/src/api/java/com/enderio/api/capacitor/LinearScalable.java index 8412824d..298466ba 100644 --- a/src/api/java/com/enderio/api/capacitor/LinearScalable.java +++ b/src/api/java/com/enderio/api/capacitor/LinearScalable.java @@ -6,15 +6,15 @@ * A value that is scaled linearly. * (base, level) => base * level */ -public record LinearScalable(CapacitorModifier modifier, Supplier base) implements ICapacitorScalable { +public record LinearScalable(CapacitorModifier modifier, Supplier base) implements CapacitorScalable { @Override - public Supplier scaleF(Supplier data) { + public Supplier scaleF(Supplier data) { return () -> scale(base.get(), data.get().getModifier(modifier)); } @Override - public Supplier scaleI(Supplier data) { + public Supplier scaleI(Supplier data) { return () -> Math.round(scale(base.get(), data.get().getModifier(modifier))); } diff --git a/src/api/java/com/enderio/api/capacitor/QuadraticScalable.java b/src/api/java/com/enderio/api/capacitor/QuadraticScalable.java index 3befaf57..9847abf3 100644 --- a/src/api/java/com/enderio/api/capacitor/QuadraticScalable.java +++ b/src/api/java/com/enderio/api/capacitor/QuadraticScalable.java @@ -6,15 +6,15 @@ * A value that is scaled using a quadratic equation. * (base, level) => base * level^2 */ -public record QuadraticScalable(CapacitorModifier modifier, Supplier base) implements ICapacitorScalable { +public record QuadraticScalable(CapacitorModifier modifier, Supplier base) implements CapacitorScalable { @Override - public Supplier scaleF(Supplier data) { + public Supplier scaleF(Supplier data) { return () -> scale(base.get(), data.get().getModifier(modifier)); } @Override - public Supplier scaleI(Supplier data) { + public Supplier scaleI(Supplier data) { return () -> Math.round(scale(base.get(), data.get().getModifier(modifier))); } diff --git a/src/api/java/com/enderio/api/capacitor/SteppedScalable.java b/src/api/java/com/enderio/api/capacitor/SteppedScalable.java new file mode 100644 index 00000000..f136cbf8 --- /dev/null +++ b/src/api/java/com/enderio/api/capacitor/SteppedScalable.java @@ -0,0 +1,24 @@ +package com.enderio.api.capacitor; + +import java.util.function.Supplier; + +public record SteppedScalable( + CapacitorModifier modifier, + Supplier base, + Supplier step +) implements CapacitorScalable { + + @Override + public Supplier scaleF(Supplier data) { + return () -> scale(base.get(), step.get(), data.get().getModifier(modifier)); + } + + @Override + public Supplier scaleI(Supplier data) { + return () -> Math.round(scale(base.get(), step.get(), data.get().getModifier(modifier))); + } + + private static float scale(int base, int step, float level) { + return base + step * level; + } +} diff --git a/src/api/java/com/enderio/api/capacitor/package-info.java b/src/api/java/com/enderio/api/capacitor/package-info.java index 85c58e28..4287ce30 100644 --- a/src/api/java/com/enderio/api/capacitor/package-info.java +++ b/src/api/java/com/enderio/api/capacitor/package-info.java @@ -1,5 +1,4 @@ @javax.annotation.ParametersAreNonnullByDefault @net.minecraft.MethodsReturnNonnullByDefault -@com.tterrag.registrate.util.nullness.FieldsAreNonnullByDefault -package com.enderio.api.capacitor; \ No newline at end of file +package com.enderio.api.capacitor; diff --git a/src/api/java/com/enderio/api/conduit/IClientConduitData.java b/src/api/java/com/enderio/api/conduit/ClientConduitData.java similarity index 92% rename from src/api/java/com/enderio/api/conduit/IClientConduitData.java rename to src/api/java/com/enderio/api/conduit/ClientConduitData.java index f60ab66f..01217373 100644 --- a/src/api/java/com/enderio/api/conduit/IClientConduitData.java +++ b/src/api/java/com/enderio/api/conduit/ClientConduitData.java @@ -1,6 +1,6 @@ package com.enderio.api.conduit; -import com.enderio.api.misc.IIcon; +import com.enderio.api.misc.Icon; import com.enderio.api.misc.Vector2i; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.components.AbstractWidget; @@ -17,9 +17,9 @@ import java.util.function.Function; import java.util.function.Supplier; -public interface IClientConduitData> extends IIcon { +public interface ClientConduitData> extends Icon { - interface UpdateExtendedData> { + interface UpdateExtendedData> { void update(Function mapper); } @@ -68,7 +68,7 @@ default List modelsToLoad() { return List.of(); } - class Simple> implements IClientConduitData { + class Simple> implements ClientConduitData { private final ResourceLocation textureLocation; private final Vector2i texturePosition; diff --git a/src/api/java/com/enderio/api/conduit/ConduitItemFactory.java b/src/api/java/com/enderio/api/conduit/ConduitItemFactory.java index 109d8a31..e9a55f59 100644 --- a/src/api/java/com/enderio/api/conduit/ConduitItemFactory.java +++ b/src/api/java/com/enderio/api/conduit/ConduitItemFactory.java @@ -13,10 +13,10 @@ public class ConduitItemFactory { * this field is set by EIOConduits during the FMLConstructModEvent. */ @Nullable - private static BiFunction>, Item.Properties, Item> factory = null; + private static BiFunction>, Item.Properties, Item> factory = null; @ApiStatus.Internal - public static void setFactory(BiFunction>, Item.Properties, Item> factory) { + public static void setFactory(BiFunction>, Item.Properties, Item> factory) { ConduitItemFactory.factory = factory; } @@ -24,7 +24,7 @@ public static void setFactory(BiFunction>, It * This will create a Conduit Item. If, during porting, EIOConduits isn't available, a dummy item will be returned. * @return */ - public static Item build(Supplier> type, Item.Properties properties) { + public static Item build(Supplier> type, Item.Properties properties) { if (factory != null) { return factory.apply(type, properties); } diff --git a/src/api/java/com/enderio/api/conduit/IConduitMenuData.java b/src/api/java/com/enderio/api/conduit/ConduitMenuData.java similarity index 58% rename from src/api/java/com/enderio/api/conduit/IConduitMenuData.java rename to src/api/java/com/enderio/api/conduit/ConduitMenuData.java index 62c5f578..3810e313 100644 --- a/src/api/java/com/enderio/api/conduit/IConduitMenuData.java +++ b/src/api/java/com/enderio/api/conduit/ConduitMenuData.java @@ -1,10 +1,10 @@ package com.enderio.api.conduit; -public interface IConduitMenuData { +public interface ConduitMenuData { - IConduitMenuData REDSTONE = new Simple(true, true, false, true, true, false); - IConduitMenuData ITEM = new Simple(true, true, true, true, true, true); - IConduitMenuData ENERGY = new Simple(false, false, false, false, false, true); + ConduitMenuData REDSTONE = new Simple(true, true, false, true, true, false); + ConduitMenuData ITEM = new Simple(true, true, true, true, true, true); + ConduitMenuData ENERGY = new Simple(false, false, false, false, false, true); boolean hasFilterInsert(); @@ -27,5 +27,5 @@ default boolean showBothEnable() { boolean showRedstoneExtract(); record Simple(boolean hasFilterInsert, boolean hasFilterExtract, boolean hasUpgrade, boolean showColorInsert, boolean showColorExtract, - boolean showRedstoneExtract) implements IConduitMenuData {} + boolean showRedstoneExtract) implements ConduitMenuData {} } diff --git a/src/api/java/com/enderio/api/conduit/ConduitTypes.java b/src/api/java/com/enderio/api/conduit/ConduitRegistries.java similarity index 53% rename from src/api/java/com/enderio/api/conduit/ConduitTypes.java rename to src/api/java/com/enderio/api/conduit/ConduitRegistries.java index d0453e5a..ef87deaf 100644 --- a/src/api/java/com/enderio/api/conduit/ConduitTypes.java +++ b/src/api/java/com/enderio/api/conduit/ConduitRegistries.java @@ -1,28 +1,32 @@ package com.enderio.api.conduit; -import net.minecraft.resources.ResourceLocation; +import com.enderio.api.registry.EnderIORegistries; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistry; import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.registries.RegistryBuilder; +import org.jetbrains.annotations.ApiStatus; import java.util.function.Supplier; -public class ConduitTypes { +public class ConduitRegistries { /** * @apiNote this DeferredRegister is not exposed for you, it's just a requirement to construct the ForgeRegistry. */ - public static final DeferredRegister> CONDUIT_TYPES = DeferredRegister.create(new ResourceLocation("enderio", "conduit_types"), "enderio"); + @ApiStatus.Internal + public static final DeferredRegister> CONDUIT_TYPES = DeferredRegister.create(EnderIORegistries.Keys.CONDUIT_TYPES, "enderio"); /** * Create a new DeferredRegister using this ForgeRegistry as a base */ - public static final Supplier>> REGISTRY = CONDUIT_TYPES.makeRegistry(RegistryBuilder::new); + public static final Supplier>> REGISTRY = CONDUIT_TYPES.makeRegistry(RegistryBuilder::new); - public static ForgeRegistry> getRegistry() { + // if only we can use vanilla mc registry + @SuppressWarnings("UnstableApiUsage") + public static ForgeRegistry> getRegistry() { //should always be a forgeRegistry. Needed for IDs for networking/ordering - return (ForgeRegistry>) REGISTRY.get(); + return (ForgeRegistry>) REGISTRY.get(); } public static void register(IEventBus bus) { diff --git a/src/api/java/com/enderio/api/conduit/IConduitType.java b/src/api/java/com/enderio/api/conduit/ConduitType.java similarity index 69% rename from src/api/java/com/enderio/api/conduit/IConduitType.java rename to src/api/java/com/enderio/api/conduit/ConduitType.java index a47ff49c..f5acf60b 100644 --- a/src/api/java/com/enderio/api/conduit/IConduitType.java +++ b/src/api/java/com/enderio/api/conduit/ConduitType.java @@ -1,7 +1,7 @@ package com.enderio.api.conduit; import com.enderio.api.UseOnly; -import com.enderio.api.conduit.ticker.IConduitTicker; +import com.enderio.api.conduit.ticker.ConduitTicker; import com.enderio.api.misc.RedstoneControl; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -16,7 +16,7 @@ import java.util.Optional; -public interface IConduitType> { +public interface ConduitType> { ResourceLocation getTexture(T extendedData); ResourceLocation getItemTexture(); @@ -26,27 +26,32 @@ public interface IConduitType> { * @return the conduit item that holds this type */ default Item getConduitItem() { - return ForgeRegistries.ITEMS.getValue(ConduitTypes.getRegistry().getKey(this)); + return ForgeRegistries.ITEMS.getValue(ConduitRegistries.getRegistry().getKey(this)); } - default boolean canBeInSameBlock(IConduitType other) { + default boolean canBeInSameBlock(ConduitType other) { return true; } - default boolean canBeReplacedBy(IConduitType other) { + default boolean canBeReplacedBy(ConduitType other) { return false; } - IConduitTicker getTicker(); + ConduitTicker getTicker(); @UseOnly(LogicalSide.CLIENT) - IClientConduitData getClientData(); - IConduitMenuData getMenuData(); + ClientConduitData getClientData(); + ConduitMenuData getMenuData(); T createExtendedConduitData(Level level, BlockPos pos); - default Optional> proxyCapability(Capability cap, T extendedConduitData, Level level, BlockPos pos, @Nullable Direction direction, - Optional state) { + default Optional> proxyCapability( + Capability cap, + T extendedConduitData, + Level level, + BlockPos pos, + @Nullable Direction direction, + @Nullable Optional state) { return Optional.empty(); } diff --git a/src/api/java/com/enderio/api/conduit/IExtendedConduitData.java b/src/api/java/com/enderio/api/conduit/ExtendedConduitData.java similarity index 79% rename from src/api/java/com/enderio/api/conduit/IExtendedConduitData.java rename to src/api/java/com/enderio/api/conduit/ExtendedConduitData.java index 6a73f74f..c8ffba7a 100644 --- a/src/api/java/com/enderio/api/conduit/IExtendedConduitData.java +++ b/src/api/java/com/enderio/api/conduit/ExtendedConduitData.java @@ -16,12 +16,12 @@ /** * used for special single use things like RoundRobin for ItemConduits or proxying Caps */ -public interface IExtendedConduitData> extends INBTSerializable { +public interface ExtendedConduitData> extends INBTSerializable { /** * default impl for stuff that don't need an impl */ - class EmptyExtendedConduitData implements IExtendedConduitData { + class EmptyExtendedConduitData implements ExtendedConduitData { @Override public CompoundTag serializeNBT() { @@ -33,9 +33,9 @@ public void deserializeNBT(CompoundTag nbt) { } } - default void onCreated(IConduitType type, Level level, BlockPos pos, @Nullable Player player) {} + default void onCreated(ConduitType type, Level level, BlockPos pos, @Nullable Player player) {} - default void onRemoved(IConduitType type, Level level, BlockPos pos) {} + default void onRemoved(ConduitType type, Level level, BlockPos pos) {} default void updateConnection(Set connectedSides) {} @@ -48,8 +48,6 @@ default boolean canConnectTo(T otherData) { /** * This method is called after otherData is integrated into this network. change this or otherData accordingly if you want shared state for all nodes in a graph (like fluids in fluid conduits) - * - * @param otherData */ default void onConnectTo(T otherData) { } @@ -84,11 +82,11 @@ static Supplier dummy() { return EmptyExtendedConduitData::new; } - default > Z cast() { + default > Z cast() { return (Z) this; } - default > Z castTo(Class clazz) { + default > Z castTo(Class clazz) { return cast(); } } diff --git a/src/api/java/com/enderio/api/conduit/IFacadeItem.java b/src/api/java/com/enderio/api/conduit/FacadeItem.java similarity index 85% rename from src/api/java/com/enderio/api/conduit/IFacadeItem.java rename to src/api/java/com/enderio/api/conduit/FacadeItem.java index fb7e25d1..96edcb4c 100644 --- a/src/api/java/com/enderio/api/conduit/IFacadeItem.java +++ b/src/api/java/com/enderio/api/conduit/FacadeItem.java @@ -3,7 +3,7 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; -public interface IFacadeItem { +public interface FacadeItem { BlockState getTexture(ItemStack stack); } diff --git a/src/api/java/com/enderio/api/conduit/NodeIdentifier.java b/src/api/java/com/enderio/api/conduit/NodeIdentifier.java index 918fa7b7..5bf61ce0 100644 --- a/src/api/java/com/enderio/api/conduit/NodeIdentifier.java +++ b/src/api/java/com/enderio/api/conduit/NodeIdentifier.java @@ -14,7 +14,7 @@ import java.util.Map; import java.util.Optional; -public class NodeIdentifier> implements GraphObject { +public class NodeIdentifier> implements GraphObject { private final BlockPos pos; diff --git a/src/api/java/com/enderio/api/conduit/TieredConduit.java b/src/api/java/com/enderio/api/conduit/TieredConduit.java index 7db1400a..d40efee2 100644 --- a/src/api/java/com/enderio/api/conduit/TieredConduit.java +++ b/src/api/java/com/enderio/api/conduit/TieredConduit.java @@ -5,24 +5,23 @@ import net.minecraft.resources.ResourceLocation; import net.minecraftforge.fml.LogicalSide; -public abstract class TieredConduit> implements IConduitType { +public abstract class TieredConduit> implements ConduitType { private final ResourceLocation texture; private final ResourceLocation type; private final int tier; - @UseOnly(LogicalSide.CLIENT) protected IClientConduitData clientConduitData; + @UseOnly(LogicalSide.CLIENT) protected ClientConduitData clientConduitData; /** * @param texture * @param type * @param tier The tier of the conduit. For Energy this should be it's transfer rate to easily add and compare conduit strength */ - public TieredConduit(ResourceLocation texture, ResourceLocation type, int tier, ResourceLocation iconTexture, Vector2i iconTexturePos) { this.texture = texture; this.type = type; this.tier = tier; - clientConduitData = new IClientConduitData.Simple<>(iconTexture, iconTexturePos); + clientConduitData = new ClientConduitData.Simple<>(iconTexture, iconTexturePos); } @Override @@ -35,9 +34,8 @@ public ResourceLocation getItemTexture() { return texture; } - @Override - public boolean canBeReplacedBy(IConduitType other) { + public boolean canBeReplacedBy(ConduitType other) { if (!(other instanceof TieredConduit tieredOther)) { return false; } @@ -45,11 +43,12 @@ public boolean canBeReplacedBy(IConduitType other) { if (type.equals(tieredOther.getType())) { return tier < tieredOther.getTier(); } + return false; } @Override - public boolean canBeInSameBlock(IConduitType other) { + public boolean canBeInSameBlock(ConduitType other) { if (!(other instanceof TieredConduit tieredOther)) { return true; } @@ -67,7 +66,7 @@ public int getTier() { } @Override - public IClientConduitData getClientData() { + public ClientConduitData getClientData() { return clientConduitData; } } diff --git a/src/api/java/com/enderio/api/conduit/package-info.java b/src/api/java/com/enderio/api/conduit/package-info.java index 4a50fb49..a15d6cfc 100644 --- a/src/api/java/com/enderio/api/conduit/package-info.java +++ b/src/api/java/com/enderio/api/conduit/package-info.java @@ -1,5 +1,4 @@ @javax.annotation.ParametersAreNonnullByDefault @net.minecraft.MethodsReturnNonnullByDefault -@com.tterrag.registrate.util.nullness.FieldsAreNonnullByDefault -package com.enderio.api.conduit; \ No newline at end of file +package com.enderio.api.conduit; diff --git a/src/api/java/com/enderio/api/conduit/ticker/CapabilityAwareConduitTicker.java b/src/api/java/com/enderio/api/conduit/ticker/CapabilityAwareConduitTicker.java index cfb7818e..68e1c22f 100644 --- a/src/api/java/com/enderio/api/conduit/ticker/CapabilityAwareConduitTicker.java +++ b/src/api/java/com/enderio/api/conduit/ticker/CapabilityAwareConduitTicker.java @@ -1,7 +1,7 @@ package com.enderio.api.conduit.ticker; -import com.enderio.api.conduit.IConduitType; -import com.enderio.api.conduit.IExtendedConduitData; +import com.enderio.api.conduit.ConduitType; +import com.enderio.api.conduit.ExtendedConduitData; import com.enderio.api.misc.ColorControl; import dev.gigaherz.graph3.Graph; import dev.gigaherz.graph3.Mergeable; @@ -16,10 +16,10 @@ import java.util.List; import java.util.Optional; -public abstract class CapabilityAwareConduitTicker implements IIOAwareConduitTicker { +public abstract class CapabilityAwareConduitTicker implements IOAwareConduitTicker { @Override - public final void tickColoredGraph(IConduitType type, List inserts, List extracts, ColorControl color, ServerLevel level, + public final void tickColoredGraph(ConduitType type, List inserts, List extracts, ColorControl color, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { List insertCaps = new ArrayList<>(); for (Connection insert : inserts) { @@ -51,17 +51,17 @@ public boolean canConnectTo(Level level, BlockPos conduitPos, Direction directio .isPresent(); } - protected abstract void tickCapabilityGraph(IConduitType type, List inserts, List extracts, + protected abstract void tickCapabilityGraph(ConduitType type, List inserts, List extracts, ServerLevel level, Graph graph, TriFunction isRedstoneActive ); protected abstract Capability getCapability(); public class CapabilityConnection { public final T cap; - public final IExtendedConduitData data; + public final ExtendedConduitData data; public final Direction direction; - private CapabilityConnection(T cap, IExtendedConduitData data, Direction direction) { + private CapabilityConnection(T cap, ExtendedConduitData data, Direction direction) { this.cap = cap; this.data = data; this.direction = direction; diff --git a/src/api/java/com/enderio/api/conduit/ticker/IConduitTicker.java b/src/api/java/com/enderio/api/conduit/ticker/ConduitTicker.java similarity index 75% rename from src/api/java/com/enderio/api/conduit/ticker/IConduitTicker.java rename to src/api/java/com/enderio/api/conduit/ticker/ConduitTicker.java index aee330f8..35ce21f0 100644 --- a/src/api/java/com/enderio/api/conduit/ticker/IConduitTicker.java +++ b/src/api/java/com/enderio/api/conduit/ticker/ConduitTicker.java @@ -1,6 +1,6 @@ package com.enderio.api.conduit.ticker; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.misc.ColorControl; import dev.gigaherz.graph3.Graph; import dev.gigaherz.graph3.Mergeable; @@ -10,9 +10,9 @@ import net.minecraft.world.level.Level; import org.apache.commons.lang3.function.TriFunction; -public interface IConduitTicker { +public interface ConduitTicker { - void tickGraph(IConduitType type, Graph graph, ServerLevel level, TriFunction isRedstoneActive); + void tickGraph(ConduitType type, Graph graph, ServerLevel level, TriFunction isRedstoneActive); /** * @return how often the conduit should tick. 1 is every tick, 5 is every 5th tick, so 4 times a second @@ -34,7 +34,7 @@ default boolean hasConnectionDelay() { /** * return true if both types are similar and share the same extended conduit data */ - default boolean canConnectTo(IConduitType thisType, IConduitType other) { + default boolean canConnectTo(ConduitType thisType, ConduitType other) { return thisType == other; } } diff --git a/src/api/java/com/enderio/api/conduit/ticker/IIOAwareConduitTicker.java b/src/api/java/com/enderio/api/conduit/ticker/IOAwareConduitTicker.java similarity index 52% rename from src/api/java/com/enderio/api/conduit/ticker/IIOAwareConduitTicker.java rename to src/api/java/com/enderio/api/conduit/ticker/IOAwareConduitTicker.java index 3aaed47c..3f80bd9c 100644 --- a/src/api/java/com/enderio/api/conduit/ticker/IIOAwareConduitTicker.java +++ b/src/api/java/com/enderio/api/conduit/ticker/IOAwareConduitTicker.java @@ -1,7 +1,7 @@ package com.enderio.api.conduit.ticker; -import com.enderio.api.conduit.IConduitType; -import com.enderio.api.conduit.IExtendedConduitData; +import com.enderio.api.conduit.ConduitType; +import com.enderio.api.conduit.ExtendedConduitData; import com.enderio.api.conduit.NodeIdentifier; import com.enderio.api.misc.ColorControl; import com.enderio.api.misc.RedstoneControl; @@ -17,23 +17,30 @@ import java.util.List; -public interface IIOAwareConduitTicker extends ILoadedAwareConduitTicker { +public interface IOAwareConduitTicker extends LoadedAwareConduitTicker { @Override - default void tickGraph(IConduitType type, List> loadedNodes, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { + default void tickGraph(ConduitType type, List> loadedNodes, ServerLevel level, Graph graph, + TriFunction isRedstoneActive) { ListMultimap extracts = ArrayListMultimap.create(); ListMultimap inserts = ArrayListMultimap.create(); for (GraphObject object : loadedNodes) { if (object instanceof NodeIdentifier nodeIdentifier) { - for (Direction direction: Direction.values()) { - nodeIdentifier.getIOState(direction) - .ifPresent(ioState -> { - ioState.extract().filter(extract -> isRedstoneMode(type, level, nodeIdentifier.getPos(), ioState, isRedstoneActive)).ifPresent(color -> extracts.get(color).add(new Connection(nodeIdentifier.getPos(), direction, nodeIdentifier.getExtendedConduitData()))); - ioState.insert().ifPresent(color -> inserts.get(color).add(new Connection(nodeIdentifier.getPos(), direction, nodeIdentifier.getExtendedConduitData()))); + for (Direction direction : Direction.values()) { + nodeIdentifier.getIOState(direction).ifPresent(ioState -> { + ioState + .extract() + .filter(extract -> isRedstoneMode(type, level, nodeIdentifier.getPos(), ioState, isRedstoneActive)) + .ifPresent( + color -> extracts.get(color).add(new Connection(nodeIdentifier.getPos(), direction, nodeIdentifier.getExtendedConduitData()))); + ioState + .insert() + .ifPresent( + color -> inserts.get(color).add(new Connection(nodeIdentifier.getPos(), direction, nodeIdentifier.getExtendedConduitData()))); }); } } } - for (ColorControl color: ColorControl.values()) { + for (ColorControl color : ColorControl.values()) { List extractList = extracts.get(color); List insertList = inserts.get(color); if (extractList.isEmpty() || insertList.isEmpty()) { @@ -44,8 +51,10 @@ default void tickGraph(IConduitType type, List> loadedNodes } } - void tickColoredGraph(IConduitType type, List inserts, List extracts, ColorControl color, ServerLevel level, Graph graph, TriFunction isRedstoneActive); - default boolean isRedstoneMode(IConduitType type, ServerLevel level, BlockPos pos, NodeIdentifier.IOState state, TriFunction isRedstoneActive) { + void tickColoredGraph(ConduitType type, List inserts, List extracts, ColorControl color, ServerLevel level, Graph graph, TriFunction isRedstoneActive); + + default boolean isRedstoneMode(ConduitType type, ServerLevel level, BlockPos pos, NodeIdentifier.IOState state, + TriFunction isRedstoneActive) { if (!type.getMenuData().showRedstoneExtract()) { return true; } @@ -59,7 +68,7 @@ default boolean isRedstoneMode(IConduitType type, ServerLevel level, BlockPos } boolean hasRedstone = false; - for (Direction direction: Direction.values()) { + for (Direction direction : Direction.values()) { if (level.getSignal(pos.relative(direction), direction) > 0) { hasRedstone = true; break; @@ -68,7 +77,8 @@ default boolean isRedstoneMode(IConduitType type, ServerLevel level, BlockPos return state.control().isActive(hasRedstone || isRedstoneActive.apply(level, pos, state.redstoneChannel())); } - record Connection(BlockPos pos, Direction dir, IExtendedConduitData data) { + + record Connection(BlockPos pos, Direction dir, ExtendedConduitData data) { public BlockPos move() { return pos.relative(dir); } diff --git a/src/api/java/com/enderio/api/conduit/ticker/ILoadedAwareConduitTicker.java b/src/api/java/com/enderio/api/conduit/ticker/LoadedAwareConduitTicker.java similarity index 67% rename from src/api/java/com/enderio/api/conduit/ticker/ILoadedAwareConduitTicker.java rename to src/api/java/com/enderio/api/conduit/ticker/LoadedAwareConduitTicker.java index 7c7cacbc..4b88da01 100644 --- a/src/api/java/com/enderio/api/conduit/ticker/ILoadedAwareConduitTicker.java +++ b/src/api/java/com/enderio/api/conduit/ticker/LoadedAwareConduitTicker.java @@ -1,6 +1,6 @@ package com.enderio.api.conduit.ticker; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.conduit.NodeIdentifier; import com.enderio.api.misc.ColorControl; import dev.gigaherz.graph3.Graph; @@ -14,20 +14,21 @@ import java.util.ArrayList; import java.util.List; -public interface ILoadedAwareConduitTicker extends IConduitTicker { +public interface LoadedAwareConduitTicker extends ConduitTicker { @Override - default void tickGraph(IConduitType type, Graph graph, ServerLevel level, TriFunction isRedstoneActive) { + default void tickGraph(ConduitType type, Graph graph, ServerLevel level, TriFunction isRedstoneActive) { List> nodeIdentifiers = new ArrayList<>(); for (GraphObject object : graph.getObjects()) { if (object instanceof NodeIdentifier node && isLoaded(level, node.getPos())) { nodeIdentifiers.add(node); } } + tickGraph(type, nodeIdentifiers, level, graph, isRedstoneActive); } - void tickGraph(IConduitType type, List> loadedNodes, ServerLevel level, Graph graph, TriFunction isRedstoneActive); + void tickGraph(ConduitType type, List> loadedNodes, ServerLevel level, Graph graph, TriFunction isRedstoneActive); default boolean isLoaded(Level level, BlockPos pos) { return level.isLoaded(pos) && level.shouldTickBlocksAt(pos); diff --git a/src/api/java/com/enderio/api/conduit/ticker/package-info.java b/src/api/java/com/enderio/api/conduit/ticker/package-info.java index 9a27c87c..b9a97cd4 100644 --- a/src/api/java/com/enderio/api/conduit/ticker/package-info.java +++ b/src/api/java/com/enderio/api/conduit/ticker/package-info.java @@ -1,5 +1,4 @@ @javax.annotation.ParametersAreNonnullByDefault @net.minecraft.MethodsReturnNonnullByDefault -@com.tterrag.registrate.util.nullness.FieldsAreNonnullByDefault -package com.enderio.api.conduit.ticker; \ No newline at end of file +package com.enderio.api.conduit.ticker; diff --git a/src/api/java/com/enderio/api/grindingball/IGrindingBallData.java b/src/api/java/com/enderio/api/grindingball/GrindingBallData.java similarity index 93% rename from src/api/java/com/enderio/api/grindingball/IGrindingBallData.java rename to src/api/java/com/enderio/api/grindingball/GrindingBallData.java index d6a98559..9c2f6b42 100644 --- a/src/api/java/com/enderio/api/grindingball/IGrindingBallData.java +++ b/src/api/java/com/enderio/api/grindingball/GrindingBallData.java @@ -5,7 +5,7 @@ /** * Grinding ball bonus data. */ -public interface IGrindingBallData { +public interface GrindingBallData { /** * The grinding ball ID used to find it in the manager. @@ -40,7 +40,7 @@ public interface IGrindingBallData { /** * Grinding ball identity value. Used when no bonus grinding ball is installed. */ - IGrindingBallData IDENTITY = new IGrindingBallData() { + GrindingBallData IDENTITY = new GrindingBallData() { @Override public ResourceLocation getGrindingBallId() { // ID isn't actually mapped anywhere. diff --git a/src/api/java/com/enderio/api/integration/IntegrationWrapper.java b/src/api/java/com/enderio/api/integration/IntegrationWrapper.java index bd768acc..3d1281f6 100644 --- a/src/api/java/com/enderio/api/integration/IntegrationWrapper.java +++ b/src/api/java/com/enderio/api/integration/IntegrationWrapper.java @@ -1,8 +1,6 @@ package com.enderio.api.integration; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.common.util.NonNullConsumer; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import org.jetbrains.annotations.Nullable; @@ -35,11 +33,11 @@ public boolean isEmpty() { } /** - * If non-empty, invoke the specified {@link NonNullConsumer} with the object, + * If non-empty, invoke the specified {@link Consumer} with the object, * otherwise do nothing. * - * @param consumer The {@link NonNullConsumer} to run if this optional is non-empty. - * @throws NullPointerException if {@code consumer} is null and this {@link LazyOptional} is non-empty + * @param consumer The {@link Consumer} to run if this optional is non-empty. + * @throws NullPointerException if {@code consumer} is null and this {@link java.util.Optional} is non-empty */ public void ifPresent(Consumer consumer) { if (isPresent()) { @@ -49,9 +47,8 @@ public void ifPresent(Consumer consumer) { /** * Only call when you are in code that is running if the Integration is Present - * @return */ public T expectPresent() { return value; } -} \ No newline at end of file +} diff --git a/src/api/java/com/enderio/api/io/IIOConfig.java b/src/api/java/com/enderio/api/io/IIOConfig.java index 91fc12d7..8270dbbc 100644 --- a/src/api/java/com/enderio/api/io/IIOConfig.java +++ b/src/api/java/com/enderio/api/io/IIOConfig.java @@ -2,7 +2,7 @@ import com.enderio.api.UseOnly; import com.enderio.api.capability.IEnderCapabilityProvider; -import com.enderio.api.capability.ISideConfig; +import com.enderio.api.capability.SideConfig; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraftforge.common.util.INBTSerializable; @@ -11,24 +11,28 @@ /** * IO Config defines how each side of a block interacts with other blocks. */ -public interface IIOConfig extends INBTSerializable, IEnderCapabilityProvider { +public interface IIOConfig extends INBTSerializable, IEnderCapabilityProvider { /** * Get the current IO mode for the given side. */ - IOMode getMode(Direction side); + IOMode getIOMode(Direction side); /** * Set the IO mode for this side. * Must be supported mode, otherwise {@link IOMode#NONE} will be set. */ - void setMode(Direction side, IOMode state); + void setIOMode(Direction side, IOMode state); /** - * Cycles through supported modes for this side. + * Determine whether a certain side supports the provided mode. */ - default void cycleMode(Direction side) { - IOMode currentMode = getMode(side); + boolean supportsIOMode(Direction side, IOMode state); + + default IOMode getNextIOMode(Direction side) { + return getNextIOMode(side, getIOMode(side)); + } + default IOMode getNextIOMode(Direction side, IOMode currentMode) { // Get the index of the current and next mode. int curOrd = currentMode.ordinal(); int nextOrd = (curOrd + 1) % IOMode.values().length; @@ -37,19 +41,19 @@ default void cycleMode(Direction side) { while (nextOrd != curOrd) { IOMode next = IOMode.values()[nextOrd]; - if (supportsMode(side, next)) { - setMode(side, next); - break; + if (supportsIOMode(side, next)) { + return next; } nextOrd = (nextOrd + 1) % IOMode.values().length; } + + return currentMode; } - /** - * Determine whether a certain side supports the provided mode. - */ - boolean supportsMode(Direction side, IOMode state); + default void cycleIOMode(Direction side) { + setIOMode(side, getNextIOMode(side)); + } /** * Whether the IO overlay should be rendered. diff --git a/src/api/java/com/enderio/api/io/energy/EnergyIOMode.java b/src/api/java/com/enderio/api/io/energy/EnergyIOMode.java index f4277b9f..615cac41 100644 --- a/src/api/java/com/enderio/api/io/energy/EnergyIOMode.java +++ b/src/api/java/com/enderio/api/io/energy/EnergyIOMode.java @@ -1,5 +1,7 @@ package com.enderio.api.io.energy; +import com.enderio.api.io.IIOConfig; + /** * Energy IO Mode declares how Energy IO is determined using IO configs. */ @@ -20,7 +22,7 @@ public enum EnergyIOMode { * Intended for energy buffering. * Will allow both directions of travel. * - * @apiNote When in a sided context, utilises the {@link com.enderio.api.io.IIOConfig} to determine the direction of travel. + * @apiNote When in a sided context, utilises the {@link IIOConfig} to determine the direction of travel. */ Both(true, true, true); diff --git a/src/api/java/com/enderio/api/misc/ColorControl.java b/src/api/java/com/enderio/api/misc/ColorControl.java index 5a593cc5..2bb286d5 100644 --- a/src/api/java/com/enderio/api/misc/ColorControl.java +++ b/src/api/java/com/enderio/api/misc/ColorControl.java @@ -5,7 +5,7 @@ import java.util.Locale; -public enum ColorControl implements IIcon { +public enum ColorControl implements Icon { GREEN(0xFF3B511A, 0xFF46611F), BROWN(0xFF51301A, 0xFF61391F), BLUE(0xFF253192, 0xFF2C3AAF), diff --git a/src/api/java/com/enderio/api/misc/IIcon.java b/src/api/java/com/enderio/api/misc/Icon.java similarity index 98% rename from src/api/java/com/enderio/api/misc/IIcon.java rename to src/api/java/com/enderio/api/misc/Icon.java index e70b63bd..727c9169 100644 --- a/src/api/java/com/enderio/api/misc/IIcon.java +++ b/src/api/java/com/enderio/api/misc/Icon.java @@ -5,7 +5,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraftforge.fml.LogicalSide; -public interface IIcon { +public interface Icon { Vector2i DEFAULT_TEXTURE_SIZE = new Vector2i(256, 256); /** diff --git a/src/api/java/com/enderio/api/misc/RedstoneControl.java b/src/api/java/com/enderio/api/misc/RedstoneControl.java index e73d0799..233392ed 100644 --- a/src/api/java/com/enderio/api/misc/RedstoneControl.java +++ b/src/api/java/com/enderio/api/misc/RedstoneControl.java @@ -6,7 +6,7 @@ import java.util.Locale; import java.util.function.UnaryOperator; -public enum RedstoneControl implements IIcon, StringRepresentable { +public enum RedstoneControl implements Icon, StringRepresentable { ALWAYS_ACTIVE(bool -> true, ApiLang.REDSTONE_ALWAYS_ACTIVE), ACTIVE_WITH_SIGNAL(bool -> bool, ApiLang.REDSTONE_ACTIVE_WITH_SIGNAL), diff --git a/src/api/java/com/enderio/api/registry/EnderIORegistries.java b/src/api/java/com/enderio/api/registry/EnderIORegistries.java new file mode 100644 index 00000000..97f74a0f --- /dev/null +++ b/src/api/java/com/enderio/api/registry/EnderIORegistries.java @@ -0,0 +1,17 @@ +package com.enderio.api.registry; + +import com.enderio.api.conduit.ConduitType; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; + +public class EnderIORegistries { + + public static class Keys { + public static final ResourceKey>> CONDUIT_TYPES = createKey("conduit_types"); + + private static ResourceKey> createKey(String name) { + return ResourceKey.createRegistryKey(new ResourceLocation("enderio", name)); + } + } +} diff --git a/src/armory/java/com/enderio/armory/common/item/darksteel/DarkSteelSwordItem.java b/src/armory/java/com/enderio/armory/common/item/darksteel/DarkSteelSwordItem.java index 9716e9be..89e3c7ac 100644 --- a/src/armory/java/com/enderio/armory/common/item/darksteel/DarkSteelSwordItem.java +++ b/src/armory/java/com/enderio/armory/common/item/darksteel/DarkSteelSwordItem.java @@ -3,7 +3,7 @@ import com.enderio.armory.common.init.ArmoryItems; import com.enderio.armory.common.lang.ArmoryLang; import com.enderio.base.common.init.EIOBlocks; -import com.enderio.core.client.item.IAdvancedTooltipProvider; +import com.enderio.core.client.item.AdvancedTooltipProvider; import com.enderio.core.common.util.TooltipUtil; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -20,7 +20,7 @@ import java.util.List; import java.util.Optional; -public class DarkSteelSwordItem extends SwordItem implements IAdvancedTooltipProvider { +public class DarkSteelSwordItem extends SwordItem implements AdvancedTooltipProvider { public DarkSteelSwordItem(Properties pProperties) { super(ArmoryItems.DARK_STEEL_TIER, 3, -2.4F, pProperties); } diff --git a/src/armory/java/com/enderio/armory/common/item/darksteel/DarkSteelUpgradeItem.java b/src/armory/java/com/enderio/armory/common/item/darksteel/DarkSteelUpgradeItem.java index 455f200e..361559ae 100644 --- a/src/armory/java/com/enderio/armory/common/item/darksteel/DarkSteelUpgradeItem.java +++ b/src/armory/java/com/enderio/armory/common/item/darksteel/DarkSteelUpgradeItem.java @@ -3,7 +3,7 @@ import com.enderio.api.capability.IDarkSteelUpgrade; import com.enderio.armory.common.item.darksteel.upgrades.DarkSteelUpgradeRegistry; import com.enderio.armory.common.lang.ArmoryLang; -import com.enderio.core.client.item.IAdvancedTooltipProvider; +import com.enderio.core.client.item.AdvancedTooltipProvider; import com.enderio.core.common.item.ITabVariants; import com.enderio.core.common.util.TooltipUtil; import com.tterrag.registrate.util.CreativeModeTabModifier; @@ -25,7 +25,7 @@ import java.util.Random; import java.util.function.Supplier; -public class DarkSteelUpgradeItem extends Item implements IAdvancedTooltipProvider, ITabVariants { +public class DarkSteelUpgradeItem extends Item implements AdvancedTooltipProvider, ITabVariants { private final ForgeConfigSpec.ConfigValue levelsRequired; diff --git a/src/armory/java/com/enderio/armory/common/item/darksteel/IDarkSteelItem.java b/src/armory/java/com/enderio/armory/common/item/darksteel/IDarkSteelItem.java index 75e83141..99521578 100644 --- a/src/armory/java/com/enderio/armory/common/item/darksteel/IDarkSteelItem.java +++ b/src/armory/java/com/enderio/armory/common/item/darksteel/IDarkSteelItem.java @@ -9,7 +9,7 @@ import com.enderio.armory.common.lang.ArmoryLang; import com.enderio.base.common.init.EIOCapabilities; import com.enderio.base.common.lang.EIOLang; -import com.enderio.core.client.item.IAdvancedTooltipProvider; +import com.enderio.core.client.item.AdvancedTooltipProvider; import com.enderio.core.common.item.ITabVariants; import com.enderio.core.common.util.EnergyUtil; import com.enderio.core.common.util.TooltipUtil; @@ -31,7 +31,7 @@ import java.util.Objects; import java.util.Optional; -public interface IDarkSteelItem extends IMultiCapabilityItem, IAdvancedTooltipProvider, ITabVariants { +public interface IDarkSteelItem extends IMultiCapabilityItem, AdvancedTooltipProvider, ITabVariants { default Optional getEmpoweredUpgrade(ItemStack stack) { return DarkSteelUpgradeable.getUpgradeAs(stack, EmpoweredUpgrade.NAME, EmpoweredUpgrade.class); diff --git a/src/conduits/java/com/enderio/conduits/EIOConduits.java b/src/conduits/java/com/enderio/conduits/EIOConduits.java index 65e049e2..e4597f44 100644 --- a/src/conduits/java/com/enderio/conduits/EIOConduits.java +++ b/src/conduits/java/com/enderio/conduits/EIOConduits.java @@ -2,14 +2,13 @@ import com.enderio.EnderIO; import com.enderio.api.conduit.ConduitItemFactory; -import com.enderio.api.conduit.ConduitTypes; import com.enderio.base.data.EIODataProvider; import com.enderio.conduits.common.init.ConduitBlockEntities; import com.enderio.conduits.common.init.ConduitBlocks; import com.enderio.conduits.common.init.ConduitItems; import com.enderio.conduits.common.init.ConduitLang; import com.enderio.conduits.common.init.ConduitMenus; -import com.enderio.conduits.common.init.EnderConduitTypes; +import com.enderio.conduits.common.init.ConduitTypes; import com.enderio.conduits.common.integrations.Integrations; import com.enderio.conduits.common.items.ConduitBlockItem; import com.enderio.conduits.common.network.ConduitNetwork; @@ -30,7 +29,6 @@ public static void onConstruct(FMLConstructModEvent event) { IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus(); EnderIO.LOGGER.atDebug().log("================ Conduits construct =================="); ConduitTypes.register(bus); - EnderConduitTypes.register(); ConduitBlockEntities.register(); ConduitMenus.register(); ConduitBlocks.register(); diff --git a/src/conduits/java/com/enderio/conduits/client/ConduitClientSetup.java b/src/conduits/java/com/enderio/conduits/client/ConduitClientSetup.java index 6b536ad4..d0eabf37 100644 --- a/src/conduits/java/com/enderio/conduits/client/ConduitClientSetup.java +++ b/src/conduits/java/com/enderio/conduits/client/ConduitClientSetup.java @@ -1,7 +1,7 @@ package com.enderio.conduits.client; import com.enderio.EnderIO; -import com.enderio.api.conduit.ConduitTypes; +import com.enderio.api.conduit.ConduitRegistries; import com.enderio.api.misc.ColorControl; import com.enderio.conduits.client.model.ConduitGeometry; import com.enderio.conduits.common.init.ConduitBlocks; @@ -54,7 +54,7 @@ public static void registerModels(ModelEvent.RegisterAdditional event) { for (ResourceLocation model : MODEL_LOCATIONS) { event.register(model); } - ConduitTypes.getRegistry().getValues().stream().flatMap(type -> type.getClientData().modelsToLoad().stream()).forEach(event::register); + ConduitRegistries.getRegistry().getValues().stream().flatMap(type -> type.getClientData().modelsToLoad().stream()).forEach(event::register); } @SubscribeEvent @@ -90,4 +90,4 @@ public static BakedModel modelOf(ResourceLocation location) { public static Level getClientLevel() { return Minecraft.getInstance().level; } -} \ No newline at end of file +} diff --git a/src/conduits/java/com/enderio/conduits/client/gui/ConduitScreen.java b/src/conduits/java/com/enderio/conduits/client/gui/ConduitScreen.java index 8e1ca48e..fb0e7810 100644 --- a/src/conduits/java/com/enderio/conduits/client/gui/ConduitScreen.java +++ b/src/conduits/java/com/enderio/conduits/client/gui/ConduitScreen.java @@ -1,9 +1,9 @@ package com.enderio.conduits.client.gui; import com.enderio.EnderIO; -import com.enderio.api.conduit.IConduitMenuData; -import com.enderio.api.conduit.IConduitType; -import com.enderio.api.conduit.IExtendedConduitData; +import com.enderio.api.conduit.ConduitMenuData; +import com.enderio.api.conduit.ConduitType; +import com.enderio.api.conduit.ExtendedConduitData; import com.enderio.api.misc.ColorControl; import com.enderio.api.misc.RedstoneControl; import com.enderio.api.misc.Vector2i; @@ -53,7 +53,7 @@ protected void init() { protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int mouseX, int mouseY) { super.renderBg(guiGraphics, partialTicks, mouseX, mouseY); - IConduitMenuData data = menu.getConduitType().getMenuData(); + ConduitMenuData data = menu.getConduitType().getMenuData(); guiGraphics.pose().pushPose(); guiGraphics.pose().translate(getGuiLeft(), getGuiTop(), 0); if (data.showBarSeperator()) { @@ -71,7 +71,7 @@ protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int mouseX, protected void renderLabels(GuiGraphics guiGraphics, int pMouseX, int pMouseY) { super.renderLabels(guiGraphics, pMouseX, pMouseY); - IConduitMenuData data = menu.getConduitType().getMenuData(); + ConduitMenuData data = menu.getConduitType().getMenuData(); guiGraphics.drawString(this.font, ConduitLang.CONDUIT_INSERT, 22 + 16, 7 + 4, 4210752, false); @@ -85,7 +85,7 @@ private void updateConnectionWidgets(boolean forceUpdate) { recalculateTypedButtons = false; typedButtons.forEach(this::removeWidget); typedButtons.clear(); - IConduitMenuData data = menu.getConduitType().getMenuData(); + ConduitMenuData data = menu.getConduitType().getMenuData(); Vector2i pos = new Vector2i(22, 7).add(getGuiLeft(), getGuiTop()); addTypedButton( new CheckBox(pos, @@ -127,12 +127,12 @@ private void updateConnectionWidgets(boolean forceUpdate) { menu.getConduitType() .getClientData() .createWidgets(this, getBundle().getNodeFor(menu.getConduitType()).getExtendedConduitData().cast(), - (mapper) -> sendExtendedConduitUpdate((Function, IExtendedConduitData>) mapper), menu::getDirection, + (mapper) -> sendExtendedConduitUpdate((Function, ExtendedConduitData>) mapper), menu::getDirection, new Vector2i(22, 7).add(getGuiLeft(), getGuiTop())) .forEach(this::addTypedButton); } - List> validConnections = new ArrayList<>(); - for (IConduitType type : getBundle().getTypes()) { + List> validConnections = new ArrayList<>(); + for (ConduitType type : getBundle().getTypes()) { if (getConnectionState(type) instanceof DynamicConnectionState) { validConnections.add(type); } @@ -141,7 +141,7 @@ private void updateConnectionWidgets(boolean forceUpdate) { typeSelectionButtons.forEach(this::removeWidget); typeSelectionButtons.clear(); for (int i = 0; i < validConnections.size(); i++) { - IConduitType connection = validConnections.get(i); + ConduitType connection = validConnections.get(i); ConduitSelectionButton button = new ConduitSelectionButton(getGuiLeft() + 206, getGuiTop() + 4 + 24*i, connection, menu::getConduitType, type -> { menu.setConduitType(type); recalculateTypedButtons = true; @@ -153,7 +153,7 @@ private void updateConnectionWidgets(boolean forceUpdate) { } } - private void sendExtendedConduitUpdate(Function, IExtendedConduitData> map) { + private void sendExtendedConduitUpdate(Function, ExtendedConduitData> map) { var currentData = getBundle().getNodeFor(menu.getConduitType()).getExtendedConduitData().cast(); var menu = getMenu(); CoreNetwork.sendToServer(new C2SSetConduitExtendedData(menu.getBlockEntity().getBlockPos(), menu.getConduitType(), map.apply(currentData))); @@ -181,7 +181,7 @@ private T getOnDynamic(Function map, T defaultVal private IConnectionState getConnectionState() { return getConnectionState(menu.getConduitType()); } - private IConnectionState getConnectionState(IConduitType type) { + private IConnectionState getConnectionState(ConduitType type) { return getBundle().getConnection(menu.getDirection()).getConnectionState(type); } diff --git a/src/conduits/java/com/enderio/conduits/client/gui/ConduitSelectionButton.java b/src/conduits/java/com/enderio/conduits/client/gui/ConduitSelectionButton.java index dd323bfe..c5700b86 100644 --- a/src/conduits/java/com/enderio/conduits/client/gui/ConduitSelectionButton.java +++ b/src/conduits/java/com/enderio/conduits/client/gui/ConduitSelectionButton.java @@ -1,6 +1,6 @@ package com.enderio.conduits.client.gui; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.misc.Vector2i; import com.enderio.core.client.gui.screen.IEnderScreen; import com.mojang.blaze3d.systems.RenderSystem; @@ -13,10 +13,10 @@ import java.util.function.Supplier; public class ConduitSelectionButton extends AbstractButton { - private final IConduitType type; - private final Supplier> getter; - private final Consumer> setter; - public ConduitSelectionButton(int pX, int pY, IConduitType type, Supplier> getter, Consumer> setter) { + private final ConduitType type; + private final Supplier> getter; + private final Consumer> setter; + public ConduitSelectionButton(int pX, int pY, ConduitType type, Supplier> getter, Consumer> setter) { super(pX, pY, 21, 24, Component.empty()); this.type = type; this.getter = getter; @@ -52,7 +52,7 @@ public void renderWidget(GuiGraphics guiGraphics, int pMouseX, int pMouseY, floa protected void updateWidgetNarration(NarrationElementOutput pNarrationElementOutput) { } - public IConduitType getType() { + public ConduitType getType() { return type; } } diff --git a/src/conduits/java/com/enderio/conduits/client/model/ConduitBlockModel.java b/src/conduits/java/com/enderio/conduits/client/model/ConduitBlockModel.java index e837c197..929b58d7 100644 --- a/src/conduits/java/com/enderio/conduits/client/model/ConduitBlockModel.java +++ b/src/conduits/java/com/enderio/conduits/client/model/ConduitBlockModel.java @@ -1,7 +1,7 @@ package com.enderio.conduits.client.model; -import com.enderio.api.conduit.IConduitType; -import com.enderio.api.conduit.IExtendedConduitData; +import com.enderio.api.conduit.ConduitType; +import com.enderio.api.conduit.ExtendedConduitData; import com.enderio.api.misc.RedstoneControl; import com.enderio.base.client.model.PaintingQuadTransformer; import com.enderio.conduits.common.Area; @@ -66,7 +66,7 @@ public List getQuads(@Nullable BlockState state, @Nullable Direction BlockPos pos = extraData.get(ConduitBlockEntity.POS); if (conduitBundle != null && pos != null) { Direction.Axis axis = OffsetHelper.findMainAxis(conduitBundle); - Map, List> offsets = new HashMap<>(); + Map, List> offsets = new HashMap<>(); for (Direction direction : Direction.values()) { Direction preRotation = rotateDirection(direction, side); ConduitConnection connection = conduitBundle.getConnection(direction); @@ -76,7 +76,7 @@ public List getQuads(@Nullable BlockState state, @Nullable Direction } var connectedTypes = connection.getConnectedTypes(); for (int i = 0; i < connectedTypes.size(); i++) { - IConduitType type = connectedTypes.get(i); + ConduitType type = connectedTypes.get(i); Vec3i offset = OffsetHelper.translationFor(direction.getAxis(), OffsetHelper.offsetConduit(i, connectedTypes.size())); offsets.computeIfAbsent(type, ignored -> new ArrayList<>()).add(offset); IQuadTransformer rotationTranslation = rotation.andThen(QuadTransformers.applying(translateTransformation(offset))); @@ -129,8 +129,8 @@ public List getQuads(@Nullable BlockState state, @Nullable Direction var allTypes = conduitBundle.getTypes(); @Nullable Area box = null; - Map, Integer> notRendered = new HashMap<>(); - List> rendered = new ArrayList<>(); + Map, Integer> notRendered = new HashMap<>(); + List> rendered = new ArrayList<>(); for (int i = 0; i < allTypes.size(); i++) { var type = allTypes.get(i); @Nullable List offsetsForType = offsets.get(type); @@ -160,7 +160,7 @@ public List getQuads(@Nullable BlockState state, @Nullable Direction box.makeContain(duplicatePosition); } } - for (IConduitType toRender : rendered) { + for (ConduitType toRender : rendered) { List offsetsForType = offsets.get(toRender); if (box == null || !box.contains(offsetsForType.get(0))) { quads.addAll(new ConduitTextureEmissiveQuadTransformer(sprite(toRender, conduitBundle.getNodeFor(toRender).getExtendedConduitData()), 0) @@ -170,7 +170,7 @@ public List getQuads(@Nullable BlockState state, @Nullable Direction } if (box != null) { - for (Map.Entry, Integer> notRenderedEntry : notRendered.entrySet()) { + for (Map.Entry, Integer> notRenderedEntry : notRendered.entrySet()) { Vec3i offset = OffsetHelper.translationFor(axis, OffsetHelper.offsetConduit(notRenderedEntry.getValue(), allTypes.size())); if (!box.contains(offset)) { quads.addAll(new ConduitTextureEmissiveQuadTransformer( @@ -184,7 +184,7 @@ public List getQuads(@Nullable BlockState state, @Nullable Direction .andThen(QuadTransformers.applying(translateTransformation(box.getMin()))) .process(modelOf(BOX).getQuads(state, side, rand, extraData, renderType))); } else { - for (Map.Entry, Integer> notRenderedEntry : notRendered.entrySet()) { + for (Map.Entry, Integer> notRenderedEntry : notRendered.entrySet()) { quads.addAll(new ConduitTextureEmissiveQuadTransformer( sprite(notRenderedEntry.getKey(), conduitBundle.getNodeFor(notRenderedEntry.getKey()).getExtendedConduitData()), 0) .andThen(QuadTransformers.applying(translateTransformation( @@ -275,7 +275,7 @@ public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull Ran return ChunkRenderTypeSet.of(RenderType.cutout()); } - private static TextureAtlasSprite sprite(IConduitType type, IExtendedConduitData data) { + private static TextureAtlasSprite sprite(ConduitType type, ExtendedConduitData data) { return Minecraft.getInstance().getModelManager().getAtlas(InventoryMenu.BLOCK_ATLAS).getSprite(type.getTexture(data.cast())); } diff --git a/src/conduits/java/com/enderio/conduits/common/ConduitShape.java b/src/conduits/java/com/enderio/conduits/common/ConduitShape.java index 88d1c447..5caa6366 100644 --- a/src/conduits/java/com/enderio/conduits/common/ConduitShape.java +++ b/src/conduits/java/com/enderio/conduits/common/ConduitShape.java @@ -1,6 +1,6 @@ package com.enderio.conduits.common; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.conduits.common.blockentity.ConduitBundle; import com.enderio.conduits.common.blockentity.OffsetHelper; import com.enderio.conduits.common.blockentity.connection.DynamicConnectionState; @@ -18,14 +18,12 @@ import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; public class ConduitShape { - private final Map, VoxelShape> conduitShapes = new HashMap<>(); + private final Map, VoxelShape> conduitShapes = new HashMap<>(); private final Map directionShapes = new HashMap<>(); private static final VoxelShape CONNECTOR = Block.box(2.5f, 2.5, 15f, 13.5f, 13.5f, 16f); private static final VoxelShape CONNECTION = Block.box(6.5f, 6.5f, 9.5, 9.5f, 9.5f, 16); @@ -39,7 +37,7 @@ public ConduitShape() { public void updateConduit(ConduitBundle bundle) { this.conduitShapes.clear(); this.directionShapes.clear(); - for (IConduitType type : bundle.getTypes()) { + for (ConduitType type : bundle.getTypes()) { updateShapeForConduit(bundle, type); } updateTotalShape(); @@ -50,7 +48,7 @@ public VoxelShape getShapeFromHit(BlockPos pos, HitResult result) { } @Nullable - public IConduitType getConduit(BlockPos pos, HitResult result) { + public ConduitType getConduit(BlockPos pos, HitResult result) { return getLookUpValue(conduitShapes, pos, result); } @@ -86,10 +84,10 @@ public VoxelShape getTotalShape() { return this.totalShape; } - private void updateShapeForConduit(ConduitBundle conduitBundle, IConduitType conduitType) { + private void updateShapeForConduit(ConduitBundle conduitBundle, ConduitType conduitType) { VoxelShape conduitShape = Shapes.empty(); Direction.Axis axis = OffsetHelper.findMainAxis(conduitBundle); - Map, List> offsets = new HashMap<>(); + Map, List> offsets = new HashMap<>(); for (Direction direction : Direction.values()) { VoxelShape directionShape = directionShapes.getOrDefault(direction, Shapes.empty()); if (conduitBundle.getConnection(direction).getConnectionState(conduitType) instanceof DynamicConnectionState) { @@ -112,7 +110,7 @@ private void updateShapeForConduit(ConduitBundle conduitBundle, IConduitType var allTypes = conduitBundle.getTypes(); @Nullable Area box = null; - @Nullable IConduitType notRendered = null; + @Nullable ConduitType notRendered = null; int i = allTypes.indexOf(conduitType); if (i == -1) { conduitShapes.put(conduitType, Shapes.block()); diff --git a/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitBlockEntity.java b/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitBlockEntity.java index 4839d47d..a487e9e6 100644 --- a/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitBlockEntity.java +++ b/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitBlockEntity.java @@ -1,9 +1,9 @@ package com.enderio.conduits.common.blockentity; import com.enderio.api.UseOnly; -import com.enderio.api.conduit.IConduitMenuData; -import com.enderio.api.conduit.IConduitType; -import com.enderio.api.conduit.IExtendedConduitData; +import com.enderio.api.conduit.ConduitMenuData; +import com.enderio.api.conduit.ConduitType; +import com.enderio.api.conduit.ExtendedConduitData; import com.enderio.api.conduit.NodeIdentifier; import com.enderio.conduits.ConduitNBTKeys; import com.enderio.conduits.common.ConduitShape; @@ -67,7 +67,7 @@ public class ConduitBlockEntity extends EnderBlockEntity { private UpdateState checkConnection = UpdateState.NONE; - private final Map,NodeIdentifier> lazyNodes = new HashMap<>(); + private final Map,NodeIdentifier> lazyNodes = new HashMap<>(); private ListTag lazyNodeNBT = new ListTag(); public ConduitBlockEntity(BlockEntityType type, BlockPos worldPosition, BlockState blockState) { @@ -92,7 +92,7 @@ public void updateClient() { * Handle a connection state update from the client. */ @UseOnly(LogicalSide.SERVER) - public void handleConnectionStateUpdate(Direction direction, IConduitType conduitType, DynamicConnectionState connectionState) { + public void handleConnectionStateUpdate(Direction direction, ConduitType conduitType, DynamicConnectionState connectionState) { var connection = bundle.getConnection(direction); // Sanity check, the client shouldn't do this, but just to make sure there's no confusion. @@ -106,7 +106,7 @@ public void handleConnectionStateUpdate(Direction direction, IConduitType con } @UseOnly(LogicalSide.SERVER) - public void handleExtendedDataUpdate(IConduitType conduitType, CompoundTag compoundTag) { + public void handleExtendedDataUpdate(ConduitType conduitType, CompoundTag compoundTag) { getBundle().getNodeFor(conduitType).getExtendedConduitData().deserializeNBT(compoundTag); } @@ -150,7 +150,7 @@ public void onChunkUnloaded() { super.onChunkUnloaded(); if (level instanceof ServerLevel serverLevel) { ConduitSavedData savedData = ConduitSavedData.get(serverLevel); - for (IConduitType type : bundle.getTypes()) { + for (ConduitType type : bundle.getTypes()) { NodeIdentifier node = bundle.getNodeFor(type); node.getExtendedConduitData().onRemoved(type, level, getBlockPos()); savedData.putUnloadedNodeIdentifier(type, this.worldPosition, node); @@ -171,7 +171,7 @@ public void everyTick() { public void updateConnections(Level level, BlockPos pos, @Nullable BlockPos fromPos, boolean shouldActivate) { for (Direction direction: Direction.values()) { if (fromPos == null || !(level.getBlockEntity(fromPos) instanceof ConduitBlockEntity)) { - for (IConduitType type : bundle.getTypes()) { + for (ConduitType type : bundle.getTypes()) { if (shouldActivate && type.getTicker().hasConnectionDelay()) { checkConnection = checkConnection.activate(); } @@ -197,8 +197,8 @@ protected void saveAdditional(CompoundTag tag) { super.saveAdditional(tag); tag.put(ConduitNBTKeys.CONDUIT_BUNDLE, bundle.serializeNBT()); ListTag listTag = new ListTag(); - for (IConduitType type : bundle.getTypes()) { - IExtendedConduitData data = bundle.getNodeFor(type).getExtendedConduitData(); + for (ConduitType type : bundle.getTypes()) { + ExtendedConduitData data = bundle.getNodeFor(type).getExtendedConduitData(); listTag.add(data.serializeNBT()); } tag.put(ConduitNBTKeys.CONDUIT_EXTRA_DATA, listTag); @@ -225,11 +225,11 @@ public ModelData getModelData() { return ModelData.builder().with(BUNDLE_MODEL_PROPERTY, clientBundle).with(POS, worldPosition).build(); } - public boolean hasType(IConduitType type) { + public boolean hasType(ConduitType type) { return bundle.hasType(type); } - public RightClickAction addType(IConduitType type, Player player) { + public RightClickAction addType(ConduitType type, Player player) { RightClickAction action = bundle.addType(level, type, player); //something has changed if (action.hasChanged()) { @@ -255,7 +255,7 @@ public RightClickAction addType(IConduitType type, Player player) { return action; } - public Optional> tryConnectTo(Direction dir, IConduitType type, boolean forceMerge, boolean shouldMergeGraph) { + public Optional> tryConnectTo(Direction dir, ConduitType type, boolean forceMerge, boolean shouldMergeGraph) { if (level.getBlockEntity(getBlockPos().relative(dir)) instanceof ConduitBlockEntity conduit && conduit.connectTo(dir.getOpposite(), type, bundle.getNodeFor(type).getExtendedConduitData(), forceMerge)) { connect(dir, type); @@ -289,7 +289,7 @@ public Optional> tryConnectTo(Direction dir, ICondu return Optional.empty(); } - public void updateConnectionToData(IConduitType type) { + public void updateConnectionToData(ConduitType type) { if (!level.isClientSide) { getBundle() .getNodeFor(type) @@ -305,14 +305,14 @@ public void updateConnectionToData(IConduitType type) { * sets block to air if this is the last conduit */ - public void removeTypeAndDelete(IConduitType type) { + public void removeTypeAndDelete(ConduitType type) { if (removeType(type, false)) { level.setBlock(getBlockPos(), getBlockState().getFluidState().createLegacyBlock(), level.isClientSide ? Block.UPDATE_ALL_IMMEDIATE : Block.UPDATE_ALL); } } - public boolean removeType(IConduitType type, boolean shouldDrop) { + public boolean removeType(ConduitType type, boolean shouldDrop) { if (shouldDrop && !level.isClientSide()) { dropItem(type.getConduitItem().getDefaultInstance()); for (Direction dir : Direction.values()) { @@ -352,7 +352,7 @@ private void dropItem(ItemStack stack) { level.addFreshEntity(new ItemEntity(level, getBlockPos().getX(), getBlockPos().getY(), getBlockPos().getZ(), stack)); } - public void removeNeighborConnections(IConduitType type) { + public void removeNeighborConnections(ConduitType type) { for (Direction dir : Direction.values()) { if (level.getBlockEntity(getBlockPos().relative(dir)) instanceof ConduitBlockEntity conduit) { conduit.disconnect(dir.getOpposite(), type); @@ -384,10 +384,10 @@ private void loadFromSavedData() { ConduitSavedData savedData = ConduitSavedData.get(serverLevel); for (int typeIndex = 0; typeIndex < bundle.getTypes().size(); typeIndex++) { - IConduitType type = bundle.getTypes().get(typeIndex); + ConduitType type = bundle.getTypes().get(typeIndex); NodeIdentifier node = savedData.takeUnloadedNodeIdentifier(type, this.worldPosition); if (node == null && bundle.getNodeForTypeExact(type) == null) { - IExtendedConduitData data = type.createExtendedConduitData(level, worldPosition); + ExtendedConduitData data = type.createExtendedConduitData(level, worldPosition); if (typeIndex < lazyNodeNBT.size()) { data.deserializeNBT(lazyNodeNBT.getCompound(typeIndex)); @@ -418,7 +418,7 @@ private void loadFromSavedData() { * @param forceMerge if disabledstate should be ignored * @return true if a connection happens */ - private boolean connectTo(Direction direction, IConduitType type, IExtendedConduitData data, boolean forceMerge) { + private boolean connectTo(Direction direction, ConduitType type, ExtendedConduitData data, boolean forceMerge) { if (!doTypesMatch(type)) { return false; } @@ -435,8 +435,8 @@ private boolean connectTo(Direction direction, IConduitType type, IExtendedCo return false; } - private boolean doTypesMatch(IConduitType type) { - for (IConduitType bundleType : bundle.getTypes()) { + private boolean doTypesMatch(ConduitType type) { + for (ConduitType bundleType : bundle.getTypes()) { if (bundleType.getTicker().canConnectTo(bundleType, type)) { return true; } @@ -445,17 +445,17 @@ private boolean doTypesMatch(IConduitType type) { return false; } - private void connect(Direction direction, IConduitType type) { + private void connect(Direction direction, ConduitType type) { bundle.connectTo(level, worldPosition, direction, type, false); updateClient(); } - private void connectEnd(Direction direction, IConduitType type) { + private void connectEnd(Direction direction, ConduitType type) { bundle.connectTo(level, worldPosition, direction, type, true); updateClient(); } - private void disconnect(Direction direction, IConduitType type) { + private void disconnect(Direction direction, ConduitType type) { if (bundle.disconnectFrom(direction, type)) { updateClient(); } @@ -469,16 +469,16 @@ public ConduitShape getShape() { return shape; } - public MenuProvider menuProvider(Direction direction, IConduitType type) { + public MenuProvider menuProvider(Direction direction, ConduitType type) { return new ConduitMenuProvider(direction, type); } private class ConduitMenuProvider implements MenuProvider { private final Direction direction; - private final IConduitType type; + private final ConduitType type; - private ConduitMenuProvider(Direction direction, IConduitType type) { + private ConduitMenuProvider(Direction direction, ConduitType type) { this.direction = direction; this.type = type; } @@ -497,7 +497,7 @@ public AbstractContainerMenu createMenu(int pContainerId, Inventory pInventory, @Override public LazyOptional getCapability(Capability cap, @Nullable Direction side) { - for (IConduitType type : bundle.getTypes()) { + for (ConduitType type : bundle.getTypes()) { NodeIdentifier node = bundle.getNodeFor(type); Optional state = Optional.empty(); if (node != null && side != null) { @@ -545,7 +545,7 @@ public ItemStack getStackInSlot(int slot) { return ItemStack.EMPTY; } - IConduitMenuData conduitData = bundle.getTypes().get(data.conduitIndex()).getMenuData(); + ConduitMenuData conduitData = bundle.getTypes().get(data.conduitIndex()).getMenuData(); if ((data.slotType() == SlotType.FILTER_EXTRACT && conduitData.hasFilterExtract()) || (data.slotType() == SlotType.FILTER_INSERT && conduitData.hasFilterInsert()) || (data.slotType() == SlotType.UPGRADE_EXTRACT && conduitData.hasUpgrade())) { return dynamicConnectionState.getItem(data.slotType()); @@ -645,7 +645,7 @@ public void setStackInSlot(int slot, @NotNull ItemStack stack) { } ConduitConnection connection = bundle.getConnection(data.direction()); - IConduitMenuData conduitData = bundle.getTypes().get(data.conduitIndex()).getMenuData(); + ConduitMenuData conduitData = bundle.getTypes().get(data.conduitIndex()).getMenuData(); if ((data.slotType() == SlotType.FILTER_EXTRACT && conduitData.hasFilterExtract()) || (data.slotType() == SlotType.FILTER_INSERT && conduitData.hasFilterInsert()) || (data.slotType() == SlotType.UPGRADE_EXTRACT && conduitData.hasUpgrade())) { diff --git a/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitBundle.java b/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitBundle.java index c0124680..aafeb45d 100644 --- a/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitBundle.java +++ b/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitBundle.java @@ -1,8 +1,8 @@ package com.enderio.conduits.common.blockentity; import com.enderio.api.UseOnly; -import com.enderio.api.conduit.ConduitTypes; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitRegistries; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.conduit.NodeIdentifier; import com.enderio.conduits.client.ConduitClientSetup; import com.enderio.conduits.common.blockentity.connection.DynamicConnectionState; @@ -41,10 +41,10 @@ public final class ConduitBundle implements INBTSerializable { private final Map connections = new EnumMap<>(Direction.class); - private final List> types = new ArrayList<>(); + private final List> types = new ArrayList<>(); //fill back after world save - private final Map, NodeIdentifier> nodes = new HashMap<>(); + private final Map, NodeIdentifier> nodes = new HashMap<>(); private final Runnable scheduleSync; private final BlockPos pos; @@ -71,7 +71,7 @@ public ConduitBundle(Runnable scheduleSync, BlockPos pos) { * @param type * @return an action containing the type that is now not in this bundle */ - public RightClickAction addType(Level level, IConduitType type, Player player) { + public RightClickAction addType(Level level, ConduitType type, Player player) { if (types.size() == MAX_CONDUIT_TYPES) { return new RightClickAction.Blocked(); } @@ -81,7 +81,7 @@ public RightClickAction addType(Level level, IConduitType type, Player player } //upgrade a conduit - Optional> first = types.stream().filter(existingConduit -> existingConduit.canBeReplacedBy(type)).findFirst(); + Optional> first = types.stream().filter(existingConduit -> existingConduit.canBeReplacedBy(type)).findFirst(); NodeIdentifier node = new NodeIdentifier<>(pos, type.createExtendedConduitData(level, pos)); if (first.isPresent()) { int index = types.indexOf(first.get()); @@ -136,7 +136,7 @@ public RightClickAction addType(Level level, IConduitType type, Player player } void onLoad(Level level, BlockPos pos) { - for (IConduitType type : types) { + for (ConduitType type : types) { getNodeFor(type).getExtendedConduitData().onCreated(type, level, pos, null); } } @@ -146,13 +146,13 @@ void onLoad(Level level, BlockPos pos) { * @return if this bundle is empty and the block has to be removed * @throws IllegalArgumentException if this type is not in the conduitbundle and we are in dev env */ - public boolean removeType(Level level, IConduitType type) { + public boolean removeType(Level level, ConduitType type) { int index = types.indexOf(type); if (index == -1) { if (!FMLLoader.isProduction()) { throw new IllegalArgumentException( - "Conduit: " + ConduitTypes.REGISTRY.get().getKey(type) + " is not present in conduit bundle " + Arrays.toString( - types.stream().map(existingType -> ConduitTypes.REGISTRY.get().getKey(existingType)).toArray())); + "Conduit: " + ConduitRegistries.REGISTRY.get().getKey(type) + " is not present in conduit bundle " + Arrays.toString( + types.stream().map(existingType -> ConduitRegistries.REGISTRY.get().getKey(existingType)).toArray())); } return types.isEmpty(); @@ -186,8 +186,8 @@ public boolean removeType(Level level, IConduitType type) { public CompoundTag serializeNBT() { CompoundTag tag = new CompoundTag(); ListTag listTag = new ListTag(); - for (IConduitType type : types) { - listTag.add(StringTag.valueOf(ConduitTypes.getRegistry().getKey(type).toString())); + for (ConduitType type : types) { + listTag.add(StringTag.valueOf(ConduitRegistries.getRegistry().getKey(type).toString())); } tag.put(KEY_TYPES, listTag); CompoundTag connectionsTag = new CompoundTag(); @@ -207,7 +207,7 @@ public CompoundTag serializeNBT() { var data = entry.getValue().getExtendedConduitData().serializeRenderNBT(); if (!data.isEmpty()) { CompoundTag dataTag = new CompoundTag(); - dataTag.putString(KEY_NODE_TYPE, ConduitTypes.getRegistry().getKey(entry.getKey()).toString()); + dataTag.putString(KEY_NODE_TYPE, ConduitRegistries.getRegistry().getKey(entry.getKey()).toString()); dataTag.put(KEY_NODE_DATA, data); nodeTag.add(dataTag); } @@ -221,19 +221,19 @@ public CompoundTag serializeNBT() { public CompoundTag serializeGuiNBT() { CompoundTag nbt = new CompoundTag(); - for (IConduitType type : getTypes()) { + for (ConduitType type : getTypes()) { CompoundTag compoundTag = nodes.get(type).getExtendedConduitData().serializeGuiNBT(); if (!compoundTag.isEmpty()) { - nbt.put(ConduitTypes.getRegistry().getKey(type).toString(), compoundTag); + nbt.put(ConduitRegistries.getRegistry().getKey(type).toString(), compoundTag); } } return nbt; } public void deserializeGuiNBT(CompoundTag nbt) { - for (IConduitType type : getTypes()) { - if (nbt.contains(ConduitTypes.getRegistry().getKey(type).toString())) { - nodes.get(type).getExtendedConduitData().deserializeNBT(nbt.getCompound(ConduitTypes.getRegistry().getKey(type).toString())); + for (ConduitType type : getTypes()) { + if (nbt.contains(ConduitRegistries.getRegistry().getKey(type).toString())) { + nodes.get(type).getExtendedConduitData().deserializeNBT(nbt.getCompound(ConduitRegistries.getRegistry().getKey(type).toString())); } } } @@ -246,7 +246,7 @@ public void deserializeNBT(CompoundTag nbt) { List invalidTypes = new ArrayList<>(); for (int i = 0; i < typesTag.size(); i++) { StringTag stringTag = (StringTag) typesTag.get(i); - IConduitType type = ConduitTypes.getRegistry().getValue(ResourceLocation.tryParse(stringTag.getAsString())); + ConduitType type = ConduitRegistries.getRegistry().getValue(ResourceLocation.tryParse(stringTag.getAsString())); if (type == null) { invalidTypes.add(i); continue; @@ -277,7 +277,7 @@ public void deserializeNBT(CompoundTag nbt) { } nodes.entrySet().removeIf(entry -> !types.contains(entry.getKey())); if (EffectiveSide.get().isServer()) { - for (IConduitType type : types) { + for (ConduitType type : types) { if (nodes.containsKey(type)) { for (Direction direction : Direction.values()) { if (getConnection(direction).getConnectionState(type) instanceof DynamicConnectionState dyn) { @@ -297,7 +297,7 @@ public void deserializeNBT(CompoundTag nbt) { for (Tag tag : nodesTag) { CompoundTag cmp = (CompoundTag) tag; nodes - .get(ConduitTypes.getRegistry().getValue(new ResourceLocation(cmp.getString(KEY_NODE_TYPE)))) + .get(ConduitRegistries.getRegistry().getValue(new ResourceLocation(cmp.getString(KEY_NODE_TYPE)))) .getExtendedConduitData() .deserializeNBT(cmp.getCompound(KEY_NODE_DATA)); } @@ -311,7 +311,7 @@ public ConduitConnection getConnection(Direction direction) { return connections.get(direction); } - public List> getTypes() { + public List> getTypes() { return types; } @@ -328,13 +328,13 @@ public void setFacade(BlockState facade, Direction direction) { dataVersion++; } - public void connectTo(Level level, BlockPos pos, Direction direction, IConduitType type, boolean end) { + public void connectTo(Level level, BlockPos pos, Direction direction, ConduitType type, boolean end) { getConnection(direction).connectTo(level, pos, getNodeFor(type), direction, type, getTypeIndex(type), end); scheduleSync.run(); dataVersion++; } - public boolean disconnectFrom(Direction direction, IConduitType type) { + public boolean disconnectFrom(Direction direction, ConduitType type) { for (int i = 0; i < types.size(); i++) { if (type.getTicker().canConnectTo(type, types.get(i))) { getConnection(direction).tryDisconnect(i); @@ -347,11 +347,11 @@ public boolean disconnectFrom(Direction direction, IConduitType type) { } @Nullable - public NodeIdentifier getNodeForTypeExact(IConduitType type) { + public NodeIdentifier getNodeForTypeExact(ConduitType type) { return nodes.get(type); } - public NodeIdentifier getNodeFor(IConduitType type) { + public NodeIdentifier getNodeFor(ConduitType type) { for (var entry : nodes.entrySet()) { if (entry.getKey().getTicker().canConnectTo(entry.getKey(), type)) { return nodes.get(entry.getKey()); @@ -361,7 +361,7 @@ public NodeIdentifier getNodeFor(IConduitType type) { throw new IllegalStateException("no node matching original type"); } - public void setNodeFor(IConduitType type, NodeIdentifier node) { + public void setNodeFor(ConduitType type, NodeIdentifier node) { nodes.put(type, node); for (var direction : Direction.values()) { ConduitConnection connection = connections.get(direction); @@ -376,7 +376,7 @@ public void setNodeFor(IConduitType type, NodeIdentifier node) { dataVersion++; } - public void removeNodeFor(Level level, IConduitType type) { + public void removeNodeFor(Level level, ConduitType type) { NodeIdentifier node = nodes.get(type); node.getExtendedConduitData().onRemoved(type, level, pos); if (node.getGraph() != null) { @@ -386,16 +386,16 @@ public void removeNodeFor(Level level, IConduitType type) { dataVersion++; } - public boolean hasType(IConduitType type) { - for (IConduitType iConduitType : types) { - if (iConduitType.getTicker().canConnectTo(iConduitType, type)) { + public boolean hasType(ConduitType type) { + for (ConduitType conduitType : types) { + if (conduitType.getTicker().canConnectTo(conduitType, type)) { return true; } } return false; } - public int getTypeIndex(IConduitType type) { + public int getTypeIndex(ConduitType type) { for (int i = 0; i < types.size(); i++) { if (types.get(i).getTicker().canConnectTo(types.get(i), type)) { return i; diff --git a/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitConnection.java b/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitConnection.java index a6cd512f..19667af3 100644 --- a/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitConnection.java +++ b/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitConnection.java @@ -1,6 +1,6 @@ package com.enderio.conduits.common.blockentity; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.conduit.NodeIdentifier; import com.enderio.api.misc.ColorControl; import com.enderio.api.misc.RedstoneControl; @@ -47,7 +47,7 @@ public void addType(int index) { connectionStates[index] = StaticConnectionStates.DISCONNECTED; } - public void connectTo(Level level, BlockPos pos, NodeIdentifier nodeIdentifier, Direction direction, IConduitType type, int typeIndex, boolean end) { + public void connectTo(Level level, BlockPos pos, NodeIdentifier nodeIdentifier, Direction direction, ConduitType type, int typeIndex, boolean end) { if (end) { var state = DynamicConnectionState.defaultConnection(level, pos, direction, type); connectionStates[typeIndex] = state; @@ -88,8 +88,8 @@ public boolean isEnd() { return Arrays.stream(connectionStates).anyMatch(DynamicConnectionState.class::isInstance); } - public List> getConnectedTypes() { - List> connected = new ArrayList<>(); + public List> getConnectedTypes() { + List> connected = new ArrayList<>(); for (int i = 0; i < connectionStates.length; i++) { if (connectionStates[i].isConnection()) { connected.add(on.getTypes().get(i)); @@ -173,10 +173,10 @@ public ConduitConnection deepCopy(ConduitBundle on) { public IConnectionState getConnectionState(int index) { return connectionStates[index]; } - public IConnectionState getConnectionState(IConduitType type) { + public IConnectionState getConnectionState(ConduitType type) { return connectionStates[on.getTypeIndex(type)]; } - public void setConnectionState(IConduitType type, IConnectionState state) { + public void setConnectionState(ConduitType type, IConnectionState state) { setConnectionState(on.getTypeIndex(type),state); on.incrementDataVersion(); } diff --git a/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitTypeSorter.java b/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitTypeSorter.java index 9d0a5c0d..43348f89 100644 --- a/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitTypeSorter.java +++ b/src/conduits/java/com/enderio/conduits/common/blockentity/ConduitTypeSorter.java @@ -1,7 +1,7 @@ package com.enderio.conduits.common.blockentity; -import com.enderio.api.conduit.ConduitTypes; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitRegistries; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.conduit.TieredConduit; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -17,21 +17,21 @@ */ @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) public class ConduitTypeSorter { - private static final List> SORTED_TYPES = new ArrayList<>(); + private static final List> SORTED_TYPES = new ArrayList<>(); @SubscribeEvent public static void afterRegistryFreeze(FMLCommonSetupEvent event) { - var registry = ConduitTypes.getRegistry(); + var registry = ConduitRegistries.getRegistry(); List tieredTypes = new ArrayList<>(); - for (IConduitType value : registry) { + for (ConduitType value : registry) { if (value instanceof TieredConduit tiered && !tieredTypes.contains(tiered.getType())) { tieredTypes.add(tiered.getType()); } } tieredTypes.sort(ResourceLocation::compareTo); for (ResourceLocation tieredType : tieredTypes) { - List> typesInType = new ArrayList<>(); - for (IConduitType type: registry) { + List> typesInType = new ArrayList<>(); + for (ConduitType type: registry) { if (type instanceof TieredConduit tiered && tiered.getType().equals(tieredType)) { typesInType.add(type); } @@ -39,8 +39,8 @@ public static void afterRegistryFreeze(FMLCommonSetupEvent event) { typesInType.sort(Comparator.comparing(registry::getKey)); SORTED_TYPES.addAll(typesInType); } - List> unadded = new ArrayList<>(); - for (IConduitType type: registry) { + List> unadded = new ArrayList<>(); + for (ConduitType type: registry) { if (!(type instanceof TieredConduit)) { unadded.add(type); } @@ -49,7 +49,7 @@ public static void afterRegistryFreeze(FMLCommonSetupEvent event) { SORTED_TYPES.addAll(unadded); } - public static int getSortIndex(IConduitType type) { + public static int getSortIndex(ConduitType type) { return SORTED_TYPES.indexOf(type); } } diff --git a/src/conduits/java/com/enderio/conduits/common/blockentity/RightClickAction.java b/src/conduits/java/com/enderio/conduits/common/blockentity/RightClickAction.java index 9b923439..f6906007 100644 --- a/src/conduits/java/com/enderio/conduits/common/blockentity/RightClickAction.java +++ b/src/conduits/java/com/enderio/conduits/common/blockentity/RightClickAction.java @@ -1,17 +1,17 @@ package com.enderio.conduits.common.blockentity; -import com.enderio.api.conduit.ConduitTypes; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitRegistries; +import com.enderio.api.conduit.ConduitType; public sealed interface RightClickAction permits RightClickAction.Upgrade, RightClickAction.Blocked, RightClickAction.Insert{ - record Upgrade(IConduitType notInConduit) implements RightClickAction { - public IConduitType getNotInConduit() { + record Upgrade(ConduitType notInConduit) implements RightClickAction { + public ConduitType getNotInConduit() { return notInConduit; } @Override public String toString() { - return "Upgrade[" + ConduitTypes.getRegistry().getKey(notInConduit) + "]"; + return "Upgrade[" + ConduitRegistries.getRegistry().getKey(notInConduit) + "]"; } } diff --git a/src/conduits/java/com/enderio/conduits/common/blockentity/SlotType.java b/src/conduits/java/com/enderio/conduits/common/blockentity/SlotType.java index b8da8f66..d81d08f0 100644 --- a/src/conduits/java/com/enderio/conduits/common/blockentity/SlotType.java +++ b/src/conduits/java/com/enderio/conduits/common/blockentity/SlotType.java @@ -1,6 +1,6 @@ package com.enderio.conduits.common.blockentity; -import com.enderio.api.conduit.IConduitMenuData; +import com.enderio.api.conduit.ConduitMenuData; public enum SlotType { FILTER_EXTRACT, @@ -20,7 +20,7 @@ public int getY() { return Y_POSITION; } - public boolean isAvailableFor(IConduitMenuData data) { + public boolean isAvailableFor(ConduitMenuData data) { return switch (this) { case FILTER_INSERT -> data.hasFilterInsert(); case FILTER_EXTRACT -> data.hasFilterExtract(); diff --git a/src/conduits/java/com/enderio/conduits/common/blockentity/connection/DynamicConnectionState.java b/src/conduits/java/com/enderio/conduits/common/blockentity/connection/DynamicConnectionState.java index 719e1368..7df55dad 100644 --- a/src/conduits/java/com/enderio/conduits/common/blockentity/connection/DynamicConnectionState.java +++ b/src/conduits/java/com/enderio/conduits/common/blockentity/connection/DynamicConnectionState.java @@ -1,7 +1,7 @@ package com.enderio.conduits.common.blockentity.connection; import com.enderio.api.UseOnly; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.misc.ColorControl; import com.enderio.api.misc.RedstoneControl; import com.enderio.conduits.common.blockentity.SlotType; @@ -17,8 +17,8 @@ public record DynamicConnectionState(boolean isInsert, ColorControl insert, boolean isExtract, ColorControl extract, RedstoneControl control, ColorControl redstoneChannel, @UseOnly(LogicalSide.SERVER) ItemStack filterInsert, @UseOnly(LogicalSide.SERVER) ItemStack filterExtract, @UseOnly(LogicalSide.SERVER) ItemStack upgradeExtract) implements IConnectionState { - public static DynamicConnectionState defaultConnection(Level level, BlockPos pos, Direction direction, IConduitType type) { - IConduitType.ConduitConnectionData defaultConnection = type.getDefaultConnection(level, pos, direction); + public static DynamicConnectionState defaultConnection(Level level, BlockPos pos, Direction direction, ConduitType type) { + ConduitType.ConduitConnectionData defaultConnection = type.getDefaultConnection(level, pos, direction); return new DynamicConnectionState(defaultConnection.isInsert(), ColorControl.GREEN, defaultConnection.isExtract(), ColorControl.GREEN, defaultConnection.control(), ColorControl.RED, ItemStack.EMPTY, ItemStack.EMPTY, ItemStack.EMPTY); } diff --git a/src/conduits/java/com/enderio/conduits/common/blocks/ConduitBlock.java b/src/conduits/java/com/enderio/conduits/common/blocks/ConduitBlock.java index 8ea16260..3e5fda9c 100644 --- a/src/conduits/java/com/enderio/conduits/common/blocks/ConduitBlock.java +++ b/src/conduits/java/com/enderio/conduits/common/blocks/ConduitBlock.java @@ -1,7 +1,7 @@ package com.enderio.conduits.common.blocks; -import com.enderio.api.conduit.ConduitTypes; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitRegistries; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.conduit.NodeIdentifier; import com.enderio.api.integration.IntegrationManager; import com.enderio.base.common.tag.EIOTags; @@ -12,10 +12,10 @@ import com.enderio.conduits.common.blockentity.connection.IConnectionState; import com.enderio.conduits.common.blockentity.connection.StaticConnectionStates; import com.enderio.conduits.common.init.ConduitBlockEntities; -import com.enderio.conduits.common.init.EnderConduitTypes; +import com.enderio.conduits.common.init.ConduitTypes; import com.enderio.conduits.common.items.ConduitBlockItem; import com.enderio.conduits.common.network.ConduitSavedData; -import com.enderio.conduits.common.types.RedstoneExtendedData; +import com.enderio.conduits.common.types.redstone.RedstoneExtendedData; import com.enderio.core.common.util.PlayerInteractionUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -225,7 +225,7 @@ private Optional addConduit(ConduitBlockEntity conduit, Playe private Optional handleYeta(ConduitBlockEntity conduit, Player player, ItemStack stack, BlockHitResult hit, boolean isClientSide) { if (stack.is(EIOTags.Items.WRENCH)) { - @Nullable IConduitType type = conduit.getShape().getConduit(hit.getBlockPos(), hit); + @Nullable ConduitType type = conduit.getShape().getConduit(hit.getBlockPos(), hit); @Nullable Direction direction = conduit.getShape().getDirection(hit.getBlockPos(), hit); if (type == null) { return Optional.empty(); @@ -279,7 +279,7 @@ public static void handleShiftYeta(PlayerInteractEvent.RightClickBlock event) { && event.getLevel().getBlockEntity(event.getPos()) instanceof ConduitBlockEntity conduit && event.getEntity().isCrouching()) { - @Nullable IConduitType type = conduit.getShape().getConduit(event.getPos(), event.getHitVec()); + @Nullable ConduitType type = conduit.getShape().getConduit(event.getPos(), event.getHitVec()); if (type != null) { conduit.removeTypeAndDelete(type); PlayerInteractionUtil.putItemInInventoryFromWorldInteraction(event.getEntity(), event.getPos(), new ItemStack(type.getConduitItem())); @@ -313,7 +313,7 @@ private Optional handleScreen(ConduitBlockEntity conduit, Pla NetworkHooks.openScreen(serverPlayer, conduit.menuProvider(openInformation.get().direction(), openInformation.get().type()), buf -> { buf.writeBlockPos(conduit.getBlockPos()); buf.writeEnum(openInformation.get().direction()); - buf.writeInt(ConduitTypes.getRegistry().getID(openInformation.get().type())); + buf.writeInt(ConduitRegistries.getRegistry().getID(openInformation.get().type())); }); } @@ -324,7 +324,7 @@ private Optional handleScreen(ConduitBlockEntity conduit, Pla } private Optional getOpenInformation(ConduitBlockEntity conduit, BlockHitResult hit) { - @Nullable IConduitType type = conduit.getShape().getConduit(hit.getBlockPos(), hit); + @Nullable ConduitType type = conduit.getShape().getConduit(hit.getBlockPos(), hit); @Nullable Direction direction = conduit.getShape().getDirection(hit.getBlockPos(), hit); if (direction != null && type != null) { @@ -350,7 +350,7 @@ private Optional getOpenInformation(ConduitBlockEntity conduit, //fallback for (Direction potential : Direction.values()) { if (bundle.getConnection(potential).isEnd()) { - for (IConduitType potentialType : bundle.getTypes()) { + for (ConduitType potentialType : bundle.getTypes()) { if (bundle.getConnection(potential).getConnectionState(potentialType) instanceof DynamicConnectionState) { return Optional.of(new OpenInformation(potential, potentialType)); } @@ -360,7 +360,7 @@ private Optional getOpenInformation(ConduitBlockEntity conduit, } for (Direction potential : Direction.values()) { if (!(conduit.getLevel().getBlockEntity(conduit.getBlockPos().relative(potential)) instanceof ConduitBlockEntity)) { - for (IConduitType potentialType : bundle.getTypes()) { + for (ConduitType potentialType : bundle.getTypes()) { if (canBeValidConnection(conduit, potentialType, potential)) { return Optional.of(new OpenInformation(potential, potentialType)); } @@ -373,12 +373,12 @@ private Optional getOpenInformation(ConduitBlockEntity conduit, // endregion - public static boolean canBeOrIsValidConnection(ConduitBlockEntity conduit, IConduitType type, Direction direction) { + public static boolean canBeOrIsValidConnection(ConduitBlockEntity conduit, ConduitType type, Direction direction) { return conduit.getBundle().getConnection(direction).getConnectionState(type) instanceof DynamicConnectionState || canBeValidConnection(conduit, type, direction); } - public static boolean canBeValidConnection(ConduitBlockEntity conduit, IConduitType type, Direction direction) { + public static boolean canBeValidConnection(ConduitBlockEntity conduit, ConduitType type, Direction direction) { IConnectionState connectionState = conduit.getBundle().getConnection(direction).getConnectionState(type); return connectionState instanceof StaticConnectionStates state && state == StaticConnectionStates.DISABLED @@ -401,7 +401,7 @@ public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGett } if (level.getBlockEntity(pos) instanceof ConduitBlockEntity conduit) { - @Nullable IConduitType type = conduit.getShape().getConduit(pos, target); + @Nullable ConduitType type = conduit.getShape().getConduit(pos, target); if (type != null) { return type.getConduitItem().getDefaultInstance(); } @@ -439,7 +439,7 @@ public boolean onDestroyedByPlayer(BlockState state, Level level, BlockPos pos, HitResult hit = player.pick(player.getBlockReach() + 5, 1, false); BlockEntity be = level.getBlockEntity(pos); if (be instanceof ConduitBlockEntity conduit) { - @Nullable IConduitType conduitType = conduit.getShape().getConduit(((BlockHitResult) hit).getBlockPos(), hit); + @Nullable ConduitType conduitType = conduit.getShape().getConduit(((BlockHitResult) hit).getBlockPos(), hit); if (conduitType == null) { if (!conduit.getBundle().getTypes().isEmpty()) { level.playSound(player, pos, SoundEvents.GENERIC_SMALL_FALL, SoundSource.BLOCKS, 1F, 1F); @@ -469,23 +469,23 @@ public boolean onDestroyedByPlayer(BlockState state, Level level, BlockPos pos, public boolean canConnectRedstone(BlockState state, BlockGetter level, BlockPos pos, @Nullable Direction direction) { return direction != null && level.getBlockEntity(pos) instanceof ConduitBlockEntity conduit - && conduit.getBundle().getTypes().contains(EnderConduitTypes.REDSTONE.get()) - && conduit.getBundle().getConnection(direction.getOpposite()).getConnectionState(EnderConduitTypes.REDSTONE.get()) instanceof DynamicConnectionState; + && conduit.getBundle().getTypes().contains(ConduitTypes.REDSTONE.get()) + && conduit.getBundle().getConnection(direction.getOpposite()).getConnectionState(ConduitTypes.REDSTONE.get()) instanceof DynamicConnectionState; } @SuppressWarnings("deprecation") @Override public int getSignal(BlockState pBlockState, BlockGetter level, BlockPos pos, Direction direction) { return level.getBlockEntity(pos) instanceof ConduitBlockEntity conduit - && conduit.getBundle().getTypes().contains(EnderConduitTypes.REDSTONE.get()) - && conduit.getBundle().getConnection(direction.getOpposite()).getConnectionState(EnderConduitTypes.REDSTONE.get()) instanceof DynamicConnectionState dyn + && conduit.getBundle().getTypes().contains(ConduitTypes.REDSTONE.get()) + && conduit.getBundle().getConnection(direction.getOpposite()).getConnectionState(ConduitTypes.REDSTONE.get()) instanceof DynamicConnectionState dyn && dyn.isInsert() - && conduit.getBundle().getNodeFor(EnderConduitTypes.REDSTONE.get()).getExtendedConduitData() instanceof RedstoneExtendedData redstoneExtendedData + && conduit.getBundle().getNodeFor(ConduitTypes.REDSTONE.get()).getExtendedConduitData() instanceof RedstoneExtendedData redstoneExtendedData && redstoneExtendedData.isActive(dyn.insert()) ? 15 : 0; } //@formatter:on // endregion - private record OpenInformation(Direction direction, IConduitType type) {} + private record OpenInformation(Direction direction, ConduitType type) {} } diff --git a/src/conduits/java/com/enderio/conduits/common/init/ConduitBlocks.java b/src/conduits/java/com/enderio/conduits/common/init/ConduitBlocks.java index 209bd787..ee973575 100644 --- a/src/conduits/java/com/enderio/conduits/common/init/ConduitBlocks.java +++ b/src/conduits/java/com/enderio/conduits/common/init/ConduitBlocks.java @@ -13,11 +13,15 @@ public class ConduitBlocks { public static final BlockEntry CONDUIT = REGISTRATE .block("conduit", ConduitBlock::new) - .properties(props -> props.strength(1.5f, 10).noLootTable().noOcclusion().dynamicShape().mapColor(MapColor.STONE)) + .properties(props -> + props.strength(1.5f, 10) + .noLootTable() + .noOcclusion() + .dynamicShape() + .mapColor(MapColor.STONE)) .blockstate(ConduitBlockState::conduit) .tag(BlockTags.MINEABLE_WITH_PICKAXE) .register(); - public static void register() {} } diff --git a/src/conduits/java/com/enderio/conduits/common/init/ConduitItems.java b/src/conduits/java/com/enderio/conduits/common/init/ConduitItems.java index 322515e4..ff492ed9 100644 --- a/src/conduits/java/com/enderio/conduits/common/init/ConduitItems.java +++ b/src/conduits/java/com/enderio/conduits/common/init/ConduitItems.java @@ -2,7 +2,7 @@ import com.enderio.EnderIO; import com.enderio.api.conduit.ConduitItemFactory; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.base.common.init.EIOCreativeTabs; import com.enderio.conduits.common.items.FilterItem; import com.tterrag.registrate.Registrate; @@ -17,17 +17,17 @@ public class ConduitItems { private static final Registrate REGISTRATE = EnderIO.registrate(); - public static final ItemEntry ENERGY = createConduitItem(EnderConduitTypes.ENERGY, "energy"); - public static final ItemEntry FLUID = createConduitItem(EnderConduitTypes.FLUID, "fluid"); - public static final ItemEntry PRESSURIZED_FLUID = createConduitItem(EnderConduitTypes.FLUID2, "pressurized_fluid"); - public static final ItemEntry ENDER_FLUID = createConduitItem(EnderConduitTypes.FLUID3, "ender_fluid"); - public static final ItemEntry REDSTONE = createConduitItem(EnderConduitTypes.REDSTONE, "redstone"); - public static final ItemEntry ITEM = createConduitItem(EnderConduitTypes.ITEM, "item"); + public static final ItemEntry ENERGY = createConduitItem(ConduitTypes.ENERGY, "energy"); + public static final ItemEntry FLUID = createConduitItem(ConduitTypes.FLUID, "fluid"); + public static final ItemEntry PRESSURIZED_FLUID = createConduitItem(ConduitTypes.FLUID2, "pressurized_fluid"); + public static final ItemEntry ENDER_FLUID = createConduitItem(ConduitTypes.FLUID3, "ender_fluid"); + public static final ItemEntry REDSTONE = createConduitItem(ConduitTypes.REDSTONE, "redstone"); + public static final ItemEntry ITEM = createConduitItem(ConduitTypes.ITEM, "item"); public static final ItemEntry BASIC_ITEM_FILTER = filterItemBasic("basic_item_filter").register(); public static final ItemEntry BIG_ITEM_FILTER = filterItemBig("big_item_filter").register(); - private static ItemEntry createConduitItem(Supplier> type, String itemName) { + private static ItemEntry createConduitItem(Supplier> type, String itemName) { return REGISTRATE.item(itemName + "_conduit", properties -> ConduitItemFactory.build(type, properties)) .tab(EIOCreativeTabs.CONDUITS) diff --git a/src/conduits/java/com/enderio/conduits/common/init/ConduitTypes.java b/src/conduits/java/com/enderio/conduits/common/init/ConduitTypes.java new file mode 100644 index 00000000..1e200dd1 --- /dev/null +++ b/src/conduits/java/com/enderio/conduits/common/init/ConduitTypes.java @@ -0,0 +1,54 @@ +package com.enderio.conduits.common.init; + +import com.enderio.EnderIO; +import com.enderio.api.conduit.ConduitRegistries; +import com.enderio.api.conduit.ConduitMenuData; +import com.enderio.api.conduit.ConduitType; +import com.enderio.api.misc.Vector2i; +import com.enderio.conduits.common.types.energy.EnergyConduitType; +import com.enderio.conduits.common.types.fluid.FluidConduitType; +import com.enderio.conduits.common.types.item.ItemClientConduitData; +import com.enderio.conduits.common.types.item.ItemConduitTicker; +import com.enderio.conduits.common.types.item.ItemExtendedData; +import com.enderio.conduits.common.types.redstone.RedstoneConduitType; +import com.enderio.conduits.common.types.SimpleConduitType; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.RegistryObject; + +public class ConduitTypes { + public static final ResourceLocation ICON_TEXTURE = EnderIO.loc("textures/gui/conduit_icon.png"); + + public static final RegistryObject> ENERGY = + ConduitRegistries.CONDUIT_TYPES.register("energy_conduit", EnergyConduitType::new); + + public static final RegistryObject FLUID = + fluidConduit("fluid_conduit", 50, false, new Vector2i(0, 120)); + + public static final RegistryObject FLUID2 = + fluidConduit("pressurized_fluid_conduit", 100, false, new Vector2i(0, 144)); + + public static final RegistryObject FLUID3 = + fluidConduit("ender_fluid_conduit", 200, true, new Vector2i(0, 168)); + + public static final RegistryObject> REDSTONE = + ConduitRegistries.CONDUIT_TYPES.register("redstone_conduit", RedstoneConduitType::new); + + public static final RegistryObject> ITEM = + ConduitRegistries.CONDUIT_TYPES.register("item_conduit", + () -> new SimpleConduitType<>( + EnderIO.loc("block/conduit/item"), + new ItemConduitTicker(), + ItemExtendedData::new, + new ItemClientConduitData(), + ConduitMenuData.ITEM)); + + private static RegistryObject fluidConduit(String name, int tier, boolean isMultiFluid, Vector2i iconPos) { + return ConduitRegistries.CONDUIT_TYPES.register(name, + () -> new FluidConduitType(EnderIO.loc("block/conduit/" + name), tier, isMultiFluid, ICON_TEXTURE, iconPos)); + } + + public static void register(IEventBus bus) { + ConduitRegistries.CONDUIT_TYPES.register(bus); + } +} diff --git a/src/conduits/java/com/enderio/conduits/common/init/EnderConduitTypes.java b/src/conduits/java/com/enderio/conduits/common/init/EnderConduitTypes.java deleted file mode 100644 index be9fdc77..00000000 --- a/src/conduits/java/com/enderio/conduits/common/init/EnderConduitTypes.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.enderio.conduits.common.init; - -import com.enderio.EnderIO; -import com.enderio.api.conduit.ConduitTypes; -import com.enderio.api.conduit.IConduitMenuData; -import com.enderio.api.conduit.IConduitType; -import com.enderio.api.misc.Vector2i; -import com.enderio.conduits.common.types.EnergyConduitType; -import com.enderio.conduits.common.types.FluidConduitType; -import com.enderio.conduits.common.types.ItemClientConduitData; -import com.enderio.conduits.common.types.ItemConduitTicker; -import com.enderio.conduits.common.types.ItemExtendedData; -import com.enderio.conduits.common.types.RedstoneConduitType; -import com.enderio.conduits.common.types.SimpleConduitType; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.registries.RegistryObject; - -public class EnderConduitTypes { - - public static final ResourceLocation ICON_TEXTURE = EnderIO.loc("textures/gui/conduit_icon.png"); - public static final RegistryObject> ENERGY = ConduitTypes.CONDUIT_TYPES.register( - "energy_conduit", EnergyConduitType::new); - - public static final RegistryObject FLUID = fluidConduit("fluid_conduit", 50, false, new Vector2i(0, 120)); - - public static final RegistryObject FLUID2 = fluidConduit("pressurized_fluid_conduit", 100, false, new Vector2i(0, 144)); - - public static final RegistryObject FLUID3 = fluidConduit("ender_fluid_conduit", 200, true, new Vector2i(0, 168)); - - - public static final RegistryObject> REDSTONE = ConduitTypes.CONDUIT_TYPES.register("redstone_conduit", RedstoneConduitType::new); - public static final RegistryObject> ITEM = ConduitTypes.CONDUIT_TYPES.register("item_conduit", - () -> new SimpleConduitType<>(EnderIO.loc("block/conduit/item"), new ItemConduitTicker(), ItemExtendedData::new, new ItemClientConduitData(), - IConduitMenuData.ITEM)); - - private static RegistryObject fluidConduit(String name, int tier, boolean isMultiFluid, Vector2i iconPos) { - return ConduitTypes.CONDUIT_TYPES.register(name, - () -> new FluidConduitType(EnderIO.loc("block/conduit/" + name), tier, isMultiFluid, ICON_TEXTURE, iconPos)); - } - - public static void register() {} -} diff --git a/src/conduits/java/com/enderio/conduits/common/integrations/ConduitSelfIntegration.java b/src/conduits/java/com/enderio/conduits/common/integrations/ConduitSelfIntegration.java index 39fbf4ea..05afd425 100644 --- a/src/conduits/java/com/enderio/conduits/common/integrations/ConduitSelfIntegration.java +++ b/src/conduits/java/com/enderio/conduits/common/integrations/ConduitSelfIntegration.java @@ -1,6 +1,6 @@ package com.enderio.conduits.common.integrations; -import com.enderio.api.conduit.IFacadeItem; +import com.enderio.api.conduit.FacadeItem; import com.enderio.api.integration.Integration; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; @@ -11,7 +11,7 @@ public class ConduitSelfIntegration implements Integration { @Override public Optional getFacadeOf(ItemStack stack) { - if (stack.getItem() instanceof IFacadeItem facadeItem) { + if (stack.getItem() instanceof FacadeItem facadeItem) { return Optional.of(facadeItem.getTexture(stack)); } return Optional.empty(); diff --git a/src/conduits/java/com/enderio/conduits/common/integrations/ae2/AE2ConduitType.java b/src/conduits/java/com/enderio/conduits/common/integrations/ae2/AE2ConduitType.java index 2ad6f047..490abc22 100644 --- a/src/conduits/java/com/enderio/conduits/common/integrations/ae2/AE2ConduitType.java +++ b/src/conduits/java/com/enderio/conduits/common/integrations/ae2/AE2ConduitType.java @@ -3,14 +3,13 @@ import appeng.api.networking.GridHelper; import appeng.api.networking.IInWorldGridNodeHost; import com.enderio.EnderIO; -import com.enderio.api.conduit.IConduitMenuData; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.conduit.NodeIdentifier; import com.enderio.api.conduit.TieredConduit; -import com.enderio.api.conduit.ticker.IConduitTicker; +import com.enderio.api.conduit.ticker.ConduitTicker; import com.enderio.api.misc.ColorControl; import com.enderio.api.misc.Vector2i; -import com.enderio.conduits.common.init.EnderConduitTypes; +import com.enderio.conduits.common.init.ConduitTypes; import com.enderio.conduits.common.integrations.Integrations; import dev.gigaherz.graph3.Graph; import dev.gigaherz.graph3.Mergeable; @@ -33,18 +32,18 @@ public class AE2ConduitType extends TieredConduit { public AE2ConduitType(boolean dense) { super(EnderIO.loc("block/conduit/" + (dense ? "dense_me" : "me")), new ResourceLocation("ae2", "me_cable"), dense ? 32 : 8, - EnderConduitTypes.ICON_TEXTURE, new Vector2i(0, dense ? 72 : 48)); + ConduitTypes.ICON_TEXTURE, new Vector2i(0, dense ? 72 : 48)); this.dense = dense; } @Override - public IConduitTicker getTicker() { + public ConduitTicker getTicker() { return Ticker.INSTANCE; } @Override - public IConduitMenuData getMenuData() { - return ConduitMenuData.INSTANCE; + public com.enderio.api.conduit.ConduitMenuData getMenuData() { + return AE2ConduitType.ConduitMenuData.INSTANCE; } @Override @@ -77,9 +76,9 @@ protected final Capability getCapability() { return Integrations.AE2_INTEGRATION.expectPresent().getInWorldGridNodeHost(); } - private static final class ConduitMenuData implements IConduitMenuData { + private static final class ConduitMenuData implements com.enderio.api.conduit.ConduitMenuData { - private static final IConduitMenuData INSTANCE = new ConduitMenuData(); + private static final com.enderio.api.conduit.ConduitMenuData INSTANCE = new ConduitMenuData(); @Override public boolean hasFilterInsert() { @@ -122,11 +121,11 @@ public boolean showRedstoneExtract() { } } - private static final class Ticker implements IConduitTicker { + private static final class Ticker implements ConduitTicker { private static final Ticker INSTANCE = new Ticker(); @Override - public void tickGraph(IConduitType type, Graph graph, ServerLevel level, TriFunction isRedstoneActive) { + public void tickGraph(ConduitType type, Graph graph, ServerLevel level, TriFunction isRedstoneActive) { //ae2 graphs don't actually do anything, that's all done by ae2 } @@ -141,7 +140,7 @@ public boolean hasConnectionDelay() { } @Override - public boolean canConnectTo(IConduitType thisType, IConduitType other) { + public boolean canConnectTo(ConduitType thisType, ConduitType other) { return other instanceof AE2ConduitType; } } diff --git a/src/conduits/java/com/enderio/conduits/common/integrations/ae2/AE2InWorldConduitNodeHost.java b/src/conduits/java/com/enderio/conduits/common/integrations/ae2/AE2InWorldConduitNodeHost.java index 37d56491..293b91a7 100644 --- a/src/conduits/java/com/enderio/conduits/common/integrations/ae2/AE2InWorldConduitNodeHost.java +++ b/src/conduits/java/com/enderio/conduits/common/integrations/ae2/AE2InWorldConduitNodeHost.java @@ -6,8 +6,8 @@ import appeng.api.networking.IInWorldGridNodeHost; import appeng.api.networking.IManagedGridNode; import appeng.api.util.AECableType; -import com.enderio.api.conduit.IConduitType; -import com.enderio.api.conduit.IExtendedConduitData; +import com.enderio.api.conduit.ConduitType; +import com.enderio.api.conduit.ExtendedConduitData; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -18,7 +18,7 @@ import java.util.Set; -public class AE2InWorldConduitNodeHost implements IInWorldGridNodeHost, IExtendedConduitData { +public class AE2InWorldConduitNodeHost implements IInWorldGridNodeHost, ExtendedConduitData { private final AE2ConduitType type; @Nullable @@ -88,7 +88,7 @@ public void deserializeNBT(CompoundTag nbt) { } @Override - public void onCreated(IConduitType type, Level level, BlockPos pos, @Nullable Player player) { + public void onCreated(ConduitType type, Level level, BlockPos pos, @Nullable Player player) { if (mainNode == null) { // required because onCreated() can be called after onRemoved() initMainNode(); @@ -115,7 +115,7 @@ public void updateConnection(Set connectedSides) { } @Override - public void onRemoved(IConduitType type, Level level, BlockPos pos) { + public void onRemoved(ConduitType type, Level level, BlockPos pos) { if (mainNode != null) { mainNode.destroy(); diff --git a/src/conduits/java/com/enderio/conduits/common/integrations/ae2/AE2Integration.java b/src/conduits/java/com/enderio/conduits/common/integrations/ae2/AE2Integration.java index 627b5f00..f2f3e59d 100644 --- a/src/conduits/java/com/enderio/conduits/common/integrations/ae2/AE2Integration.java +++ b/src/conduits/java/com/enderio/conduits/common/integrations/ae2/AE2Integration.java @@ -4,8 +4,8 @@ import appeng.api.networking.IInWorldGridNodeHost; import com.enderio.EnderIO; import com.enderio.api.conduit.ConduitItemFactory; -import com.enderio.api.conduit.ConduitTypes; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitRegistries; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.integration.Integration; import com.enderio.base.common.init.EIOCreativeTabs; import com.tterrag.registrate.util.entry.ItemEntry; @@ -24,8 +24,8 @@ public class AE2Integration implements Integration { private final Capability IN_WORLD_GRID_NODE_HOST = CapabilityManager.get(new CapabilityToken<>() {}); - private static final RegistryObject DENSE = ConduitTypes.CONDUIT_TYPES.register("dense_me", () -> new AE2ConduitType(true)); - private static final RegistryObject NORMAL = ConduitTypes.CONDUIT_TYPES.register("me", () -> new AE2ConduitType(false)); + private static final RegistryObject DENSE = ConduitRegistries.CONDUIT_TYPES.register("dense_me", () -> new AE2ConduitType(true)); + private static final RegistryObject NORMAL = ConduitRegistries.CONDUIT_TYPES.register("me", () -> new AE2ConduitType(false)); public static final ItemEntry DENSE_ITEM = createConduitItem(DENSE, "dense_me", "Dense ME Conduit"); public static final ItemEntry NORMAL_ITEM = createConduitItem(NORMAL, "me", "ME Conduit"); @@ -44,7 +44,7 @@ public Capability getInWorldGridNodeHost() { return IN_WORLD_GRID_NODE_HOST; } - private static ItemEntry createConduitItem(Supplier> type, String itemName, String english) { + private static ItemEntry createConduitItem(Supplier> type, String itemName, String english) { return EnderIO.registrate().item(itemName + "_conduit", properties -> ConduitItemFactory.build(type, properties)) .tab(EIOCreativeTabs.CONDUITS) diff --git a/src/conduits/java/com/enderio/conduits/common/items/ConduitBlockItem.java b/src/conduits/java/com/enderio/conduits/common/items/ConduitBlockItem.java index 555b0dfb..ccd622c9 100644 --- a/src/conduits/java/com/enderio/conduits/common/items/ConduitBlockItem.java +++ b/src/conduits/java/com/enderio/conduits/common/items/ConduitBlockItem.java @@ -1,6 +1,6 @@ package com.enderio.conduits.common.items; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.conduits.common.blockentity.ConduitBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundSource; @@ -20,14 +20,14 @@ public class ConduitBlockItem extends BlockItem { - private final Supplier> type; + private final Supplier> type; - public ConduitBlockItem(Supplier> type, Block block, Properties properties) { + public ConduitBlockItem(Supplier> type, Block block, Properties properties) { super(block, properties); this.type = type; } - public IConduitType getType() { + public ConduitType getType() { return type.get(); } diff --git a/src/conduits/java/com/enderio/conduits/common/menu/ConduitMenu.java b/src/conduits/java/com/enderio/conduits/common/menu/ConduitMenu.java index 36530bd1..95ee67bd 100644 --- a/src/conduits/java/com/enderio/conduits/common/menu/ConduitMenu.java +++ b/src/conduits/java/com/enderio/conduits/common/menu/ConduitMenu.java @@ -1,7 +1,7 @@ package com.enderio.conduits.common.menu; -import com.enderio.api.conduit.ConduitTypes; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitRegistries; +import com.enderio.api.conduit.ConduitType; import com.enderio.conduits.common.blockentity.ConduitBlockEntity; import com.enderio.conduits.common.blockentity.ConduitBundle; import com.enderio.conduits.common.blockentity.SlotType; @@ -34,10 +34,10 @@ public List getConduitSlots() { private final List conduitSlots = new ArrayList<>(); private Direction direction; - private IConduitType type; + private ConduitType type; - public ConduitMenu(@Nullable ConduitBlockEntity blockEntity, Inventory inventory, int pContainerId, Direction direction, IConduitType type) { + public ConduitMenu(@Nullable ConduitBlockEntity blockEntity, Inventory inventory, int pContainerId, Direction direction, ConduitType type) { super(blockEntity, inventory, ConduitMenus.CONDUIT_MENU.get(), pContainerId); this.direction = direction; this.type = type; @@ -99,7 +99,7 @@ private boolean clientValid() { public static ConduitMenu factory(@Nullable MenuType pMenuType, int pContainerId, Inventory inventory, FriendlyByteBuf buf) { BlockEntity entity = inventory.player.level().getBlockEntity(buf.readBlockPos()); Direction direction = buf.readEnum(Direction.class); - IConduitType type = ConduitTypes.getRegistry().getValue(buf.readInt()); + ConduitType type = ConduitRegistries.getRegistry().getValue(buf.readInt()); if (entity instanceof ConduitBlockEntity castBlockEntity) { return new ConduitMenu(castBlockEntity, inventory, pContainerId, direction, type); } @@ -108,11 +108,11 @@ public static ConduitMenu factory(@Nullable MenuType pMenuType, int return new ConduitMenu(null, inventory, pContainerId, direction, type); } - public IConduitType getConduitType() { + public ConduitType getConduitType() { return type; } - public void setConduitType(IConduitType type) { + public void setConduitType(ConduitType type) { this.type = type; } diff --git a/src/conduits/java/com/enderio/conduits/common/network/C2SSetConduitConnectionState.java b/src/conduits/java/com/enderio/conduits/common/network/C2SSetConduitConnectionState.java index 9ecb9cfd..d0006d57 100644 --- a/src/conduits/java/com/enderio/conduits/common/network/C2SSetConduitConnectionState.java +++ b/src/conduits/java/com/enderio/conduits/common/network/C2SSetConduitConnectionState.java @@ -1,7 +1,7 @@ package com.enderio.conduits.common.network; -import com.enderio.api.conduit.ConduitTypes; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitRegistries; +import com.enderio.api.conduit.ConduitType; import com.enderio.conduits.common.blockentity.ConduitBlockEntity; import com.enderio.conduits.common.blockentity.connection.DynamicConnectionState; import com.enderio.core.common.network.Packet; @@ -19,10 +19,10 @@ public class C2SSetConduitConnectionState implements Packet { private final BlockPos pos; private final Direction direction; - private final IConduitType conduitType; + private final ConduitType conduitType; private final DynamicConnectionState connectionState; - public C2SSetConduitConnectionState(BlockPos pos, Direction direction, IConduitType conduitType, DynamicConnectionState connectionState) { + public C2SSetConduitConnectionState(BlockPos pos, Direction direction, ConduitType conduitType, DynamicConnectionState connectionState) { this.pos = pos; this.direction = direction; this.conduitType = conduitType; @@ -32,7 +32,7 @@ public C2SSetConduitConnectionState(BlockPos pos, Direction direction, IConduitT public C2SSetConduitConnectionState(FriendlyByteBuf buf) { pos = buf.readBlockPos(); direction = buf.readEnum(Direction.class); - conduitType = ConduitTypes.getRegistry().getValue(buf.readResourceLocation()); + conduitType = ConduitRegistries.getRegistry().getValue(buf.readResourceLocation()); connectionState = DynamicConnectionState.fromNetwork(buf); } @@ -54,7 +54,7 @@ public void handle(NetworkEvent.Context context) { protected void write(FriendlyByteBuf writeInto) { writeInto.writeBlockPos(pos); writeInto.writeEnum(direction); - writeInto.writeResourceLocation(ConduitTypes.getRegistry().getKey(conduitType)); + writeInto.writeResourceLocation(ConduitRegistries.getRegistry().getKey(conduitType)); connectionState.toNetwork(writeInto); } diff --git a/src/conduits/java/com/enderio/conduits/common/network/C2SSetConduitExtendedData.java b/src/conduits/java/com/enderio/conduits/common/network/C2SSetConduitExtendedData.java index a4bdd82e..d4ccb321 100644 --- a/src/conduits/java/com/enderio/conduits/common/network/C2SSetConduitExtendedData.java +++ b/src/conduits/java/com/enderio/conduits/common/network/C2SSetConduitExtendedData.java @@ -1,12 +1,11 @@ package com.enderio.conduits.common.network; -import com.enderio.api.conduit.ConduitTypes; -import com.enderio.api.conduit.IConduitType; -import com.enderio.api.conduit.IExtendedConduitData; +import com.enderio.api.conduit.ConduitRegistries; +import com.enderio.api.conduit.ConduitType; +import com.enderio.api.conduit.ExtendedConduitData; import com.enderio.conduits.common.blockentity.ConduitBlockEntity; import com.enderio.core.common.network.Packet; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerLevel; @@ -18,10 +17,10 @@ public class C2SSetConduitExtendedData implements Packet { private final BlockPos pos; - private final IConduitType conduitType; + private final ConduitType conduitType; private final CompoundTag extendedConduitData; - public C2SSetConduitExtendedData(BlockPos pos, IConduitType conduitType, IExtendedConduitData extendedConduitData) { + public C2SSetConduitExtendedData(BlockPos pos, ConduitType conduitType, ExtendedConduitData extendedConduitData) { this.pos = pos; this.conduitType = conduitType; this.extendedConduitData = extendedConduitData.serializeGuiNBT(); @@ -29,7 +28,7 @@ public C2SSetConduitExtendedData(BlockPos pos, IConduitType conduitType, IExt public C2SSetConduitExtendedData(FriendlyByteBuf buf) { pos = buf.readBlockPos(); - conduitType = ConduitTypes.getRegistry().getValue(buf.readResourceLocation()); + conduitType = ConduitRegistries.getRegistry().getValue(buf.readResourceLocation()); extendedConduitData = buf.readNbt(); } @@ -50,7 +49,7 @@ public void handle(NetworkEvent.Context context) { protected void write(FriendlyByteBuf writeInto) { writeInto.writeBlockPos(pos); - writeInto.writeResourceLocation(ConduitTypes.getRegistry().getKey(conduitType)); + writeInto.writeResourceLocation(ConduitRegistries.getRegistry().getKey(conduitType)); writeInto.writeNbt(extendedConduitData); } diff --git a/src/conduits/java/com/enderio/conduits/common/network/ConduitSavedData.java b/src/conduits/java/com/enderio/conduits/common/network/ConduitSavedData.java index 5709a29f..4899a853 100644 --- a/src/conduits/java/com/enderio/conduits/common/network/ConduitSavedData.java +++ b/src/conduits/java/com/enderio/conduits/common/network/ConduitSavedData.java @@ -1,16 +1,15 @@ package com.enderio.conduits.common.network; import com.enderio.EnderIO; -import com.enderio.api.conduit.ConduitTypes; -import com.enderio.api.conduit.IConduitType; -import com.enderio.api.conduit.IExtendedConduitData; +import com.enderio.api.conduit.ConduitRegistries; +import com.enderio.api.conduit.ConduitType; +import com.enderio.api.conduit.ExtendedConduitData; import com.enderio.api.conduit.NodeIdentifier; import com.enderio.api.misc.ColorControl; import com.enderio.conduits.ConduitNBTKeys; -import com.enderio.conduits.EIOConduits; import com.enderio.conduits.common.blockentity.ConduitBlockEntity; -import com.enderio.conduits.common.init.EnderConduitTypes; -import com.enderio.conduits.common.types.RedstoneExtendedData; +import com.enderio.conduits.common.init.ConduitTypes; +import com.enderio.conduits.common.types.redstone.RedstoneExtendedData; import com.mojang.datafixers.util.Pair; import dev.gigaherz.graph3.Graph; import dev.gigaherz.graph3.GraphObject; @@ -41,10 +40,10 @@ @Mod.EventBusSubscriber public class ConduitSavedData extends SavedData { - private final Map, List>> networks = new HashMap<>(); + private final Map, List>> networks = new HashMap<>(); // Used to find the NodeIdentifier(s) of a conduit when it is loaded - private final Map, Map>>> deserializedNodes = new HashMap<>(); + private final Map, Map>>> deserializedNodes = new HashMap<>(); public static ConduitSavedData get(ServerLevel level) { return level.getDataStorage().computeIfAbsent(nbt -> new ConduitSavedData(level, nbt), ConduitSavedData::new, "enderio_conduit_network"); @@ -69,8 +68,8 @@ private ConduitSavedData(Level level, CompoundTag nbt) { CompoundTag typedGraphTag = (CompoundTag) tag; ResourceLocation type = new ResourceLocation(typedGraphTag.getString(KEY_TYPE)); - if (ConduitTypes.getRegistry().containsKey(type)) { - IConduitType value = Objects.requireNonNull(ConduitTypes.getRegistry().getValue(type)); + if (ConduitRegistries.getRegistry().containsKey(type)) { + ConduitType value = Objects.requireNonNull(ConduitRegistries.getRegistry().getValue(type)); ListTag graphsForTypeTag = typedGraphTag.getList(KEY_GRAPHS, Tag.TAG_COMPOUND); for (Tag tag1 : graphsForTypeTag) { CompoundTag graphTag = (CompoundTag) tag1; @@ -141,14 +140,14 @@ private ConduitSavedData(Level level, CompoundTag nbt) { public CompoundTag save(CompoundTag nbt) { ListTag graphsTag = new ListTag(); for (var entry : networks.entrySet()) { - IConduitType type = entry.getKey(); + ConduitType type = entry.getKey(); List> graphs = entry.getValue(); if (graphs.isEmpty()) { continue; } CompoundTag typedGraphTag = new CompoundTag(); - typedGraphTag.putString(KEY_TYPE, ConduitTypes.getRegistry().getKey(type).toString()); + typedGraphTag.putString(KEY_TYPE, ConduitRegistries.getRegistry().getKey(type).toString()); ListTag graphsForTypeTag = new ListTag(); @@ -240,7 +239,7 @@ private void merge(GraphObject object, List> NodeIdentifier takeUnloadedNodeIdentifier(IConduitType type, BlockPos pos) { + public > NodeIdentifier takeUnloadedNodeIdentifier(ConduitType type, BlockPos pos) { ChunkPos chunkPos = new ChunkPos(pos); Map>> typeMap = deserializedNodes.get(type); @@ -267,7 +266,7 @@ public > NodeIdentifier takeUnloadedNodeIde return (NodeIdentifier) node; } - public void putUnloadedNodeIdentifier(IConduitType type, BlockPos pos, NodeIdentifier node) { + public void putUnloadedNodeIdentifier(ConduitType type, BlockPos pos, NodeIdentifier node) { ChunkPos chunkPos = new ChunkPos(pos); Map>> typeMap = deserializedNodes.computeIfAbsent(type, k -> new HashMap<>()); Map> chunkMap = typeMap.computeIfAbsent(chunkPos, k -> new HashMap<>()); @@ -297,7 +296,7 @@ private void tick(ServerLevel serverLevel) { } for (var entry : networks.entrySet()) { for (Graph graph : entry.getValue()) { - if (serverLevel.getGameTime() % entry.getKey().getTicker().getTickRate() == ConduitTypes.getRegistry().getID(entry.getKey()) % entry + if (serverLevel.getGameTime() % entry.getKey().getTicker().getTickRate() == ConduitRegistries.getRegistry().getID(entry.getKey()) % entry .getKey() .getTicker() .getTickRate()) { @@ -316,18 +315,18 @@ private static boolean isRedstoneActive(ServerLevel serverLevel, BlockPos pos, C return false; } - if (!conduit.getBundle().getTypes().contains(EnderConduitTypes.REDSTONE.get())) { + if (!conduit.getBundle().getTypes().contains(ConduitTypes.REDSTONE.get())) { return false; } - RedstoneExtendedData data = conduit.getBundle().getNodeFor(EnderConduitTypes.REDSTONE.get()).getExtendedConduitData().cast(); + RedstoneExtendedData data = conduit.getBundle().getNodeFor(ConduitTypes.REDSTONE.get()).getExtendedConduitData().cast(); return data.isActive(color); } - public static void addPotentialGraph(IConduitType type, Graph graph, ServerLevel level) { + public static void addPotentialGraph(ConduitType type, Graph graph, ServerLevel level) { get(level).addPotentialGraph(type, graph); } - private void addPotentialGraph(IConduitType type, Graph graph) { + private void addPotentialGraph(ConduitType type, Graph graph) { if (!networks.computeIfAbsent(type, unused -> new ArrayList<>()).contains(graph)) { networks.get(type).add(graph); } diff --git a/src/conduits/java/com/enderio/conduits/common/types/SimpleConduitType.java b/src/conduits/java/com/enderio/conduits/common/types/SimpleConduitType.java index a7869e05..6411cacc 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/SimpleConduitType.java +++ b/src/conduits/java/com/enderio/conduits/common/types/SimpleConduitType.java @@ -1,11 +1,11 @@ package com.enderio.conduits.common.types; import com.enderio.api.UseOnly; -import com.enderio.api.conduit.IClientConduitData; -import com.enderio.api.conduit.IConduitMenuData; -import com.enderio.api.conduit.IConduitType; -import com.enderio.api.conduit.IExtendedConduitData; -import com.enderio.api.conduit.ticker.IConduitTicker; +import com.enderio.api.conduit.ClientConduitData; +import com.enderio.api.conduit.ConduitMenuData; +import com.enderio.api.conduit.ConduitType; +import com.enderio.api.conduit.ExtendedConduitData; +import com.enderio.api.conduit.ticker.ConduitTicker; import com.enderio.api.misc.Vector2i; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; @@ -17,21 +17,21 @@ /** * Only to be used for conduits in EnderIOs Namespace */ -public class SimpleConduitType> implements IConduitType { +public class SimpleConduitType> implements ConduitType { private final ResourceLocation texture; - private final IConduitTicker ticker; + private final ConduitTicker ticker; private final Supplier extendedDataFactory; - private final IClientConduitData clientConduitData; + private final ClientConduitData clientConduitData; - private final IConduitMenuData menuData; + private final ConduitMenuData menuData; - public SimpleConduitType(ResourceLocation texture, IConduitTicker ticker, Supplier extendedDataFactory, ResourceLocation iconTexture, Vector2i iconTexturePos, IConduitMenuData menuData) { - this(texture, ticker, extendedDataFactory, new IClientConduitData.Simple<>(iconTexture, iconTexturePos), menuData); + public SimpleConduitType(ResourceLocation texture, ConduitTicker ticker, Supplier extendedDataFactory, ResourceLocation iconTexture, Vector2i iconTexturePos, ConduitMenuData menuData) { + this(texture, ticker, extendedDataFactory, new ClientConduitData.Simple<>(iconTexture, iconTexturePos), menuData); } - public SimpleConduitType(ResourceLocation texture, IConduitTicker ticker, Supplier extendedDataFactory, IClientConduitData clientConduitData, IConduitMenuData menuData) { + public SimpleConduitType(ResourceLocation texture, ConduitTicker ticker, Supplier extendedDataFactory, ClientConduitData clientConduitData, ConduitMenuData menuData) { this.texture = texture; this.ticker = ticker; this.extendedDataFactory = extendedDataFactory; @@ -49,18 +49,18 @@ public ResourceLocation getItemTexture() { } @Override - public IConduitTicker getTicker() { + public ConduitTicker getTicker() { return ticker; } @Override @UseOnly(LogicalSide.CLIENT) - public IClientConduitData getClientData() { + public ClientConduitData getClientData() { return clientConduitData; } @Override - public IConduitMenuData getMenuData() { + public ConduitMenuData getMenuData() { return menuData; } diff --git a/src/conduits/java/com/enderio/conduits/common/types/EnergyConduitTicker.java b/src/conduits/java/com/enderio/conduits/common/types/energy/EnergyConduitTicker.java similarity index 85% rename from src/conduits/java/com/enderio/conduits/common/types/EnergyConduitTicker.java rename to src/conduits/java/com/enderio/conduits/common/types/energy/EnergyConduitTicker.java index 750d217a..f3aae458 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/EnergyConduitTicker.java +++ b/src/conduits/java/com/enderio/conduits/common/types/energy/EnergyConduitTicker.java @@ -1,6 +1,6 @@ -package com.enderio.conduits.common.types; +package com.enderio.conduits.common.types.energy; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.conduit.NodeIdentifier; import com.enderio.api.conduit.ticker.CapabilityAwareConduitTicker; import com.enderio.api.misc.ColorControl; @@ -11,14 +11,12 @@ import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.energy.IEnergyStorage; import org.apache.commons.lang3.function.TriFunction; import java.util.List; -import java.util.Optional; import java.util.function.Consumer; public class EnergyConduitTicker extends CapabilityAwareConduitTicker { @@ -27,7 +25,7 @@ public EnergyConduitTicker() { } @Override - public void tickGraph(IConduitType type, List> loadedNodes, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { + public void tickGraph(ConduitType type, List> loadedNodes, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { super.tickGraph(type, loadedNodes, level, graph, isRedstoneActive); for (NodeIdentifier node : loadedNodes) { EnergyExtendedData energyExtendedData = node.getExtendedConduitData().castTo(EnergyExtendedData.class); @@ -42,13 +40,13 @@ public void tickGraph(IConduitType type, List> loadedNodes, for (NodeIdentifier otherNode : loadedNodes) { for (Direction dir: Direction.values()) { if (otherNode.getIOState(dir).map(NodeIdentifier.IOState::isInsert).orElse(false)) { - BlockEntity be = level.getBlockEntity(otherNode.getPos().relative(dir)); + var be = level.getBlockEntity(otherNode.getPos().relative(dir)); if (be == null) { continue; } - Optional capability = be.getCapability(ForgeCapabilities.ENERGY, dir.getOpposite()).resolve(); + var capability = be.getCapability(ForgeCapabilities.ENERGY, dir.getOpposite()).resolve(); if (capability.isPresent()) { - IEnergyStorage insert = capability.get(); + var insert = capability.get(); extractEnergy(energy, List.of(insert), 0, i -> {}); } } @@ -66,10 +64,9 @@ public void tickGraph(IConduitType type, List> loadedNodes, } } @Override - public void tickCapabilityGraph(IConduitType type, List inserts, List extracts, ServerLevel level, + public void tickCapabilityGraph(ConduitType type, List inserts, List extracts, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { - for (CapabilityConnection extract : extracts) { IEnergyStorage extractHandler = extract.cap; @@ -79,7 +76,6 @@ public void tickCapabilityGraph(IConduitType type, List } private void extractEnergy(IEnergyStorage extractHandler, List inserts, int startingIndex, Consumer rotationIndexSetter) { - int availableForExtraction = extractHandler.extractEnergy(Integer.MAX_VALUE, true); if (availableForExtraction <= 0) { return; diff --git a/src/conduits/java/com/enderio/conduits/common/types/EnergyConduitType.java b/src/conduits/java/com/enderio/conduits/common/types/energy/EnergyConduitType.java similarity index 84% rename from src/conduits/java/com/enderio/conduits/common/types/EnergyConduitType.java rename to src/conduits/java/com/enderio/conduits/common/types/energy/EnergyConduitType.java index 454a0eec..28451f0e 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/EnergyConduitType.java +++ b/src/conduits/java/com/enderio/conduits/common/types/energy/EnergyConduitType.java @@ -1,14 +1,14 @@ -package com.enderio.conduits.common.types; +package com.enderio.conduits.common.types.energy; import com.enderio.EnderIO; -import com.enderio.api.conduit.IClientConduitData; -import com.enderio.api.conduit.IConduitMenuData; +import com.enderio.api.conduit.ClientConduitData; +import com.enderio.api.conduit.ConduitMenuData; import com.enderio.api.conduit.NodeIdentifier; import com.enderio.api.misc.RedstoneControl; import com.enderio.api.misc.Vector2i; -import com.enderio.conduits.common.init.EnderConduitTypes; -import com.enderio.conduits.common.integrations.ae2.AE2InWorldConduitNodeHost; +import com.enderio.conduits.common.init.ConduitTypes; import com.enderio.conduits.common.tag.ConduitTags; +import com.enderio.conduits.common.types.SimpleConduitType; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.Level; @@ -24,7 +24,7 @@ public class EnergyConduitType extends SimpleConduitType { public EnergyConduitType() { super(EnderIO.loc("block/conduit/energy"), new EnergyConduitTicker(), EnergyExtendedData::new, - new IClientConduitData.Simple<>(EnderConduitTypes.ICON_TEXTURE, new Vector2i(0, 24)), IConduitMenuData.ENERGY); + new ClientConduitData.Simple<>(ConduitTypes.ICON_TEXTURE, new Vector2i(0, 24)), ConduitMenuData.ENERGY); } @Override diff --git a/src/conduits/java/com/enderio/conduits/common/types/EnergyExtendedData.java b/src/conduits/java/com/enderio/conduits/common/types/energy/EnergyExtendedData.java similarity index 93% rename from src/conduits/java/com/enderio/conduits/common/types/EnergyExtendedData.java rename to src/conduits/java/com/enderio/conduits/common/types/energy/EnergyExtendedData.java index 40a525d4..d8271678 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/EnergyExtendedData.java +++ b/src/conduits/java/com/enderio/conduits/common/types/energy/EnergyExtendedData.java @@ -1,7 +1,7 @@ -package com.enderio.conduits.common.types; +package com.enderio.conduits.common.types.energy; -import com.enderio.api.conduit.IConduitType; -import com.enderio.api.conduit.IExtendedConduitData; +import com.enderio.api.conduit.ConduitType; +import com.enderio.api.conduit.ExtendedConduitData; import com.enderio.core.CoreNBTKeys; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -15,7 +15,7 @@ import java.util.EnumMap; import java.util.Map; -public class EnergyExtendedData implements IExtendedConduitData { +public class EnergyExtendedData implements ExtendedConduitData { private final Map energySidedData = new EnumMap<>(Direction.class); @@ -74,7 +74,7 @@ public void setStored(int stored) { } @Override - public void onRemoved(IConduitType type, Level level, BlockPos pos) { + public void onRemoved(ConduitType type, Level level, BlockPos pos) { selfCap.invalidate(); } diff --git a/src/conduits/java/com/enderio/conduits/common/types/energy/package-info.java b/src/conduits/java/com/enderio/conduits/common/types/energy/package-info.java new file mode 100644 index 00000000..30af14c8 --- /dev/null +++ b/src/conduits/java/com/enderio/conduits/common/types/energy/package-info.java @@ -0,0 +1,4 @@ +@javax.annotation.ParametersAreNonnullByDefault +@net.minecraft.MethodsReturnNonnullByDefault + +package com.enderio.conduits.common.types.energy; diff --git a/src/conduits/java/com/enderio/conduits/common/types/FluidClientData.java b/src/conduits/java/com/enderio/conduits/common/types/fluid/FluidClientData.java similarity index 97% rename from src/conduits/java/com/enderio/conduits/common/types/FluidClientData.java rename to src/conduits/java/com/enderio/conduits/common/types/fluid/FluidClientData.java index 9f6f0919..926ec6a3 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/FluidClientData.java +++ b/src/conduits/java/com/enderio/conduits/common/types/fluid/FluidClientData.java @@ -1,7 +1,7 @@ -package com.enderio.conduits.common.types; +package com.enderio.conduits.common.types.fluid; import com.enderio.EnderIO; -import com.enderio.api.conduit.IClientConduitData; +import com.enderio.api.conduit.ClientConduitData; import com.enderio.api.misc.Vector2i; import com.enderio.base.common.lang.EIOLang; import com.enderio.core.client.RenderUtil; @@ -35,7 +35,7 @@ import java.util.List; import java.util.function.Supplier; -public class FluidClientData extends IClientConduitData.Simple { +public class FluidClientData extends ClientConduitData.Simple { private static final ResourceLocation MODEL = EnderIO.loc("block/extra/fluids"); private static final ResourceLocation WIDGET_TEXTURE = EnderIO.loc("textures/gui/fluidbackground.png"); diff --git a/src/conduits/java/com/enderio/conduits/common/types/FluidConduitTicker.java b/src/conduits/java/com/enderio/conduits/common/types/fluid/FluidConduitTicker.java similarity index 90% rename from src/conduits/java/com/enderio/conduits/common/types/FluidConduitTicker.java rename to src/conduits/java/com/enderio/conduits/common/types/fluid/FluidConduitTicker.java index 079cc236..6470cbe0 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/FluidConduitTicker.java +++ b/src/conduits/java/com/enderio/conduits/common/types/fluid/FluidConduitTicker.java @@ -1,6 +1,6 @@ -package com.enderio.conduits.common.types; +package com.enderio.conduits.common.types.fluid; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.conduit.NodeIdentifier; import com.enderio.api.conduit.ticker.CapabilityAwareConduitTicker; import com.enderio.api.misc.ColorControl; @@ -32,7 +32,7 @@ public FluidConduitTicker(boolean lockFluids, int fluidRate) { } @Override - public void tickGraph(IConduitType type, List> loadedNodes, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { + public void tickGraph(ConduitType type, List> loadedNodes, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { boolean shouldReset = false; for (NodeIdentifier loadedNode : loadedNodes) { FluidExtendedData fluidExtendedData = loadedNode.getExtendedConduitData().castTo(FluidExtendedData.class); @@ -50,7 +50,7 @@ public void tickGraph(IConduitType type, List> loadedNodes, } @Override - protected void tickCapabilityGraph(IConduitType type, List.CapabilityConnection> inserts, + protected void tickCapabilityGraph(ConduitType type, List.CapabilityConnection> inserts, List.CapabilityConnection> extracts, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { for (CapabilityConnection extract : extracts) { diff --git a/src/conduits/java/com/enderio/conduits/common/types/FluidConduitType.java b/src/conduits/java/com/enderio/conduits/common/types/fluid/FluidConduitType.java similarity index 75% rename from src/conduits/java/com/enderio/conduits/common/types/FluidConduitType.java rename to src/conduits/java/com/enderio/conduits/common/types/fluid/FluidConduitType.java index 8367d576..b4cad299 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/FluidConduitType.java +++ b/src/conduits/java/com/enderio/conduits/common/types/fluid/FluidConduitType.java @@ -1,8 +1,8 @@ -package com.enderio.conduits.common.types; +package com.enderio.conduits.common.types.fluid; -import com.enderio.api.conduit.IConduitMenuData; +import com.enderio.api.conduit.ConduitMenuData; import com.enderio.api.conduit.TieredConduit; -import com.enderio.api.conduit.ticker.IConduitTicker; +import com.enderio.api.conduit.ticker.ConduitTicker; import com.enderio.api.misc.Vector2i; import net.minecraft.core.BlockPos; import net.minecraft.resources.ResourceLocation; @@ -10,7 +10,7 @@ public class FluidConduitType extends TieredConduit { - public static final IConduitMenuData MENU_DATA = new IConduitMenuData.Simple(false, false, false, false, false, true); + public static final ConduitMenuData MENU_DATA = new ConduitMenuData.Simple(false, false, false, false, false, true); private final boolean isMultiFluid; private final int transferRate; @@ -22,12 +22,12 @@ public FluidConduitType(ResourceLocation texture, int tier, boolean isMultiFluid } @Override - public IConduitTicker getTicker() { + public ConduitTicker getTicker() { return new FluidConduitTicker(!isMultiFluid, transferRate); } @Override - public IConduitMenuData getMenuData() { + public ConduitMenuData getMenuData() { return MENU_DATA; } diff --git a/src/conduits/java/com/enderio/conduits/common/types/FluidExtendedData.java b/src/conduits/java/com/enderio/conduits/common/types/fluid/FluidExtendedData.java similarity index 93% rename from src/conduits/java/com/enderio/conduits/common/types/FluidExtendedData.java rename to src/conduits/java/com/enderio/conduits/common/types/fluid/FluidExtendedData.java index dc7cecae..073a5a47 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/FluidExtendedData.java +++ b/src/conduits/java/com/enderio/conduits/common/types/fluid/FluidExtendedData.java @@ -1,7 +1,7 @@ -package com.enderio.conduits.common.types; +package com.enderio.conduits.common.types.fluid; import com.enderio.EnderIO; -import com.enderio.api.conduit.IExtendedConduitData; +import com.enderio.api.conduit.ExtendedConduitData; import com.enderio.conduits.ConduitNBTKeys; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; @@ -10,7 +10,7 @@ import net.minecraftforge.registries.ForgeRegistries; import org.jetbrains.annotations.Nullable; -public class FluidExtendedData implements IExtendedConduitData { +public class FluidExtendedData implements ExtendedConduitData { public final boolean isMultiFluid; diff --git a/src/conduits/java/com/enderio/conduits/common/types/fluid/package-info.java b/src/conduits/java/com/enderio/conduits/common/types/fluid/package-info.java new file mode 100644 index 00000000..138764a0 --- /dev/null +++ b/src/conduits/java/com/enderio/conduits/common/types/fluid/package-info.java @@ -0,0 +1,4 @@ +@javax.annotation.ParametersAreNonnullByDefault +@net.minecraft.MethodsReturnNonnullByDefault + +package com.enderio.conduits.common.types.fluid; diff --git a/src/conduits/java/com/enderio/conduits/common/types/ItemClientConduitData.java b/src/conduits/java/com/enderio/conduits/common/types/item/ItemClientConduitData.java similarity index 86% rename from src/conduits/java/com/enderio/conduits/common/types/ItemClientConduitData.java rename to src/conduits/java/com/enderio/conduits/common/types/item/ItemClientConduitData.java index be09ed99..b122802f 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/ItemClientConduitData.java +++ b/src/conduits/java/com/enderio/conduits/common/types/item/ItemClientConduitData.java @@ -1,10 +1,10 @@ -package com.enderio.conduits.common.types; +package com.enderio.conduits.common.types.item; import com.enderio.EnderIO; -import com.enderio.api.conduit.IClientConduitData; +import com.enderio.api.conduit.ClientConduitData; import com.enderio.api.misc.Vector2i; import com.enderio.base.common.lang.EIOLang; -import com.enderio.conduits.common.init.EnderConduitTypes; +import com.enderio.conduits.common.init.ConduitTypes; import com.enderio.core.client.gui.widgets.CheckBox; import net.minecraft.client.gui.components.AbstractWidget; import net.minecraft.client.gui.screens.Screen; @@ -15,7 +15,7 @@ import java.util.List; import java.util.function.Supplier; -public class ItemClientConduitData implements IClientConduitData { +public class ItemClientConduitData implements ClientConduitData { @Override public List createWidgets(Screen screen, ItemExtendedData extendedConduitData, UpdateExtendedData updateExtendedConduitData, Supplier direction, Vector2i widgetsStart) { @@ -38,7 +38,7 @@ public List createWidgets(Screen screen, ItemExtendedData extend @Override public ResourceLocation getTextureLocation() { - return EnderConduitTypes.ICON_TEXTURE; + return ConduitTypes.ICON_TEXTURE; } @Override diff --git a/src/conduits/java/com/enderio/conduits/common/types/ItemConduitTicker.java b/src/conduits/java/com/enderio/conduits/common/types/item/ItemConduitTicker.java similarity index 89% rename from src/conduits/java/com/enderio/conduits/common/types/ItemConduitTicker.java rename to src/conduits/java/com/enderio/conduits/common/types/item/ItemConduitTicker.java index c8c6d19b..91bf7323 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/ItemConduitTicker.java +++ b/src/conduits/java/com/enderio/conduits/common/types/item/ItemConduitTicker.java @@ -1,6 +1,6 @@ -package com.enderio.conduits.common.types; +package com.enderio.conduits.common.types.item; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.conduit.NodeIdentifier; import com.enderio.api.conduit.ticker.CapabilityAwareConduitTicker; import com.enderio.api.misc.ColorControl; @@ -25,7 +25,7 @@ public class ItemConduitTicker extends CapabilityAwareConduitTicker { @Override - public void tickGraph(IConduitType type, List> loadedNodes, ServerLevel level, Graph graph, + public void tickGraph(ConduitType type, List> loadedNodes, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { super.tickGraph(type, loadedNodes, level, graph, isRedstoneActive); @@ -52,7 +52,7 @@ public void tickGraph(IConduitType type, List> loadedNodes, } @Override - protected void tickCapabilityGraph(IConduitType type, List inserts, List extracts, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { + protected void tickCapabilityGraph(ConduitType type, List inserts, List extracts, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { toNextExtract: for (CapabilityConnection extract : extracts) { IItemHandler extractHandler = extract.cap; @@ -93,7 +93,7 @@ protected void tickCapabilityGraph(IConduitType type, List { +public class ItemExtendedData implements ExtendedConduitData { private final Map itemSidedData = new EnumMap<>(Direction.class); diff --git a/src/conduits/java/com/enderio/conduits/common/types/item/package-info.java b/src/conduits/java/com/enderio/conduits/common/types/item/package-info.java new file mode 100644 index 00000000..1459e78a --- /dev/null +++ b/src/conduits/java/com/enderio/conduits/common/types/item/package-info.java @@ -0,0 +1,4 @@ +@javax.annotation.ParametersAreNonnullByDefault +@net.minecraft.MethodsReturnNonnullByDefault + +package com.enderio.conduits.common.types.item; diff --git a/src/conduits/java/com/enderio/conduits/common/types/RedstoneConduitTicker.java b/src/conduits/java/com/enderio/conduits/common/types/redstone/RedstoneConduitTicker.java similarity index 77% rename from src/conduits/java/com/enderio/conduits/common/types/RedstoneConduitTicker.java rename to src/conduits/java/com/enderio/conduits/common/types/redstone/RedstoneConduitTicker.java index 5a9347b3..682071ba 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/RedstoneConduitTicker.java +++ b/src/conduits/java/com/enderio/conduits/common/types/redstone/RedstoneConduitTicker.java @@ -1,8 +1,8 @@ -package com.enderio.conduits.common.types; +package com.enderio.conduits.common.types.redstone; -import com.enderio.api.conduit.IConduitType; +import com.enderio.api.conduit.ConduitType; import com.enderio.api.conduit.NodeIdentifier; -import com.enderio.api.conduit.ticker.IIOAwareConduitTicker; +import com.enderio.api.conduit.ticker.IOAwareConduitTicker; import com.enderio.api.misc.ColorControl; import com.enderio.conduits.common.init.ConduitBlocks; import com.enderio.conduits.common.tag.ConduitTags; @@ -19,7 +19,7 @@ import java.util.ArrayList; import java.util.List; -public class RedstoneConduitTicker implements IIOAwareConduitTicker { +public class RedstoneConduitTicker implements IOAwareConduitTicker { private final List activeColors = new ArrayList<>(); @Override @@ -30,7 +30,7 @@ public boolean canConnectTo(Level level, BlockPos conduitPos, Direction directio } @Override - public void tickGraph(IConduitType type, Graph graph, ServerLevel level, TriFunction isRedstoneActive) { + public void tickGraph(ConduitType type, Graph graph, ServerLevel level, TriFunction isRedstoneActive) { List> nodeIdentifiers = new ArrayList<>(); for (GraphObject object : graph.getObjects()) { if (object instanceof NodeIdentifier node) { @@ -49,7 +49,7 @@ public void tickGraph(IConduitType type, Graph graph, Server } @Override - public void tickColoredGraph(IConduitType type, List inserts, List extracts, ColorControl color, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { + public void tickColoredGraph(ConduitType type, List inserts, List extracts, ColorControl color, ServerLevel level, Graph graph, TriFunction isRedstoneActive) { for (Connection extract : extracts) { if (level.hasSignal(extract.move(), extract.dir())) { activeColors.add(color); diff --git a/src/conduits/java/com/enderio/conduits/common/types/RedstoneConduitType.java b/src/conduits/java/com/enderio/conduits/common/types/redstone/RedstoneConduitType.java similarity index 68% rename from src/conduits/java/com/enderio/conduits/common/types/RedstoneConduitType.java rename to src/conduits/java/com/enderio/conduits/common/types/redstone/RedstoneConduitType.java index 7081beb0..48ced145 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/RedstoneConduitType.java +++ b/src/conduits/java/com/enderio/conduits/common/types/redstone/RedstoneConduitType.java @@ -1,9 +1,10 @@ -package com.enderio.conduits.common.types; +package com.enderio.conduits.common.types.redstone; import com.enderio.EnderIO; -import com.enderio.api.conduit.IConduitMenuData; +import com.enderio.api.conduit.ConduitMenuData; import com.enderio.api.misc.Vector2i; -import com.enderio.conduits.common.init.EnderConduitTypes; +import com.enderio.conduits.common.init.ConduitTypes; +import com.enderio.conduits.common.types.SimpleConduitType; import net.minecraft.resources.ResourceLocation; public class RedstoneConduitType extends SimpleConduitType { @@ -12,7 +13,7 @@ public class RedstoneConduitType extends SimpleConduitType private static final ResourceLocation INACTIVE = EnderIO.loc("block/conduit/redstone"); public RedstoneConduitType() { - super(INACTIVE, new RedstoneConduitTicker(), RedstoneExtendedData::new, EnderConduitTypes.ICON_TEXTURE, Vector2i.ZERO, IConduitMenuData.REDSTONE); + super(INACTIVE, new RedstoneConduitTicker(), RedstoneExtendedData::new, ConduitTypes.ICON_TEXTURE, Vector2i.ZERO, ConduitMenuData.REDSTONE); } @Override diff --git a/src/conduits/java/com/enderio/conduits/common/types/RedstoneExtendedData.java b/src/conduits/java/com/enderio/conduits/common/types/redstone/RedstoneExtendedData.java similarity index 92% rename from src/conduits/java/com/enderio/conduits/common/types/RedstoneExtendedData.java rename to src/conduits/java/com/enderio/conduits/common/types/redstone/RedstoneExtendedData.java index 322851ea..f30d6b90 100644 --- a/src/conduits/java/com/enderio/conduits/common/types/RedstoneExtendedData.java +++ b/src/conduits/java/com/enderio/conduits/common/types/redstone/RedstoneExtendedData.java @@ -1,6 +1,6 @@ -package com.enderio.conduits.common.types; +package com.enderio.conduits.common.types.redstone; -import com.enderio.api.conduit.IExtendedConduitData; +import com.enderio.api.conduit.ExtendedConduitData; import com.enderio.api.misc.ColorControl; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.IntTag; @@ -10,7 +10,7 @@ import java.util.ArrayList; import java.util.List; -public class RedstoneExtendedData implements IExtendedConduitData { +public class RedstoneExtendedData implements ExtendedConduitData { private boolean isActive = false; private final List activeColors = new ArrayList<>(); @@ -86,4 +86,4 @@ public RedstoneExtendedData deepCopy() { redstoneExtendedData.isActive = isActive; return redstoneExtendedData; } -} \ No newline at end of file +} diff --git a/src/conduits/java/com/enderio/conduits/common/types/redstone/package-info.java b/src/conduits/java/com/enderio/conduits/common/types/redstone/package-info.java new file mode 100644 index 00000000..a0f282d0 --- /dev/null +++ b/src/conduits/java/com/enderio/conduits/common/types/redstone/package-info.java @@ -0,0 +1,4 @@ +@javax.annotation.ParametersAreNonnullByDefault +@net.minecraft.MethodsReturnNonnullByDefault + +package com.enderio.conduits.common.types.redstone; diff --git a/src/core/java/com/enderio/core/client/gui/screen/IEnderScreen.java b/src/core/java/com/enderio/core/client/gui/screen/IEnderScreen.java index 0367ab75..30f9fa7f 100644 --- a/src/core/java/com/enderio/core/client/gui/screen/IEnderScreen.java +++ b/src/core/java/com/enderio/core/client/gui/screen/IEnderScreen.java @@ -1,6 +1,6 @@ package com.enderio.core.client.gui.screen; -import com.enderio.api.misc.IIcon; +import com.enderio.api.misc.Icon; import com.enderio.api.misc.Vector2i; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.gui.GuiGraphics; @@ -15,7 +15,7 @@ default Screen getScreen() { return (Screen) this; } - static void renderIcon(GuiGraphics guiGraphics, Vector2i pos, IIcon icon) { + static void renderIcon(GuiGraphics guiGraphics, Vector2i pos, Icon icon) { if (!icon.shouldRender()) { return; } @@ -33,7 +33,7 @@ default void renderSimpleArea(GuiGraphics guiGraphics, Vector2i pos, Vector2i po guiGraphics.fill(pos.x() + 1, pos.y() + 1, pos2.x() - 1, pos2.y() - 1, 0xFF8B8B8B); } - default void renderIconBackground(GuiGraphics guiGraphics, Vector2i pos, IIcon icon) { + default void renderIconBackground(GuiGraphics guiGraphics, Vector2i pos, Icon icon) { renderSimpleArea(guiGraphics, pos, pos.add(icon.getRenderSize())); } diff --git a/src/core/java/com/enderio/core/client/gui/widgets/EnumIconWidget.java b/src/core/java/com/enderio/core/client/gui/widgets/EnumIconWidget.java index 1a657544..a0e04122 100644 --- a/src/core/java/com/enderio/core/client/gui/widgets/EnumIconWidget.java +++ b/src/core/java/com/enderio/core/client/gui/widgets/EnumIconWidget.java @@ -1,6 +1,6 @@ package com.enderio.core.client.gui.widgets; -import com.enderio.api.misc.IIcon; +import com.enderio.api.misc.Icon; import com.enderio.api.misc.Vector2i; import com.enderio.core.client.gui.screen.IEnderScreen; import com.enderio.core.client.gui.screen.IFullScreenListener; @@ -27,7 +27,7 @@ import java.util.function.Consumer; import java.util.function.Supplier; -public class EnumIconWidget & IIcon, U extends Screen & IEnderScreen> extends AbstractWidget implements IFullScreenListener { +public class EnumIconWidget & Icon, U extends Screen & IEnderScreen> extends AbstractWidget implements IFullScreenListener { private final Supplier getter; private final Consumer setter; diff --git a/src/core/java/com/enderio/core/client/item/IAdvancedTooltipProvider.java b/src/core/java/com/enderio/core/client/item/AdvancedTooltipProvider.java similarity index 96% rename from src/core/java/com/enderio/core/client/item/IAdvancedTooltipProvider.java rename to src/core/java/com/enderio/core/client/item/AdvancedTooltipProvider.java index 3fe21929..4c077d2b 100644 --- a/src/core/java/com/enderio/core/client/item/IAdvancedTooltipProvider.java +++ b/src/core/java/com/enderio/core/client/item/AdvancedTooltipProvider.java @@ -7,7 +7,7 @@ import java.util.List; -public interface IAdvancedTooltipProvider { +public interface AdvancedTooltipProvider { /** * Add tooltips that are always displayed diff --git a/src/core/java/com/enderio/core/common/menu/SyncedMenu.java b/src/core/java/com/enderio/core/common/menu/SyncedMenu.java index 462b3a61..9b4e4ece 100644 --- a/src/core/java/com/enderio/core/common/menu/SyncedMenu.java +++ b/src/core/java/com/enderio/core/common/menu/SyncedMenu.java @@ -47,7 +47,12 @@ public void addInventorySlots(int xPos, int yPos) { // Hotbar for (int x = 0; x < 9; x++) { - Slot ref = new Slot(inventory, x, xPos + x * 18, yPos + 58); + Slot ref = new Slot(inventory, x, xPos + x * 18, yPos + 58) { + @Override + public boolean isActive() { + return playerInvVisible; + } + }; playerInventorySlots.add(ref); this.addSlot(ref); } diff --git a/src/core/java/com/enderio/core/common/util/TagUtil.java b/src/core/java/com/enderio/core/common/util/TagUtil.java index af56d5ef..d695a8b1 100644 --- a/src/core/java/com/enderio/core/common/util/TagUtil.java +++ b/src/core/java/com/enderio/core/common/util/TagUtil.java @@ -28,9 +28,15 @@ public static Optional getOptionalItem(TagKey tagKey) { } ITag tag = ForgeRegistries.ITEMS.tags().getTag(tagKey); + if (tag.isEmpty()) { + return Optional.empty(); + } // Search for an EnderIO item - Optional enderItem = tag.stream().filter(item -> ForgeRegistries.ITEMS.getKey(item).getNamespace().equals(EnderCore.MODID)).findFirst(); + Optional enderItem = tag.stream() + .filter(item -> ForgeRegistries.ITEMS.getKey(item).getNamespace().equals(EnderCore.MODID)) + .findFirst(); + if (enderItem.isPresent()) { return enderItem; } diff --git a/src/generated/resources/assets/enderio/lang/en_ud.json b/src/generated/resources/assets/enderio/lang/en_ud.json index 71a89b3c..f46d6213 100644 --- a/src/generated/resources/assets/enderio/lang/en_ud.json +++ b/src/generated/resources/assets/enderio/lang/en_ud.json @@ -407,6 +407,25 @@ "item.enderio.liquid_sunshine_bucket": "ʇǝʞɔnᗺ ǝuıɥsunS pınbıꞀ", "item.enderio.location_printout": "ʇnoʇuıɹԀ uoıʇɐɔoꞀ", "item.enderio.loot_capacitor": "ɹoʇıɔɐdɐƆ ʇooꞀ", + "item.enderio.loot_capacitor_burning_energy_generation": "ʇoH", + "item.enderio.loot_capacitor_dud": "pnᗡ ɹoʇıɔɐdɐƆ", + "item.enderio.loot_capacitor_energy_capacity": "ǝןqɐıʇɐsuI", + "item.enderio.loot_capacitor_energy_use": "ʎɹbunH", + "item.enderio.loot_capacitor_enhanced": "ɹoʇıɔɐdɐƆ pǝɔuɐɥuƎ", + "item.enderio.loot_capacitor_fuel_efficiency": "ʇuǝıɔıɟɟƎ", + "item.enderio.loot_capacitor_impossible": "ɹoʇıɔɐdɐƆ ǝןqıssodɯI", + "item.enderio.loot_capacitor_modifier_enhanced": "pǝɔuɐɥuƎ", + "item.enderio.loot_capacitor_modifier_failed": "pǝןıɐℲ", + "item.enderio.loot_capacitor_modifier_good": "poo⅁", + "item.enderio.loot_capacitor_modifier_incredibly": "ʎןqıpǝɹɔuI", + "item.enderio.loot_capacitor_modifier_nice": "ǝɔıN", + "item.enderio.loot_capacitor_modifier_premium": "ɯnıɯǝɹԀ", + "item.enderio.loot_capacitor_modifier_simple": "ǝןdɯıS", + "item.enderio.loot_capacitor_modifier_unstable": "ǝןqɐʇsu∩", + "item.enderio.loot_capacitor_normal": "ɹoʇıɔɐdɐƆ", + "item.enderio.loot_capacitor_template": "%s %s %s", + "item.enderio.loot_capacitor_unknown": "ʎɹǝʇsʎW", + "item.enderio.loot_capacitor_wonder": "ɹoʇıɔɐdɐƆ ɹǝpuoM", "item.enderio.me_conduit": "ʇınpuoƆ ƎW", "item.enderio.monster_token": "uǝʞo⟘ ɹǝʇsuoW", "item.enderio.nethercotta": "ɐʇʇoɔɹǝɥʇǝN", @@ -494,8 +513,10 @@ "message.enderio.soul_vial.error_player": "¡ǝןʇʇoq ɐ uı ɹǝʎɐןd ʇnd ʇouuɐɔ noʎ", "tooltip.enderio.block.blast_resistant": "ʇuɐʇsısǝɹ ʇsɐןᗺ", "tooltip.enderio.capacitor.base": "%s :ɹǝıɟıpoW ǝsɐᗺ", + "tooltip.enderio.capacitor.burning_energy_generation": "%s :ɹǝıɟıpoW uoıʇɐɹǝuǝ⅁ ʎbɹǝuƎ buıuɹnᗺ", "tooltip.enderio.capacitor.energy_capacity": "%s :ɹǝıɟıpoW ʎʇıɔɐdɐƆ ʎbɹǝuƎ", "tooltip.enderio.capacitor.energy_use": "%s :ɹǝıɟıpoW ǝs∩ ʎbɹǝuƎ", + "tooltip.enderio.capacitor.fuel_efficiency": "%s :ɹǝıɟıpoW ʎɔuǝıɔıɟɟƎ ןǝnℲ", "tooltip.enderio.collision.animals_block": "sןɐɯıuɐ oʇ pıןos ʎןuO", "tooltip.enderio.collision.animals_pass": "sןɐɯıuɐ oʇ pıןos ʇoN", "tooltip.enderio.collision.mobs_block": "sɹǝʇsuoɯ oʇ pıןos ʎןuO", diff --git a/src/generated/resources/assets/enderio/lang/en_us.json b/src/generated/resources/assets/enderio/lang/en_us.json index 8d693560..d3aca978 100644 --- a/src/generated/resources/assets/enderio/lang/en_us.json +++ b/src/generated/resources/assets/enderio/lang/en_us.json @@ -407,6 +407,25 @@ "item.enderio.liquid_sunshine_bucket": "Liquid Sunshine Bucket", "item.enderio.location_printout": "Location Printout", "item.enderio.loot_capacitor": "Loot Capacitor", + "item.enderio.loot_capacitor_burning_energy_generation": "Hot", + "item.enderio.loot_capacitor_dud": "Capacitor Dud", + "item.enderio.loot_capacitor_energy_capacity": "Insatiable", + "item.enderio.loot_capacitor_energy_use": "Hungry", + "item.enderio.loot_capacitor_enhanced": "Enhanced Capacitor", + "item.enderio.loot_capacitor_fuel_efficiency": "Efficient", + "item.enderio.loot_capacitor_impossible": "Impossible Capacitor", + "item.enderio.loot_capacitor_modifier_enhanced": "Enhanced", + "item.enderio.loot_capacitor_modifier_failed": "Failed", + "item.enderio.loot_capacitor_modifier_good": "Good", + "item.enderio.loot_capacitor_modifier_incredibly": "Incredibly", + "item.enderio.loot_capacitor_modifier_nice": "Nice", + "item.enderio.loot_capacitor_modifier_premium": "Premium", + "item.enderio.loot_capacitor_modifier_simple": "Simple", + "item.enderio.loot_capacitor_modifier_unstable": "Unstable", + "item.enderio.loot_capacitor_normal": "Capacitor", + "item.enderio.loot_capacitor_template": "%s %s %s", + "item.enderio.loot_capacitor_unknown": "Mystery", + "item.enderio.loot_capacitor_wonder": "Wonder Capacitor", "item.enderio.me_conduit": "ME Conduit", "item.enderio.monster_token": "Monster Token", "item.enderio.nethercotta": "Nethercotta", @@ -494,8 +513,10 @@ "message.enderio.soul_vial.error_player": "You cannot put player in a bottle!", "tooltip.enderio.block.blast_resistant": "Blast resistant", "tooltip.enderio.capacitor.base": "Base Modifier: %s", + "tooltip.enderio.capacitor.burning_energy_generation": "Burning Energy Generation Modifier: %s", "tooltip.enderio.capacitor.energy_capacity": "Energy Capacity Modifier: %s", "tooltip.enderio.capacitor.energy_use": "Energy Use Modifier: %s", + "tooltip.enderio.capacitor.fuel_efficiency": "Fuel Efficiency Modifier: %s", "tooltip.enderio.collision.animals_block": "Only solid to animals", "tooltip.enderio.collision.animals_pass": "Not solid to animals", "tooltip.enderio.collision.mobs_block": "Only solid to monsters", diff --git a/src/machines/java/com/enderio/machines/client/gui/screen/SagMillScreen.java b/src/machines/java/com/enderio/machines/client/gui/screen/SagMillScreen.java index 83a91199..42ba2516 100644 --- a/src/machines/java/com/enderio/machines/client/gui/screen/SagMillScreen.java +++ b/src/machines/java/com/enderio/machines/client/gui/screen/SagMillScreen.java @@ -1,7 +1,7 @@ package com.enderio.machines.client.gui.screen; import com.enderio.EnderIO; -import com.enderio.api.grindingball.IGrindingBallData; +import com.enderio.api.grindingball.GrindingBallData; import com.enderio.api.misc.Vector2i; import com.enderio.base.common.lang.EIOLang; import com.enderio.core.client.gui.widgets.EnumIconWidget; @@ -83,7 +83,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) { public void updateWidgetNarration(NarrationElementOutput narrationElementOutput) {} @Nullable - private IGrindingBallData tooltipDataCache; + private GrindingBallData tooltipDataCache; private float tooltipDuraCache; @Override @@ -94,7 +94,7 @@ public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float } float durability = be.getGrindingBallDamage(); - IGrindingBallData data = be.getGrindingBallData(); + GrindingBallData data = be.getGrindingBallData(); int yOffset = (int) Math.ceil(this.height * (1.0f - durability)); int height = (int) Math.ceil(this.height * durability); diff --git a/src/machines/java/com/enderio/machines/client/gui/widget/ioconfig/IOConfigWidget.java b/src/machines/java/com/enderio/machines/client/gui/widget/ioconfig/IOConfigWidget.java index 42e18c96..1d60b873 100644 --- a/src/machines/java/com/enderio/machines/client/gui/widget/ioconfig/IOConfigWidget.java +++ b/src/machines/java/com/enderio/machines/client/gui/widget/ioconfig/IOConfigWidget.java @@ -184,7 +184,7 @@ public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { var selectedFace = selection.get(); BlockEntity entity = MINECRAFT.level.getBlockEntity(selectedFace.blockPos); if (entity instanceof MachineBlockEntity machine) { - machine.getIOConfig().cycleMode(selectedFace.side); + machine.getIOConfig().cycleIOMode(selectedFace.side); this.playDownSound(Minecraft.getInstance().getSoundManager()); return true; } @@ -381,7 +381,7 @@ private void renderOverlay(GuiGraphics guiGraphics) { var selectedFace = selection.get(); BlockEntity entity = MINECRAFT.level.getBlockEntity(selectedFace.blockPos); if (entity instanceof MachineBlockEntity machine) { - var ioMode = machine.getIOConfig().getMode(selectedFace.side); + var ioMode = machine.getIOConfig().getIOMode(selectedFace.side); IOModeMap map = IOModeMap.getMapFromMode(ioMode); Rect2i iconBounds = map.getRect(); guiGraphics.blit(IOConfigButton.IOCONFIG, getX() + 4, getY() + height - 4 - screenFont.lineHeight - iconBounds.getHeight(), iconBounds.getX(), iconBounds.getY(), diff --git a/src/machines/java/com/enderio/machines/client/rendering/model/IOOverlayBakedModel.java b/src/machines/java/com/enderio/machines/client/rendering/model/IOOverlayBakedModel.java index 531f830b..5882484e 100644 --- a/src/machines/java/com/enderio/machines/client/rendering/model/IOOverlayBakedModel.java +++ b/src/machines/java/com/enderio/machines/client/rendering/model/IOOverlayBakedModel.java @@ -79,7 +79,7 @@ public List getQuads(@Nullable BlockState state, @Nullable Direction // Get all states for each direction. If its not "None" then we render an overlay quad. for (Direction dir : Direction.values()) { - IOMode mode = config.getMode(dir); + IOMode mode = config.getIOMode(dir); if (mode != IOMode.NONE) { Vec3[] verts = QUADS.get(dir); quads.add(ModelRenderUtil.createQuad(verts, getTexture(mode))); diff --git a/src/machines/java/com/enderio/machines/common/block/CapacitorBankBlock.java b/src/machines/java/com/enderio/machines/common/block/CapacitorBankBlock.java index 4a96858e..36cd7250 100644 --- a/src/machines/java/com/enderio/machines/common/block/CapacitorBankBlock.java +++ b/src/machines/java/com/enderio/machines/common/block/CapacitorBankBlock.java @@ -2,7 +2,7 @@ import com.enderio.EnderIO; import com.enderio.base.common.lang.EIOLang; -import com.enderio.core.client.item.IAdvancedTooltipProvider; +import com.enderio.core.client.item.AdvancedTooltipProvider; import com.enderio.core.common.util.EnergyUtil; import com.enderio.core.common.util.TooltipUtil; import com.enderio.machines.common.blockentity.base.MachineBlockEntity; @@ -35,7 +35,7 @@ import java.util.List; @Mod.EventBusSubscriber -public class CapacitorBankBlock extends MachineBlock implements IAdvancedTooltipProvider { +public class CapacitorBankBlock extends MachineBlock implements AdvancedTooltipProvider { public ICapacityTier getTier() { return tier; diff --git a/src/machines/java/com/enderio/machines/common/block/SolarPanelBlock.java b/src/machines/java/com/enderio/machines/common/block/SolarPanelBlock.java index 70eee9bc..dd911044 100644 --- a/src/machines/java/com/enderio/machines/common/block/SolarPanelBlock.java +++ b/src/machines/java/com/enderio/machines/common/block/SolarPanelBlock.java @@ -1,7 +1,7 @@ package com.enderio.machines.common.block; import com.enderio.base.common.lang.EIOLang; -import com.enderio.core.client.item.IAdvancedTooltipProvider; +import com.enderio.core.client.item.AdvancedTooltipProvider; import com.enderio.core.common.util.TooltipUtil; import com.enderio.machines.common.blockentity.base.MachineBlockEntity; import com.enderio.machines.common.blockentity.solar.ISolarPanelTier; @@ -24,7 +24,7 @@ import java.util.List; -public class SolarPanelBlock extends MachineBlock implements IAdvancedTooltipProvider { +public class SolarPanelBlock extends MachineBlock implements AdvancedTooltipProvider { public static final BooleanProperty NORTH = BooleanProperty.create("north"); public static final BooleanProperty NORTH_EAST = BooleanProperty.create("north_east"); diff --git a/src/machines/java/com/enderio/machines/common/blockentity/AlloySmelterMode.java b/src/machines/java/com/enderio/machines/common/blockentity/AlloySmelterMode.java index 654bdce0..396ea1a3 100644 --- a/src/machines/java/com/enderio/machines/common/blockentity/AlloySmelterMode.java +++ b/src/machines/java/com/enderio/machines/common/blockentity/AlloySmelterMode.java @@ -1,7 +1,7 @@ package com.enderio.machines.common.blockentity; import com.enderio.EnderIO; -import com.enderio.api.misc.IIcon; +import com.enderio.api.misc.Icon; import com.enderio.api.misc.Vector2i; import com.enderio.machines.common.lang.MachineLang; import net.minecraft.network.chat.Component; @@ -11,7 +11,7 @@ * Alloy smelter mode. * Also provides icon behaviours for GUI. */ -public enum AlloySmelterMode implements IIcon { +public enum AlloySmelterMode implements Icon { /** * Furnace mode, only performs smelting recipes. */ diff --git a/src/machines/java/com/enderio/machines/common/blockentity/MachineState.java b/src/machines/java/com/enderio/machines/common/blockentity/MachineState.java index 961845fc..94773c00 100644 --- a/src/machines/java/com/enderio/machines/common/blockentity/MachineState.java +++ b/src/machines/java/com/enderio/machines/common/blockentity/MachineState.java @@ -1,5 +1,6 @@ package com.enderio.machines.common.blockentity; +import com.enderio.base.common.lang.EIOLang; import com.enderio.machines.common.lang.MachineLang; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; @@ -17,7 +18,7 @@ public record MachineState(MachineStateType type, MutableComponent component) { public static final MachineState NO_POWER = new MachineState(MachineStateType.ERROR, MachineLang.TOOLTIP_NO_POWER); public static final MachineState FULL_POWER = new MachineState(MachineStateType.ERROR, MachineLang.TOOLTIP_FULL_POWER); public static final MachineState NO_CAPACITOR = new MachineState(MachineStateType.ERROR, MachineLang.TOOLTIP_NO_CAPACITOR); - public static final MachineState NOT_SOULBOUND = new MachineState(MachineStateType.ERROR, MachineLang.TOOLTIP_NO_SOULBOUND); + public static final MachineState NOT_SOULBOUND = new MachineState(MachineStateType.ERROR, EIOLang.TOOLTIP_NO_SOULBOUND); public static final MachineState FULL_OUTPUT = new MachineState(MachineStateType.ERROR, MachineLang.TOOLTIP_OUTPUT_FULL); public static final MachineState REDSTONE = new MachineState(MachineStateType.DISABLED, MachineLang.TOOLTIP_BLOCKED_RESTONE); diff --git a/src/machines/java/com/enderio/machines/common/blockentity/SagMillBlockEntity.java b/src/machines/java/com/enderio/machines/common/blockentity/SagMillBlockEntity.java index 7a613f77..42993247 100644 --- a/src/machines/java/com/enderio/machines/common/blockentity/SagMillBlockEntity.java +++ b/src/machines/java/com/enderio/machines/common/blockentity/SagMillBlockEntity.java @@ -2,7 +2,7 @@ import com.enderio.api.capacitor.CapacitorModifier; import com.enderio.api.capacitor.QuadraticScalable; -import com.enderio.api.grindingball.IGrindingBallData; +import com.enderio.api.grindingball.GrindingBallData; import com.enderio.api.io.energy.EnergyIOMode; import com.enderio.base.common.util.GrindingBallManager; import com.enderio.core.common.network.slot.IntegerNetworkDataSlot; @@ -41,7 +41,7 @@ public class SagMillBlockEntity extends PoweredMachineBlockEntity { public static final SingleSlotAccess GRINDING_BALL = new SingleSlotAccess(); public static final MultiSlotAccess OUTPUT = new MultiSlotAccess(); - private IGrindingBallData grindingBallData = IGrindingBallData.IDENTITY; + private GrindingBallData grindingBallData = GrindingBallData.IDENTITY; @Nullable private ResourceLocation pendingGrindingBallId; private int grindingBallDamage; @@ -59,11 +59,11 @@ public SagMillBlockEntity(BlockEntityType type, BlockPos worldPosition, new SagMillingRecipe.Container(getInventoryNN(), this::getGrindingBallData), this::createTask); } - public IGrindingBallData getGrindingBallData() { + public GrindingBallData getGrindingBallData() { return grindingBallData; } - public void setGrindingBallData(IGrindingBallData data) { + public void setGrindingBallData(GrindingBallData data) { grindingBallDamage = 0; grindingBallData = data; } @@ -144,12 +144,12 @@ protected void consumeInputs(SagMillingRecipe recipe) { INPUT.getItemStack(inv).shrink(1); // Claim any available grinding balls. - if (recipe.getBonusType().useGrindingBall() && grindingBallData == IGrindingBallData.IDENTITY) { + if (recipe.getBonusType().useGrindingBall() && grindingBallData == GrindingBallData.IDENTITY) { ItemStack ball = GRINDING_BALL.getItemStack(inv); if (!ball.isEmpty()) { - IGrindingBallData data = GrindingBallManager.getData(ball); + GrindingBallData data = GrindingBallManager.getData(ball); setGrindingBallData(data); - if (data != IGrindingBallData.IDENTITY) { + if (data != GrindingBallData.IDENTITY) { ball.shrink(1); } } @@ -166,7 +166,7 @@ protected int makeProgress(int remainingProgress) { // If its broken, go back to identity. if (grindingBallDamage >= grindingBallData.getDurability()) { - setGrindingBallData(IGrindingBallData.IDENTITY); + setGrindingBallData(GrindingBallData.IDENTITY); } } @@ -188,7 +188,7 @@ protected int makeProgress(int remainingProgress) { public void saveAdditional(CompoundTag pTag) { super.saveAdditional(pTag); craftingTaskHost.save(pTag); - if (grindingBallData != IGrindingBallData.IDENTITY) { + if (grindingBallData != GrindingBallData.IDENTITY) { pTag.putString(KEY_GRINDING_BALL_ID, grindingBallData.getGrindingBallId().toString()); pTag.putInt(KEY_GRINDING_BALL_DAMAGE, grindingBallDamage); } diff --git a/src/machines/java/com/enderio/machines/common/blockentity/StirlingGeneratorBlockEntity.java b/src/machines/java/com/enderio/machines/common/blockentity/StirlingGeneratorBlockEntity.java index d8825644..4fe1754d 100644 --- a/src/machines/java/com/enderio/machines/common/blockentity/StirlingGeneratorBlockEntity.java +++ b/src/machines/java/com/enderio/machines/common/blockentity/StirlingGeneratorBlockEntity.java @@ -5,6 +5,7 @@ import com.enderio.api.capacitor.FixedScalable; import com.enderio.api.capacitor.LinearScalable; import com.enderio.api.capacitor.QuadraticScalable; +import com.enderio.api.capacitor.SteppedScalable; import com.enderio.api.io.energy.EnergyIOMode; import com.enderio.core.common.network.slot.FloatNetworkDataSlot; import com.enderio.machines.common.blockentity.base.PoweredMachineBlockEntity; @@ -34,8 +35,14 @@ public class StirlingGeneratorBlockEntity extends PoweredMachineBlockEntity { public static final QuadraticScalable CAPACITY = new QuadraticScalable(CapacitorModifier.ENERGY_CAPACITY, MachinesConfig.COMMON.ENERGY.STIRLING_GENERATOR_CAPACITY); // TODO: Capacitor modifiers for efficiency and output rates. - public static final LinearScalable BURN_SPEED = new LinearScalable(CapacitorModifier.FIXED, () -> 1); - public static final LinearScalable GENERATION_SPEED = new LinearScalable(CapacitorModifier.FIXED, MachinesConfig.COMMON.ENERGY.STIRLING_GENERATOR_PRODUCTION); + public static final SteppedScalable FUEL_EFFICIENCY = new SteppedScalable( + CapacitorModifier.FUEL_EFFICIENCY, + MachinesConfig.COMMON.ENERGY.STIRLING_GENERATOR_FUEL_EFFICIENCY_BASE, + MachinesConfig.COMMON.ENERGY.STIRLING_GENERATOR_FUEL_EFFICIENCY_STEP); + + public static final LinearScalable GENERATION_SPEED = new LinearScalable( + CapacitorModifier.BURNING_ENERGY_GENERATION, + MachinesConfig.COMMON.ENERGY.STIRLING_GENERATOR_PRODUCTION); public static final SingleSlotAccess FUEL = new SingleSlotAccess(); @@ -51,10 +58,6 @@ public StirlingGeneratorBlockEntity(BlockEntityType type, BlockPos worldPosit addDataSlot(new FloatNetworkDataSlot(this::getBurnProgress, p -> clientBurnProgress = p)); } - private int getBurnPerTick() { - return Math.max(1, BURN_SPEED.scaleI(this::getCapacitorData).get()); - } - public int getGenerationRate() { return GENERATION_SPEED.scaleI(this::getCapacitorData).get(); } @@ -72,7 +75,7 @@ public MachineInventoryLayout getInventoryLayout() { public void serverTick() { // We ignore redstone control here. if (isGenerating()) { - burnTime -= getBurnPerTick(); + burnTime--; if (!requiresCapacitor() || isCapacitorInstalled()) { energyStorage.addEnergy(getGenerationRate()); @@ -89,7 +92,10 @@ public void serverTick() { int burningTime = ForgeHooks.getBurnTime(fuel, RecipeType.SMELTING); if (burningTime > 0) { - burnTime = (int) Math.floor(burningTime * MachinesConfig.COMMON.ENERGY.STIRLING_GENERATOR_BURN_SPEED.get()); + float burnSpeed = MachinesConfig.COMMON.ENERGY.STIRLING_GENERATOR_BURN_SPEED.get().floatValue(); + float efficiency = FUEL_EFFICIENCY.scaleF(this::getCapacitorData).get() / 100.0f; + + burnTime = (int) Math.floor(burningTime * burnSpeed * efficiency); burnDuration = burnTime; // Remove the fuel @@ -116,7 +122,7 @@ public boolean isGenerating() { } public float getBurnProgress() { - if (level.isClientSide) { + if (level != null && level.isClientSide) { return clientBurnProgress; } diff --git a/src/machines/java/com/enderio/machines/common/blockentity/base/MachineBlockEntity.java b/src/machines/java/com/enderio/machines/common/blockentity/base/MachineBlockEntity.java index 5ea87ed3..04622378 100644 --- a/src/machines/java/com/enderio/machines/common/blockentity/base/MachineBlockEntity.java +++ b/src/machines/java/com/enderio/machines/common/blockentity/base/MachineBlockEntity.java @@ -1,7 +1,7 @@ package com.enderio.machines.common.blockentity.base; import com.enderio.api.UseOnly; -import com.enderio.api.capability.ISideConfig; +import com.enderio.api.capability.SideConfig; import com.enderio.api.io.IIOConfig; import com.enderio.api.io.IOMode; import com.enderio.api.misc.RedstoneControl; @@ -209,8 +209,8 @@ protected Direction getBlockFacing() { } @Override - public boolean supportsMode(Direction side, IOMode mode) { - return supportsIOMode(side, mode); + public boolean supportsIOMode(Direction side, IOMode mode) { + return machineSupportsIOMode(side, mode); } }; } @@ -232,7 +232,7 @@ public final IIOConfig getIOConfig() { * Override to declare custom constraints on IOMode's for sides of blocks. */ @SuppressWarnings("unused") - protected boolean supportsIOMode(Direction side, IOMode mode) { + protected boolean machineSupportsIOMode(Direction side, IOMode mode) { return true; } @@ -475,7 +475,7 @@ public boolean canActSlow() { */ private void forceResources() { for (Direction direction : Direction.values()) { - if (ioConfig.getMode(direction).canForce()) { + if (ioConfig.getIOMode(direction).canForce()) { // TODO: Maybe some kind of resource distributor so that items are transmitted evenly around? rather than taking the order of Direction.values() moveItems(direction); moveFluids(direction); @@ -494,7 +494,7 @@ private void moveItems(Direction side) { if (otherHandler.isPresent()) { // Get side config - IOMode mode = ioConfig.getMode(side); + IOMode mode = ioConfig.getIOMode(side); // Output items to the other provider if enabled. if (mode.canPush()) { @@ -538,7 +538,7 @@ private void moveFluids(Direction side) { if (otherHandler.isPresent()) { // Get side config - IOMode mode = ioConfig.getMode(side); + IOMode mode = ioConfig.getIOMode(side); // Test if we have fluid. FluidStack stack = selfHandler.drain(100, FluidAction.SIMULATE); @@ -748,10 +748,10 @@ public InteractionResult onWrenched(@Nullable Player player, @Nullable Direction return InteractionResult.CONSUME; } else { // Check for side config capability - LazyOptional optSideConfig = getCapability(EIOCapabilities.SIDE_CONFIG, side); + LazyOptional optSideConfig = getCapability(EIOCapabilities.SIDE_CONFIG, side); if (optSideConfig.isPresent()) { // Cycle state. - optSideConfig.ifPresent(ISideConfig::cycleMode); + optSideConfig.ifPresent(SideConfig::cycleMode); return InteractionResult.CONSUME; } } diff --git a/src/machines/java/com/enderio/machines/common/blockentity/base/PoweredMachineBlockEntity.java b/src/machines/java/com/enderio/machines/common/blockentity/base/PoweredMachineBlockEntity.java index e884395f..2824fb90 100644 --- a/src/machines/java/com/enderio/machines/common/blockentity/base/PoweredMachineBlockEntity.java +++ b/src/machines/java/com/enderio/machines/common/blockentity/base/PoweredMachineBlockEntity.java @@ -1,12 +1,12 @@ package com.enderio.machines.common.blockentity.base; -import com.enderio.api.capacitor.ICapacitorData; -import com.enderio.api.capacitor.ICapacitorScalable; +import com.enderio.api.capacitor.CapacitorData; +import com.enderio.api.capacitor.CapacitorScalable; import com.enderio.api.io.energy.EnergyIOMode; -import com.enderio.base.common.blockentity.IMachineInstall; +import com.enderio.base.common.blockentity.MachineInstallable; import com.enderio.base.common.capacitor.CapacitorUtil; import com.enderio.base.common.capacitor.DefaultCapacitorData; -import com.enderio.base.common.item.capacitors.BaseCapacitorItem; +import com.enderio.base.common.item.capacitors.CapacitorItem; import com.enderio.core.common.network.slot.NetworkDataSlot; import com.enderio.machines.common.MachineNBTKeys; import com.enderio.machines.common.block.ProgressMachineBlock; @@ -37,7 +37,7 @@ /** * A machine that stores energy. */ -public abstract class PoweredMachineBlockEntity extends MachineBlockEntity implements IMachineInstall { +public abstract class PoweredMachineBlockEntity extends MachineBlockEntity implements MachineInstallable { /** * The energy storage medium for the block entity. * This will be a mutable energy storage. @@ -51,11 +51,11 @@ public abstract class PoweredMachineBlockEntity extends MachineBlockEntity imple */ protected IMachineEnergyStorage clientEnergyStorage = ImmutableMachineEnergyStorage.EMPTY; - private ICapacitorData cachedCapacitorData = DefaultCapacitorData.NONE; + private CapacitorData cachedCapacitorData = DefaultCapacitorData.NONE; private boolean capacitorCacheDirty; private boolean updateModel = false; - public PoweredMachineBlockEntity(EnergyIOMode energyIOMode, ICapacitorScalable capacity, ICapacitorScalable usageRate, BlockEntityType type, BlockPos worldPosition, BlockState blockState) { + public PoweredMachineBlockEntity(EnergyIOMode energyIOMode, CapacitorScalable capacity, CapacitorScalable usageRate, BlockEntityType type, BlockPos worldPosition, BlockState blockState) { super(type, worldPosition, blockState); // Create energy storage @@ -229,7 +229,7 @@ protected void onContentsChanged() { */ @Override public InteractionResult tryItemInstall(ItemStack stack, UseOnContext context) { - if (stack.getItem() instanceof BaseCapacitorItem && requiresCapacitor() && !isCapacitorInstalled()) { + if (stack.getItem() instanceof CapacitorItem && requiresCapacitor() && !isCapacitorInstalled()) { MachineInventory inventory = getInventory(); MachineInventoryLayout layout = getInventoryLayout(); if (inventory != null && layout != null) { @@ -291,7 +291,7 @@ public ItemStack getCapacitorItem() { /** * Get the capacitor data for the machine. */ - public ICapacitorData getCapacitorData() { + public CapacitorData getCapacitorData() { if (capacitorCacheDirty) { cacheCapacitorData(); } diff --git a/src/machines/java/com/enderio/machines/common/blockentity/solar/SolarPanelBlockEntity.java b/src/machines/java/com/enderio/machines/common/blockentity/solar/SolarPanelBlockEntity.java index 78ad3dfb..0c184ab8 100644 --- a/src/machines/java/com/enderio/machines/common/blockentity/solar/SolarPanelBlockEntity.java +++ b/src/machines/java/com/enderio/machines/common/blockentity/solar/SolarPanelBlockEntity.java @@ -160,4 +160,4 @@ protected IIOConfig createIOConfig() { public boolean canOpenMenu() { return false; } -} \ No newline at end of file +} diff --git a/src/machines/java/com/enderio/machines/common/config/common/EnergyConfig.java b/src/machines/java/com/enderio/machines/common/config/common/EnergyConfig.java index 9254c7ce..c007397c 100644 --- a/src/machines/java/com/enderio/machines/common/config/common/EnergyConfig.java +++ b/src/machines/java/com/enderio/machines/common/config/common/EnergyConfig.java @@ -21,6 +21,8 @@ public class EnergyConfig { public final ForgeConfigSpec.ConfigValue SOUL_BINDER_USAGE; public final ForgeConfigSpec.ConfigValue STIRLING_GENERATOR_CAPACITY; public final ForgeConfigSpec.ConfigValue STIRLING_GENERATOR_BURN_SPEED; + public final ForgeConfigSpec.ConfigValue STIRLING_GENERATOR_FUEL_EFFICIENCY_BASE; + public final ForgeConfigSpec.ConfigValue STIRLING_GENERATOR_FUEL_EFFICIENCY_STEP; public final ForgeConfigSpec.ConfigValue STIRLING_GENERATOR_PRODUCTION; public final ForgeConfigSpec.ConfigValue PAINTING_MACHINE_CAPACITY; public final ForgeConfigSpec.ConfigValue PAINTING_MACHINE_USAGE; @@ -89,6 +91,8 @@ public EnergyConfig(ForgeConfigSpec.Builder builder) { builder.push("stirlingGenerator"); STIRLING_GENERATOR_CAPACITY = builder.comment("The base energy capacity in uI.").defineInRange("capacity", 64_000, 1, Integer.MAX_VALUE); STIRLING_GENERATOR_BURN_SPEED = builder.comment("The base number of 'burn ticks' performed per machine tick.").defineInRange("burnSpeed", 0.375d, 0.001d, Double.MAX_VALUE); + STIRLING_GENERATOR_FUEL_EFFICIENCY_BASE = builder.comment("The base percentage efficiency, used to determine burn times.").defineInRange("fuelEfficiencyBase", 80, 1, 200); + STIRLING_GENERATOR_FUEL_EFFICIENCY_STEP = builder.comment("The efficiency increase per capacitor level.").defineInRange("fuelEfficiencyStep", 20, 1, 200); STIRLING_GENERATOR_PRODUCTION = builder.comment("The base amount of energy produced in uI/t.").defineInRange("generation", 40, 1, Integer.MAX_VALUE); builder.pop(); diff --git a/src/machines/java/com/enderio/machines/common/integrations/jei/category/SagMillCategory.java b/src/machines/java/com/enderio/machines/common/integrations/jei/category/SagMillCategory.java index 3cc16246..19284006 100644 --- a/src/machines/java/com/enderio/machines/common/integrations/jei/category/SagMillCategory.java +++ b/src/machines/java/com/enderio/machines/common/integrations/jei/category/SagMillCategory.java @@ -1,7 +1,7 @@ package com.enderio.machines.common.integrations.jei.category; import com.enderio.EnderIO; -import com.enderio.api.grindingball.IGrindingBallData; +import com.enderio.api.grindingball.GrindingBallData; import com.enderio.base.common.lang.EIOLang; import com.enderio.base.common.util.GrindingBallManager; import com.enderio.core.common.util.TooltipUtil; @@ -132,6 +132,6 @@ private Component getEnergyString(SagMillingRecipe recipe, IRecipeSlotsView reci return TooltipUtil.withArgs(EIOLang.ENERGY_AMOUNT, NumberFormat .getIntegerInstance(Locale.ENGLISH) .format(recipe.getEnergyCost( - recipeSlotsView.getSlotViews().get(1).getDisplayedItemStack().map(GrindingBallManager::getData).orElse(IGrindingBallData.IDENTITY)))); + recipeSlotsView.getSlotViews().get(1).getDisplayedItemStack().map(GrindingBallManager::getData).orElse(GrindingBallData.IDENTITY)))); } } diff --git a/src/machines/java/com/enderio/machines/common/integrations/jei/category/SoulBindingCategory.java b/src/machines/java/com/enderio/machines/common/integrations/jei/category/SoulBindingCategory.java index 99918be8..9c06ffdf 100644 --- a/src/machines/java/com/enderio/machines/common/integrations/jei/category/SoulBindingCategory.java +++ b/src/machines/java/com/enderio/machines/common/integrations/jei/category/SoulBindingCategory.java @@ -11,7 +11,7 @@ import com.enderio.machines.common.integrations.jei.util.RecipeUtil; import com.enderio.machines.common.lang.MachineLang; import com.enderio.machines.common.recipe.SoulBindingRecipe; -import com.enderio.machines.common.souldata.ISoulData; +import com.enderio.machines.common.souldata.SoulData; import com.enderio.machines.common.souldata.SoulDataReloadListener; import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; import mezz.jei.api.gui.drawable.IDrawable; @@ -101,7 +101,7 @@ public void setRecipe(IRecipeLayoutBuilder builder, SoulBindingRecipe recipe, IF vials.add(item); }); } else { - SoulDataReloadListener soulDataReloadListener = SoulDataReloadListener.fromString(recipe.getSouldata()); + SoulDataReloadListener soulDataReloadListener = SoulDataReloadListener.fromString(recipe.getSouldata()); var allEntitiesOfSoulData = ForgeRegistries.ENTITY_TYPES.getKeys().stream() .filter(r -> soulDataReloadListener.map.containsKey(r)) diff --git a/src/machines/java/com/enderio/machines/common/io/FixedIOConfig.java b/src/machines/java/com/enderio/machines/common/io/FixedIOConfig.java index 4c4766af..e91a1c79 100644 --- a/src/machines/java/com/enderio/machines/common/io/FixedIOConfig.java +++ b/src/machines/java/com/enderio/machines/common/io/FixedIOConfig.java @@ -1,6 +1,6 @@ package com.enderio.machines.common.io; -import com.enderio.api.capability.ISideConfig; +import com.enderio.api.capability.SideConfig; import com.enderio.api.io.IIOConfig; import com.enderio.api.io.IOMode; import com.enderio.base.common.init.EIOCapabilities; @@ -22,18 +22,18 @@ public FixedIOConfig(IOMode mode) { } @Override - public IOMode getMode(Direction side) { + public IOMode getIOMode(Direction side) { return mode; } @Override - public void setMode(Direction side, IOMode mode) {} + public void setIOMode(Direction side, IOMode mode) {} @Override - public void cycleMode(Direction side) {} + public void cycleIOMode(Direction side) {} @Override - public boolean supportsMode(Direction side, IOMode mode) { + public boolean supportsIOMode(Direction side, IOMode mode) { return mode == this.mode; } @@ -54,12 +54,12 @@ public void deserializeNBT(CompoundTag nbt) { } @Override - public Capability getCapabilityType() { + public Capability getCapabilityType() { return EIOCapabilities.SIDE_CONFIG; } @Override - public LazyOptional getCapability(@Nullable Direction side) { + public LazyOptional getCapability(@Nullable Direction side) { return LazyOptional.empty(); } diff --git a/src/machines/java/com/enderio/machines/common/io/IOConfig.java b/src/machines/java/com/enderio/machines/common/io/IOConfig.java index 68bfde4a..425b0de8 100644 --- a/src/machines/java/com/enderio/machines/common/io/IOConfig.java +++ b/src/machines/java/com/enderio/machines/common/io/IOConfig.java @@ -1,12 +1,11 @@ package com.enderio.machines.common.io; -import com.enderio.api.capability.ISideConfig; +import com.enderio.api.capability.SideConfig; import com.enderio.api.io.IIOConfig; import com.enderio.api.io.IOMode; import com.enderio.base.common.init.EIOCapabilities; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.util.LazyOptional; @@ -31,12 +30,12 @@ public IOConfig() { } @Override - public IOMode getMode(Direction side) { + public IOMode getIOMode(Direction side) { return config.get(translateSide(side)); } @Override - public void setMode(Direction side, IOMode mode) { + public void setIOMode(Direction side, IOMode mode) { Direction relSide = translateSide(side); IOMode oldMode = config.get(relSide); config.put(relSide, mode); @@ -44,7 +43,7 @@ public void setMode(Direction side, IOMode mode) { } @Override - public boolean supportsMode(Direction side, IOMode state) { + public boolean supportsIOMode(Direction side, IOMode state) { return true; } @@ -69,14 +68,14 @@ private Direction translateSide(Direction side) { // region Capability Provider @Override - public Capability getCapabilityType() { + public Capability getCapabilityType() { return EIOCapabilities.SIDE_CONFIG; } /** * Get side config as a capability. */ - public LazyOptional getCapability(@Nullable Direction side) { + public LazyOptional getCapability(@Nullable Direction side) { if (side == null) { return LazyOptional.empty(); } @@ -175,20 +174,20 @@ public int hashCode() { // endregion // For providing sided access via a capability. - private record SideAccess(IOConfig config, Direction side) implements ISideConfig { + private record SideAccess(IOConfig config, Direction side) implements SideConfig { @Override public IOMode getMode() { - return config.getMode(side); + return config.getIOMode(side); } @Override public void setMode(IOMode mode) { - config.setMode(side, mode); + config.setIOMode(side, mode); } @Override public void cycleMode() { - config.cycleMode(side); + config.cycleIOMode(side); } } } diff --git a/src/machines/java/com/enderio/machines/common/io/SidedFixedIOConfig.java b/src/machines/java/com/enderio/machines/common/io/SidedFixedIOConfig.java index 5da2a4c4..ec61f732 100644 --- a/src/machines/java/com/enderio/machines/common/io/SidedFixedIOConfig.java +++ b/src/machines/java/com/enderio/machines/common/io/SidedFixedIOConfig.java @@ -1,6 +1,6 @@ package com.enderio.machines.common.io; -import com.enderio.api.capability.ISideConfig; +import com.enderio.api.capability.SideConfig; import com.enderio.api.io.IIOConfig; import com.enderio.api.io.IOMode; import com.enderio.base.common.init.EIOCapabilities; @@ -24,18 +24,18 @@ public SidedFixedIOConfig(Function mode) { } @Override - public IOMode getMode(Direction side) { + public IOMode getIOMode(Direction side) { return mode.apply(side); } @Override - public void setMode(Direction side, IOMode mode) {} + public void setIOMode(Direction side, IOMode mode) {} @Override - public void cycleMode(Direction side) {} + public void cycleIOMode(Direction side) {} @Override - public boolean supportsMode(Direction side, IOMode mode) { + public boolean supportsIOMode(Direction side, IOMode mode) { return mode == this.mode.apply(side); } @@ -56,12 +56,12 @@ public void deserializeNBT(CompoundTag nbt) { } @Override - public Capability getCapabilityType() { + public Capability getCapabilityType() { return EIOCapabilities.SIDE_CONFIG; } @Override - public LazyOptional getCapability(@Nullable Direction side) { + public LazyOptional getCapability(@Nullable Direction side) { return LazyOptional.empty(); } diff --git a/src/machines/java/com/enderio/machines/common/io/energy/MachineEnergyStorage.java b/src/machines/java/com/enderio/machines/common/io/energy/MachineEnergyStorage.java index 15b0a819..78888c13 100644 --- a/src/machines/java/com/enderio/machines/common/io/energy/MachineEnergyStorage.java +++ b/src/machines/java/com/enderio/machines/common/io/energy/MachineEnergyStorage.java @@ -166,7 +166,7 @@ public LazyOptional getCapability(@Nullable Direction side) { return selfCache.cast(); } - if (!config.getMode(side).canConnect()) { + if (!config.getIOMode(side).canConnect()) { return LazyOptional.empty(); } @@ -245,7 +245,7 @@ public int extractEnergy(int maxExtract, boolean simulate) { @Override public boolean canExtract() { - if (wrapped.getIOMode().respectIOConfig() && !wrapped.getConfig().getMode(side).canOutput()) { + if (wrapped.getIOMode().respectIOConfig() && !wrapped.getConfig().getIOMode(side).canOutput()) { return false; } @@ -254,7 +254,7 @@ public boolean canExtract() { @Override public boolean canReceive() { - if (wrapped.getIOMode().respectIOConfig() && !wrapped.getConfig().getMode(side).canInput()) { + if (wrapped.getIOMode().respectIOConfig() && !wrapped.getConfig().getIOMode(side).canInput()) { return false; } diff --git a/src/machines/java/com/enderio/machines/common/io/fluid/MachineFluidHandler.java b/src/machines/java/com/enderio/machines/common/io/fluid/MachineFluidHandler.java index 01b9cc0f..0de89cfc 100644 --- a/src/machines/java/com/enderio/machines/common/io/fluid/MachineFluidHandler.java +++ b/src/machines/java/com/enderio/machines/common/io/fluid/MachineFluidHandler.java @@ -122,7 +122,7 @@ public LazyOptional getCapability(@Nullable Direction side) { return selfCache.cast(); } - if (!config.getMode(side).canConnect()) { + if (!config.getIOMode(side).canConnect()) { return LazyOptional.empty(); } @@ -182,7 +182,7 @@ public boolean isFluidValid(int tank, FluidStack stack) { @Override public int fill(FluidStack resource, FluidAction action) { - if (master.getConfig().getMode(direction).canInput()) { + if (master.getConfig().getIOMode(direction).canInput()) { return master.fill(resource, action); } @@ -191,7 +191,7 @@ public int fill(FluidStack resource, FluidAction action) { @Override public FluidStack drain(FluidStack resource, FluidAction action) { - if (master.getConfig().getMode(direction).canOutput()) { + if (master.getConfig().getIOMode(direction).canOutput()) { return master.drain(resource, action); } @@ -200,7 +200,7 @@ public FluidStack drain(FluidStack resource, FluidAction action) { @Override public FluidStack drain(int maxDrain, FluidAction action) { - if (master.getConfig().getMode(direction).canOutput()) { + if (master.getConfig().getIOMode(direction).canOutput()) { return master.drain(maxDrain, action); } diff --git a/src/machines/java/com/enderio/machines/common/io/item/MachineInventory.java b/src/machines/java/com/enderio/machines/common/io/item/MachineInventory.java index 6c2c9279..56c4461a 100644 --- a/src/machines/java/com/enderio/machines/common/io/item/MachineInventory.java +++ b/src/machines/java/com/enderio/machines/common/io/item/MachineInventory.java @@ -80,7 +80,7 @@ public LazyOptional getCapability(@Nullable Direction side) { return selfCache.cast(); } - if (!config.getMode(side).canConnect()) { + if (!config.getIOMode(side).canConnect()) { return LazyOptional.empty(); } @@ -160,7 +160,7 @@ public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { } // Check we allow input to the block on this side - if (side != null && !master.getConfig().getMode(side).canInput()) { + if (side != null && !master.getConfig().getIOMode(side).canInput()) { return stack; } @@ -175,7 +175,7 @@ public ItemStack extractItem(int slot, int amount, boolean simulate) { } // Check we allow output from the block on this side - if (side != null && !master.getConfig().getMode(side).canOutput()) { + if (side != null && !master.getConfig().getIOMode(side).canOutput()) { return ItemStack.EMPTY; } diff --git a/src/machines/java/com/enderio/machines/common/item/BoundSoulBlockItem.java b/src/machines/java/com/enderio/machines/common/item/BoundSoulBlockItem.java index 3f9e7768..f877bcc5 100644 --- a/src/machines/java/com/enderio/machines/common/item/BoundSoulBlockItem.java +++ b/src/machines/java/com/enderio/machines/common/item/BoundSoulBlockItem.java @@ -4,38 +4,20 @@ import com.enderio.api.capability.MultiCapabilityProvider; import com.enderio.base.common.capability.EntityStorageItemStack; import com.enderio.base.common.init.EIOCapabilities; -import com.enderio.core.client.item.IAdvancedTooltipProvider; -import com.enderio.core.common.util.EntityUtil; -import com.enderio.core.common.util.TooltipUtil; -import com.enderio.machines.common.lang.MachineLang; +import com.enderio.core.client.item.AdvancedTooltipProvider; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.Block; import net.minecraftforge.common.util.LazyOptional; import org.jetbrains.annotations.Nullable; -import java.util.List; - -public class BoundSoulBlockItem extends BlockItem implements IMultiCapabilityItem, IAdvancedTooltipProvider { +public class BoundSoulBlockItem extends BlockItem implements IMultiCapabilityItem, AdvancedTooltipProvider { public BoundSoulBlockItem(Block pBlock, Properties pProperties) { super(pBlock, pProperties); } - @Override - public void addCommonTooltips(ItemStack itemStack, @Nullable Player player, List tooltips) { - itemStack - .getCapability(EIOCapabilities.ENTITY_STORAGE) - .ifPresent(entityStorage -> entityStorage - .getStoredEntityData() - .getEntityType() - .ifPresentOrElse(entityType -> tooltips.add(TooltipUtil.style(Component.translatable(EntityUtil.getEntityDescriptionId(entityType)))), - () -> tooltips.add(TooltipUtil.style(MachineLang.TOOLTIP_NO_SOULBOUND)))); - } - @Override public @Nullable MultiCapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundTag nbt, MultiCapabilityProvider provider) { provider.add(EIOCapabilities.ENTITY_STORAGE, LazyOptional.of(() -> new EntityStorageItemStack(stack))); diff --git a/src/machines/java/com/enderio/machines/common/item/FluidTankItem.java b/src/machines/java/com/enderio/machines/common/item/FluidTankItem.java index f9aaece8..21373976 100644 --- a/src/machines/java/com/enderio/machines/common/item/FluidTankItem.java +++ b/src/machines/java/com/enderio/machines/common/item/FluidTankItem.java @@ -1,7 +1,7 @@ package com.enderio.machines.common.item; import com.enderio.base.common.lang.EIOLang; -import com.enderio.core.client.item.IAdvancedTooltipProvider; +import com.enderio.core.client.item.AdvancedTooltipProvider; import com.enderio.core.common.util.TooltipUtil; import com.enderio.machines.client.rendering.item.FluidTankBEWLR; import com.enderio.machines.common.MachineNBTKeys; @@ -15,6 +15,7 @@ import net.minecraftforge.client.extensions.common.IClientItemExtensions; import net.minecraftforge.common.capabilities.ForgeCapabilities; import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.common.util.Lazy; import net.minecraftforge.common.util.NonNullLazy; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.capability.templates.FluidHandlerItemStack; @@ -25,7 +26,7 @@ import java.util.Optional; import java.util.function.Consumer; -public class FluidTankItem extends BlockItem implements IAdvancedTooltipProvider { +public class FluidTankItem extends BlockItem implements AdvancedTooltipProvider { protected final int capacity; @@ -34,6 +35,10 @@ public FluidTankItem(MachineBlock block, Properties properties, int capacity) { this.capacity = capacity; } + public int getCapacity() { + return capacity; + } + @Override public int getMaxStackSize(ItemStack stack) { return 1;//TODO: when fluid tank entity accepts item stacks of more than 1 in the internalDrain/fill. Remove this method to allow fluid tank items to stack to 64. @@ -43,7 +48,7 @@ public int getMaxStackSize(ItemStack stack) { public void initializeClient(Consumer consumer) { consumer.accept(new IClientItemExtensions() { // Minecraft can be null during datagen - final NonNullLazy renderer = NonNullLazy.of(() -> FluidTankBEWLR.INSTANCE); + final Lazy renderer = Lazy.of(() -> FluidTankBEWLR.INSTANCE); @Override public BlockEntityWithoutLevelRenderer getCustomRenderer() { diff --git a/src/machines/java/com/enderio/machines/common/lang/MachineLang.java b/src/machines/java/com/enderio/machines/common/lang/MachineLang.java index 2955e081..1b698e21 100644 --- a/src/machines/java/com/enderio/machines/common/lang/MachineLang.java +++ b/src/machines/java/com/enderio/machines/common/lang/MachineLang.java @@ -20,7 +20,6 @@ public class MachineLang { public static final Component TOOLTIP_ENERGY_EQUIVALENCE = REGISTRATE.addLang("gui", EnderIO.loc("energy_equivalence"), "A unit of energy, equivalent to FE."); public static final MutableComponent TOOLTIP_SAG_MILL_CHANCE_BALL = REGISTRATE.addLang("gui", EnderIO.loc("sag_mill_chance_ball"), "Chance: %s%% (modified by grinding ball)"); public static final MutableComponent TOOLTIP_SAG_MILL_CHANCE = REGISTRATE.addLang("gui", EnderIO.loc("sag_mill_chance"), "Chance: %s%%"); - public static final MutableComponent TOOLTIP_NO_SOULBOUND = REGISTRATE.addLang("gui", EnderIO.loc("no_soulbound"), "Bind a soul to the item to be able to use it"); public static final MutableComponent TOOLTIP_ACTIVE = REGISTRATE.addLang("gui", EnderIO.loc("active"), "The machine is active"); public static final MutableComponent TOOLTIP_IDLE = REGISTRATE.addLang("gui", EnderIO.loc("idle"), "The machine is ready to work"); diff --git a/src/machines/java/com/enderio/machines/common/recipe/SagMillingRecipe.java b/src/machines/java/com/enderio/machines/common/recipe/SagMillingRecipe.java index 7b10c78c..611bbd6f 100644 --- a/src/machines/java/com/enderio/machines/common/recipe/SagMillingRecipe.java +++ b/src/machines/java/com/enderio/machines/common/recipe/SagMillingRecipe.java @@ -1,7 +1,7 @@ package com.enderio.machines.common.recipe; import com.enderio.EnderIO; -import com.enderio.api.grindingball.IGrindingBallData; +import com.enderio.api.grindingball.GrindingBallData; import com.enderio.core.common.recipes.OutputStack; import com.enderio.core.common.util.TagUtil; import com.enderio.machines.common.blockentity.SagMillBlockEntity; @@ -65,7 +65,7 @@ public int getEnergyCost(Container container) { return getEnergyCost(container.getGrindingBall()); } - public int getEnergyCost(IGrindingBallData grindingBallData) { + public int getEnergyCost(GrindingBallData grindingBallData) { return (int) (energy * grindingBallData.getPowerUse()); } @@ -258,14 +258,14 @@ public boolean isOptional() { public static class Container extends RecipeWrapper { - private final Supplier grindingBallData; + private final Supplier grindingBallData; - public Container(IItemHandlerModifiable inv, Supplier data) { + public Container(IItemHandlerModifiable inv, Supplier data) { super(inv); this.grindingBallData = data; } - public final IGrindingBallData getGrindingBall() { + public final GrindingBallData getGrindingBall() { return grindingBallData.get(); } } diff --git a/src/machines/java/com/enderio/machines/common/souldata/EngineSoul.java b/src/machines/java/com/enderio/machines/common/souldata/EngineSoul.java index 75de6a97..e85738fa 100644 --- a/src/machines/java/com/enderio/machines/common/souldata/EngineSoul.java +++ b/src/machines/java/com/enderio/machines/common/souldata/EngineSoul.java @@ -10,7 +10,7 @@ @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE) public class EngineSoul { - public record SoulData(ResourceLocation entitytype, String fluid, int powerpermb, int tickpermb) implements ISoulData { + public record SoulData(ResourceLocation entitytype, String fluid, int powerpermb, int tickpermb) implements com.enderio.machines.common.souldata.SoulData { @Override public ResourceLocation getKey() { return entitytype(); @@ -18,11 +18,11 @@ public ResourceLocation getKey() { } public static final Codec CODEC = RecordCodecBuilder.create(soulDataInstance -> - soulDataInstance.group(ResourceLocation.CODEC.fieldOf("entity").forGetter(SoulData::entitytype), - Codec.STRING.fieldOf("fluid").forGetter(SoulData::fluid), - Codec.INT.fieldOf("power/mb").forGetter(SoulData::powerpermb), - Codec.INT.fieldOf("tick/mb").forGetter(SoulData::tickpermb)) - .apply(soulDataInstance, SoulData::new)); + soulDataInstance.group(ResourceLocation.CODEC.fieldOf("entity").forGetter(EngineSoul.SoulData::entitytype), + Codec.STRING.fieldOf("fluid").forGetter(EngineSoul.SoulData::fluid), + Codec.INT.fieldOf("power/mb").forGetter(EngineSoul.SoulData::powerpermb), + Codec.INT.fieldOf("tick/mb").forGetter(EngineSoul.SoulData::tickpermb)) + .apply(soulDataInstance, EngineSoul.SoulData::new)); public static final String NAME = "engine"; public static final SoulDataReloadListener ENGINE = new SoulDataReloadListener<>(NAME, CODEC); diff --git a/src/machines/java/com/enderio/machines/common/souldata/ISoulData.java b/src/machines/java/com/enderio/machines/common/souldata/SoulData.java similarity index 91% rename from src/machines/java/com/enderio/machines/common/souldata/ISoulData.java rename to src/machines/java/com/enderio/machines/common/souldata/SoulData.java index 2fa2e5e6..f27c41f4 100644 --- a/src/machines/java/com/enderio/machines/common/souldata/ISoulData.java +++ b/src/machines/java/com/enderio/machines/common/souldata/SoulData.java @@ -5,7 +5,7 @@ /** * Interface for all soul binding data. */ -public interface ISoulData { +public interface SoulData { /** * Resource Location of the entitytype. This is used to speed up searching for the correct one. diff --git a/src/machines/java/com/enderio/machines/common/souldata/SoulDataReloadListener.java b/src/machines/java/com/enderio/machines/common/souldata/SoulDataReloadListener.java index ab464c2e..9973b64e 100644 --- a/src/machines/java/com/enderio/machines/common/souldata/SoulDataReloadListener.java +++ b/src/machines/java/com/enderio/machines/common/souldata/SoulDataReloadListener.java @@ -49,12 +49,12 @@ of this software and associated documentation files (the "Software"), to deal * to the forge events necessary for syncing datapack data to clients. * @param The type of the objects that the codec is parsing jsons as */ -public class SoulDataReloadListener extends SimpleJsonResourceReloadListener { +public class SoulDataReloadListener extends SimpleJsonResourceReloadListener { private static final Gson GSON = new Gson(); public Map map = new HashMap<>(); private final Codec codec; private final String folderName; - private static final Map> LOADED_SOUL_DATA = new HashMap<>(); + private static final Map> LOADED_SOUL_DATA = new HashMap<>(); /** * Creates a data manager with a custom gson parser @@ -132,7 +132,7 @@ public Optional matches(ResourceLocation entitytype) { return Optional.empty(); } - public static SoulDataReloadListener fromString(String name) { + public static SoulDataReloadListener fromString(String name) { return LOADED_SOUL_DATA.get(name); } } diff --git a/src/machines/java/com/enderio/machines/common/souldata/SpawnerSoul.java b/src/machines/java/com/enderio/machines/common/souldata/SpawnerSoul.java index 53a61da3..1b76f339 100644 --- a/src/machines/java/com/enderio/machines/common/souldata/SpawnerSoul.java +++ b/src/machines/java/com/enderio/machines/common/souldata/SpawnerSoul.java @@ -20,7 +20,7 @@ public class SpawnerSoul { * @param power powercost of the spawner * @param spawnType way to spawn the mob */ - public record SoulData(ResourceLocation entitytype, int power, SpawnerMachineTask.SpawnType spawnType) implements ISoulData { + public record SoulData(ResourceLocation entitytype, int power, SpawnerMachineTask.SpawnType spawnType) implements com.enderio.machines.common.souldata.SoulData { @Override public ResourceLocation getKey() { return entitytype(); @@ -31,10 +31,10 @@ public ResourceLocation getKey() { * Codec for the spawner data */ public static final Codec CODEC = RecordCodecBuilder.create(soulDataInstance -> - soulDataInstance.group(ResourceLocation.CODEC.fieldOf("entity").forGetter(SoulData::entitytype), - Codec.INT.fieldOf("power").forGetter(SoulData::power), - Codec.STRING.comapFlatMap(SpawnerMachineTask.SpawnType::byName, SpawnerMachineTask.SpawnType::getName).stable().fieldOf("type").forGetter(SoulData::spawnType)) - .apply(soulDataInstance, SoulData::new)); + soulDataInstance.group(ResourceLocation.CODEC.fieldOf("entity").forGetter(SpawnerSoul.SoulData::entitytype), + Codec.INT.fieldOf("power").forGetter(SpawnerSoul.SoulData::power), + Codec.STRING.comapFlatMap(SpawnerMachineTask.SpawnType::byName, SpawnerMachineTask.SpawnType::getName).stable().fieldOf("type").forGetter(SpawnerSoul.SoulData::spawnType)) + .apply(soulDataInstance, SpawnerSoul.SoulData::new)); public static final String NAME = "spawner"; //SoulData Manger for the spawner data diff --git a/src/machines/java/com/enderio/machines/data/souldata/SoulDataProvider.java b/src/machines/java/com/enderio/machines/data/souldata/SoulDataProvider.java index d1f1a975..0a0749e1 100644 --- a/src/machines/java/com/enderio/machines/data/souldata/SoulDataProvider.java +++ b/src/machines/java/com/enderio/machines/data/souldata/SoulDataProvider.java @@ -4,7 +4,7 @@ import com.enderio.base.common.init.EIOFluids; import com.enderio.machines.common.blockentity.task.SpawnerMachineTask; import com.enderio.machines.common.souldata.EngineSoul; -import com.enderio.machines.common.souldata.ISoulData; +import com.enderio.machines.common.souldata.SoulData; import com.enderio.machines.common.souldata.SpawnerSoul; import com.google.common.collect.Sets; import com.google.gson.JsonElement; @@ -159,7 +159,7 @@ private void addEngineData(EntityType entityType, TagKey fluid, int po finshedSoulDataConsumer.accept(new FinshedSoulData<>(EngineSoul.CODEC, data, EngineSoul.NAME + "/" + entityRL.getNamespace() + "_" + entityRL.getPath())); } - static class FinshedSoulData { + static class FinshedSoulData { private final Codec codec; private final T data; diff --git a/src/main/java/com/enderio/base/client/tooltip/TooltipHandler.java b/src/main/java/com/enderio/base/client/tooltip/TooltipHandler.java index 2035ac29..99279b6b 100644 --- a/src/main/java/com/enderio/base/client/tooltip/TooltipHandler.java +++ b/src/main/java/com/enderio/base/client/tooltip/TooltipHandler.java @@ -1,11 +1,13 @@ package com.enderio.base.client.tooltip; import com.enderio.api.capacitor.CapacitorModifier; -import com.enderio.api.grindingball.IGrindingBallData; +import com.enderio.api.grindingball.GrindingBallData; import com.enderio.base.common.capacitor.CapacitorUtil; +import com.enderio.base.common.init.EIOCapabilities; import com.enderio.base.common.lang.EIOLang; import com.enderio.base.common.util.GrindingBallManager; -import com.enderio.core.client.item.IAdvancedTooltipProvider; +import com.enderio.core.client.item.AdvancedTooltipProvider; +import com.enderio.core.common.util.EntityUtil; import com.enderio.core.common.util.TooltipUtil; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.screens.Screen; @@ -28,7 +30,6 @@ import java.util.Map; import java.util.Optional; -// TODO: 1.19: Move to core. Need to work out what to do about the shift lang key. Will now need decoupled from the capacitor and grindingball logic. @Mod.EventBusSubscriber(value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.FORGE) public class TooltipHandler { @@ -42,6 +43,7 @@ public static void addAdvancedTooltips(ItemTooltipEvent evt) { // Misc tooltips. addCapacitorTooltips(forItem, evt.getToolTip(), advanced); addGrindingBallTooltips(forItem, evt.getToolTip(), advanced); + addEntityDataTooltips(forItem, evt.getToolTip(), advanced); // Advanced tooltip system getAdvancedProvider(forItem.getItem()).ifPresent(provider -> @@ -55,9 +57,10 @@ private static void addCapacitorTooltips(ItemStack itemStack, List co if (CapacitorUtil.isCapacitor(itemStack)) { CapacitorUtil.getCapacitorData(itemStack).ifPresent(data -> { NumberFormat fmt = NumberFormat.getInstance(Locale.ENGLISH); - components.add(TooltipUtil.styledWithArgs(EIOLang.CAPACITOR_TOOLTIP_BASE, fmt.format(data.getBase()))); - for (Map.Entry modifier : data.getAllModifiers().entrySet()) { - components.add(TooltipUtil.styledWithArgs(new ResourceLocation("tooltip", modifier.getKey().id.toLanguageKey()), fmt.format(modifier.getValue()))); + components.add(TooltipUtil.styledWithArgs(EIOLang.CAPACITOR_TOOLTIP_BASE, fmt.format(data.base()))); + + for (Map.Entry modifier : data.modifiers().entrySet()) { + components.add(TooltipUtil.styledWithArgs(new ResourceLocation("tooltip", modifier.getKey().modifierId.toLanguageKey()), fmt.format(modifier.getValue()))); } }); } @@ -66,7 +69,7 @@ private static void addCapacitorTooltips(ItemStack itemStack, List co private static void addGrindingBallTooltips(ItemStack itemStack, List components, boolean showAdvanced) { if (GrindingBallManager.isGrindingBall(itemStack)) { if (showAdvanced) { - IGrindingBallData data = GrindingBallManager.getData(itemStack); + GrindingBallData data = GrindingBallManager.getData(itemStack); components.add(TooltipUtil.styledWithArgs(EIOLang.GRINDINGBALL_MAIN_OUTPUT, (int) (data.getOutputMultiplier() * 100))); components.add(TooltipUtil.styledWithArgs(EIOLang.GRINDINGBALL_BONUS_OUTPUT, (int) (data.getBonusMultiplier() * 100))); components.add(TooltipUtil.styledWithArgs(EIOLang.GRINDINGBALL_POWER_USE, (int) (data.getPowerUse() * 100))); @@ -78,21 +81,35 @@ private static void addGrindingBallTooltips(ItemStack itemStack, List // endregion + // region Entity Storage + + private static void addEntityDataTooltips(ItemStack itemStack, List components, boolean showAdvanced) { + itemStack.getCapability(EIOCapabilities.ENTITY_STORAGE).ifPresent(storedEntityData -> { + if (storedEntityData.hasStoredEntity()) { + components.add(TooltipUtil.style(Component.translatable(EntityUtil.getEntityDescriptionId(storedEntityData.getStoredEntityData().getEntityType().get())))); + } else { + components.add(TooltipUtil.style(EIOLang.TOOLTIP_NO_SOULBOUND)); + } + }); + } + + // endregion + // region Advanced Tooltips - private static Optional getAdvancedProvider(Item item) { - if (item instanceof IAdvancedTooltipProvider provider) { + private static Optional getAdvancedProvider(Item item) { + if (item instanceof AdvancedTooltipProvider provider) { return Optional.of(provider); } - if (item instanceof BlockItem blockItem && blockItem.getBlock() instanceof IAdvancedTooltipProvider provider) { + if (item instanceof BlockItem blockItem && blockItem.getBlock() instanceof AdvancedTooltipProvider provider) { return Optional.of(provider); } return Optional.empty(); } - private static void addAdvancedTooltips(IAdvancedTooltipProvider tooltipProvider, ItemStack itemstack, @Nullable Player player, List components, boolean showAdvanced) { + private static void addAdvancedTooltips(AdvancedTooltipProvider tooltipProvider, ItemStack itemstack, @Nullable Player player, List components, boolean showAdvanced) { tooltipProvider.addCommonTooltips(itemstack, player, components); if (showAdvanced) { tooltipProvider.addDetailedTooltips(itemstack, player, components); @@ -112,7 +129,7 @@ private static void addShowDetailsTooltip(List components) { } } - private static boolean hasDetailedTooltip(IAdvancedTooltipProvider tooltipProvider, ItemStack stack, @Nullable Player player) { + private static boolean hasDetailedTooltip(AdvancedTooltipProvider tooltipProvider, ItemStack stack, @Nullable Player player) { List tooltips = new ArrayList<>(); tooltipProvider.addDetailedTooltips(stack, player, tooltips); return !tooltips.isEmpty(); diff --git a/src/main/java/com/enderio/base/client/tooltip/package-info.java b/src/main/java/com/enderio/base/client/tooltip/package-info.java index f3a12a90..36febf8c 100644 --- a/src/main/java/com/enderio/base/client/tooltip/package-info.java +++ b/src/main/java/com/enderio/base/client/tooltip/package-info.java @@ -1,5 +1,4 @@ @javax.annotation.ParametersAreNonnullByDefault @net.minecraft.MethodsReturnNonnullByDefault -@com.tterrag.registrate.util.nullness.FieldsAreNonnullByDefault -package com.enderio.base.client.tooltip; \ No newline at end of file +package com.enderio.base.client.tooltip; diff --git a/src/main/java/com/enderio/base/common/block/glass/FusedQuartzBlock.java b/src/main/java/com/enderio/base/common/block/glass/FusedQuartzBlock.java index e77a684c..9b752d9a 100644 --- a/src/main/java/com/enderio/base/common/block/glass/FusedQuartzBlock.java +++ b/src/main/java/com/enderio/base/common/block/glass/FusedQuartzBlock.java @@ -79,7 +79,7 @@ public float getExplosionResistance() { @Override public VoxelShape getCollisionShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { - if (pContext instanceof EntityCollisionContext entityCollisionContext) { + if (pContext instanceof EntityCollisionContext entityCollisionContext && entityCollisionContext != CollisionContext.empty()) { if (collisionPredicate.canPass(entityCollisionContext)) { return Shapes.empty(); } diff --git a/src/main/java/com/enderio/base/common/block/glass/GlassCollisionPredicate.java b/src/main/java/com/enderio/base/common/block/glass/GlassCollisionPredicate.java index dffab218..6912ac2e 100644 --- a/src/main/java/com/enderio/base/common/block/glass/GlassCollisionPredicate.java +++ b/src/main/java/com/enderio/base/common/block/glass/GlassCollisionPredicate.java @@ -1,7 +1,7 @@ package com.enderio.base.common.block.glass; import com.enderio.EnderIO; -import com.enderio.api.misc.IIcon; +import com.enderio.api.misc.Icon; import com.enderio.api.misc.Vector2i; import com.enderio.base.common.init.EIOItems; import com.enderio.base.common.lang.EIOLang; @@ -21,7 +21,7 @@ * Glass collision predicate wrapper. * Contains the predicate, the description id for the tooltip and the icon for the itemstack. */ -public enum GlassCollisionPredicate implements IIcon { +public enum GlassCollisionPredicate implements Icon { NONE(ctx -> false, null), @@ -139,4 +139,4 @@ public static GlassCollisionPredicate invert(GlassCollisionPredicate predicate) case PLAYERS_PASS -> PLAYERS_BLOCK; }; } -} \ No newline at end of file +} diff --git a/src/main/java/com/enderio/base/common/block/glass/GlassLighting.java b/src/main/java/com/enderio/base/common/block/glass/GlassLighting.java index b5c8c514..cd0db689 100644 --- a/src/main/java/com/enderio/base/common/block/glass/GlassLighting.java +++ b/src/main/java/com/enderio/base/common/block/glass/GlassLighting.java @@ -1,11 +1,11 @@ package com.enderio.base.common.block.glass; import com.enderio.EnderIO; -import com.enderio.api.misc.IIcon; +import com.enderio.api.misc.Icon; import com.enderio.api.misc.Vector2i; import net.minecraft.resources.ResourceLocation; -public enum GlassLighting implements IIcon { +public enum GlassLighting implements Icon { NONE, BLOCKING, EMITTING; diff --git a/src/main/java/com/enderio/base/common/blockentity/IMachineInstall.java b/src/main/java/com/enderio/base/common/blockentity/MachineInstallable.java similarity index 91% rename from src/main/java/com/enderio/base/common/blockentity/IMachineInstall.java rename to src/main/java/com/enderio/base/common/blockentity/MachineInstallable.java index e26e4bfe..a9c49d40 100644 --- a/src/main/java/com/enderio/base/common/blockentity/IMachineInstall.java +++ b/src/main/java/com/enderio/base/common/blockentity/MachineInstallable.java @@ -7,7 +7,7 @@ /** * An interface that block entities may implement in order to support item right-click behaviour. Used for auto-equipping capacitors on supported machines. */ -public interface IMachineInstall { +public interface MachineInstallable { InteractionResult tryItemInstall(ItemStack stack, UseOnContext context); } diff --git a/src/main/java/com/enderio/base/common/capacitor/CapacitorUtil.java b/src/main/java/com/enderio/base/common/capacitor/CapacitorUtil.java index f43979cc..ae9bac67 100644 --- a/src/main/java/com/enderio/base/common/capacitor/CapacitorUtil.java +++ b/src/main/java/com/enderio/base/common/capacitor/CapacitorUtil.java @@ -2,7 +2,7 @@ import com.enderio.EnderIO; import com.enderio.api.capacitor.CapacitorModifier; -import com.enderio.api.capacitor.ICapacitorData; +import com.enderio.api.capacitor.CapacitorData; import com.enderio.base.common.init.EIOCapabilities; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -12,7 +12,6 @@ import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.fml.common.Mod; -import java.util.List; import java.util.Optional; /** @@ -20,24 +19,6 @@ */ @Mod.EventBusSubscriber(modid = EnderIO.MODID) public class CapacitorUtil { - /** - * Adds a tooltip for loot capacitors based on it's stats. - * - * @param stack - * @param tooltipComponents - */ - public static void getTooltip(ItemStack stack, List tooltipComponents) { - // TODO: Revisit in future -// stack.getCapability(EIOCapabilities.CAPACITOR).ifPresent(cap -> { -// if (cap.getSpecializations().size() > 0) { -// TranslatableComponent t = new TranslatableComponent(getFlavor(cap.getFlavor()), -// getGradeText(cap.getSpecializations().values().iterator().next()), -// getTypeText(cap.getSpecializations().keySet().iterator().next()), -// getBaseText(cap.getBase())); -// tooltipComponents.add(t); -// } -// }); - } //TODO depending on direction private static String getFlavor(int flavor) { @@ -65,9 +46,9 @@ private static MutableComponent getGradeText(float grade) { return t; } - public static Optional getCapacitorData(ItemStack itemStack) { + public static Optional getCapacitorData(ItemStack itemStack) { // Search for an ICapacitorData capability - LazyOptional capacitorDataCap = itemStack.getCapability(EIOCapabilities.CAPACITOR); + LazyOptional capacitorDataCap = itemStack.getCapability(EIOCapabilities.CAPACITOR); if (capacitorDataCap.isPresent()) { return Optional.of(capacitorDataCap.orElseThrow(NullPointerException::new)); } @@ -76,7 +57,7 @@ public static Optional getCapacitorData(ItemStack itemStack) { } public static boolean isCapacitor(ItemStack itemStack) { - LazyOptional capacitorDataCap = itemStack.getCapability(EIOCapabilities.CAPACITOR); + LazyOptional capacitorDataCap = itemStack.getCapability(EIOCapabilities.CAPACITOR); return capacitorDataCap.isPresent(); } diff --git a/src/main/java/com/enderio/base/common/capacitor/DefaultCapacitorData.java b/src/main/java/com/enderio/base/common/capacitor/DefaultCapacitorData.java index b5412fc9..46a22369 100644 --- a/src/main/java/com/enderio/base/common/capacitor/DefaultCapacitorData.java +++ b/src/main/java/com/enderio/base/common/capacitor/DefaultCapacitorData.java @@ -2,14 +2,14 @@ import com.enderio.EnderIO; import com.enderio.api.capacitor.CapacitorModifier; -import com.enderio.api.capacitor.ICapacitorData; +import com.enderio.api.capacitor.CapacitorData; import net.minecraft.nbt.FloatTag; import net.minecraft.nbt.Tag; import net.minecraftforge.common.util.INBTSerializable; import java.util.Map; -public enum DefaultCapacitorData implements ICapacitorData, INBTSerializable { +public enum DefaultCapacitorData implements CapacitorData, INBTSerializable { NONE(0), BASIC(1.0f), DOUBLE_LAYER(2.0f), @@ -22,17 +22,17 @@ public enum DefaultCapacitorData implements ICapacitorData, INBTSerializable getAllModifiers() { + public Map modifiers() { return Map.of(); } diff --git a/src/main/java/com/enderio/base/common/capacitor/LootCapacitorData.java b/src/main/java/com/enderio/base/common/capacitor/LootCapacitorData.java index c277750d..9440626d 100644 --- a/src/main/java/com/enderio/base/common/capacitor/LootCapacitorData.java +++ b/src/main/java/com/enderio/base/common/capacitor/LootCapacitorData.java @@ -2,7 +2,7 @@ import com.enderio.EnderIO; import com.enderio.api.capacitor.CapacitorModifier; -import com.enderio.api.capacitor.ICapacitorData; +import com.enderio.api.capacitor.CapacitorData; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; @@ -12,10 +12,7 @@ import static com.enderio.base.EIONBTKeys.CAPACITOR_DATA; -// TODO: Instead of loot capacitors having lists of specialized machines, have different loot capacitor items for different -// machine categories. -// TODO: Loot capacitor types (Sculk, Soul) found in respective dungeons/structures. -public final class LootCapacitorData implements ICapacitorData { +public final class LootCapacitorData implements CapacitorData { private final ItemStack stack; // private final Map modifiers; @@ -44,7 +41,7 @@ public LootCapacitorData(ItemStack stack, float base, Map getAllModifiers() { + public Map modifiers() { var tag = this.stack.getOrCreateTag(); if (tag.contains(CAPACITOR_DATA) && tag.getCompound(CAPACITOR_DATA).contains(KEY_MODIFIER_ARRAY)) { diff --git a/src/main/java/com/enderio/base/common/init/EIOCapabilities.java b/src/main/java/com/enderio/base/common/init/EIOCapabilities.java index 654f3835..e2d6cfc1 100644 --- a/src/main/java/com/enderio/base/common/init/EIOCapabilities.java +++ b/src/main/java/com/enderio/base/common/init/EIOCapabilities.java @@ -6,9 +6,9 @@ import com.enderio.api.capability.IEntityStorage; import com.enderio.api.capability.IConduitFilter; import com.enderio.api.capability.IOwner; -import com.enderio.api.capability.ISideConfig; +import com.enderio.api.capability.SideConfig; import com.enderio.api.capability.IToggled; -import com.enderio.api.capacitor.ICapacitorData; +import com.enderio.api.capacitor.CapacitorData; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.CapabilityManager; import net.minecraftforge.common.capabilities.CapabilityToken; @@ -24,13 +24,13 @@ public class EIOCapabilities { public static final Capability OWNER = CapabilityManager.get(new CapabilityToken<>() {}); - public static final Capability CAPACITOR = CapabilityManager.get(new CapabilityToken<>() {}); + public static final Capability CAPACITOR = CapabilityManager.get(new CapabilityToken<>() {}); public static final Capability COORDINATE_SELECTION_HOLDER = CapabilityManager.get(new CapabilityToken<>() {}); public static final Capability DARK_STEEL_UPGRADABLE = CapabilityManager.get(new CapabilityToken<>() {}); - public static final Capability SIDE_CONFIG = CapabilityManager.get(new CapabilityToken<>() {}); + public static final Capability SIDE_CONFIG = CapabilityManager.get(new CapabilityToken<>() {}); public static final Capability ITEM_FILTER = CapabilityManager.get(new CapabilityToken<>() {}); @@ -39,10 +39,10 @@ public static void register(RegisterCapabilitiesEvent event) { event.register(IEntityStorage.class); event.register(IToggled.class); event.register(IOwner.class); - event.register(ICapacitorData.class); + event.register(CapacitorData.class); event.register(IDarkSteelUpgradable.class); event.register(ICoordinateSelectionHolder.class); - event.register(ISideConfig.class); + event.register(SideConfig.class); event.register(IConduitFilter.class); } } diff --git a/src/main/java/com/enderio/base/common/item/capacitors/BaseCapacitorItem.java b/src/main/java/com/enderio/base/common/item/capacitors/CapacitorItem.java similarity index 75% rename from src/main/java/com/enderio/base/common/item/capacitors/BaseCapacitorItem.java rename to src/main/java/com/enderio/base/common/item/capacitors/CapacitorItem.java index 71233012..43f2d29d 100644 --- a/src/main/java/com/enderio/base/common/item/capacitors/BaseCapacitorItem.java +++ b/src/main/java/com/enderio/base/common/item/capacitors/CapacitorItem.java @@ -1,6 +1,6 @@ package com.enderio.base.common.item.capacitors; -import com.enderio.base.common.blockentity.IMachineInstall; +import com.enderio.base.common.blockentity.MachineInstallable; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.Item; @@ -11,16 +11,17 @@ /** * Base class for all capacitor items for common functionality */ -public class BaseCapacitorItem extends Item { - public BaseCapacitorItem(Properties properties) { +public class CapacitorItem extends Item { + public CapacitorItem(Properties properties) { super(properties); } + @Override public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext context) { Level level = context.getLevel(); BlockPos pos = context.getClickedPos(); - if (level.getBlockEntity(pos) instanceof IMachineInstall equippable) { + if (level.getBlockEntity(pos) instanceof MachineInstallable equippable) { return equippable.tryItemInstall(stack, context); } diff --git a/src/main/java/com/enderio/base/common/item/capacitors/FixedCapacitorItem.java b/src/main/java/com/enderio/base/common/item/capacitors/FixedCapacitorItem.java index 253ff11f..a8212a19 100644 --- a/src/main/java/com/enderio/base/common/item/capacitors/FixedCapacitorItem.java +++ b/src/main/java/com/enderio/base/common/item/capacitors/FixedCapacitorItem.java @@ -2,7 +2,7 @@ import com.enderio.api.capability.IMultiCapabilityItem; import com.enderio.api.capability.MultiCapabilityProvider; -import com.enderio.api.capacitor.ICapacitorData; +import com.enderio.api.capacitor.CapacitorData; import com.enderio.base.common.init.EIOCapabilities; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; @@ -12,10 +12,10 @@ /** * A capacitor item that has fixed capacitor data attached. */ -public class FixedCapacitorItem extends BaseCapacitorItem implements IMultiCapabilityItem { - private final ICapacitorData data; +public class FixedCapacitorItem extends CapacitorItem implements IMultiCapabilityItem { + private final CapacitorData data; - public FixedCapacitorItem(ICapacitorData data, Properties properties) { + public FixedCapacitorItem(CapacitorData data, Properties properties) { super(properties); this.data = data; } diff --git a/src/main/java/com/enderio/base/common/item/capacitors/LootCapacitorItem.java b/src/main/java/com/enderio/base/common/item/capacitors/LootCapacitorItem.java index e6edaecd..baf01a46 100644 --- a/src/main/java/com/enderio/base/common/item/capacitors/LootCapacitorItem.java +++ b/src/main/java/com/enderio/base/common/item/capacitors/LootCapacitorItem.java @@ -2,23 +2,109 @@ import com.enderio.api.capability.IMultiCapabilityItem; import com.enderio.api.capability.MultiCapabilityProvider; +import com.enderio.api.capacitor.CapacitorData; +import com.enderio.api.capacitor.CapacitorModifier; import com.enderio.base.common.capacitor.LootCapacitorData; import com.enderio.base.common.init.EIOCapabilities; +import com.enderio.base.common.lang.EIOLang; import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.util.LazyOptional; import org.jetbrains.annotations.Nullable; -public class LootCapacitorItem extends BaseCapacitorItem implements IMultiCapabilityItem { +public class LootCapacitorItem extends CapacitorItem implements IMultiCapabilityItem { public LootCapacitorItem(Properties pProperties) { super(pProperties); } + @Override + public Component getName(ItemStack pStack) { + var capacitorData = pStack.getCapability(EIOCapabilities.CAPACITOR).resolve().orElseThrow(); + + if (capacitorData.modifiers().isEmpty()) { + return getBaseName(capacitorData); + } + + return getModifierQuality(capacitorData) + .copy() + .append(" ") + .append(getModifierType(capacitorData)) + .append(" ") + .append(getBaseName(capacitorData)); + } + + private MutableComponent getBaseName(CapacitorData capacitorData) { + float base = capacitorData.base(); + + if (base < 1f) { + return EIOLang.LOOT_CAPACITOR_BASE_DUD; + } else if (base < 1.5f) { + return EIOLang.LOOT_CAPACITOR_BASE_NORMAL; + } else if (base < 2.5f) { + return EIOLang.LOOT_CAPACITOR_BASE_ENHANCED; + } else if (base < 3.5f) { + return EIOLang.LOOT_CAPACITOR_BASE_WONDER; + } + + return EIOLang.LOOT_CAPACITOR_BASE_IMPOSSIBLE; + } + + private MutableComponent getModifierType(CapacitorData capacitorData) { + var firstType = capacitorData.modifiers().keySet().stream().findFirst(); + + if (firstType.isEmpty()) { + throw new IllegalArgumentException(); + } + + // TODO: Use a map for this instead. + if (firstType.get() == CapacitorModifier.ENERGY_CAPACITY) { + return EIOLang.LOOT_CAPACITOR_TYPE_ENERGY_CAPACITY; + } else if (firstType.get() == CapacitorModifier.ENERGY_USE) { + return EIOLang.LOOT_CAPACITOR_TYPE_ENERGY_USE; + } else if (firstType.get() == CapacitorModifier.FUEL_EFFICIENCY) { + return EIOLang.LOOT_CAPACITOR_TYPE_FUEL_EFFICIENCY; + } else if (firstType.get() == CapacitorModifier.BURNING_ENERGY_GENERATION) { + return EIOLang.LOOT_CAPACITOR_TYPE_BURNING_ENERGY_GENERATION; + } + + return EIOLang.LOOT_CAPACITOR_TYPE_UNKNOWN; + } + + private MutableComponent getModifierQuality(CapacitorData capacitorData) { + var firstModifier = capacitorData.modifiers().values().stream().findFirst(); + + if (firstModifier.isEmpty()) { + throw new IllegalArgumentException(); + } + + float modifier = firstModifier.get(); + + if (modifier < 1f) { + return EIOLang.LOOT_CAPACITOR_MODIFIER_FAILED; + } else if (modifier < 1.5f) { + return EIOLang.LOOT_CAPACITOR_MODIFIER_SIMPLE; + } else if (modifier < 2.5f) { + return EIOLang.LOOT_CAPACITOR_MODIFIER_NICE; + } else if (modifier < 3f) { + return EIOLang.LOOT_CAPACITOR_MODIFIER_GOOD; + } else if (modifier < 3.5f) { + return EIOLang.LOOT_CAPACITOR_MODIFIER_ENHANCED; + } else if (modifier < 4f) { + return EIOLang.LOOT_CAPACITOR_MODIFIER_PREMIUM; + } else if (modifier < 4.25f) { + return EIOLang.LOOT_CAPACITOR_MODIFIER_INCREDIBLY; + } + + return EIOLang.LOOT_CAPACITOR_MODIFIER_UNSTABLE; + } + @Nullable @Override public MultiCapabilityProvider initCapabilities(ItemStack stack, CompoundTag nbt, MultiCapabilityProvider provider) { provider.add(EIOCapabilities.CAPACITOR, LazyOptional.of(() -> new LootCapacitorData(stack))); return provider; } -} \ No newline at end of file +} diff --git a/src/main/java/com/enderio/base/common/item/tool/PoweredToggledItem.java b/src/main/java/com/enderio/base/common/item/tool/PoweredToggledItem.java index 2e74a2fa..a3b42a91 100644 --- a/src/main/java/com/enderio/base/common/item/tool/PoweredToggledItem.java +++ b/src/main/java/com/enderio/base/common/item/tool/PoweredToggledItem.java @@ -7,7 +7,7 @@ import com.enderio.base.common.init.EIOCapabilities; import com.enderio.base.common.lang.EIOLang; import com.enderio.core.client.item.EnergyBarDecorator; -import com.enderio.core.client.item.IAdvancedTooltipProvider; +import com.enderio.core.client.item.AdvancedTooltipProvider; import com.enderio.core.common.item.ITabVariants; import com.enderio.core.common.util.EnergyUtil; import com.enderio.core.common.util.TooltipUtil; @@ -27,7 +27,7 @@ import java.util.List; -public abstract class PoweredToggledItem extends Item implements IMultiCapabilityItem, IAdvancedTooltipProvider, ITabVariants { +public abstract class PoweredToggledItem extends Item implements IMultiCapabilityItem, AdvancedTooltipProvider, ITabVariants { public PoweredToggledItem(Properties pProperties) { super(pProperties.stacksTo(1)); diff --git a/src/main/java/com/enderio/base/common/item/tool/SoulVialItem.java b/src/main/java/com/enderio/base/common/item/tool/SoulVialItem.java index 3b6b38ed..775433ed 100644 --- a/src/main/java/com/enderio/base/common/item/tool/SoulVialItem.java +++ b/src/main/java/com/enderio/base/common/item/tool/SoulVialItem.java @@ -10,8 +10,7 @@ import com.enderio.base.common.init.EIOItems; import com.enderio.base.common.lang.EIOLang; import com.enderio.base.common.util.EntityCaptureUtils; -import com.enderio.core.client.item.IAdvancedTooltipProvider; -import com.enderio.core.common.util.EntityUtil; +import com.enderio.core.client.item.AdvancedTooltipProvider; import com.enderio.core.common.util.TooltipUtil; import net.minecraft.core.BlockPos; import net.minecraft.core.BlockSource; @@ -51,7 +50,7 @@ import java.util.function.Consumer; @Mod.EventBusSubscriber(modid = EnderIO.MODID) -public class SoulVialItem extends Item implements IMultiCapabilityItem, IAdvancedTooltipProvider { +public class SoulVialItem extends Item implements IMultiCapabilityItem, AdvancedTooltipProvider { public SoulVialItem(Properties pProperties) { super(pProperties); } @@ -63,16 +62,6 @@ public boolean isFoil(ItemStack pStack) { return pStack.getCapability(EIOCapabilities.ENTITY_STORAGE).map(IEntityStorage::hasStoredEntity).orElse(false); } - @Override - public void addCommonTooltips(ItemStack itemStack, @Nullable Player player, List tooltips) { - itemStack - .getCapability(EIOCapabilities.ENTITY_STORAGE) - .ifPresent(entityStorage -> entityStorage - .getStoredEntityData() - .getEntityType() - .ifPresent(entityType -> tooltips.add(TooltipUtil.style(Component.translatable(EntityUtil.getEntityDescriptionId(entityType)))))); - } - @Override public void addDetailedTooltips(ItemStack itemStack, @Nullable Player player, List tooltips) { itemStack diff --git a/src/main/java/com/enderio/base/common/item/tool/TravelStaffItem.java b/src/main/java/com/enderio/base/common/item/tool/TravelStaffItem.java index 3ae4fc51..657494ca 100644 --- a/src/main/java/com/enderio/base/common/item/tool/TravelStaffItem.java +++ b/src/main/java/com/enderio/base/common/item/tool/TravelStaffItem.java @@ -7,7 +7,7 @@ import com.enderio.base.common.handler.TravelHandler; import com.enderio.base.common.lang.EIOLang; import com.enderio.core.client.item.EnergyBarDecorator; -import com.enderio.core.client.item.IAdvancedTooltipProvider; +import com.enderio.core.client.item.AdvancedTooltipProvider; import com.enderio.core.common.item.ITabVariants; import com.enderio.core.common.util.EnergyUtil; import com.enderio.core.common.util.TooltipUtil; @@ -28,7 +28,7 @@ import java.util.List; -public class TravelStaffItem extends Item implements IMultiCapabilityItem, IAdvancedTooltipProvider, ITabVariants { +public class TravelStaffItem extends Item implements IMultiCapabilityItem, AdvancedTooltipProvider, ITabVariants { public TravelStaffItem(Properties properties) { super(properties); } diff --git a/src/main/java/com/enderio/base/common/item/tool/YetaWrenchItem.java b/src/main/java/com/enderio/base/common/item/tool/YetaWrenchItem.java index 43e243bb..0b80bf2f 100644 --- a/src/main/java/com/enderio/base/common/item/tool/YetaWrenchItem.java +++ b/src/main/java/com/enderio/base/common/item/tool/YetaWrenchItem.java @@ -1,6 +1,6 @@ package com.enderio.base.common.item.tool; -import com.enderio.api.capability.ISideConfig; +import com.enderio.api.capability.SideConfig; import com.enderio.base.common.blockentity.IWrenchable; import com.enderio.base.common.init.EIOCapabilities; import com.mojang.datafixers.util.Either; @@ -42,14 +42,14 @@ public InteractionResult onItemUseFirst(ItemStack stack, UseOnContext pContext) // Check for side config capability BlockEntity be = level.getBlockEntity(pos); if (be != null) { - LazyOptional optSideConfig = be.getCapability(EIOCapabilities.SIDE_CONFIG, pContext.getClickedFace()); + LazyOptional optSideConfig = be.getCapability(EIOCapabilities.SIDE_CONFIG, pContext.getClickedFace()); if (optSideConfig.isPresent()) { if (level.isClientSide()) { return InteractionResult.sidedSuccess(true); } // Cycle state. - optSideConfig.ifPresent(ISideConfig::cycleMode); + optSideConfig.ifPresent(SideConfig::cycleMode); return InteractionResult.SUCCESS; } } diff --git a/src/main/java/com/enderio/base/common/lang/EIOLang.java b/src/main/java/com/enderio/base/common/lang/EIOLang.java index db49cd72..1c7d995b 100644 --- a/src/main/java/com/enderio/base/common/lang/EIOLang.java +++ b/src/main/java/com/enderio/base/common/lang/EIOLang.java @@ -6,9 +6,9 @@ import com.enderio.base.common.block.glass.GlassLighting; import com.enderio.core.common.util.TooltipUtil; import com.tterrag.registrate.Registrate; -import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.DyeColor; import java.util.Locale; @@ -69,17 +69,46 @@ public class EIOLang { // region Capacitors - public static final MutableComponent CAPACITOR_TOOLTIP_BASE = REGISTRATE.addLang("tooltip", EnderIO.loc("capacitor.base"), "Base Modifier: %s"); + public static final MutableComponent CAPACITOR_TOOLTIP_BASE = addTranslation("tooltip", EnderIO.loc("capacitor.base"), "Base Modifier: %s"); - public static final MutableComponent CAPACITOR_TOOLTIP_ENERGY_CAPACITY = REGISTRATE.addLang("tooltip", CapacitorModifier.ENERGY_CAPACITY.id, "Energy Capacity Modifier: %s"); - public static final MutableComponent CAPACITOR_TOOLTIP_ENERGY_USE = REGISTRATE.addLang("tooltip", CapacitorModifier.ENERGY_USE.id, "Energy Use Modifier: %s"); + public static final MutableComponent CAPACITOR_TOOLTIP_ENERGY_CAPACITY = addTranslation("tooltip", CapacitorModifier.ENERGY_CAPACITY.modifierId, "Energy Capacity Modifier: %s"); + public static final MutableComponent CAPACITOR_TOOLTIP_ENERGY_USE = addTranslation("tooltip", CapacitorModifier.ENERGY_USE.modifierId, "Energy Use Modifier: %s"); + public static final MutableComponent CAPACITOR_TOOLTIP_FUEL_EFFICIENCY = addTranslation("tooltip", CapacitorModifier.FUEL_EFFICIENCY.modifierId, "Fuel Efficiency Modifier: %s"); + public static final MutableComponent CAPACITOR_TOOLTIP_BURNING_ENERGY_GENERATION = addTranslation("tooltip", CapacitorModifier.BURNING_ENERGY_GENERATION.modifierId, "Burning Energy Generation Modifier: %s"); - public static final Component GLIDER_DISABLED = REGISTRATE.addLang("message", EnderIO.loc("glider.disable"), "Gliding is disabled: "); - public static final Component GLIDER_DISABLED_FALL_FLYING = REGISTRATE.addLang("message", EnderIO.loc("glider.disable.fall_flying"), "Elytra Flight"); + // region Loot Capacitor + // Declares order. In this case: Modifier Quality, Modifier Type, Base Quality. Takes first modifier. + public static final MutableComponent LOOT_CAPACITOR_NAME = addTranslation("item", EnderIO.loc("loot_capacitor_template"), "%s %s %s"); + + public static final MutableComponent LOOT_CAPACITOR_BASE_DUD = addTranslation("item", EnderIO.loc("loot_capacitor_dud"), "Capacitor Dud"); + public static final MutableComponent LOOT_CAPACITOR_BASE_NORMAL = addTranslation("item", EnderIO.loc("loot_capacitor_normal"), "Capacitor"); + public static final MutableComponent LOOT_CAPACITOR_BASE_ENHANCED = addTranslation("item", EnderIO.loc("loot_capacitor_enhanced"), "Enhanced Capacitor"); + public static final MutableComponent LOOT_CAPACITOR_BASE_WONDER = addTranslation("item", EnderIO.loc("loot_capacitor_wonder"), "Wonder Capacitor"); + public static final MutableComponent LOOT_CAPACITOR_BASE_IMPOSSIBLE = addTranslation("item", EnderIO.loc("loot_capacitor_impossible"), "Impossible Capacitor"); + + public static final MutableComponent LOOT_CAPACITOR_TYPE_ENERGY_CAPACITY = addTranslation("item", EnderIO.loc("loot_capacitor_energy_capacity"), "Insatiable"); + public static final MutableComponent LOOT_CAPACITOR_TYPE_ENERGY_USE = addTranslation("item", EnderIO.loc("loot_capacitor_energy_use"), "Hungry"); + public static final MutableComponent LOOT_CAPACITOR_TYPE_FUEL_EFFICIENCY = addTranslation("item", EnderIO.loc("loot_capacitor_fuel_efficiency"), "Efficient"); + public static final MutableComponent LOOT_CAPACITOR_TYPE_BURNING_ENERGY_GENERATION = addTranslation("item", EnderIO.loc("loot_capacitor_burning_energy_generation"), "Hot"); + public static final MutableComponent LOOT_CAPACITOR_TYPE_UNKNOWN = addTranslation("item", EnderIO.loc("loot_capacitor_unknown"), "Mystery"); + + public static final MutableComponent LOOT_CAPACITOR_MODIFIER_FAILED = addTranslation("item", EnderIO.loc("loot_capacitor_modifier_failed"), "Failed"); + public static final MutableComponent LOOT_CAPACITOR_MODIFIER_SIMPLE = addTranslation("item", EnderIO.loc("loot_capacitor_modifier_simple"), "Simple"); + public static final MutableComponent LOOT_CAPACITOR_MODIFIER_NICE = addTranslation("item", EnderIO.loc("loot_capacitor_modifier_nice"), "Nice"); + public static final MutableComponent LOOT_CAPACITOR_MODIFIER_GOOD = addTranslation("item", EnderIO.loc("loot_capacitor_modifier_good"), "Good"); + public static final MutableComponent LOOT_CAPACITOR_MODIFIER_ENHANCED = addTranslation("item", EnderIO.loc("loot_capacitor_modifier_enhanced"), "Enhanced"); + public static final MutableComponent LOOT_CAPACITOR_MODIFIER_PREMIUM = addTranslation("item", EnderIO.loc("loot_capacitor_modifier_premium"), "Premium"); + public static final MutableComponent LOOT_CAPACITOR_MODIFIER_INCREDIBLY = addTranslation("item", EnderIO.loc("loot_capacitor_modifier_incredibly"), "Incredibly"); + public static final MutableComponent LOOT_CAPACITOR_MODIFIER_UNSTABLE = addTranslation("item", EnderIO.loc("loot_capacitor_modifier_unstable"), "Unstable"); // endregion + // endregion + + public static final Component GLIDER_DISABLED = addTranslation("message", EnderIO.loc("glider.disable"), "Gliding is disabled: "); + public static final Component GLIDER_DISABLED_FALL_FLYING = addTranslation("message", EnderIO.loc("glider.disable.fall_flying"), "Elytra Flight"); + // region Enchantments public static final Component AUTO_SMELT_DESC = enchantmentDescription("auto_smelt", "desc", @@ -153,6 +182,12 @@ private static Component enchantmentDescription(String enchantmentName, String s // endregion + // region Entity Storage + + public static final MutableComponent TOOLTIP_NO_SOULBOUND = addTranslation("gui", EnderIO.loc("no_soulbound"), "Bind a soul to the item to be able to use it"); + + // endregion + // region Glider public static final Component USE_GLIDER_ADVANCEMENT_TITLE = REGISTRATE.addLang("advancements", EnderIO.loc("use_glider.title"), "Majestic"); @@ -243,6 +278,14 @@ private static String createEnglishPrefix(DyeColor color) { // endregion + private static MutableComponent addTranslation(String prefix, ResourceLocation id, String translation) { + return REGISTRATE.addLang(prefix, id, translation); + } + + private static MutableComponent addTranslation(String prefix, ResourceLocation path, String name, String translation) { + return REGISTRATE.addLang(prefix, new ResourceLocation(path.getNamespace(), path.getPath() + "/" + name), translation); + } + public static void register() { ApiLang.REDSTONE_ACTIVE_WITH_SIGNAL = REDSTONE_ACTIVE_WITH_SIGNAL; ApiLang.REDSTONE_NEVER_ACTIVE = REDSTONE_NEVER_ACTIVE; diff --git a/src/main/java/com/enderio/base/common/recipe/GrindingBallRecipe.java b/src/main/java/com/enderio/base/common/recipe/GrindingBallRecipe.java index f3bcd15f..aaac0460 100644 --- a/src/main/java/com/enderio/base/common/recipe/GrindingBallRecipe.java +++ b/src/main/java/com/enderio/base/common/recipe/GrindingBallRecipe.java @@ -1,7 +1,7 @@ package com.enderio.base.common.recipe; import com.enderio.EnderIO; -import com.enderio.api.grindingball.IGrindingBallData; +import com.enderio.api.grindingball.GrindingBallData; import com.enderio.base.common.init.EIORecipes; import com.enderio.core.common.recipes.EnderRecipe; import com.google.gson.JsonObject; @@ -21,7 +21,7 @@ import java.util.Objects; -public class GrindingBallRecipe implements IGrindingBallData, EnderRecipe { +public class GrindingBallRecipe implements GrindingBallData, EnderRecipe { private final ResourceLocation id; private final Item item; private final float doublingChance; diff --git a/src/main/java/com/enderio/base/common/util/GrindingBallManager.java b/src/main/java/com/enderio/base/common/util/GrindingBallManager.java index c145ab83..309995fd 100644 --- a/src/main/java/com/enderio/base/common/util/GrindingBallManager.java +++ b/src/main/java/com/enderio/base/common/util/GrindingBallManager.java @@ -1,6 +1,6 @@ package com.enderio.base.common.util; -import com.enderio.api.grindingball.IGrindingBallData; +import com.enderio.api.grindingball.GrindingBallData; import com.enderio.base.common.init.EIORecipes; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; @@ -18,8 +18,8 @@ @Mod.EventBusSubscriber public class GrindingBallManager { - private static final HashMap ITEM_TO_DATA = new HashMap<>(); - private static final HashMap ID_TO_DATA = new HashMap<>(); + private static final HashMap ITEM_TO_DATA = new HashMap<>(); + private static final HashMap ID_TO_DATA = new HashMap<>(); private static boolean clearCache = false; @@ -29,10 +29,10 @@ public static boolean isGrindingBall(ItemStack stack) { && ITEM_TO_DATA.containsKey(stack.getItem()); } - public static IGrindingBallData getData(ItemStack stack) { + public static GrindingBallData getData(ItemStack stack) { checkCacheRebuild(); Item item = stack.getItem(); - return ITEM_TO_DATA.getOrDefault(item, IGrindingBallData.IDENTITY); + return ITEM_TO_DATA.getOrDefault(item, GrindingBallData.IDENTITY); } public static List getGrindingBalls() { @@ -40,9 +40,9 @@ public static List getGrindingBalls() { return List.copyOf(ITEM_TO_DATA.keySet()); } - public static IGrindingBallData getData(ResourceLocation dataId) { + public static GrindingBallData getData(ResourceLocation dataId) { checkCacheRebuild(); - return ID_TO_DATA.getOrDefault(dataId, IGrindingBallData.IDENTITY); + return ID_TO_DATA.getOrDefault(dataId, GrindingBallData.IDENTITY); }