Compare commits
7 Commits
krystal's-
...
1.19.2-fab
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd9acfcb94 | ||
|
|
e6c8effe4c | ||
|
|
f957e697d9 | ||
|
|
f6031652c2 | ||
|
|
b508cfef9f | ||
|
|
756d8cd137 | ||
|
|
c74c4937e2 |
248
build.gradle
248
build.gradle
@@ -1,187 +1,85 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
// These repositories are only for Gradle plugins, put any other repositories in the repository block further below
|
||||
maven { url = 'https://maven.minecraftforge.net' }
|
||||
mavenCentral()
|
||||
jcenter()
|
||||
maven { url = 'https://maven.parchmentmc.org' }
|
||||
maven { url = 'https://repo.spongepowered.org/repository/maven-public' }
|
||||
|
||||
}
|
||||
dependencies {
|
||||
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
|
||||
classpath "org.parchmentmc:librarian:${librarian_version}"
|
||||
classpath "org.spongepowered:mixingradle:0.7-SNAPSHOT"
|
||||
|
||||
}
|
||||
}
|
||||
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
|
||||
plugins {
|
||||
id 'eclipse'
|
||||
id 'fabric-loom' version "1.5-SNAPSHOT"
|
||||
id 'maven-publish'
|
||||
id 'com.matthewprenger.cursegradle' version '1.4.0'
|
||||
}
|
||||
apply plugin: 'net.minecraftforge.gradle'
|
||||
apply plugin: 'org.parchmentmc.librarian.forgegradle'
|
||||
apply plugin: 'org.spongepowered.mixin'
|
||||
|
||||
//mixin {
|
||||
// add sourceSets.main, "createindustry.refmap.json"
|
||||
//}
|
||||
|
||||
version = '0.9.0c-1.19.2'
|
||||
version = '0.9.0c-1.19.2-fabric'
|
||||
group = 'com.drmangotea.createindustry' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
archivesBaseName = 'createindustry'
|
||||
|
||||
// Mojang ships Java 17 to end users in 1.18+, so your mod should target Java 17.
|
||||
java.toolchain.languageVersion = JavaLanguageVersion.of(17)
|
||||
|
||||
println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}"
|
||||
minecraft {
|
||||
mappings channel: 'parchment', version: "${parchment_version}-${minecraft_version}"
|
||||
|
||||
|
||||
// accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') // Currently, this location cannot be changed from the default.
|
||||
|
||||
runs {
|
||||
client {
|
||||
workingDirectory project.file('run')
|
||||
arg '-mixin.config=createindustry.mixins.json'
|
||||
property 'forge.logging.markers', 'REGISTRIES'
|
||||
property 'forge.logging.console.level', 'debug'
|
||||
property 'forge.enabledGameTestNamespaces', 'createindustry'
|
||||
property 'mixin.env.remapRefMap', 'true'
|
||||
property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg"
|
||||
mods {
|
||||
createindustry {
|
||||
source sourceSets.main
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
server {
|
||||
workingDirectory project.file('run')
|
||||
arg '-mixin.config=createindustry.mixins.json'
|
||||
property 'forge.logging.markers', 'REGISTRIES'
|
||||
property 'forge.logging.console.level', 'debug'
|
||||
property 'forge.enabledGameTestNamespaces', 'createindustry'
|
||||
property 'mixin.env.remapRefMap', 'true'
|
||||
property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg"
|
||||
mods {
|
||||
createindustry {
|
||||
source sourceSets.main
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gameTestServer {
|
||||
workingDirectory project.file('run')
|
||||
property 'forge.logging.markers', 'REGISTRIES'
|
||||
property 'forge.logging.console.level', 'debug'
|
||||
property 'forge.enabledGameTestNamespaces', 'createindustry'
|
||||
property 'mixin.env.remapRefMap', 'true'
|
||||
property 'mixin.env.refMapRemappingFile', "${buildDir}/createSrgToMcp/output.srg"
|
||||
mods {
|
||||
createindustry {
|
||||
source sourceSets.main
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data {
|
||||
workingDirectory project.file('run')
|
||||
property 'forge.logging.markers', 'REGISTRIES'
|
||||
property 'forge.logging.console.level', 'debug'
|
||||
args '--mod', 'createindustry', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/')
|
||||
mods {
|
||||
createindustry {
|
||||
source sourceSets.main
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Include resources generated by data generators.
|
||||
sourceSets.main.resources { srcDir 'src/generated/resources' }
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
|
||||
repositories {
|
||||
|
||||
maven {
|
||||
url = 'https://www.cursemaven.com'
|
||||
content {
|
||||
includeGroup "curse.maven"
|
||||
}
|
||||
}
|
||||
maven {
|
||||
// location of the maven that hosts JEI files since January 2023
|
||||
// location of the maven for Vazkii's mods
|
||||
name = "Jared's maven"
|
||||
url = "https://maven.blamejared.com/"
|
||||
}
|
||||
|
||||
maven {
|
||||
url "https://maven.tterrag.com/"
|
||||
}
|
||||
|
||||
|
||||
maven { url = "https://maven.shedaniel.me/" } // Cloth Config, REI
|
||||
maven { url = "https://maven.blamejared.com/" } // JEI
|
||||
maven { url = "https://maven.parchmentmc.org" } // Parchment mappings
|
||||
maven { url = "https://maven.quiltmc.org/repository/release" } // Quilt Mappings
|
||||
maven { url = "https://api.modrinth.com/maven" } // LazyDFU
|
||||
maven { url = "https://maven.terraformersmc.com/releases/" } // Mod Menu
|
||||
maven { url = "https://mvn.devos.one/snapshots/" } // Create, Porting Lib, Forge Tags, Milk Lib, Registrate
|
||||
maven { url = "https://raw.githubusercontent.com/Fuzss/modresources/main/maven/" } // Forge Config API Port
|
||||
maven { url = "https://maven.jamieswhiteshirt.com/libs-release" } // Reach Entity Attributes
|
||||
maven { url = "https://jitpack.io/" } // Mixin Extras, Fabric ASM
|
||||
maven { url = "https://maven.tterrag.com/" } // Flywheel
|
||||
maven { url = 'https://ladysnake.jfrog.io/artifactory/mods' } // I FUCKING HATE CAPABILITERS
|
||||
}
|
||||
|
||||
dependencies {
|
||||
minecraft("com.mojang:minecraft:${minecraft_version}")
|
||||
mappings(loom.layered {
|
||||
it.mappings("org.quiltmc:quilt-mappings:$minecraft_version+build.$quilt_version:intermediary-v2")
|
||||
it.parchment("org.parchmentmc.data:parchment-$minecraft_version:$parchment_version@zip")
|
||||
it.officialMojangMappings { nameSyntheticMembers = false }
|
||||
})
|
||||
modImplementation("net.fabricmc:fabric-loader:${fabric_loader_version}")
|
||||
|
||||
// dependencies
|
||||
modImplementation("net.fabricmc.fabric-api:fabric-api:${fabric_api_version}")
|
||||
|
||||
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
|
||||
// Create - dependencies are added transitively
|
||||
modImplementation("com.simibubi.create:create-fabric-${minecraft_version}:${create_version}")
|
||||
|
||||
//JEI
|
||||
compileOnly("mezz.jei:jei-${minecraft_version}-fabric-api:${jei_version}")
|
||||
runtimeOnly(compileOnly("mezz.jei:jei-${minecraft_version}-fabric:${jei_version}"))
|
||||
|
||||
compileOnly fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}")
|
||||
implementation fg.deobf("com.jozufozu.flywheel:flywheel-forge-${minecraft_version}:${flywheel_version}")
|
||||
|
||||
implementation fg.deobf("com.simibubi.create:create-${minecraft_version}:${create_version}:all") { transitive = false }
|
||||
|
||||
|
||||
implementation fg.deobf("curse.maven:createaddition-439890:5070245")
|
||||
implementation fg.deobf("curse.maven:zinclib-968773:5110339")
|
||||
|
||||
implementation fg.deobf("curse.maven:mekanism-268560:4644795")
|
||||
|
||||
implementation fg.deobf("curse.maven:selene-499980:4983974")
|
||||
|
||||
implementation fg.deobf("curse.maven:spark-361579:4505309")
|
||||
|
||||
//implementation fg.deobf("curse.maven:create-steam-n-rails-688231:5246888")
|
||||
|
||||
compileOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}-common-api:${jei_version}")
|
||||
compileOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}-forge-api:${jei_version}")
|
||||
runtimeOnly fg.deobf("mezz.jei:jei-${jei_minecraft_version}-forge:${jei_version}")
|
||||
|
||||
|
||||
|
||||
|
||||
annotationProcessor "org.spongepowered:mixin:0.8.5:processor"
|
||||
testAnnotationProcessor "org.spongepowered:mixin:0.8.5:processor"
|
||||
// Development QOL
|
||||
modLocalRuntime("maven.modrinth:lazydfu:${lazydfu_version}")
|
||||
modLocalRuntime("com.terraformersmc:modmenu:${modmenu_version}")
|
||||
}
|
||||
|
||||
// Example for how to get properties into the manifest for reading at runtime.
|
||||
jar {
|
||||
manifest {
|
||||
attributes([
|
||||
"Specification-Title" : "createindustry",
|
||||
"Specification-Vendor" : "tfmgsareus",
|
||||
"Specification-Version" : "1", // We are version 1 of ourselves
|
||||
"Implementation-Title" : project.name,
|
||||
"Implementation-Version" : project.jar.archiveVersion,
|
||||
"Implementation-Vendor" : "tfmgsareus",
|
||||
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"),
|
||||
"MixinConfigs": "createindustry.mixins.json"
|
||||
])
|
||||
processResources {
|
||||
// require dependencies to be the version compiled against or newer
|
||||
// Map<String, String> properties = Map.of(
|
||||
// "version", version,
|
||||
// "fabric_loader_version", fabric_loader_version,
|
||||
// "fabric_api_version", fabric_api_version,
|
||||
// "create_version", create_version,
|
||||
// "minecraft_version", minecraft_version
|
||||
// )
|
||||
|
||||
inputs.properties(properties)
|
||||
|
||||
filesMatching("fabric.mod.json") {
|
||||
expand properties
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
it.options.release = Integer.parseInt(sourceCompatibility)
|
||||
}
|
||||
|
||||
jar.finalizedBy('reobfJar')
|
||||
|
||||
java {
|
||||
withSourcesJar()
|
||||
}
|
||||
|
||||
jar {
|
||||
from("LICENSE") {
|
||||
rename { "${it}_${project.archivesBaseName}" }
|
||||
}
|
||||
}
|
||||
publishing {
|
||||
publications {
|
||||
mavenJava(MavenPublication) {
|
||||
@@ -195,6 +93,32 @@ publishing {
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
|
||||
loom {
|
||||
runs {
|
||||
|
||||
data {
|
||||
environment = "data"
|
||||
|
||||
defaultMainClass = 'com.drmangotea.createindustry.CreateTFMG.java'
|
||||
//property 'forge.logging.markers', 'REGISTRIES'
|
||||
//property 'forge.logging.console.level', 'debug'
|
||||
programArgs '--mod', 'createindustry', '--all', '--output', 'src/generated/resources/', '--existing', 'src/main/resources/'
|
||||
}
|
||||
|
||||
// mixin {
|
||||
// defaultRefmapName = 'mixins.createindustry.refmap.json'
|
||||
// useRefmap = true
|
||||
// remap = true
|
||||
// }
|
||||
}
|
||||
}
|
||||
//minecraft {
|
||||
//
|
||||
//
|
||||
// // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') // Currently, this location cannot be changed from the default.
|
||||
//
|
||||
|
||||
//}
|
||||
//
|
||||
//// Include resources generated by data generators.
|
||||
//sourceSets.main.resources { srcDir 'src/generated/resources' }
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
org.gradle.jvmargs=-Xmx3G
|
||||
org.gradle.daemon=false
|
||||
|
||||
jei_minecraft_version = 1.19.2
|
||||
jei_version = 11.4.0.274
|
||||
forge_version = 43.2.8
|
||||
jei_version = 11.6.0.1024
|
||||
fabric_loader_version = 0.15.7
|
||||
fabric_api_version = 0.92.0+1.20.1
|
||||
|
||||
minecraft_version = 1.19.2
|
||||
flywheel_version = 0.6.10-20
|
||||
create_version = 0.5.1.f-45
|
||||
librarian_version = 1.+
|
||||
create_version = 0.5.1-f-build.1334+mc1.19.2
|
||||
quilt_version = 22
|
||||
parchment_version = 2022.11.27
|
||||
|
||||
registrate_version = MC1.19-1.1.5
|
||||
registrate_version = MC1.19-1.1.5
|
||||
|
||||
modmenu_version = 4.2.0-beta.2
|
||||
lazydfu_version = 0.1.3
|
||||
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,7 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
||||
35
gradlew
vendored
35
gradlew
vendored
@@ -55,7 +55,7 @@
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
@@ -80,13 +80,11 @@ do
|
||||
esac
|
||||
done
|
||||
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
|
||||
APP_NAME="Gradle"
|
||||
# This is normally unused
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD=maximum
|
||||
@@ -133,22 +131,29 @@ location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD=java
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
if ! command -v java >/dev/null 2>&1
|
||||
then
|
||||
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||
case $MAX_FD in #(
|
||||
max*)
|
||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC2039,SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
case $MAX_FD in #(
|
||||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC2039,SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
@@ -193,11 +198,15 @@ if "$cygwin" || "$msys" ; then
|
||||
done
|
||||
fi
|
||||
|
||||
# Collect all arguments for the java command;
|
||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||
# shell script including quotes and variable substitutions, so put them in
|
||||
# double quotes to make sure that they get re-expanded; and
|
||||
# * put everything else in single quotes, so that it's not re-expanded.
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Collect all arguments for the java command:
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
|
||||
# and any embedded shellness will be escaped.
|
||||
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
|
||||
# treated as '${Hostname}' itself on the command line.
|
||||
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
|
||||
1
gradlew.bat
vendored
1
gradlew.bat
vendored
@@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%"=="" set DIRNAME=.
|
||||
@rem This is normally unused
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
gradlePluginPortal()
|
||||
maven { url = 'https://maven.minecraftforge.net/' }
|
||||
|
||||
|
||||
maven { url = "https://maven.fabricmc.net/" }
|
||||
maven { url = "https://maven.quiltmc.org/repository/release" }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,49 +1,26 @@
|
||||
package com.drmangotea.createindustry;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGContraptions;
|
||||
import com.drmangotea.createindustry.base.TFMGLangPartials;
|
||||
import com.drmangotea.createindustry.config.TFMGConfigs;
|
||||
import com.drmangotea.createindustry.items.weapons.explosives.thermite_grenades.fire.TFMGColoredFires;
|
||||
import com.drmangotea.createindustry.registry.*;
|
||||
import com.drmangotea.createindustry.worldgen.TFMGConfiguredFeatures;
|
||||
import com.drmangotea.createindustry.worldgen.TFMGFeatures;
|
||||
import com.drmangotea.createindustry.worldgen.TFMGOreConfigEntries;
|
||||
import com.mojang.logging.LogUtils;
|
||||
import com.simibubi.create.AllParticleTypes;
|
||||
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock;
|
||||
import com.simibubi.create.foundation.data.CreateRegistrate;
|
||||
import com.simibubi.create.foundation.data.LangMerger;
|
||||
import com.simibubi.create.foundation.item.ItemDescription;
|
||||
import com.simibubi.create.foundation.item.KineticStats;
|
||||
import com.simibubi.create.foundation.item.TooltipHelper;
|
||||
import com.simibubi.create.foundation.item.TooltipModifier;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.data.DataGenerator;
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.data.event.GatherDataEvent;
|
||||
import net.minecraftforge.eventbus.api.EventPriority;
|
||||
import net.minecraftforge.eventbus.api.IEventBus;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.DistExecutor;
|
||||
import net.minecraftforge.fml.ModLoadingContext;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.event.server.ServerStartingEvent;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
import static com.simibubi.create.content.fluids.tank.BoilerHeaters.registerHeater;
|
||||
|
||||
|
||||
@Mod(CreateTFMG.MOD_ID)
|
||||
public class CreateTFMG
|
||||
{
|
||||
public class CreateTFMG implements ModInitializer {
|
||||
|
||||
public static final String MOD_ID = "createindustry";
|
||||
public static final String NAME = "Create: The Factory Must Grow";
|
||||
@@ -51,23 +28,15 @@ public class CreateTFMG
|
||||
public static final Logger LOGGER = LogUtils.getLogger();
|
||||
|
||||
static {
|
||||
REGISTRATE.setTooltipModifierFactory(item -> {
|
||||
return new ItemDescription.Modifier(item, TooltipHelper.Palette.STANDARD_CREATE)
|
||||
.andThen(TooltipModifier.mapNull(KineticStats.create(item)));
|
||||
});
|
||||
REGISTRATE.setTooltipModifierFactory(item ->
|
||||
new ItemDescription.Modifier(item, TooltipHelper.Palette.STANDARD_CREATE)
|
||||
.andThen(TooltipModifier.mapNull(KineticStats.create(item))));
|
||||
}
|
||||
|
||||
public CreateTFMG()
|
||||
{
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
|
||||
|
||||
|
||||
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||
|
||||
REGISTRATE.registerEventListeners(FMLJavaModLoadingContext.get().getModEventBus());
|
||||
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup);
|
||||
//
|
||||
REGISTRATE.register();
|
||||
|
||||
TFMGBlocks.register();
|
||||
TFMGItems.register();
|
||||
@@ -80,32 +49,28 @@ public class CreateTFMG
|
||||
TFMGSoundEvents.prepare();
|
||||
TFMGContraptions.prepare();
|
||||
TFMGOreConfigEntries.init();
|
||||
TFMGParticleTypes.register(modEventBus);
|
||||
TFMGMobEffects.register(modEventBus);
|
||||
TFMGPotions.register(modEventBus);
|
||||
TFMGParticleTypes.register();
|
||||
TFMGMobEffects.register();
|
||||
TFMGPotions.register();
|
||||
TFMGPackets.registerPackets();
|
||||
|
||||
|
||||
TFMGColoredFires.register(modEventBus);
|
||||
TFMGFeatures.register(modEventBus);
|
||||
TFMGRecipeTypes.register(modEventBus);
|
||||
TFMGColoredFires.register();
|
||||
TFMGFeatures.register();
|
||||
TFMGRecipeTypes.register();
|
||||
|
||||
TFMGConfigs.register(ModLoadingContext.get());
|
||||
TFMGConfigs.register();
|
||||
|
||||
//
|
||||
modEventBus.addListener(CreateTFMG::init);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
modEventBus.addListener(EventPriority.LOWEST, CreateTFMG::gatherData);
|
||||
modEventBus.addListener(TFMGSoundEvents::register);
|
||||
DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> CreateTFMGClient::new);
|
||||
modEventBus.addListener(this::clientSetup);
|
||||
CreateTFMG.init();
|
||||
|
||||
//modEventBus.addListener(EventPriority.LOWEST, CreateTFMG::gatherData); CreateTFMGData gaming
|
||||
TFMGSoundEvents.register();
|
||||
}
|
||||
|
||||
public static void init(final FMLCommonSetupEvent event) {
|
||||
public static void init() {
|
||||
TFMGFluids.registerFluidInteractions();
|
||||
|
||||
event.enqueueWork(() -> {
|
||||
//event.enqueueWork(() -> {
|
||||
|
||||
registerHeater(TFMGBlocks.FIREBOX.get(), (level, pos, state) -> {
|
||||
BlazeBurnerBlock.HeatLevel value = state.getValue(BlazeBurnerBlock.HEAT_LEVEL);
|
||||
@@ -121,30 +86,12 @@ public class CreateTFMG
|
||||
return -1;
|
||||
});
|
||||
|
||||
});
|
||||
//});
|
||||
}
|
||||
@SuppressWarnings("removal")
|
||||
public static void gatherData(GatherDataEvent event) {
|
||||
DataGenerator gen = event.getGenerator();
|
||||
gen.addProvider(true, new LangMerger(gen, MOD_ID, NAME, TFMGLangPartials.values()));
|
||||
}
|
||||
@SuppressWarnings("removal")
|
||||
private void clientSetup(final FMLClientSetupEvent event) {
|
||||
ItemBlockRenderTypes.setRenderLayer(TFMGColoredFires.GREEN_FIRE.get(), RenderType.cutout());
|
||||
ItemBlockRenderTypes.setRenderLayer(TFMGColoredFires.BLUE_FIRE.get(), RenderType.cutout());
|
||||
}
|
||||
private void commonSetup(final FMLCommonSetupEvent event) {
|
||||
event.enqueueWork(() -> {
|
||||
final Holder<PlacedFeature> initializeOil = TFMGConfiguredFeatures.OIL_PLACED;
|
||||
final Holder<PlacedFeature> initializeSimulatedOil = TFMGConfiguredFeatures.OIL_DEPOSIT_PLACED;
|
||||
|
||||
});
|
||||
}
|
||||
@SubscribeEvent
|
||||
public void onServerStarting(ServerStartingEvent event)
|
||||
{
|
||||
LOGGER.info("YEEEHAAW");
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public static ResourceLocation asResource(String path) {
|
||||
return new ResourceLocation(MOD_ID, path);
|
||||
|
||||
@@ -7,42 +7,40 @@ import com.drmangotea.createindustry.items.weapons.quad_potato_cannon.QuadPotato
|
||||
import com.drmangotea.createindustry.ponder.TFMGPonderIndex;
|
||||
import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
||||
import com.drmangotea.createindustry.registry.TFMGParticleTypes;
|
||||
import com.simibubi.create.AllParticleTypes;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.eventbus.api.IEventBus;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
import io.github.fabricators_of_create.porting_lib.event.client.ParticleManagerRegistrationCallback;
|
||||
import net.fabricmc.api.ClientModInitializer;
|
||||
|
||||
public class CreateTFMGClient {
|
||||
public class CreateTFMGClient implements ClientModInitializer {
|
||||
public static final QuadPotatoCannonRenderHandler QUAD_POTATO_CANNON_RENDER_HANDLER = new QuadPotatoCannonRenderHandler();
|
||||
|
||||
public static final AdvancedPotatoCannonRenderHandler ADVANCED_POTATO_CANNON_RENDER_HANDLER = new AdvancedPotatoCannonRenderHandler();
|
||||
|
||||
public static final FlamethrowerRenderHandler FLAMETHROWER_RENDER_HANDLER = new FlamethrowerRenderHandler();
|
||||
|
||||
public CreateTFMGClient() {
|
||||
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
|
||||
IEventBus forgeEventBus = MinecraftForge.EVENT_BUS;
|
||||
|
||||
@Override
|
||||
public void onInitializeClient() {
|
||||
TFMGPartialModels.init();
|
||||
modEventBus.addListener(TFMGParticleTypes::registerFactories);
|
||||
modEventBus.register(this);
|
||||
|
||||
ADVANCED_POTATO_CANNON_RENDER_HANDLER.registerListeners();
|
||||
QUAD_POTATO_CANNON_RENDER_HANDLER.registerListeners();
|
||||
FLAMETHROWER_RENDER_HANDLER.registerListeners();
|
||||
|
||||
|
||||
// ItemBlockRenderTypes.setRenderLayer(TFMGColoredFires.GREEN_FIRE.get(), RenderType.cutout());
|
||||
// ItemBlockRenderTypes.setRenderLayer(TFMGColoredFires.BLUE_FIRE.get(), RenderType.cutout());
|
||||
|
||||
ADVANCED_POTATO_CANNON_RENDER_HANDLER.registerListeners(forgeEventBus);
|
||||
QUAD_POTATO_CANNON_RENDER_HANDLER.registerListeners(forgeEventBus);
|
||||
FLAMETHROWER_RENDER_HANDLER.registerListeners(forgeEventBus);
|
||||
}
|
||||
|
||||
|
||||
@SubscribeEvent
|
||||
public void setup(final FMLClientSetupEvent event) {
|
||||
TFMGPonderIndex.register();
|
||||
TFMGPonderIndex.registerTags();
|
||||
ParticleManagerRegistrationCallback.EVENT.register(TFMGParticleTypes::registerFactories);
|
||||
initCompat();
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("Convert2MethodRef") // may cause class loading issues if changed
|
||||
private static void initCompat() {
|
||||
//used for client related compat
|
||||
//example: Mods.<YOUR MOD>.executeIfInstalled(() -> () -> <Compat Class>.<clientInit or init>());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,18 +3,17 @@ package com.drmangotea.createindustry.base;
|
||||
import com.tterrag.registrate.AbstractRegistrate;
|
||||
import com.tterrag.registrate.builders.BuilderCallback;
|
||||
import com.tterrag.registrate.builders.FluidBuilder;
|
||||
import com.tterrag.registrate.fabric.SimpleFlowableFluid;
|
||||
import com.tterrag.registrate.util.nullness.NonNullFunction;
|
||||
import com.tterrag.registrate.util.nullness.NonNullSupplier;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraftforge.fluids.ForgeFlowingFluid;
|
||||
import net.minecraftforge.fluids.ForgeFlowingFluid.Properties;
|
||||
|
||||
public class GasFluidBuilder<T extends ForgeFlowingFluid, P> extends FluidBuilder<T, P> {
|
||||
public class GasFluidBuilder<T extends SimpleFlowableFluid, P> extends FluidBuilder<T, P> {
|
||||
|
||||
public GasFluidBuilder(AbstractRegistrate<?> owner, P parent, String name, BuilderCallback callback,
|
||||
ResourceLocation stillTexture, ResourceLocation flowingTexture, FluidBuilder.FluidTypeFactory typeFactory,
|
||||
NonNullFunction<Properties, T> factory) {
|
||||
super(owner, parent, name, callback, stillTexture, flowingTexture, typeFactory, factory);
|
||||
ResourceLocation stillTexture, ResourceLocation flowingTexture,
|
||||
NonNullFunction<SimpleFlowableFluid.Properties, T> factory) {
|
||||
super(owner, parent, name, callback, stillTexture, flowingTexture, factory);
|
||||
source(factory);
|
||||
}
|
||||
|
||||
@@ -23,6 +22,4 @@ public class GasFluidBuilder<T extends ForgeFlowingFluid, P> extends FluidBuilde
|
||||
return this::getEntry;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,24 +1,20 @@
|
||||
package com.drmangotea.createindustry.base;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.aluminum.AluminumPipeAttachmentModel;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.aluminum.AluminumPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.aluminum.EncasedAluminumPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.aluminum.GlassAluminumPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.brass.BrassPipeAttachmentModel;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.brass.BrassPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.brass.EncasedBrassPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.brass.GlassBrassPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.cast_iron.CastIronPipeAttachmentModel;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.cast_iron.CastIronPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.cast_iron.EncasedCastIronPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.cast_iron.GlassCastIronPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.plastic.EncasedPlasticPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.plastic.GlassPlasticPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.plastic.PlasticPipeAttachmentModel;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.plastic.PlasticPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.steel.EncasedSteelPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.GeneralPipeAttachmentModel;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.steel.GlassSteelPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.steel.SteelPipeAttachmentModel;
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.steel.SteelPipeBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.pumps.TFMGPumpBlock;
|
||||
import com.drmangotea.createindustry.blocks.pipes.smart_pipes.TFMGSmartFluidPipeBlock;
|
||||
@@ -48,6 +44,7 @@ import static com.drmangotea.createindustry.CreateTFMG.REGISTRATE;
|
||||
import static com.simibubi.create.foundation.data.ModelGen.customItemModel;
|
||||
import static com.simibubi.create.foundation.data.TagGen.axeOrPickaxe;
|
||||
import static com.simibubi.create.foundation.data.TagGen.pickaxeOnly;
|
||||
import static com.drmangotea.createindustry.registry.TFMGPartialModels.*;
|
||||
|
||||
public class TFMGPipes {
|
||||
|
||||
@@ -61,7 +58,7 @@ public class TFMGPipes {
|
||||
.initialProperties(() -> Blocks.IRON_BLOCK)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.pipe())
|
||||
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, STEEL_PIPE_ATTACHMENTS, STEEL_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -76,7 +73,7 @@ public class TFMGPipes {
|
||||
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
|
||||
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
|
||||
(s, f) -> !s.getValue(EncasedSteelPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, STEEL_PIPE_ATTACHMENTS, STEEL_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, STEEL_PIPE.get()))
|
||||
.transform(EncasingRegistry.addVariantTo(TFMGPipes.STEEL_PIPE))
|
||||
.register();
|
||||
@@ -101,7 +98,7 @@ public class TFMGPipes {
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED);
|
||||
})
|
||||
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, STEEL_PIPE_ATTACHMENTS, STEEL_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, STEEL_PIPE.get()))
|
||||
.register();
|
||||
|
||||
@@ -111,7 +108,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, STEEL_PIPE_ATTACHMENTS, STEEL_FLUID_PIPE_CASING)))
|
||||
.transform(BlockStressDefaults.setImpact(4.0))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
@@ -123,7 +120,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new SmartFluidPipeGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, STEEL_PIPE_ATTACHMENTS, STEEL_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -134,7 +131,7 @@ public class TFMGPipes {
|
||||
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
|
||||
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
|
||||
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> SteelPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, STEEL_PIPE_ATTACHMENTS, STEEL_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -143,7 +140,7 @@ public class TFMGPipes {
|
||||
.initialProperties(() -> Blocks.IRON_BLOCK)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.pipe())
|
||||
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, CAST_IRON_PIPE_ATTACHMENTS, CAST_IRON_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -158,7 +155,7 @@ public class TFMGPipes {
|
||||
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
|
||||
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
|
||||
(s, f) -> !s.getValue(EncasedCastIronPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, CAST_IRON_PIPE_ATTACHMENTS, CAST_IRON_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, CAST_IRON_PIPE.get()))
|
||||
.transform(EncasingRegistry.addVariantTo(TFMGPipes.CAST_IRON_PIPE))
|
||||
.register();
|
||||
@@ -183,7 +180,7 @@ public class TFMGPipes {
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED);
|
||||
})
|
||||
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, CAST_IRON_PIPE_ATTACHMENTS, CAST_IRON_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, CAST_IRON_PIPE.get()))
|
||||
.register();
|
||||
|
||||
@@ -193,7 +190,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, CAST_IRON_PIPE_ATTACHMENTS, CAST_IRON_FLUID_PIPE_CASING)))
|
||||
.transform(BlockStressDefaults.setImpact(4.0))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
@@ -205,7 +202,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new SmartFluidPipeGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, CAST_IRON_PIPE_ATTACHMENTS, CAST_IRON_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -216,7 +213,7 @@ public class TFMGPipes {
|
||||
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
|
||||
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
|
||||
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> CastIronPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, CAST_IRON_PIPE_ATTACHMENTS, CAST_IRON_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -225,7 +222,7 @@ public class TFMGPipes {
|
||||
.initialProperties(() -> Blocks.IRON_BLOCK)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.pipe())
|
||||
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, BRASS_PIPE_ATTACHMENTS, BRASS_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -240,7 +237,7 @@ public class TFMGPipes {
|
||||
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
|
||||
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
|
||||
(s, f) -> !s.getValue(EncasedBrassPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, BRASS_PIPE_ATTACHMENTS, BRASS_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, BRASS_PIPE.get()))
|
||||
.transform(EncasingRegistry.addVariantTo(TFMGPipes.BRASS_PIPE))
|
||||
.register();
|
||||
@@ -265,7 +262,7 @@ public class TFMGPipes {
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED);
|
||||
})
|
||||
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, BRASS_PIPE_ATTACHMENTS, BRASS_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, STEEL_PIPE.get()))
|
||||
.register();
|
||||
|
||||
@@ -275,7 +272,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, BRASS_PIPE_ATTACHMENTS, BRASS_FLUID_PIPE_CASING)))
|
||||
.transform(BlockStressDefaults.setImpact(4.0))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
@@ -287,7 +284,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new SmartFluidPipeGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, BRASS_PIPE_ATTACHMENTS, BRASS_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -298,7 +295,7 @@ public class TFMGPipes {
|
||||
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
|
||||
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
|
||||
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> BrassPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, BRASS_PIPE_ATTACHMENTS, BRASS_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -307,7 +304,7 @@ public class TFMGPipes {
|
||||
.initialProperties(() -> Blocks.QUARTZ_BLOCK)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.pipe())
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, PLASTIC_PIPE_ATTACHMENTS, PLASTIC_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -322,7 +319,7 @@ public class TFMGPipes {
|
||||
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
|
||||
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
|
||||
(s, f) -> !s.getValue(EncasedPlasticPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, PLASTIC_PIPE_ATTACHMENTS, PLASTIC_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, PLASTIC_PIPE.get()))
|
||||
.transform(EncasingRegistry.addVariantTo(TFMGPipes.PLASTIC_PIPE))
|
||||
.register();
|
||||
@@ -347,7 +344,7 @@ public class TFMGPipes {
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED);
|
||||
})
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, PLASTIC_PIPE_ATTACHMENTS, PLASTIC_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, PLASTIC_PIPE.get()))
|
||||
.register();
|
||||
|
||||
@@ -357,7 +354,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, PLASTIC_PIPE_ATTACHMENTS, PLASTIC_FLUID_PIPE_CASING)))
|
||||
.transform(BlockStressDefaults.setImpact(4.0))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
@@ -369,7 +366,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new SmartFluidPipeGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, PLASTIC_PIPE_ATTACHMENTS, PLASTIC_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -380,7 +377,7 @@ public class TFMGPipes {
|
||||
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
|
||||
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
|
||||
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> PlasticPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, PLASTIC_PIPE_ATTACHMENTS, PLASTIC_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -389,7 +386,7 @@ public class TFMGPipes {
|
||||
.initialProperties(() -> Blocks.IRON_BLOCK)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.pipe())
|
||||
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, ALUMINUM_PIPE_ATTACHMENTS, ALUMINUM_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -404,7 +401,7 @@ public class TFMGPipes {
|
||||
.onRegister(CreateRegistrate.connectedTextures(() -> new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING)))
|
||||
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING,
|
||||
(s, f) -> !s.getValue(EncasedAluminumPipeBlock.FACING_TO_PROPERTY_MAP.get(f)))))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, ALUMINUM_PIPE_ATTACHMENTS, ALUMINUM_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, ALUMINUM_PIPE.get()))
|
||||
.transform(EncasingRegistry.addVariantTo(TFMGPipes.ALUMINUM_PIPE))
|
||||
.register();
|
||||
@@ -416,20 +413,18 @@ public class TFMGPipes {
|
||||
.initialProperties(SharedProperties::copperMetal)
|
||||
.addLayer(() -> RenderType::cutoutMipped)
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate((c, p) -> {
|
||||
p.getVariantBuilder(c.getEntry())
|
||||
.forAllStatesExcept(state -> {
|
||||
Direction.Axis axis = state.getValue(BlockStateProperties.AXIS);
|
||||
return ConfiguredModel.builder()
|
||||
.modelFile(p.models()
|
||||
.getExistingFile(p.modLoc("block/aluminum_pipe/window")))
|
||||
.uvLock(false)
|
||||
.rotationX(axis == Direction.Axis.Y ? 0 : 90)
|
||||
.rotationY(axis == Direction.Axis.X ? 90 : 0)
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED);
|
||||
})
|
||||
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
|
||||
.blockstate((c, p) -> p.getVariantBuilder(c.getEntry())
|
||||
.forAllStatesExcept(state -> {
|
||||
Direction.Axis axis = state.getValue(BlockStateProperties.AXIS);
|
||||
return ConfiguredModel.builder()
|
||||
.modelFile(p.models()
|
||||
.getExistingFile(p.modLoc("block/aluminum_pipe/window")))
|
||||
.uvLock(false)
|
||||
.rotationX(axis == Direction.Axis.Y ? 0 : 90)
|
||||
.rotationY(axis == Direction.Axis.X ? 90 : 0)
|
||||
.build();
|
||||
}, BlockStateProperties.WATERLOGGED))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, ALUMINUM_PIPE_ATTACHMENTS, ALUMINUM_FLUID_PIPE_CASING)))
|
||||
.loot((p, b) -> p.dropOther(b, ALUMINUM_PIPE.get()))
|
||||
.register();
|
||||
|
||||
@@ -439,7 +434,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, ALUMINUM_PIPE_ATTACHMENTS, ALUMINUM_FLUID_PIPE_CASING)))
|
||||
.transform(BlockStressDefaults.setImpact(4.0))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
@@ -451,7 +446,7 @@ public class TFMGPipes {
|
||||
.properties(p -> p.color(MaterialColor.STONE))
|
||||
.transform(pickaxeOnly())
|
||||
.blockstate(new SmartFluidPipeGenerator()::generate)
|
||||
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, ALUMINUM_PIPE_ATTACHMENTS, ALUMINUM_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
@@ -462,7 +457,7 @@ public class TFMGPipes {
|
||||
.blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p,
|
||||
(state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal",
|
||||
state.getValue(FluidValveBlock.ENABLED) ? "open" : "closed")))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> AluminumPipeAttachmentModel::new))
|
||||
.onRegister(CreateRegistrate.blockModel(() -> model -> new GeneralPipeAttachmentModel(model, ALUMINUM_PIPE_ATTACHMENTS, ALUMINUM_FLUID_PIPE_CASING)))
|
||||
.item()
|
||||
.transform(customItemModel())
|
||||
.register();
|
||||
|
||||
@@ -3,21 +3,24 @@ package com.drmangotea.createindustry.base.creative_mode_tabs;
|
||||
import java.util.Collection;
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.simibubi.create.compat.jei.CreateJEI;
|
||||
import com.simibubi.create.infrastructure.item.CreateCreativeModeTab;
|
||||
import com.tterrag.registrate.util.entry.RegistryEntry;
|
||||
|
||||
import io.github.fabricators_of_create.porting_lib.util.ItemGroupUtil;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.entity.ItemRenderer;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.NonNullList;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
|
||||
public abstract class TFMGCreativeModeTab extends CreativeModeTab {
|
||||
public TFMGCreativeModeTab(String id) {
|
||||
super(CreateTFMG.MOD_ID + "." + id);
|
||||
super(ItemGroupUtil.expandArrayAndGetId(), CreateTFMG.MOD_ID + "." + id);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -28,7 +31,7 @@ public abstract class TFMGCreativeModeTab extends CreativeModeTab {
|
||||
}
|
||||
|
||||
protected Collection<RegistryEntry<Item>> registeredItems() {
|
||||
return CreateTFMG.REGISTRATE.getAll(ForgeRegistries.ITEMS.getRegistryKey());
|
||||
return CreateTFMG.REGISTRATE.getAll(Registry.ITEM.key());
|
||||
}
|
||||
|
||||
public void addBlocks(NonNullList<ItemStack> items) {
|
||||
|
||||
@@ -10,6 +10,8 @@ import com.tterrag.registrate.providers.RegistrateRecipeProvider;
|
||||
import com.tterrag.registrate.util.nullness.NonNullBiConsumer;
|
||||
import com.tterrag.registrate.util.nullness.NonNullFunction;
|
||||
import com.tterrag.registrate.util.nullness.NonNullSupplier;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
@@ -18,8 +20,6 @@ import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.client.model.generators.ConfiguredModel;
|
||||
|
||||
import java.util.Optional;
|
||||
@@ -74,7 +74,7 @@ public class TFMGPaletteBlockPattern {
|
||||
private NonNullFunction<NonNullSupplier<Block>, NonNullBiConsumer<DataGenContext<Block, ? extends Block>, RegistrateRecipeProvider>> additionalRecipes;
|
||||
private TFMGPaletteBlockPartial<? extends Block>[] partials;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
private RenderType renderType;
|
||||
|
||||
private static TFMGPaletteBlockPattern create(String name, TFMGPaletteBlockPattern.PatternNameType nameType,
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.drmangotea.createindustry.base.util;
|
||||
|
||||
import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.item.SmartInventory;
|
||||
import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant;
|
||||
import net.fabricmc.fabric.api.transfer.v1.storage.Storage;
|
||||
import net.fabricmc.fabric.api.transfer.v1.storage.base.CombinedStorage;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class CombinedStorageWrapper extends CombinedStorage<ItemVariant, Storage<ItemVariant>> {
|
||||
|
||||
@SafeVarargs
|
||||
public CombinedStorageWrapper(Storage<ItemVariant>... parts) {
|
||||
super(Arrays.stream(parts).toList());
|
||||
}
|
||||
|
||||
// public CombinedStorageWrapper(SmartInventory... invs) {
|
||||
// super();
|
||||
// }
|
||||
}
|
||||
@@ -4,14 +4,20 @@ import com.drmangotea.createindustry.base.ElectricSparkParticle;
|
||||
import com.drmangotea.createindustry.base.util.spark.Spark;
|
||||
import com.drmangotea.createindustry.registry.TFMGEntityTypes;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
import io.github.fabricators_of_create.porting_lib.mixin.common.ProjectileUtilMixin;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.TransferUtil;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityEvent;
|
||||
import net.minecraft.world.entity.projectile.ProjectileUtil;
|
||||
import net.minecraft.world.level.Explosion;
|
||||
import net.minecraft.world.level.GameRules;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -70,4 +76,29 @@ public class TFMGUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static void drain(FluidTank tank, long amount) {
|
||||
try (Transaction t = TransferUtil.getTransaction()) {
|
||||
tank.extract(tank.variant, amount, t);
|
||||
t.commit();
|
||||
}
|
||||
}
|
||||
|
||||
public static long fill(FluidTank tank, FluidStack fluid) {
|
||||
if (!tank.isEmpty() && tank.variant != fluid.getType())
|
||||
throw new RuntimeException("fluid variant being filled into tank isn't the same variant as the fluid in the tank");
|
||||
try (Transaction t = TransferUtil.getTransaction()) {
|
||||
tank.insert(fluid.getType(), fluid.getAmount(), t);
|
||||
t.commit();
|
||||
}
|
||||
return fluid.getAmount();
|
||||
}
|
||||
|
||||
// public static boolean mobGriefingEvent(Level level, Entity entity) {
|
||||
// EntityEvent event = ProjectileUtil.;
|
||||
// MinecraftForge.EVENT_BUS.post(event);
|
||||
// boolean result = event.getResult();
|
||||
// return result == Result.DEFAULT ? level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING) : result == Result.ALLOW;
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
package com.drmangotea.createindustry.base.util.spark;
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.items.weapons.explosives.pipe_bomb.PipeBomb;
|
||||
import com.drmangotea.createindustry.items.weapons.explosives.thermite_grenades.fire.BlueFireBlock;
|
||||
import com.drmangotea.createindustry.registry.TFMGEntityTypes;
|
||||
import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.simibubi.create.content.trains.CubeParticleData;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.particles.ParticleOptions;
|
||||
import net.minecraft.core.particles.ParticleTypes;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.Mob;
|
||||
import net.minecraft.world.entity.*;
|
||||
import net.minecraft.world.entity.projectile.ThrowableProjectile;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.level.GameRules;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.EntityHitResult;
|
||||
@@ -79,7 +79,7 @@ public class BlueSpark extends ThrowableProjectile {
|
||||
super.onHitBlock(p_37384_);
|
||||
if (!this.level.isClientSide) {
|
||||
Entity entity = this.getOwner();
|
||||
if (!(entity instanceof Mob) || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level, this)) {
|
||||
if (!(entity instanceof Mob) || level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
BlockPos blockpos = p_37384_.getBlockPos().relative(p_37384_.getDirection());
|
||||
if (this.level.isEmptyBlock(blockpos)) {
|
||||
this.level.setBlockAndUpdate(blockpos, BlueFireBlock.getState(this.level, blockpos));
|
||||
@@ -115,8 +115,8 @@ public class BlueSpark extends ThrowableProjectile {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static EntityType.Builder<?> build(EntityType.Builder<?> builder) {
|
||||
EntityType.Builder<BlueSpark> entityBuilder = (EntityType.Builder<BlueSpark>) builder;
|
||||
return entityBuilder.sized(.25f, .25f);
|
||||
public static FabricEntityTypeBuilder<BlueSpark> build(FabricEntityTypeBuilder<?> builder) {
|
||||
FabricEntityTypeBuilder<BlueSpark> entityBuilder = (FabricEntityTypeBuilder<BlueSpark>) builder;
|
||||
return entityBuilder.dimensions(EntityDimensions.scalable(.25f, .25f));
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import com.mojang.math.Matrix3f;
|
||||
import com.mojang.math.Matrix4f;
|
||||
import com.mojang.math.Vector3f;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.entity.EntityRenderer;
|
||||
@@ -13,10 +15,8 @@ import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class BlueSparkRenderer extends EntityRenderer<BlueSpark> {
|
||||
private static final ResourceLocation TEXTURE_LOCATION = CreateTFMG.asResource("textures/entity/blue_spark.png");
|
||||
private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION);
|
||||
|
||||
@@ -5,15 +5,14 @@ import com.drmangotea.createindustry.items.weapons.explosives.thermite_grenades.
|
||||
import com.drmangotea.createindustry.registry.TFMGEntityTypes;
|
||||
import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.simibubi.create.content.trains.CubeParticleData;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.particles.ParticleOptions;
|
||||
import net.minecraft.core.particles.ParticleTypes;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.Mob;
|
||||
import net.minecraft.world.entity.*;
|
||||
import net.minecraft.world.entity.projectile.ThrowableProjectile;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.level.GameRules;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.EntityHitResult;
|
||||
@@ -79,7 +78,7 @@ public class GreenSpark extends ThrowableProjectile {
|
||||
super.onHitBlock(p_37384_);
|
||||
if (!this.level.isClientSide) {
|
||||
Entity entity = this.getOwner();
|
||||
if (!(entity instanceof Mob) || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level, this)) {
|
||||
if (!(entity instanceof Mob) || level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
BlockPos blockpos = p_37384_.getBlockPos().relative(p_37384_.getDirection());
|
||||
if (this.level.isEmptyBlock(blockpos)) {
|
||||
this.level.setBlockAndUpdate(blockpos, GreenFireBlock.getState(this.level, blockpos));
|
||||
@@ -115,8 +114,8 @@ public class GreenSpark extends ThrowableProjectile {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static EntityType.Builder<?> build(EntityType.Builder<?> builder) {
|
||||
EntityType.Builder<GreenSpark> entityBuilder = (EntityType.Builder<GreenSpark>) builder;
|
||||
return entityBuilder.sized(.25f, .25f);
|
||||
public static FabricEntityTypeBuilder<GreenSpark> build(FabricEntityTypeBuilder<?> builder) {
|
||||
FabricEntityTypeBuilder<GreenSpark> entityBuilder = (FabricEntityTypeBuilder<GreenSpark>) builder;
|
||||
return entityBuilder.dimensions(EntityDimensions.scalable(.25f, .25f));
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import com.mojang.math.Matrix3f;
|
||||
import com.mojang.math.Matrix4f;
|
||||
import com.mojang.math.Vector3f;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.entity.EntityRenderer;
|
||||
@@ -13,10 +15,8 @@ import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class GreenSparkRenderer extends EntityRenderer<GreenSpark> {
|
||||
private static final ResourceLocation TEXTURE_LOCATION = CreateTFMG.asResource("textures/entity/green_spark.png");
|
||||
private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION);
|
||||
|
||||
@@ -3,15 +3,14 @@ package com.drmangotea.createindustry.base.util.spark;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGEntityTypes;
|
||||
import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.particles.ParticleOptions;
|
||||
import net.minecraft.core.particles.ParticleTypes;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.Mob;
|
||||
import net.minecraft.world.entity.*;
|
||||
import net.minecraft.world.entity.projectile.ThrowableProjectile;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.level.GameRules;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.BaseFireBlock;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
@@ -75,7 +74,7 @@ public class Spark extends ThrowableProjectile {
|
||||
super.onHitBlock(p_37384_);
|
||||
if (!this.level.isClientSide) {
|
||||
Entity entity = this.getOwner();
|
||||
if (!(entity instanceof Mob) || net.minecraftforge.event.ForgeEventFactory.getMobGriefingEvent(this.level, this)) {
|
||||
if (!(entity instanceof Mob) || level.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING)) {
|
||||
BlockPos blockpos = p_37384_.getBlockPos().relative(p_37384_.getDirection());
|
||||
if (this.level.isEmptyBlock(blockpos)) {
|
||||
this.level.setBlockAndUpdate(blockpos, BaseFireBlock.getState(this.level, blockpos));
|
||||
@@ -111,8 +110,8 @@ public class Spark extends ThrowableProjectile {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static EntityType.Builder<?> build(EntityType.Builder<?> builder) {
|
||||
EntityType.Builder<Spark> entityBuilder = (EntityType.Builder<Spark>) builder;
|
||||
return entityBuilder.sized(.25f, .25f);
|
||||
public static FabricEntityTypeBuilder<Spark> build(FabricEntityTypeBuilder<?> builder) {
|
||||
FabricEntityTypeBuilder<Spark> entityBuilder = (FabricEntityTypeBuilder<Spark>) builder;
|
||||
return entityBuilder.dimensions(EntityDimensions.scalable(.25f, .25f));
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,8 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import com.mojang.math.Matrix3f;
|
||||
import com.mojang.math.Matrix4f;
|
||||
import com.mojang.math.Vector3f;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.entity.EntityRenderer;
|
||||
@@ -12,10 +14,8 @@ import net.minecraft.client.renderer.entity.EntityRendererProvider;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class SparkRenderer extends EntityRenderer<Spark> {
|
||||
private static final ResourceLocation TEXTURE_LOCATION = new ResourceLocation("textures/particle/lava.png");
|
||||
private static final RenderType RENDER_TYPE = RenderType.entityCutoutNoCull(TEXTURE_LOCATION);
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
package com.drmangotea.createindustry.blocks.concrete;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.tterrag.registrate.fabric.SimpleFlowableFluid;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraftforge.fluids.ForgeFlowingFluid;
|
||||
|
||||
public class ConcreteFluid extends ForgeFlowingFluid {
|
||||
public class ConcreteFluid extends SimpleFlowableFluid {
|
||||
|
||||
|
||||
protected ConcreteFluid(Properties properties) {
|
||||
public ConcreteFluid(Properties properties) {
|
||||
super(properties);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ import com.mojang.math.Vector3f;
|
||||
import com.simibubi.create.AllFluids;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.tterrag.registrate.builders.FluidBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.SimpleFlowableFluid;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
@@ -13,17 +15,18 @@ import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class ConcreteFluidType extends AllFluids.TintedFluidType {
|
||||
import static net.minecraft.client.renderer.block.model.BlockElementFace.NO_TINT;
|
||||
|
||||
public class ConcreteFluidType extends SimpleFlowableFluid {
|
||||
|
||||
private Vector3f fogColor;
|
||||
private Supplier<Float> fogDistance;
|
||||
|
||||
public static FluidBuilder.FluidTypeFactory create(int fogColor, Supplier<Float> fogDistance) {
|
||||
public static FluidBuilder create(int fogColor, Supplier<Float> fogDistance) {
|
||||
return (p, s, f) -> {
|
||||
ConcreteFluidType fluidType = new ConcreteFluidType(p, s, f);
|
||||
fluidType.fogColor = new Color(fogColor, false).asVectorF();
|
||||
@@ -32,7 +35,7 @@ public class ConcreteFluidType extends AllFluids.TintedFluidType {
|
||||
};
|
||||
}
|
||||
|
||||
private ConcreteFluidType(Properties properties, ResourceLocation stillTexture,
|
||||
private ConcreteFluidType(SimpleFlowableFluid.Properties properties, ResourceLocation stillTexture,
|
||||
ResourceLocation flowingTexture) {
|
||||
super(properties, stillTexture, flowingTexture);
|
||||
}
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
package com.drmangotea.createindustry.blocks.concrete.asphalt;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.tterrag.registrate.fabric.SimpleFlowableFluid;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraftforge.fluids.ForgeFlowingFluid;
|
||||
|
||||
public class AsphaltFluid extends ForgeFlowingFluid {
|
||||
import java.util.Properties;
|
||||
|
||||
public class AsphaltFluid extends SimpleFlowableFluid {
|
||||
|
||||
|
||||
protected AsphaltFluid(Properties properties) {
|
||||
|
||||
@@ -5,15 +5,16 @@ import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
public class FormWorkBlockEntity extends TFMGMachineBlockEntity {
|
||||
|
||||
@@ -42,9 +43,10 @@ public class FormWorkBlockEntity extends TFMGMachineBlockEntity {
|
||||
public boolean isFluidValid(FluidStack stack) {
|
||||
return stack.getFluid().isSame(TFMGFluids.LIQUID_CONCRETE.getSource());
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidStack drain(FluidStack resource, FluidAction action) {
|
||||
return FluidStack.EMPTY;
|
||||
public long extract(FluidVariant extractedVariant, long maxAmount, TransactionContext transaction) {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -115,16 +117,16 @@ public class FormWorkBlockEntity extends TFMGMachineBlockEntity {
|
||||
FluidTank checkedTank = ((FormWorkBlockEntity) CheckedBE).tankInventory;
|
||||
if (checkedTank.getFluidAmount() < 1000) {
|
||||
if(checkedTank.getFluidAmount()>=995&&tankInventory.getFluidAmount()>0){
|
||||
checkedTank.setFluid(new FluidStack(TFMGFluids.LIQUID_CONCRETE.getSource(), checkedTank.getFluidAmount()+1));
|
||||
checkedTank.setFluid(new FluidStack(FluidVariant.of(TFMGFluids.LIQUID_CONCRETE.getSource()), checkedTank.getFluidAmount()+1));
|
||||
//tankInventory.drain(1, IFluidHandler.FluidAction.EXECUTE);
|
||||
// continue;
|
||||
}
|
||||
|
||||
int reducedAmount = tankInventory.getFluidAmount() / 8;
|
||||
int reducedAmount = (int) (tankInventory.getFluidAmount() / 8);
|
||||
|
||||
if (tankInventory.getFluidAmount() != 0)
|
||||
reducedAmount = 1;
|
||||
int newFluidAmount = checkedTank.getFluidAmount() + reducedAmount;
|
||||
int newFluidAmount = (int) (checkedTank.getFluidAmount() + reducedAmount);
|
||||
|
||||
int toRemove = reducedAmount;
|
||||
//if full
|
||||
@@ -136,7 +138,7 @@ public class FormWorkBlockEntity extends TFMGMachineBlockEntity {
|
||||
}
|
||||
//
|
||||
checkedTank.setFluid(new FluidStack(TFMGFluids.LIQUID_CONCRETE.getSource(), newFluidAmount));
|
||||
tankInventory.drain(1, IFluidHandler.FluidAction.EXECUTE);
|
||||
tankInventory.extract(1, FluidTank.FluidAction.EXECUTE);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,12 +13,12 @@ import com.simibubi.create.foundation.render.CachedBufferer;
|
||||
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
public class FormWorkRenderer extends SafeBlockEntityRenderer<FormWorkBlockEntity> {
|
||||
|
||||
|
||||
@@ -7,16 +7,14 @@ import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
import com.jozufozu.flywheel.core.GameStateRegistry;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import net.minecraft.commands.arguments.blocks.BlockStateArgument;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
public class RebarFormWorkBlockEntity extends FormWorkBlockEntity {
|
||||
|
||||
|
||||
@@ -15,13 +15,13 @@ import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider.Context;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.level.block.DoorBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.properties.DoorHingeSide;
|
||||
import net.minecraft.world.level.block.state.properties.DoubleBlockHalf;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
|
||||
public class TFMGSlidingDoorRenderer extends SafeBlockEntityRenderer<TFMGSlidingDoorBlockEntity> {
|
||||
|
||||
@@ -51,7 +51,7 @@ public class TFMGSlidingDoorRenderer extends SafeBlockEntityRenderer<TFMGSliding
|
||||
|
||||
if (((TFMGSlidingDoorBlock) blockState.getBlock()).isFoldingDoor()) {
|
||||
Couple<PartialModel> partials =
|
||||
TFMGPartialModels.FOLDING_DOORS.get(ForgeRegistries.BLOCKS.getKey(blockState.getBlock()));
|
||||
TFMGPartialModels.FOLDING_DOORS.get(Registry.BLOCK.getKey(blockState.getBlock()));
|
||||
if(partials==null)
|
||||
return;
|
||||
boolean flip = blockState.getValue(DoorBlock.HINGE) == DoorHingeSide.RIGHT;
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.api;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.IElectricBlock;
|
||||
|
||||
import static org.apache.commons.lang3.ObjectUtils.min;
|
||||
|
||||
public class Energy {
|
||||
long voltage;
|
||||
long current;
|
||||
|
||||
public Energy(long voltage, long current) {
|
||||
this.current = current;
|
||||
this.voltage = current;
|
||||
}
|
||||
|
||||
public long getVoltage() {
|
||||
return voltage;
|
||||
}
|
||||
|
||||
public long getCurrent() {
|
||||
return current;
|
||||
}
|
||||
|
||||
public long discharge(long amount, boolean simulate) {
|
||||
|
||||
return amount;
|
||||
}
|
||||
|
||||
public long charge(long amount, boolean simulate) {
|
||||
|
||||
return amount;
|
||||
}
|
||||
|
||||
public long transfer(IElectricBlock to, long amount, boolean simulate) {
|
||||
long discharge = discharge(amount, true);
|
||||
long charge = to.getStorage().charge(amount, true);
|
||||
return min(discharge, charge);
|
||||
}
|
||||
}
|
||||
@@ -28,11 +28,6 @@ public class ConverterBlockEntity extends ElectricBlockEntity {
|
||||
@Override
|
||||
public void tick() {
|
||||
super.tick();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,18 +4,13 @@ import com.drmangotea.createindustry.base.util.TFMGUtils;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
@@ -85,22 +80,6 @@ public class ElectricBlockEntity extends SmartBlockEntity implements IHaveGoggle
|
||||
lazyEnergyHandler.invalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull <T> LazyOptional<T> getCapability(@NotNull Capability<T> cap, @Nullable Direction side) {
|
||||
|
||||
|
||||
if (cap == ForgeCapabilities.ENERGY&&side == null) {
|
||||
return lazyEnergyHandler.cast();
|
||||
} else
|
||||
|
||||
if (cap == ForgeCapabilities.ENERGY&&hasElectricitySlot(side)) {
|
||||
return lazyEnergyHandler.cast();
|
||||
}
|
||||
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
|
||||
public void manageVoltage(){
|
||||
|
||||
if(voltageGeneration()>0) {
|
||||
|
||||
@@ -1,42 +1,28 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.base;
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.blocks.electricity.capacitor.CapacitorBlockEntity;
|
||||
import com.drmangotea.createindustry.blocks.electricity.api.Energy;
|
||||
import com.drmangotea.createindustry.blocks.electricity.resistors.ResistorBlockEntity;
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.LeverBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.energy.EnergyStorage;
|
||||
|
||||
public interface IElectricBlock {
|
||||
|
||||
|
||||
|
||||
float internalResistance();
|
||||
|
||||
Energy getStorage();
|
||||
|
||||
int getVoltage();
|
||||
|
||||
boolean gotFElastTick(int value);
|
||||
|
||||
int getCurrent();
|
||||
|
||||
|
||||
int feGeneration();
|
||||
|
||||
int voltageGeneration();
|
||||
|
||||
int transferSpeed();
|
||||
|
||||
|
||||
void addVoltage(float amount);
|
||||
|
||||
default float getCharge(){
|
||||
@@ -47,22 +33,14 @@ public interface IElectricBlock {
|
||||
return false;
|
||||
}
|
||||
|
||||
TFMGForgeEnergyStorage getForgeEnergy();
|
||||
|
||||
boolean hasElectricitySlot(Direction direction);
|
||||
|
||||
|
||||
float maxVoltage();
|
||||
|
||||
void explode();
|
||||
|
||||
int FECapacity();
|
||||
|
||||
|
||||
int getDistanceFromSource();
|
||||
|
||||
|
||||
|
||||
void setDistanceFromSource(int value);
|
||||
|
||||
void sendStuff();
|
||||
@@ -81,8 +59,6 @@ public interface IElectricBlock {
|
||||
|
||||
boolean getsVoltageFromNonTFMGBlock = false;
|
||||
|
||||
|
||||
|
||||
if(canBeDisabled()){
|
||||
|
||||
|
||||
@@ -98,37 +74,29 @@ public interface IElectricBlock {
|
||||
|
||||
if(be1 instanceof IElectricBlock be2){
|
||||
|
||||
|
||||
|
||||
if(be2.hasElectricitySlot(direction.getOpposite())) {
|
||||
|
||||
|
||||
|
||||
int distance = be2.getDistanceFromSource();
|
||||
|
||||
|
||||
if(!isStorage()&&be2.isStorage()&&direction == Direction.UP)
|
||||
distance = Integer.MAX_VALUE;
|
||||
|
||||
|
||||
if(getVoltage()==0) {
|
||||
if(distance>getDistanceFromSource())
|
||||
be2.addVoltage(getVoltage());
|
||||
}
|
||||
|
||||
if(!(be2 instanceof ConverterBlockEntity))
|
||||
if(!(isStorage()&&direction == Direction.DOWN))
|
||||
if(!(!isStorage()&&be2.isStorage()&&direction == Direction.DOWN))
|
||||
if(getVoltage()!=0) {
|
||||
// if(Create.RANDOM.nextInt(3) ==1)
|
||||
transferCharge(be2);
|
||||
if(distance>getDistanceFromSource()){
|
||||
be2.addVoltage(getVoltage());
|
||||
}
|
||||
}
|
||||
|
||||
lowestDistance = Math.min(lowestDistance,distance);
|
||||
|
||||
if(!(isStorage()&&direction == Direction.DOWN))
|
||||
if(!(!isStorage()&&be2.isStorage()&&direction == Direction.DOWN))
|
||||
if(getVoltage()!=0) {
|
||||
// if(Create.RANDOM.nextInt(3) ==1)
|
||||
transferCharge(be2);
|
||||
if(distance>getDistanceFromSource())
|
||||
be2.addVoltage(getVoltage());
|
||||
}
|
||||
lowestDistance = Math.min(lowestDistance,distance);
|
||||
}
|
||||
if(direction.getAxis().isHorizontal()) {
|
||||
if (be2 instanceof ResistorBlockEntity resistorBE)
|
||||
@@ -139,12 +107,7 @@ public interface IElectricBlock {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}else
|
||||
|
||||
if(be1!=null) {
|
||||
|
||||
} else if(be1!=null) {
|
||||
if (be1.getCapability(ForgeCapabilities.ENERGY, direction.getOpposite()).isPresent()) {
|
||||
|
||||
if (!(be1.getCapability(ForgeCapabilities.ENERGY, direction.getOpposite()).orElse(new EnergyStorage(0)) instanceof TFMGForgeEnergyStorage)) {
|
||||
@@ -223,114 +186,47 @@ public interface IElectricBlock {
|
||||
addVoltage(0);
|
||||
}
|
||||
|
||||
|
||||
//PLUH
|
||||
|
||||
default void transferCharge(IElectricBlock be) {
|
||||
|
||||
|
||||
|
||||
if(!isStorage()) {
|
||||
if (be.getDistanceFromSource() > getDistanceFromSource()||be.isStorage()) {
|
||||
|
||||
//int amount = getForgeEnergy().extractEnergy(transferSpeed(), true);
|
||||
//int amount2 = be.getForgeEnergy().receiveEnergy( transferSpeed(), true);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int amount = getForgeEnergy().extractEnergy(transferSpeed()*100, true);
|
||||
int amount2 = be.getForgeEnergy().receiveEnergy(transferSpeed()*100, true);
|
||||
|
||||
|
||||
getForgeEnergy().extractEnergy(Math.min(amount, amount2), false);
|
||||
be.getForgeEnergy().receiveEnergy(Math.min(amount, amount2), false);
|
||||
}
|
||||
if(be.getDistanceFromSource()==getDistanceFromSource()&&getForgeEnergy().getEnergyStored()>be.getForgeEnergy().getEnergyStored()){
|
||||
|
||||
int diff = Math.abs(getForgeEnergy().getEnergyStored()-be.getForgeEnergy().getEnergyStored());
|
||||
|
||||
int amount = getForgeEnergy().extractEnergy(diff / 2, true);
|
||||
int amount2 = be.getForgeEnergy().receiveEnergy( diff / 2, true);
|
||||
getForgeEnergy().extractEnergy( Math.min(amount,amount2), false);
|
||||
be.getForgeEnergy().receiveEnergy( Math.min(amount,amount2), false);
|
||||
boolean hasHigherVoltage = getStorage().getVoltage() > be.getStorage().getVoltage();
|
||||
if(isStorage()) {
|
||||
if(be.isStorage() && !hasHigherVoltage) {
|
||||
long amount = getStorage().transfer(be, transferSpeed() * 10, true);
|
||||
getStorage().transfer(be, amount, false);
|
||||
} else {
|
||||
long amount = be.getStorage().transfer(be, transferSpeed(), true);
|
||||
getStorage().transfer(be, amount, false);
|
||||
}
|
||||
} else {
|
||||
if (be.getDistanceFromSource() > getDistanceFromSource() || be.isStorage()) {
|
||||
long amount = getStorage().transfer(be, transferSpeed()*100, true);
|
||||
getStorage().transfer(be, amount, false);
|
||||
}
|
||||
if(be.getDistanceFromSource() == getDistanceFromSource() && hasHigherVoltage){
|
||||
|
||||
long diff = Math.abs(getStorage().getVoltage() - be.getStorage().getVoltage());
|
||||
|
||||
long amount = getStorage().transfer(be, diff / 2, true);
|
||||
getStorage().transfer(be, amount, false);
|
||||
}
|
||||
}
|
||||
|
||||
if(isStorage()){
|
||||
if(be.isStorage()){
|
||||
|
||||
if(!be.isStorage()||(be.isStorage()&&be.getForgeEnergy().getEnergyStored()<getForgeEnergy().getEnergyStored())) {
|
||||
// if(be.getDistanceFromSource()>=getDistanceFromSource()) {
|
||||
int amount = getForgeEnergy().extractEnergy(transferSpeed()*10, true);
|
||||
int amount2 = be.getForgeEnergy().receiveEnergy(transferSpeed()*10, true);
|
||||
|
||||
|
||||
getForgeEnergy().extractEnergy(Math.min(amount, amount2), false);
|
||||
be.getForgeEnergy().receiveEnergy(Math.min(amount, amount2), false);
|
||||
}
|
||||
|
||||
}else {
|
||||
int amount = getForgeEnergy().extractEnergy(transferSpeed(), true);
|
||||
int amount2 = be.getForgeEnergy().receiveEnergy(transferSpeed(), true);
|
||||
|
||||
|
||||
//if(be.getForgeEnergy().getEnergyStored()<be.getForgeEnergy().getMaxEnergyStored()/2) {
|
||||
getForgeEnergy().extractEnergy(Math.min(amount, amount2), false);
|
||||
be.getForgeEnergy().receiveEnergy(Math.min(amount, amount2), false);
|
||||
//}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//PLUH
|
||||
|
||||
default void useEnergy(int baseValue){
|
||||
|
||||
getForgeEnergy().extractEnergy(baseValue/(voltageGeneration()+1),false);
|
||||
|
||||
}
|
||||
|
||||
|
||||
default TFMGForgeEnergyStorage createEnergyStorage(){
|
||||
return new TFMGForgeEnergyStorage(FECapacity(), 99999) {
|
||||
@Override
|
||||
public void onEnergyChanged(int energyAmount,boolean setEnergy) {
|
||||
|
||||
if(setEnergy)
|
||||
return;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
gotFElastTick(1);
|
||||
|
||||
|
||||
sendStuff();
|
||||
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
getStorage().discharge(baseValue/(voltageGeneration()+1),false);
|
||||
}
|
||||
|
||||
|
||||
default void writeElectrity(CompoundTag compound){
|
||||
|
||||
compound.putInt("Voltage",getVoltage());
|
||||
compound.putInt("Current",getCurrent());
|
||||
compound.putDouble("Voltage",getVoltage());
|
||||
compound.putDouble("Current",getCurrent());
|
||||
|
||||
compound.putInt("DistanceFromSource",getDistanceFromSource());
|
||||
|
||||
compound.putInt("ForgeEnergy", getForgeEnergy().getEnergyStored());
|
||||
//compound.putInt("ForgeEnergy", getForgeEnergy().getEnergyStored());
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -3,21 +3,13 @@ package com.drmangotea.createindustry.blocks.electricity.base;
|
||||
import com.drmangotea.createindustry.base.util.TFMGUtils;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.base;
|
||||
|
||||
import net.minecraftforge.energy.EnergyStorage;
|
||||
|
||||
public abstract class TFMGForgeEnergyStorage extends EnergyStorage {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public TFMGForgeEnergyStorage(int capacity, int maxTransfer) {
|
||||
super(capacity, maxTransfer);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int extractEnergy(int maxExtract, boolean simulate) {
|
||||
int extractedEnergy = super.extractEnergy(maxExtract, simulate);
|
||||
if(extractedEnergy != 0) {
|
||||
onEnergyChanged(maxExtract*-1,false);
|
||||
}
|
||||
|
||||
return extractedEnergy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int receiveEnergy(int maxReceive, boolean simulate) {
|
||||
int receiveEnergy = super.receiveEnergy(maxReceive, simulate);
|
||||
if(receiveEnergy != 0) {
|
||||
onEnergyChanged(receiveEnergy,false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return receiveEnergy;
|
||||
}
|
||||
|
||||
public int setEnergy(int energy) {
|
||||
this.energy = energy;
|
||||
|
||||
if(energy>0)
|
||||
onEnergyChanged(energy,true);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
public abstract void onEnergyChanged(int amount, boolean setEnergy);
|
||||
}
|
||||
@@ -1,18 +1,14 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.base.cables;
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.base.TFMGTools;
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.*;
|
||||
import com.drmangotea.createindustry.blocks.electricity.resistors.ResistorBlockEntity;
|
||||
import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.entity.item.ItemEntity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
@@ -21,8 +17,6 @@ import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.energy.EnergyStorage;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -223,8 +217,7 @@ public class CableConnectorBlockEntity extends ElectricBlockEntity {
|
||||
|
||||
|
||||
|
||||
}else
|
||||
if(be1!=null) {
|
||||
} else if(be1!=null) {
|
||||
|
||||
if (be1.getCapability(ForgeCapabilities.ENERGY, direction.getOpposite()).isPresent()) {
|
||||
|
||||
|
||||
@@ -1,27 +1,19 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.base.cables;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.IHaveCables;
|
||||
import com.drmangotea.createindustry.items.weapons.advanced_potato_cannon.AdvancedPotatoCannonItemRenderer;
|
||||
import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.simibubi.create.foundation.item.render.SimpleCustomRenderer;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.InteractionResultHolder;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class WireItem extends Item {
|
||||
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.base.cables.test;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.TFMGForgeEnergyStorage;
|
||||
|
||||
public class ElectricalNetworkMember {
|
||||
|
||||
public int voltage;
|
||||
|
||||
public TFMGForgeEnergyStorage energy;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.cable_blocks;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.ElectricBlockEntity;
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.IElectricBlock;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package com.drmangotea.createindustry.blocks.electricity.cable_blocks.copycat_ca
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.decoration.copycat.CopycatBlock;
|
||||
import com.simibubi.create.content.decoration.copycat.FilteredBlockAndTintGetter;
|
||||
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import net.fabricmc.fabric.api.renderer.v1.model.ForwardingBakedModel;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
@@ -16,14 +16,12 @@ import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class AbstractCopycatCableModel extends BakedModelWrapperWithData {
|
||||
public abstract class AbstractCopycatCableModel extends ForwardingBakedModel {
|
||||
|
||||
public static final ModelProperty<BlockState> MATERIAL_PROPERTY = new ModelProperty<>();
|
||||
private static final ModelProperty<OcclusionData> OCCLUSION_PROPERTY = new ModelProperty<>();
|
||||
|
||||
@@ -7,6 +7,9 @@ import com.simibubi.create.AllTags;
|
||||
import com.simibubi.create.content.decoration.copycat.CopycatModel;
|
||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||
import com.simibubi.create.foundation.block.IBE;
|
||||
import io.github.fabricators_of_create.porting_lib.block.CustomSoundTypeBlock;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.color.block.BlockColor;
|
||||
import net.minecraft.core.BlockPos;
|
||||
@@ -33,13 +36,10 @@ import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.HitResult;
|
||||
import net.minecraft.world.phys.shapes.Shapes;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.client.model.data.ModelDataManager;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public class CopycatCableBlock extends Block implements IBE<CopycatCableBlockEntity>, IWrenchable {
|
||||
public class CopycatCableBlock extends Block implements IBE<CopycatCableBlockEntity>, IWrenchable, CustomSoundTypeBlock {
|
||||
|
||||
public CopycatCableBlock(Properties pProperties) {
|
||||
super(pProperties);
|
||||
@@ -232,7 +232,7 @@ public class CopycatCableBlock extends Block implements IBE<CopycatCableBlockEnt
|
||||
// Connected Textures
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public BlockState getAppearance(BlockState state, BlockAndTintGetter level, BlockPos pos, Direction side,
|
||||
BlockState queryState, BlockPos queryPos) {
|
||||
|
||||
@@ -348,12 +348,12 @@ public class CopycatCableBlock extends Block implements IBE<CopycatCableBlockEnt
|
||||
|
||||
//
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public static BlockColor wrappedColor() {
|
||||
return new WrappedBlockColor();
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public static class WrappedBlockColor implements BlockColor {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.drmangotea.createindustry.blocks.electricity.cable_blocks.copycat_ca
|
||||
|
||||
import com.drmangotea.createindustry.base.util.TFMGUtils;
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.IElectricBlock;
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.TFMGForgeEnergyStorage;
|
||||
import com.simibubi.create.content.decoration.copycat.CopycatBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import net.minecraft.core.BlockPos;
|
||||
@@ -10,10 +9,6 @@ import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.cable_blocks.copycat_cable_block;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.content.decoration.copycat.CopycatModel;
|
||||
import com.simibubi.create.content.decoration.copycat.CopycatSpecialCases;
|
||||
import com.simibubi.create.foundation.model.BakedModelHelper;
|
||||
import com.simibubi.create.foundation.model.BakedQuadHelper;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import io.github.fabricators_of_create.porting_lib.model.data.ModelData;
|
||||
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.BlockRenderDispatcher;
|
||||
@@ -13,16 +16,17 @@ import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.DirectionalBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class CopycatCableBlockModel extends com.simibubi.create.content.decoration.copycat.CopycatModel {
|
||||
public class CopycatCableBlockModel extends CopycatModel {
|
||||
|
||||
protected static final AABB CUBE_AABB = new AABB(BlockPos.ZERO);
|
||||
|
||||
@@ -30,6 +34,11 @@ public class CopycatCableBlockModel extends com.simibubi.create.content.decorati
|
||||
super(originalModel);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void emitBlockQuadsInner(BlockAndTintGetter blockView, BlockState state, BlockPos pos, Supplier<RandomSource> randomSupplier, RenderContext context, BlockState material, CullFaceRemovalData cullFaceRemovalData, OcclusionData occlusionData) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<BakedQuad> getCroppedQuads(BlockState state, Direction side, RandomSource rand, BlockState material,
|
||||
ModelData wrappedData, RenderType renderType) {
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.drmangotea.createindustry.blocks.electricity.electric_motor;
|
||||
|
||||
import com.drmangotea.createindustry.base.util.TFMGUtils;
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.IElectricBlock;
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.TFMGForgeEnergyStorage;
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.jozufozu.flywheel.util.transform.TransformStack;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
@@ -15,19 +14,13 @@ import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollVa
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@@ -4,7 +4,6 @@ import com.drmangotea.createindustry.base.util.TFMGUtils;
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.ElectricBlockEntity;
|
||||
import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.foundation.item.ItemHelper;
|
||||
import com.simibubi.create.foundation.item.SmartInventory;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import net.minecraft.ChatFormatting;
|
||||
@@ -15,15 +14,9 @@ import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.Containers;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.drmangotea.createindustry.blocks.electricity.voltmeter.energy_meter;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.electricity.base.IElectricBlock;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
@@ -14,8 +13,6 @@ import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.energy.EnergyStorage;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -13,6 +13,11 @@ import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -28,25 +33,15 @@ import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
public class CompactEngineBlockEntity extends GeneratingKineticBlockEntity implements IHaveGoggleInformation, IWrenchable {
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<CombinedTankWrapper> fluidCapability;
|
||||
protected FluidTank tankInventory;
|
||||
|
||||
protected FluidTank lubricationOilTank;
|
||||
@@ -89,9 +84,7 @@ public class CompactEngineBlockEntity extends GeneratingKineticBlockEntity imple
|
||||
|
||||
|
||||
//fluidCapability = LazyOptional.of(() -> tankInventory);
|
||||
fluidCapability = LazyOptional.of(() -> {
|
||||
return new CombinedTankWrapper(tankInventory,lubricationOilTank,coolantTank );
|
||||
});
|
||||
fluidCapability = LazyOptional.of(() -> new CombinedTankWrapper(tankInventory,lubricationOilTank,coolantTank ));
|
||||
|
||||
signal = 0;
|
||||
setLazyTickRate(40);
|
||||
@@ -362,7 +355,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
int random2 = Create.RANDOM.nextInt(200);
|
||||
|
||||
if(random1 == 69)
|
||||
coolantTank.drain(1, IFluidHandler.FluidAction.EXECUTE);
|
||||
coolantTank.extract(1, IFluidHandler.FluidAction.EXECUTE);
|
||||
if(random2 == 69)
|
||||
lubricationOilTank.drain(1, IFluidHandler.FluidAction.EXECUTE);
|
||||
|
||||
@@ -449,7 +442,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
private void makeSound(){
|
||||
soundTimer=0;
|
||||
|
||||
@@ -458,6 +451,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
public boolean playerInteract(Player pPlayer, InteractionHand pHand) {
|
||||
|
||||
ItemStack stack = pPlayer.getItemInHand(pHand);
|
||||
@@ -516,17 +510,6 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
return (float) tankInventory.getFluidAmount() / tankInventory.getCapacity();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
@@ -535,7 +518,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,6 @@ import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
import com.drmangotea.createindustry.registry.TFMGSoundEvents;
|
||||
import com.drmangotea.createindustry.registry.TFMGTags;
|
||||
import com.simibubi.create.content.contraptions.bearing.WindmillBearingBlockEntity;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.content.kinetics.base.GeneratingKineticBlockEntity;
|
||||
import com.simibubi.create.content.kinetics.base.IRotate;
|
||||
@@ -14,14 +13,18 @@ import com.simibubi.create.content.kinetics.base.KineticBlockEntityRenderer;
|
||||
import com.simibubi.create.content.kinetics.belt.behaviour.DirectBeltInputBehaviour;
|
||||
import com.simibubi.create.content.kinetics.steamEngine.PoweredShaftBlockEntity;
|
||||
import com.simibubi.create.content.kinetics.steamEngine.SteamEngineBlock;
|
||||
import com.simibubi.create.content.kinetics.steamEngine.SteamEngineValueBox;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.scrollValue.ScrollOptionBehaviour;
|
||||
import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.*;
|
||||
import mekanism.common.recipe.lookup.cache.type.FluidInputCache;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.fabricmc.fabric.api.transfer.v1.storage.Storage;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -36,15 +39,6 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.properties.AttachFace;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
import net.minecraftforge.fml.DistExecutor;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
@@ -52,6 +46,7 @@ import java.lang.ref.WeakReference;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static com.drmangotea.createindustry.base.util.TFMGUtils.fill;
|
||||
import static com.drmangotea.createindustry.blocks.engines.diesel.DieselEngineBlock.FACE;
|
||||
import static net.minecraft.world.level.block.HorizontalDirectionalBlock.FACING;
|
||||
|
||||
@@ -341,15 +336,15 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
fuelModifier = 1;
|
||||
|
||||
|
||||
fuelTank.setFluid(new FluidStack(TFMGFluids.DIESEL.getSource(),fuelTank.getFluidAmount()-(2-fuelModifier)));
|
||||
fuelTank.setFluid(new FluidStack(FluidVariant.of(TFMGFluids.DIESEL.getSource()),fuelTank.getFluidAmount()-(2-fuelModifier)));
|
||||
|
||||
|
||||
}
|
||||
//airTank.drain(1, IFluidHandler.FluidAction.EXECUTE);
|
||||
if(!airTank.isEmpty()) {
|
||||
airTank.setFluid(new FluidStack(TFMGFluids.AIR.getSource(), airTank.getFluidAmount() - 5));
|
||||
}else expansionBE.airTank.setFluid(new FluidStack(TFMGFluids.AIR.getSource(), expansionBE.airTank.getFluidAmount() - 5));
|
||||
exhaustTank.fill(new FluidStack(TFMGFluids.CARBON_DIOXIDE.getSource(),3), IFluidHandler.FluidAction.EXECUTE);
|
||||
airTank.setFluid(new FluidStack(FluidVariant.of(TFMGFluids.AIR.getSource()), airTank.getFluidAmount() - 5));
|
||||
}else expansionBE.airTank.setFluid(new FluidStack(FluidVariant.of(TFMGFluids.AIR.getSource()), expansionBE.airTank.getFluidAmount() - 5));
|
||||
fill(exhaustTank, new FluidStack(FluidVariant.of(TFMGFluids.CARBON_DIOXIDE.getSource()),3));
|
||||
//tanks.get(false).setFluid(new FluidStack(TFMGFluids.CARBON_DIOXIDE.getSource(), tanks.get(false).getFluidAmount()+1));
|
||||
|
||||
|
||||
@@ -360,12 +355,12 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
if (!expansionBE.coolantTank.isEmpty()){
|
||||
strengthModifier +=3;
|
||||
if(consumptionTimer>5)
|
||||
expansionBE.coolantTank.setFluid(new FluidStack(TFMGFluids.COOLING_FLUID.getSource(), expansionBE.coolantTank.getFluidAmount() - 1));
|
||||
expansionBE.coolantTank.setFluid(new FluidStack(FluidVariant.of(TFMGFluids.COOLING_FLUID.getSource()), expansionBE.coolantTank.getFluidAmount() - 1));
|
||||
}
|
||||
if (!expansionBE.lubricationOilTank.isEmpty()){
|
||||
strengthModifier +=5;
|
||||
if(consumptionTimer>5)
|
||||
expansionBE.lubricationOilTank.setFluid(new FluidStack(TFMGFluids.LUBRICATION_OIL.getSource(), expansionBE.lubricationOilTank.getFluidAmount() - 1));
|
||||
expansionBE.lubricationOilTank.setFluid(new FluidStack(FluidVariant.of(TFMGFluids.LUBRICATION_OIL.getSource()), expansionBE.lubricationOilTank.getFluidAmount() - 1));
|
||||
|
||||
}
|
||||
}
|
||||
@@ -398,7 +393,7 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
protected AABB createRenderBoundingBox() {
|
||||
return super.createRenderBoundingBox().inflate(2);
|
||||
}
|
||||
@@ -423,7 +418,7 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
|
||||
|
||||
@Nullable
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public Float getTargetAngle() {
|
||||
float angle = 0;
|
||||
BlockState blockState = getBlockState();
|
||||
@@ -492,16 +487,6 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
fluidCapability.invalidate();
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings("removal")
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyUpdate() {
|
||||
super.notifyUpdate();
|
||||
@@ -535,13 +520,13 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
|
||||
|
||||
//--Fluid Info--//
|
||||
LazyOptional<IFluidHandler> handler = this.getCapability(ForgeCapabilities.FLUID_HANDLER);
|
||||
Optional<IFluidHandler> resolve = handler.resolve();
|
||||
LazyOptional<CombinedTankWrapper> handler = fluidCapability;
|
||||
Optional<CombinedTankWrapper> resolve = handler.resolve();
|
||||
if (!resolve.isPresent())
|
||||
return false;
|
||||
|
||||
IFluidHandler tank = resolve.get();
|
||||
if (tank.getTanks() == 0)
|
||||
CombinedTankWrapper tanks = resolve.get();
|
||||
if (tanks.parts.isEmpty())
|
||||
return false;
|
||||
|
||||
LangBuilder mb = Lang.translate("generic.unit.millibuckets");
|
||||
@@ -550,8 +535,9 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
.forGoggles(tooltip);
|
||||
|
||||
boolean isEmpty = true;
|
||||
for (int i = 0; i < tank.getTanks(); i++) {
|
||||
FluidStack fluidStack = tank.getFluidInTank(i);
|
||||
for (int i = 0; i < tanks.parts.size(); i++) {
|
||||
Storage<FluidVariant> tank = tanks.parts.get(i);
|
||||
FluidStack fluidStack = tank.iterator();
|
||||
if (fluidStack.isEmpty())
|
||||
continue;
|
||||
|
||||
@@ -564,7 +550,7 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
.add(mb)
|
||||
.style(ChatFormatting.DARK_GREEN))
|
||||
.text(ChatFormatting.GRAY, " / ")
|
||||
.add(Lang.number(tank.getTankCapacity(i))
|
||||
.add(Lang.number(tanks.getTankCapacity(i))
|
||||
.add(mb)
|
||||
.style(ChatFormatting.DARK_GRAY))
|
||||
.forGoggles(tooltip, 1);
|
||||
@@ -572,7 +558,7 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
isEmpty = false;
|
||||
}
|
||||
|
||||
if (tank.getTanks() > 1) {
|
||||
if (tanks.getTanks() > 1) {
|
||||
if (isEmpty)
|
||||
tooltip.remove(tooltip.size() - 1);
|
||||
return true;
|
||||
@@ -582,7 +568,7 @@ public class DieselEngineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
return true;
|
||||
|
||||
Lang.translate("gui.goggles.fluid_container.capacity")
|
||||
.add(Lang.number(tank.getTankCapacity(0))
|
||||
.add(Lang.number(tanks.getTankCapacity(0))
|
||||
.add(mb)
|
||||
.style(ChatFormatting.DARK_GREEN))
|
||||
.style(ChatFormatting.DARK_GRAY)
|
||||
|
||||
@@ -3,7 +3,6 @@ package com.drmangotea.createindustry.blocks.engines.diesel.engine_expansion;
|
||||
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
|
||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||
import com.simibubi.create.foundation.block.IBE;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
@@ -11,9 +10,6 @@ import net.minecraft.world.level.block.DirectionalBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
public class DieselEngineExpansionBlock extends DirectionalBlock implements IBE<DieselEngineExpansionBlockEntity>, IWrenchable {
|
||||
|
||||
|
||||
@@ -8,6 +8,12 @@ import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.fabricmc.fabric.api.transfer.v1.storage.Storage;
|
||||
import net.fabricmc.fabric.api.transfer.v1.storage.StorageView;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -16,12 +22,6 @@ import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
@@ -30,7 +30,7 @@ import java.util.Optional;
|
||||
|
||||
public class DieselEngineExpansionBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation {
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<CombinedTankWrapper> fluidCapability;
|
||||
public FluidTank coolantTank;
|
||||
public FluidTank lubricationOilTank;
|
||||
public FluidTank airTank;
|
||||
@@ -50,16 +50,6 @@ public class DieselEngineExpansionBlockEntity extends SmartBlockEntity implement
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings("removal")
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
@Override
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
@@ -108,17 +98,14 @@ public class DieselEngineExpansionBlockEntity extends SmartBlockEntity implement
|
||||
@Override
|
||||
@SuppressWarnings("removal")
|
||||
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
|
||||
|
||||
|
||||
|
||||
//--Fluid Info--//
|
||||
LazyOptional<IFluidHandler> handler = this.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY);
|
||||
Optional<IFluidHandler> resolve = handler.resolve();
|
||||
LazyOptional<CombinedTankWrapper> handler = this.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY);
|
||||
Optional<CombinedTankWrapper> resolve = handler.resolve();
|
||||
if (!resolve.isPresent())
|
||||
return false;
|
||||
|
||||
IFluidHandler tank = resolve.get();
|
||||
if (tank.getTanks() == 0)
|
||||
CombinedTankWrapper tanks = resolve.get();
|
||||
if (tanks.parts.isEmpty())
|
||||
return false;
|
||||
|
||||
LangBuilder mb = Lang.translate("generic.unit.millibuckets");
|
||||
@@ -127,8 +114,9 @@ public class DieselEngineExpansionBlockEntity extends SmartBlockEntity implement
|
||||
.forGoggles(tooltip);
|
||||
|
||||
boolean isEmpty = true;
|
||||
for (int i = 0; i < tank.getTanks(); i++) {
|
||||
FluidStack fluidStack = tank.getFluidInTank(i);
|
||||
for (int i = 0; i < tanks.parts.size(); i++) {
|
||||
Storage<FluidVariant> tank = tanks.parts.get(i);
|
||||
FluidStack fluidStack = tank;
|
||||
if (fluidStack.isEmpty())
|
||||
continue;
|
||||
|
||||
@@ -141,7 +129,7 @@ public class DieselEngineExpansionBlockEntity extends SmartBlockEntity implement
|
||||
.add(mb)
|
||||
.style(ChatFormatting.DARK_GREEN))
|
||||
.text(ChatFormatting.GRAY, " / ")
|
||||
.add(Lang.number(tank.getTankCapacity(i))
|
||||
.add(Lang.number(tanks.getTankCapacity(i))
|
||||
.add(mb)
|
||||
.style(ChatFormatting.DARK_GRAY))
|
||||
.forGoggles(tooltip, 1);
|
||||
@@ -149,7 +137,7 @@ public class DieselEngineExpansionBlockEntity extends SmartBlockEntity implement
|
||||
isEmpty = false;
|
||||
}
|
||||
|
||||
if (tank.getTanks() > 1) {
|
||||
if (tanks.getTanks() > 1) {
|
||||
if (isEmpty)
|
||||
tooltip.remove(tooltip.size() - 1);
|
||||
return true;
|
||||
@@ -159,7 +147,7 @@ public class DieselEngineExpansionBlockEntity extends SmartBlockEntity implement
|
||||
return true;
|
||||
|
||||
Lang.translate("gui.goggles.fluid_container.capacity")
|
||||
.add(Lang.number(tank.getTankCapacity(0))
|
||||
.add(Lang.number(tanks.getTankCapacity(0))
|
||||
.add(mb)
|
||||
.style(ChatFormatting.DARK_GREEN))
|
||||
.style(ChatFormatting.DARK_GRAY)
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
package com.drmangotea.createindustry.blocks.engines.intake;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||
import com.simibubi.create.content.kinetics.base.KineticBlockEntity;
|
||||
import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -19,19 +21,11 @@ import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.drmangotea.createindustry.blocks.engines.intake.AirIntakeBlock.INVISIBLE;
|
||||
import static com.simibubi.create.content.kinetics.base.DirectionalKineticBlock.FACING;
|
||||
@@ -58,7 +52,7 @@ public class AirIntakeBlockEntity extends KineticBlockEntity implements IWrencha
|
||||
public LerpedFloat visual_angle = LerpedFloat.angular();
|
||||
|
||||
protected FluidTank tankInventory;
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
|
||||
|
||||
|
||||
@@ -79,7 +73,7 @@ public class AirIntakeBlockEntity extends KineticBlockEntity implements IWrencha
|
||||
int production = ((int) maxShaftSpeed * ((diameter * diameter))) / 10;
|
||||
if (tankInventory.getFluidAmount() + production <= tankInventory.getCapacity()) {
|
||||
//tankInventory.fill(new FluidStack(TFMGFluids.AIR.getSource(), production), IFluidHandler.FluidAction.EXECUTE);
|
||||
tankInventory.setFluid(new FluidStack(TFMGFluids.AIR.getSource(), production + tankInventory.getFluidAmount()));
|
||||
tankInventory.setFluid(new FluidStack(FluidVariant.of(TFMGFluids.AIR.getSource()), production + tankInventory.getFluidAmount()));
|
||||
// if(controller!=null) {
|
||||
// ((AirIntakeBlockEntity) level.getBlockEntity(controller)).setChanged();
|
||||
// ((AirIntakeBlockEntity) level.getBlockEntity(controller)).sendData();
|
||||
@@ -237,30 +231,9 @@ public class AirIntakeBlockEntity extends KineticBlockEntity implements IWrencha
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings("removal")
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
|
||||
|
||||
|
||||
if (!fluidCapability.isPresent()) {
|
||||
refreshCapability();
|
||||
sendData();
|
||||
setChanged();
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
private void refreshCapability() {
|
||||
|
||||
IFluidHandler handlerForCapability;
|
||||
FluidTank handlerForCapability;
|
||||
|
||||
if (controller == null || controller == this.getBlockPos()
|
||||
|
||||
@@ -272,8 +245,8 @@ public class AirIntakeBlockEntity extends KineticBlockEntity implements IWrencha
|
||||
}else handlerForCapability = tankInventory;
|
||||
|
||||
|
||||
LazyOptional<IFluidHandler> oldCap = fluidCapability;
|
||||
IFluidHandler finalHandlerForCapability = handlerForCapability;
|
||||
LazyOptional<FluidTank> oldCap = fluidCapability;
|
||||
FluidTank finalHandlerForCapability = handlerForCapability;
|
||||
fluidCapability = LazyOptional.of(() -> finalHandlerForCapability);
|
||||
//oldCap.invalidate();
|
||||
}
|
||||
|
||||
@@ -12,6 +12,11 @@ import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -26,25 +31,15 @@ import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
public class LowGradeFuelEngineBlockEntity extends GeneratingKineticBlockEntity implements IHaveGoggleInformation, IWrenchable {
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<CombinedTankWrapper> fluidCapability;
|
||||
protected FluidTank tankInventory;
|
||||
|
||||
protected FluidTank lubricationOilTank;
|
||||
@@ -87,9 +82,7 @@ boolean signalChanged;
|
||||
|
||||
|
||||
//fluidCapability = LazyOptional.of(() -> tankInventory);
|
||||
fluidCapability = LazyOptional.of(() -> {
|
||||
return new CombinedTankWrapper(tankInventory,lubricationOilTank,coolantTank );
|
||||
});
|
||||
fluidCapability = LazyOptional.of(() -> new CombinedTankWrapper(tankInventory,lubricationOilTank,coolantTank ));
|
||||
|
||||
signal = 0;
|
||||
setLazyTickRate(40);
|
||||
@@ -443,7 +436,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
private void makeSound(){
|
||||
soundTimer=0;
|
||||
|
||||
@@ -499,28 +492,10 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
protected void onFluidStackChanged(FluidStack newFluidStack) {}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public float getFillState() {
|
||||
return (float) tankInventory.getFluidAmount() / tankInventory.getCapacity();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
@@ -529,7 +504,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.drmangotea.createindustry.blocks.engines.radial;
|
||||
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.blocks.engines.radial.input.RadialEngineInputBlockEntity;
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
@@ -18,6 +17,11 @@ import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -31,27 +35,18 @@ import net.minecraft.world.level.block.DirectionalBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static net.minecraft.world.level.block.DirectionalBlock.FACING;
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
public class RadialEngineBlockEntity extends GeneratingKineticBlockEntity implements IHaveGoggleInformation, IWrenchable {
|
||||
|
||||
public LazyOptional<IFluidHandler> fluidCapability;
|
||||
public LazyOptional<CombinedTankWrapper> fluidCapability;
|
||||
protected FluidTank tankInventory;
|
||||
|
||||
protected FluidTank lubricationOilTank;
|
||||
@@ -100,9 +95,7 @@ public class RadialEngineBlockEntity extends GeneratingKineticBlockEntity implem
|
||||
|
||||
|
||||
//fluidCapability = LazyOptional.of(() -> tankInventory);
|
||||
fluidCapability = LazyOptional.of(() -> {
|
||||
return new CombinedTankWrapper(tankInventory,lubricationOilTank,coolantTank );
|
||||
});
|
||||
fluidCapability = LazyOptional.of(() -> new CombinedTankWrapper(tankInventory,lubricationOilTank,coolantTank ));
|
||||
|
||||
signal = 0;
|
||||
setLazyTickRate(40);
|
||||
@@ -559,7 +552,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
private void makeSound(){
|
||||
soundTimer=0;
|
||||
|
||||
@@ -612,16 +605,6 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
return (float) tankInventory.getFluidAmount() / tankInventory.getCapacity();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
//if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
// return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
@@ -630,7 +613,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.drmangotea.createindustry.blocks.engines.radial.input;
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.blocks.engines.radial.RadialEngineBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
@@ -11,9 +10,6 @@ import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.List;
|
||||
@@ -78,18 +74,6 @@ public class RadialEngineInputBlockEntity extends SmartBlockEntity {
|
||||
signal = newSignal;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings("'net.minecraftforge.items.CapabilityItemHandler' is deprecated and marked for removal ")
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
|
||||
if(engine!=null)
|
||||
if(side == this.getBlockState().getValue(FACING))
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return engine.fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(CompoundTag compound, boolean clientPacket) {
|
||||
compound.putInt("Signal", signal);
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
package com.drmangotea.createindustry.blocks.engines.radial.large;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.engines.radial.RadialEngineBlockEntity;
|
||||
import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
import com.drmangotea.createindustry.registry.TFMGTags;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.tags.TagKey;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
|
||||
public class LargeRadialEngineBlockEntity extends RadialEngineBlockEntity {
|
||||
public LargeRadialEngineBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||
|
||||
@@ -15,6 +15,11 @@ import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -28,27 +33,17 @@ import net.minecraft.world.level.block.DirectionalBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static com.simibubi.create.content.kinetics.base.DirectionalKineticBlock.FACING;
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
public abstract class AbstractEngineBlockEntity extends GeneratingKineticBlockEntity implements IHaveGoggleInformation, IWrenchable {
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
protected FluidTank tankInventory;
|
||||
|
||||
protected FluidTank lubricationOilTank;
|
||||
@@ -540,7 +535,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
private void makeSound(){
|
||||
soundTimer=0;
|
||||
if(this instanceof TurbineEngineTileEntity){
|
||||
@@ -610,17 +605,6 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
return (float) tankInventory.getFluidAmount() / tankInventory.getCapacity();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
super.invalidate();
|
||||
@@ -629,7 +613,7 @@ public void write(CompoundTag compound, boolean clientPacket) {
|
||||
|
||||
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -17,26 +20,18 @@ import net.minecraft.world.level.block.DirectionalBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class EngineBackBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation {
|
||||
public class EngineBackBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation {
|
||||
|
||||
|
||||
|
||||
public int consumptionTimer=0;
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
public FluidTank tankInventory;
|
||||
|
||||
|
||||
@@ -197,12 +192,12 @@ import java.util.Optional;
|
||||
|
||||
|
||||
private void refreshCapability() {
|
||||
LazyOptional<IFluidHandler> oldCap = fluidCapability;
|
||||
LazyOptional<FluidTank> oldCap = fluidCapability;
|
||||
fluidCapability = LazyOptional.of(() -> handlerForCapability());
|
||||
oldCap.invalidate();
|
||||
}
|
||||
|
||||
private IFluidHandler handlerForCapability() {
|
||||
private FluidTank handlerForCapability() {
|
||||
|
||||
return tankInventory;
|
||||
}
|
||||
@@ -231,24 +226,12 @@ import java.util.Optional;
|
||||
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
if (!fluidCapability.isPresent())
|
||||
refreshCapability();
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
|
||||
}
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package com.drmangotea.createindustry.blocks.fluids;
|
||||
|
||||
import com.tterrag.registrate.fabric.SimpleFlowableFluid;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraftforge.fluids.ForgeFlowingFluid;
|
||||
|
||||
/**
|
||||
* makes fluid burn when close to fire,
|
||||
* not working for now
|
||||
*/
|
||||
public class FlammableFluid extends ForgeFlowingFluid {
|
||||
public class FlammableFluid extends SimpleFlowableFluid {
|
||||
|
||||
|
||||
protected FlammableFluid(Properties properties) {
|
||||
|
||||
@@ -13,7 +13,6 @@ import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
|
||||
@@ -9,6 +9,11 @@ import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.fabricmc.fabric.api.transfer.v1.storage.Storage;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -16,13 +21,9 @@ import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.security.DrbgParameters;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -32,7 +33,7 @@ public class TFMGMachineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
|
||||
private boolean contentsChanged;
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<CombinedTankWrapper> fluidCapability;
|
||||
|
||||
public TFMGMachineBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||
super(type, pos, state);
|
||||
@@ -41,7 +42,17 @@ public class TFMGMachineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
contentsChanged = true;
|
||||
|
||||
}
|
||||
|
||||
// im like 90% sure we dont need this
|
||||
// @Nonnull
|
||||
// @Override
|
||||
// public <T> LazyOptional<T> getCapability(@Nonnull DrbgParameters.Capability<T> cap, Direction side) {
|
||||
//
|
||||
//
|
||||
//
|
||||
// if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
// return fluidCapability.cast();
|
||||
// return super.getCapability(cap, side);
|
||||
// }
|
||||
|
||||
|
||||
@Override
|
||||
@@ -58,13 +69,10 @@ public class TFMGMachineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
behaviours.add(tank1);
|
||||
behaviours.add(tank2);
|
||||
|
||||
|
||||
|
||||
|
||||
fluidCapability = LazyOptional.of(() -> {
|
||||
LazyOptional<? extends IFluidHandler> inputCap = tank1.getCapability();
|
||||
LazyOptional<? extends IFluidHandler> outputCap = tank2.getCapability();
|
||||
return new CombinedTankWrapper(outputCap.orElse(null), inputCap.orElse(null));
|
||||
Storage<FluidVariant> inputCap = tank1.getCapability();
|
||||
Storage<FluidVariant> outputCap = tank2.getCapability();
|
||||
return new CombinedTankWrapper(outputCap, inputCap);
|
||||
});
|
||||
|
||||
|
||||
@@ -79,16 +87,8 @@ public class TFMGMachineBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
|
||||
fluidCapability.invalidate();
|
||||
}
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
|
||||
|
||||
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
@Override
|
||||
public void notifyUpdate() {
|
||||
super.notifyUpdate();
|
||||
|
||||
@@ -2,13 +2,15 @@ package com.drmangotea.createindustry.blocks.machines.exhaust;
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -16,13 +18,6 @@ import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
@@ -34,7 +29,7 @@ public class ExhaustBlockEntity extends SmartBlockEntity implements IHaveGoggleI
|
||||
|
||||
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
public FluidTank tankInventory;
|
||||
|
||||
public boolean spawnsSmoke=false;
|
||||
@@ -61,12 +56,12 @@ public class ExhaustBlockEntity extends SmartBlockEntity implements IHaveGoggleI
|
||||
LangBuilder mb = Lang.translate("generic.unit.millibuckets");
|
||||
|
||||
/////////
|
||||
LazyOptional<IFluidHandler> handler = this.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY);
|
||||
Optional<IFluidHandler> resolve = handler.resolve();
|
||||
LazyOptional<FluidTank> handler = this.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY);
|
||||
Optional<FluidTank> resolve = handler.resolve();
|
||||
if (!resolve.isPresent())
|
||||
return false;
|
||||
|
||||
IFluidHandler tank = resolve.get();
|
||||
FluidTank tank = resolve.get();
|
||||
if (tank.getTanks() == 0)
|
||||
return false;
|
||||
|
||||
@@ -210,13 +205,12 @@ public class ExhaustBlockEntity extends SmartBlockEntity implements IHaveGoggleI
|
||||
|
||||
|
||||
private void refreshCapability() {
|
||||
LazyOptional<IFluidHandler> oldCap = fluidCapability;
|
||||
LazyOptional<FluidTank> oldCap = fluidCapability;
|
||||
fluidCapability = LazyOptional.of(() -> handlerForCapability());
|
||||
oldCap.invalidate();
|
||||
}
|
||||
|
||||
private IFluidHandler handlerForCapability() {
|
||||
|
||||
private FluidTank handlerForCapability() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
@@ -244,24 +238,12 @@ public class ExhaustBlockEntity extends SmartBlockEntity implements IHaveGoggleI
|
||||
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
if (!fluidCapability.isPresent())
|
||||
refreshCapability();
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
|
||||
}
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,34 +1,20 @@
|
||||
package com.drmangotea.createindustry.blocks.machines.firebox;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
|
||||
import com.simibubi.create.AllBlockEntityTypes;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||
import com.simibubi.create.content.processing.basin.BasinBlockEntity;
|
||||
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock;
|
||||
import com.simibubi.create.content.processing.burner.BlazeBurnerBlockItem;
|
||||
import com.simibubi.create.foundation.block.IBE;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.MethodsReturnNonnullByDefault;
|
||||
import net.minecraft.advancements.critereon.StatePropertiesPredicate;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.NonNullList;
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.util.StringRepresentable;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.InteractionResultHolder;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.FlintAndSteelItem;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.ItemLike;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
|
||||
@@ -38,19 +24,6 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition.Builder;
|
||||
import net.minecraft.world.level.block.state.properties.EnumProperty;
|
||||
import net.minecraft.world.level.pathfinder.PathComputationType;
|
||||
import net.minecraft.world.level.storage.loot.LootPool;
|
||||
import net.minecraft.world.level.storage.loot.LootTable;
|
||||
import net.minecraft.world.level.storage.loot.entries.LootItem;
|
||||
import net.minecraft.world.level.storage.loot.predicates.ExplosionCondition;
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemBlockStatePropertyCondition;
|
||||
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
|
||||
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.util.FakePlayer;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
@@ -136,7 +109,7 @@ public class FireboxBlock extends HorizontalDirectionalBlock implements IBE<Fire
|
||||
return false;
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public void animateTick(BlockState state, Level world, BlockPos pos, Random random) {
|
||||
if (random.nextInt(10) != 0)
|
||||
return;
|
||||
|
||||
@@ -1,43 +1,26 @@
|
||||
package com.drmangotea.createindustry.blocks.machines.firebox;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
import com.drmangotea.createindustry.registry.TFMGTags;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.AllTags.AllItemTags;
|
||||
import com.simibubi.create.content.fluids.tank.FluidTankBlock;
|
||||
import com.simibubi.create.content.processing.burner.BlazeBurnerBlock.HeatLevel;
|
||||
import com.simibubi.create.content.processing.burner.BlazeBurnerBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.player.LocalPlayer;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.particles.ParticleTypes;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
@@ -51,7 +34,7 @@ public class FireboxBlockEntity extends SmartBlockEntity {
|
||||
protected int remainingBurnTime;
|
||||
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
public FluidTank tankInventory;
|
||||
|
||||
|
||||
@@ -127,20 +110,12 @@ public class FireboxBlockEntity extends SmartBlockEntity {
|
||||
super.read(compound, clientPacket);
|
||||
}
|
||||
private void refreshCapability() {
|
||||
LazyOptional<IFluidHandler> oldCap = fluidCapability;
|
||||
LazyOptional<FluidTank> oldCap = fluidCapability;
|
||||
fluidCapability = LazyOptional.of(() -> handlerForCapability());
|
||||
oldCap.invalidate();
|
||||
}
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
if (!fluidCapability.isPresent())
|
||||
refreshCapability();
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
private IFluidHandler handlerForCapability() {
|
||||
|
||||
private FluidTank handlerForCapability() {
|
||||
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.drmangotea.createindustry.blocks.machines.flarestack;
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGFluids;
|
||||
import com.drmangotea.createindustry.registry.TFMGTags;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
@@ -9,6 +8,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -16,13 +18,6 @@ import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
@@ -33,7 +28,7 @@ public class FlarestackBlockEntity extends SmartBlockEntity implements IHaveGogg
|
||||
|
||||
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
public FluidTank tankInventory;
|
||||
|
||||
public boolean spawnsSmoke=false;
|
||||
@@ -61,12 +56,12 @@ public class FlarestackBlockEntity extends SmartBlockEntity implements IHaveGogg
|
||||
LangBuilder mb = Lang.translate("generic.unit.millibuckets");
|
||||
|
||||
/////////
|
||||
LazyOptional<IFluidHandler> handler = this.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY);
|
||||
Optional<IFluidHandler> resolve = handler.resolve();
|
||||
LazyOptional<FluidTank> handler = this.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY);
|
||||
Optional<FluidTank> resolve = handler.resolve();
|
||||
if (!resolve.isPresent())
|
||||
return false;
|
||||
|
||||
IFluidHandler tank = resolve.get();
|
||||
FluidTank tank = resolve.get();
|
||||
if (tank.getTanks() == 0)
|
||||
return false;
|
||||
|
||||
@@ -205,13 +200,12 @@ public class FlarestackBlockEntity extends SmartBlockEntity implements IHaveGogg
|
||||
|
||||
|
||||
private void refreshCapability() {
|
||||
LazyOptional<IFluidHandler> oldCap = fluidCapability;
|
||||
LazyOptional<FluidTank> oldCap = fluidCapability;
|
||||
fluidCapability = LazyOptional.of(() -> handlerForCapability());
|
||||
oldCap.invalidate();
|
||||
}
|
||||
|
||||
private IFluidHandler handlerForCapability() {
|
||||
|
||||
private FluidTank handlerForCapability() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
@@ -239,25 +233,12 @@ public class FlarestackBlockEntity extends SmartBlockEntity implements IHaveGogg
|
||||
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings("removal")
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
if (!fluidCapability.isPresent())
|
||||
refreshCapability();
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
|
||||
}
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.drmangotea.createindustry.blocks.machines.metal_processing.blast_furnace;
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.base.util.CombinedStorageWrapper;
|
||||
import com.drmangotea.createindustry.blocks.machines.TFMGMachineBlockEntity;
|
||||
import com.drmangotea.createindustry.recipes.industrial_blasting.IndustrialBlastingRecipe;
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
@@ -8,31 +8,30 @@ import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.drmangotea.createindustry.registry.TFMGRecipeTypes;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.content.logistics.depot.DepotBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.item.ItemHelper;
|
||||
import com.simibubi.create.foundation.item.SmartInventory;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.item.ItemStackHandler;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.item.RecipeWrapper;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant;
|
||||
import net.fabricmc.fabric.api.transfer.v1.storage.Storage;
|
||||
import net.fabricmc.fabric.api.transfer.v1.storage.base.CombinedStorage;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.entity.item.ItemEntity;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
||||
import net.minecraftforge.items.wrapper.RecipeWrapper;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.ArrayList;
|
||||
@@ -67,14 +66,12 @@ public class BlastFurnaceOutputBlockEntity extends TFMGMachineBlockEntity implem
|
||||
public LerpedFloat coalCokeHeight = LerpedFloat.linear();
|
||||
|
||||
//item storage
|
||||
public LazyOptional<IItemHandlerModifiable> itemCapability;
|
||||
public LazyOptional<CombinedStorageWrapper> itemCapability;
|
||||
|
||||
public SmartInventory inputInventory;
|
||||
|
||||
public SmartInventory fuelInventory;
|
||||
|
||||
int debug = 0;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -88,7 +85,7 @@ public class BlastFurnaceOutputBlockEntity extends TFMGMachineBlockEntity implem
|
||||
fuelInventory = new SmartInventory(1, this).forbidInsertion().forbidExtraction()
|
||||
.withMaxStackSize(64);
|
||||
|
||||
itemCapability = LazyOptional.of(() -> new CombinedInvWrapper(inputInventory,fuelInventory));
|
||||
itemCapability = LazyOptional.of(() -> new CombinedStorageWrapper(inputInventory, fuelInventory));
|
||||
|
||||
|
||||
tank1.getPrimaryHandler().setCapacity(8000);
|
||||
@@ -392,16 +389,7 @@ public class BlastFurnaceOutputBlockEntity extends TFMGMachineBlockEntity implem
|
||||
super.invalidate();
|
||||
itemCapability.invalidate();
|
||||
}
|
||||
@Nonnull
|
||||
@Override
|
||||
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
if (cap == ForgeCapabilities.ITEM_HANDLER)
|
||||
return itemCapability.cast();
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
public void checkType(){
|
||||
|
||||
mainFloor = this.getBlockPos().relative(outputFacing.getOpposite());
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.drmangotea.createindustry.blocks.machines.metal_processing.casting_basin;
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.blocks.machines.TFMGMachineBlockEntity;
|
||||
import com.drmangotea.createindustry.recipes.casting.CastingRecipe;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
@@ -18,23 +17,13 @@ import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.util.StringRepresentable;
|
||||
import net.minecraft.world.Container;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.Recipe;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.items.CapabilityItemHandler;
|
||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static com.drmangotea.createindustry.blocks.machines.metal_processing.casting_basin.CastingBasinBlock.MOLD_TYPE;
|
||||
|
||||
@@ -277,16 +266,7 @@ public class CastingBasinBlockEntity extends TFMGMachineBlockEntity implements I
|
||||
super.invalidate();
|
||||
itemCapability.invalidate();
|
||||
}
|
||||
@Nonnull
|
||||
@Override
|
||||
@SuppressWarnings("removal")
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
|
||||
return itemCapability.cast();
|
||||
if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
protected Object getRecipeCacheKey() {
|
||||
return CastingRecipesKey;
|
||||
}
|
||||
|
||||
@@ -1,25 +1,19 @@
|
||||
package com.drmangotea.createindustry.blocks.machines.metal_processing.casting_spout;
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.blocks.machines.TFMGMachineBlockEntity;
|
||||
import com.drmangotea.createindustry.blocks.machines.metal_processing.casting_basin.CastingBasinBlockEntity;
|
||||
import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
public class CastingSpoutBlockEntity extends TFMGMachineBlockEntity {
|
||||
|
||||
|
||||
@@ -5,20 +5,19 @@ import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
||||
import com.jozufozu.flywheel.core.PartialModel;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import com.simibubi.create.AllPartialModels;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment;
|
||||
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
|
||||
import com.simibubi.create.foundation.fluid.FluidRenderer;
|
||||
import com.simibubi.create.foundation.render.CachedBufferer;
|
||||
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
public class CastingSpoutRenderer extends SafeBlockEntityRenderer<CastingSpoutBlockEntity> {
|
||||
|
||||
|
||||
@@ -13,28 +13,19 @@ import com.simibubi.create.foundation.item.ItemHelper;
|
||||
import com.simibubi.create.foundation.item.SmartInventory;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.item.RecipeWrapper;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.RegistryAccess;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.entity.item.ItemEntity;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
||||
import net.minecraftforge.items.wrapper.RecipeWrapper;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.List;
|
||||
@@ -518,19 +509,6 @@ public class CokeOvenBlockEntity extends TFMGMachineBlockEntity implements IWren
|
||||
super.invalidate();
|
||||
itemCapability.invalidate();
|
||||
}
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
if(controller!=null)
|
||||
refreshCapability();
|
||||
if (cap == ForgeCapabilities.ITEM_HANDLER)
|
||||
return itemCapability.cast();
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
|
||||
@@ -1,45 +1,40 @@
|
||||
package com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.controller;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.output.DistillationOutputBlockEntity;
|
||||
import com.drmangotea.createindustry.blocks.tanks.SteelTankBlock;
|
||||
import com.drmangotea.createindustry.blocks.tanks.SteelTankBlockEntity;
|
||||
import com.drmangotea.createindustry.recipes.distillation.DistillationRecipe;
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.content.fluids.pump.PumpBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour;
|
||||
import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.item.SmartInventory;
|
||||
import com.simibubi.create.foundation.recipe.RecipeFinder;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.TransferUtil;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.NbtUtils;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.Container;
|
||||
import net.minecraft.world.item.crafting.Recipe;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
import org.checkerframework.checker.units.qual.C;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.drmangotea.createindustry.base.util.TFMGUtils.fill;
|
||||
|
||||
public class DistillationControllerBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation {
|
||||
|
||||
private static final Object DistillationRecipesKey = new Object();
|
||||
@@ -47,7 +42,7 @@ public class DistillationControllerBlockEntity extends SmartBlockEntity implemen
|
||||
public DistillationRecipe recipe;
|
||||
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
|
||||
public final FluidTank tank= new SmartFluidTank(8000,this::onFluidStackChanged);
|
||||
|
||||
@@ -110,7 +105,7 @@ public class DistillationControllerBlockEntity extends SmartBlockEntity implemen
|
||||
|
||||
|
||||
for(DistillationOutputBlockEntity be1 : outputs){
|
||||
if(be1.tank.getSpace()==0)
|
||||
if(be1.tank.isEmpty())
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -125,15 +120,17 @@ public class DistillationControllerBlockEntity extends SmartBlockEntity implemen
|
||||
if(fluidStack.isEmpty())
|
||||
break;
|
||||
|
||||
if(output.tank.fill(new FluidStack(fluidStack, (int) (fluidStack.getAmount()*speedModifier)), IFluidHandler.FluidAction.SIMULATE)>output.tank.getCapacity())
|
||||
if(fill(output.tank, new FluidStack(fluidStack, (int) (fluidStack.getAmount()*speedModifier)))>output.tank.getCapacity())
|
||||
break;
|
||||
|
||||
|
||||
output.tank.fill(new FluidStack(fluidStack, (int) (fluidStack.getAmount()*speedModifier)), IFluidHandler.FluidAction.EXECUTE);
|
||||
fill(output.tank, new FluidStack(fluidStack, (int) (fluidStack.getAmount()*speedModifier)));
|
||||
int consumption = (recipe.getInputFluid().getRequiredAmount()/6);
|
||||
|
||||
|
||||
tank.drain((int) (consumption*speedModifier), IFluidHandler.FluidAction.EXECUTE);
|
||||
try (Transaction t = TransferUtil.getTransaction()) {
|
||||
tank.extract(tank.variant, (long) (consumption*speedModifier), t);
|
||||
t.commit();
|
||||
}
|
||||
|
||||
numero++;
|
||||
|
||||
@@ -232,16 +229,6 @@ public class DistillationControllerBlockEntity extends SmartBlockEntity implemen
|
||||
return DistillationRecipesKey;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
public ArrayList<DistillationOutputBlockEntity> getOutputs(){
|
||||
ArrayList<DistillationOutputBlockEntity> outputs = new ArrayList<>();
|
||||
|
||||
|
||||
@@ -1,27 +1,22 @@
|
||||
package com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.output;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.controller.DistillationControllerBlock;
|
||||
import com.drmangotea.createindustry.blocks.tanks.SteelTankBlockEntity;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.TransferUtil;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.fabricmc.fabric.api.transfer.v1.storage.Storage;
|
||||
import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.List;
|
||||
@@ -29,12 +24,12 @@ import java.util.List;
|
||||
public class DistillationOutputBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation {
|
||||
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected Storage<FluidVariant> fluidCapability;
|
||||
|
||||
public final FluidTank tank = new SmartFluidTank(8000,this::onFluidStackChanged);
|
||||
public DistillationOutputBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||
super(type, pos, state);
|
||||
fluidCapability = LazyOptional.of(()->tank);
|
||||
fluidCapability = tank.getSlot(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -54,13 +49,6 @@ public class DistillationOutputBlockEntity extends SmartBlockEntity implements I
|
||||
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
@Override
|
||||
protected void read(CompoundTag compound, boolean clientPacket) {
|
||||
super.read(compound, clientPacket);
|
||||
@@ -82,8 +70,6 @@ public class DistillationOutputBlockEntity extends SmartBlockEntity implements I
|
||||
|
||||
|
||||
return containedFluidTooltip(tooltip, isPlayerSneaking,
|
||||
getCapability(ForgeCapabilities.FLUID_HANDLER));
|
||||
|
||||
|
||||
fluidCapability);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,12 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.LangBuilder;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.TransferUtil;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
@@ -17,12 +23,6 @@ import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.List;
|
||||
@@ -38,7 +38,7 @@ public class PumpjackBaseBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
|
||||
public int miningRate = 0;
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
public FluidTank tankInventory;
|
||||
public BlockPos deposit;
|
||||
|
||||
@@ -139,7 +139,7 @@ public class PumpjackBaseBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
return;
|
||||
|
||||
|
||||
tankInventory.setFluid(new FluidStack(TFMGFluids.CRUDE_OIL.getSource(), tankInventory.getFluidAmount() + miningRate));
|
||||
tankInventory.setFluid(new FluidStack(FluidVariant.of(TFMGFluids.CRUDE_OIL.getSource()), tankInventory.getFluidAmount() + miningRate));
|
||||
|
||||
}
|
||||
|
||||
@@ -185,52 +185,36 @@ public class PumpjackBaseBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
}
|
||||
|
||||
//--Fluid Info--//
|
||||
LazyOptional<IFluidHandler> handler = this.getCapability(ForgeCapabilities.FLUID_HANDLER);
|
||||
Optional<IFluidHandler> resolve = handler.resolve();
|
||||
LazyOptional<FluidTank> handler = fluidCapability;
|
||||
Optional<FluidTank> resolve = handler.resolve();
|
||||
if (!resolve.isPresent())
|
||||
return false;
|
||||
|
||||
IFluidHandler tank = resolve.get();
|
||||
if (tank.getTanks() == 0)
|
||||
return false;
|
||||
FluidTank tank = resolve.get();
|
||||
|
||||
FluidStack fluidStack = tank.getFluid();
|
||||
|
||||
Lang.fluidName(fluidStack)
|
||||
.style(ChatFormatting.GRAY)
|
||||
.forGoggles(tooltip, 1);
|
||||
|
||||
Lang.builder()
|
||||
.add(Lang.number(fluidStack.getAmount())
|
||||
.add(mb)
|
||||
.style(ChatFormatting.DARK_GREEN))
|
||||
.text(ChatFormatting.GRAY, " / ")
|
||||
.add(Lang.number(tank.getCapacity())
|
||||
.add(mb)
|
||||
.style(ChatFormatting.DARK_GRAY))
|
||||
.forGoggles(tooltip, 1);
|
||||
|
||||
boolean isEmpty = true;
|
||||
for (int i = 0; i < tank.getTanks(); i++) {
|
||||
FluidStack fluidStack = tank.getFluidInTank(i);
|
||||
if (fluidStack.isEmpty())
|
||||
continue;
|
||||
|
||||
Lang.fluidName(fluidStack)
|
||||
.style(ChatFormatting.GRAY)
|
||||
.forGoggles(tooltip, 1);
|
||||
|
||||
Lang.builder()
|
||||
.add(Lang.number(fluidStack.getAmount())
|
||||
.add(mb)
|
||||
.style(ChatFormatting.DARK_GREEN))
|
||||
.text(ChatFormatting.GRAY, " / ")
|
||||
.add(Lang.number(tank.getTankCapacity(i))
|
||||
.add(mb)
|
||||
.style(ChatFormatting.DARK_GRAY))
|
||||
.forGoggles(tooltip, 1);
|
||||
|
||||
isEmpty = false;
|
||||
}
|
||||
|
||||
if (tank.getTanks() > 1) {
|
||||
if (isEmpty)
|
||||
tooltip.remove(tooltip.size() - 1);
|
||||
return true;
|
||||
}
|
||||
boolean isEmpty = tank.isEmpty();
|
||||
|
||||
if (!isEmpty)
|
||||
return true;
|
||||
|
||||
Lang.translate("gui.goggles.fluid_container.capacity")
|
||||
.add(Lang.number(tank.getTankCapacity(0))
|
||||
.add(Lang.number(tank.getCapacity())
|
||||
.add(mb)
|
||||
.style(ChatFormatting.DARK_GREEN))
|
||||
.style(ChatFormatting.DARK_GRAY)
|
||||
@@ -256,13 +240,5 @@ public class PumpjackBaseBlockEntity extends SmartBlockEntity implements IHaveGo
|
||||
|
||||
|
||||
}
|
||||
@Nonnull
|
||||
@Override
|
||||
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, Direction side) {
|
||||
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,13 +7,13 @@ import com.simibubi.create.content.contraptions.ContraptionType;
|
||||
import com.simibubi.create.content.contraptions.bearing.AnchoredLighter;
|
||||
import com.simibubi.create.content.contraptions.bearing.BearingContraption;
|
||||
import com.simibubi.create.content.contraptions.render.ContraptionLighter;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate.StructureBlockInfo;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
public class PumpjackContraption extends BearingContraption {
|
||||
@@ -84,7 +84,7 @@ public class PumpjackContraption extends BearingContraption {
|
||||
return facing.getAxis() == this.facing.getAxis();
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
@Override
|
||||
public ContraptionLighter<?> makeLighter() {
|
||||
return new AnchoredLighter(this);
|
||||
|
||||
@@ -88,7 +88,7 @@ public class WeldingBehaviour extends BeltProcessingBehaviour {
|
||||
super.write(compound, clientPacket);
|
||||
|
||||
if (clientPacket) {
|
||||
compound.put("ParticleItems", NBTHelper.writeCompoundList(particleItems, ItemStack::serializeNBT));
|
||||
compound.put("ParticleItems", NBTHelper.writeCompoundList(particleItems, ItemStack::getTag));
|
||||
particleItems.clear();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,9 @@ import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour
|
||||
import com.simibubi.create.foundation.recipe.RecipeApplier;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
import com.simibubi.create.infrastructure.config.AllConfigs;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.item.ItemHandlerHelper;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.item.ItemStackHandler;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.item.RecipeWrapper;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.entity.item.ItemEntity;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
@@ -17,9 +20,6 @@ import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.items.ItemHandlerHelper;
|
||||
import net.minecraftforge.items.ItemStackHandler;
|
||||
import net.minecraftforge.items.wrapper.RecipeWrapper;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@@ -1,26 +1,22 @@
|
||||
package com.drmangotea.createindustry.blocks.machines.simple.welding_machine;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.drmangotea.createindustry.registry.TFMGRecipeTypes;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllRecipeTypes;
|
||||
import com.simibubi.create.compat.jei.category.sequencedAssembly.SequencedAssemblySubCategory;
|
||||
import com.simibubi.create.compat.recipeViewerCommon.SequencedAssemblySubCategoryType;
|
||||
import com.simibubi.create.content.processing.recipe.ProcessingRecipe;
|
||||
import com.simibubi.create.content.processing.recipe.ProcessingRecipeBuilder.ProcessingRecipeParams;
|
||||
import com.simibubi.create.content.processing.sequenced.IAssemblyRecipe;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.item.RecipeWrapper;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import net.minecraft.world.level.ItemLike;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.items.wrapper.RecipeWrapper;
|
||||
|
||||
import javax.annotation.ParametersAreNonnullByDefault;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
@ParametersAreNonnullByDefault
|
||||
public class WeldingRecipe extends ProcessingRecipe<RecipeWrapper> implements IAssemblyRecipe {
|
||||
@@ -51,7 +47,7 @@ public class WeldingRecipe extends ProcessingRecipe<RecipeWrapper> implements IA
|
||||
public void addAssemblyIngredients(List<Ingredient> list) {}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public Component getDescriptionForAssembly() {
|
||||
return Lang.translateDirect("recipe.assembly.welding");
|
||||
}
|
||||
@@ -62,8 +58,8 @@ public class WeldingRecipe extends ProcessingRecipe<RecipeWrapper> implements IA
|
||||
}
|
||||
|
||||
@Override
|
||||
public Supplier<Supplier<SequencedAssemblySubCategory>> getJEISubCategory() {
|
||||
return () -> SequencedAssemblySubCategory.AssemblyPressing::new;
|
||||
public SequencedAssemblySubCategoryType getJEISubCategory() {
|
||||
return SequencedAssemblySubCategoryType.PRESSING;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
package com.drmangotea.createindustry.blocks.pipes.normal;
|
||||
|
||||
import com.jozufozu.flywheel.core.PartialModel;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import net.fabricmc.fabric.api.renderer.v1.model.ForwardingBakedModel;
|
||||
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
|
||||
import net.fabricmc.fabric.api.rendering.data.v1.RenderAttachedBlockView;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class GeneralPipeAttachmentModel extends ForwardingBakedModel {
|
||||
final Map<FluidTransportBehaviour.AttachmentTypes.ComponentPartials, Map<Direction, PartialModel>> attachments;
|
||||
final PartialModel casing;
|
||||
|
||||
public GeneralPipeAttachmentModel(BakedModel wrapped, Map<FluidTransportBehaviour.AttachmentTypes.ComponentPartials, Map<Direction, PartialModel>> attachments, PartialModel casing) {
|
||||
this.wrapped = wrapped;
|
||||
this.attachments = attachments;
|
||||
this.casing = casing;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVanillaAdapter() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void emitBlockQuads(BlockAndTintGetter world, BlockState state, BlockPos pos, Supplier<RandomSource> randomSupplier, RenderContext context) {
|
||||
PipeModelData data = new PipeModelData();
|
||||
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
|
||||
|
||||
RenderAttachedBlockView attachmentView = (RenderAttachedBlockView) world;
|
||||
Object attachment = attachmentView.getBlockEntityRenderAttachment(pos);
|
||||
if (attachment instanceof FluidTransportBehaviour.AttachmentTypes[] attachments) {
|
||||
for (int i = 0; i < attachments.length; i++) {
|
||||
data.putAttachment(Iterate.directions[i], attachments[i]);
|
||||
}
|
||||
}
|
||||
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
|
||||
super.emitBlockQuads(world, state, pos, randomSupplier, context);
|
||||
|
||||
addQuads(world, state, pos, randomSupplier, context, data);
|
||||
}
|
||||
|
||||
private void addQuads(BlockAndTintGetter world, BlockState state, BlockPos pos, Supplier<RandomSource> randomSupplier, RenderContext context,
|
||||
PipeModelData pipeData) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
if (bracket != null)
|
||||
bracket.emitBlockQuads(world, state, pos, randomSupplier, context);
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
attachments.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.emitBlockQuads(world, state, pos, randomSupplier, context);
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
(casing.get())
|
||||
.emitBlockQuads(world, state, pos, randomSupplier, context);
|
||||
}
|
||||
|
||||
private static class PipeModelData {
|
||||
private final FluidTransportBehaviour.AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
|
||||
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
|
||||
}
|
||||
|
||||
public void putBracket(BlockState state) {
|
||||
if (state != null) {
|
||||
this.bracket = Minecraft.getInstance()
|
||||
.getBlockRenderer()
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,153 +0,0 @@
|
||||
package com.drmangotea.createindustry.blocks.pipes.normal.aluminum;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.ChunkRenderTypeSet;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
|
||||
public class AluminumPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
|
||||
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
|
||||
|
||||
public AluminumPipeAttachmentModel(BakedModel template) {
|
||||
super(template);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
|
||||
ModelData blockEntityData) {
|
||||
PipeModelData data = new PipeModelData();
|
||||
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
|
||||
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
|
||||
|
||||
if (transport != null)
|
||||
for (Direction d : Iterate.directions) {
|
||||
boolean shouldConnect = true;
|
||||
if(world.getBlockState(pos.relative(d)).getBlock() instanceof FluidPipeBlock) {
|
||||
|
||||
if(d.getAxis().isHorizontal())
|
||||
shouldConnect = world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
|
||||
|
||||
if(!shouldConnect)
|
||||
if(state.getBlock() instanceof FluidPipeBlock)
|
||||
if(state.getValue(PROPERTY_BY_DIRECTION.get(d)))
|
||||
data.putAttachment(d, FluidTransportBehaviour.AttachmentTypes.RIM);
|
||||
|
||||
}
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
return builder.with(PIPE_PROPERTY, data);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Override
|
||||
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
|
||||
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
|
||||
if (set.isEmpty()) {
|
||||
return ItemBlockRenderTypes.getRenderLayers(state);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
|
||||
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
|
||||
if (data.has(PIPE_PROPERTY)) {
|
||||
PipeModelData pipeData = data.get(PIPE_PROPERTY);
|
||||
quads = new ArrayList<>(quads);
|
||||
addQuads(quads, state, side, rand, data, pipeData, renderType);
|
||||
}
|
||||
return quads;
|
||||
}
|
||||
|
||||
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
|
||||
PipeModelData pipeData, RenderType renderType) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
if (bracket != null)
|
||||
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
quads.addAll(TFMGPartialModels.ALUMINUM_PIPE_ATTACHMENTS.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
quads.addAll(TFMGPartialModels.ALUMINUM_FLUID_PIPE_CASING.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
|
||||
private static class PipeModelData {
|
||||
private FluidTransportBehaviour.AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
|
||||
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
|
||||
}
|
||||
|
||||
public void putBracket(BlockState state) {
|
||||
if (state != null) {
|
||||
this.bracket = Minecraft.getInstance()
|
||||
.getBlockRenderer()
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,153 +0,0 @@
|
||||
package com.drmangotea.createindustry.blocks.pipes.normal.brass;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.ChunkRenderTypeSet;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
|
||||
public class BrassPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
|
||||
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
|
||||
|
||||
public BrassPipeAttachmentModel(BakedModel template) {
|
||||
super(template);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
|
||||
ModelData blockEntityData) {
|
||||
PipeModelData data = new PipeModelData();
|
||||
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
|
||||
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
|
||||
|
||||
if (transport != null)
|
||||
for (Direction d : Iterate.directions) {
|
||||
boolean shouldConnect = true;
|
||||
if(world.getBlockState(pos.relative(d)).getBlock() instanceof FluidPipeBlock) {
|
||||
|
||||
if(d.getAxis().isHorizontal())
|
||||
shouldConnect = world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
|
||||
|
||||
if(!shouldConnect)
|
||||
if(state.getBlock() instanceof FluidPipeBlock)
|
||||
if(state.getValue(PROPERTY_BY_DIRECTION.get(d)))
|
||||
data.putAttachment(d, FluidTransportBehaviour.AttachmentTypes.RIM);
|
||||
|
||||
}
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
return builder.with(PIPE_PROPERTY, data);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Override
|
||||
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
|
||||
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
|
||||
if (set.isEmpty()) {
|
||||
return ItemBlockRenderTypes.getRenderLayers(state);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
|
||||
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
|
||||
if (data.has(PIPE_PROPERTY)) {
|
||||
PipeModelData pipeData = data.get(PIPE_PROPERTY);
|
||||
quads = new ArrayList<>(quads);
|
||||
addQuads(quads, state, side, rand, data, pipeData, renderType);
|
||||
}
|
||||
return quads;
|
||||
}
|
||||
|
||||
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
|
||||
PipeModelData pipeData, RenderType renderType) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
if (bracket != null)
|
||||
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
quads.addAll(TFMGPartialModels.BRASS_PIPE_ATTACHMENTS.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
quads.addAll(TFMGPartialModels.BRASS_FLUID_PIPE_CASING.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
|
||||
private static class PipeModelData {
|
||||
private FluidTransportBehaviour.AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
|
||||
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
|
||||
}
|
||||
|
||||
public void putBracket(BlockState state) {
|
||||
if (state != null) {
|
||||
this.bracket = Minecraft.getInstance()
|
||||
.getBlockRenderer()
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,153 +0,0 @@
|
||||
package com.drmangotea.createindustry.blocks.pipes.normal.cast_iron;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.ChunkRenderTypeSet;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
|
||||
public class CastIronPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
|
||||
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
|
||||
|
||||
public CastIronPipeAttachmentModel(BakedModel template) {
|
||||
super(template);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
|
||||
ModelData blockEntityData) {
|
||||
PipeModelData data = new PipeModelData();
|
||||
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
|
||||
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
|
||||
|
||||
if (transport != null)
|
||||
for (Direction d : Iterate.directions) {
|
||||
boolean shouldConnect = true;
|
||||
if(world.getBlockState(pos.relative(d)).getBlock() instanceof FluidPipeBlock) {
|
||||
|
||||
if(d.getAxis().isHorizontal())
|
||||
shouldConnect = world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
|
||||
|
||||
if(!shouldConnect)
|
||||
if(state.getBlock() instanceof FluidPipeBlock)
|
||||
if(state.getValue(PROPERTY_BY_DIRECTION.get(d)))
|
||||
data.putAttachment(d, FluidTransportBehaviour.AttachmentTypes.RIM);
|
||||
|
||||
}
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
return builder.with(PIPE_PROPERTY, data);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Override
|
||||
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
|
||||
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
|
||||
if (set.isEmpty()) {
|
||||
return ItemBlockRenderTypes.getRenderLayers(state);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
|
||||
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
|
||||
if (data.has(PIPE_PROPERTY)) {
|
||||
PipeModelData pipeData = data.get(PIPE_PROPERTY);
|
||||
quads = new ArrayList<>(quads);
|
||||
addQuads(quads, state, side, rand, data, pipeData, renderType);
|
||||
}
|
||||
return quads;
|
||||
}
|
||||
|
||||
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
|
||||
PipeModelData pipeData, RenderType renderType) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
if (bracket != null)
|
||||
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
quads.addAll(TFMGPartialModels.CAST_IRON_PIPE_ATTACHMENTS.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
quads.addAll(TFMGPartialModels.CAST_IRON_FLUID_PIPE_CASING.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
|
||||
private static class PipeModelData {
|
||||
private FluidTransportBehaviour.AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
|
||||
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
|
||||
}
|
||||
|
||||
public void putBracket(BlockState state) {
|
||||
if (state != null) {
|
||||
this.bracket = Minecraft.getInstance()
|
||||
.getBlockRenderer()
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,153 +0,0 @@
|
||||
package com.drmangotea.createindustry.blocks.pipes.normal.plastic;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.ChunkRenderTypeSet;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
|
||||
public class PlasticPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
|
||||
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
|
||||
|
||||
public PlasticPipeAttachmentModel(BakedModel template) {
|
||||
super(template);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
|
||||
ModelData blockEntityData) {
|
||||
PipeModelData data = new PipeModelData();
|
||||
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
|
||||
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
|
||||
|
||||
if (transport != null)
|
||||
for (Direction d : Iterate.directions) {
|
||||
boolean shouldConnect = true;
|
||||
if(world.getBlockState(pos.relative(d)).getBlock() instanceof FluidPipeBlock) {
|
||||
|
||||
if(d.getAxis().isHorizontal())
|
||||
shouldConnect = world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
|
||||
|
||||
if(!shouldConnect)
|
||||
if(state.getBlock() instanceof FluidPipeBlock)
|
||||
if(state.getValue(PROPERTY_BY_DIRECTION.get(d)))
|
||||
data.putAttachment(d, FluidTransportBehaviour.AttachmentTypes.RIM);
|
||||
|
||||
}
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
return builder.with(PIPE_PROPERTY, data);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Override
|
||||
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
|
||||
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
|
||||
if (set.isEmpty()) {
|
||||
return ItemBlockRenderTypes.getRenderLayers(state);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
|
||||
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
|
||||
if (data.has(PIPE_PROPERTY)) {
|
||||
PipeModelData pipeData = data.get(PIPE_PROPERTY);
|
||||
quads = new ArrayList<>(quads);
|
||||
addQuads(quads, state, side, rand, data, pipeData, renderType);
|
||||
}
|
||||
return quads;
|
||||
}
|
||||
|
||||
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
|
||||
PipeModelData pipeData, RenderType renderType) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
if (bracket != null)
|
||||
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
quads.addAll(TFMGPartialModels.PLASTIC_PIPE_ATTACHMENTS.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
quads.addAll(TFMGPartialModels.PLASTIC_FLUID_PIPE_CASING.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
|
||||
private static class PipeModelData {
|
||||
private FluidTransportBehaviour.AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
|
||||
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
|
||||
}
|
||||
|
||||
public void putBracket(BlockState state) {
|
||||
if (state != null) {
|
||||
this.bracket = Minecraft.getInstance()
|
||||
.getBlockRenderer()
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,155 +0,0 @@
|
||||
package com.drmangotea.createindustry.blocks.pipes.normal.steel;
|
||||
|
||||
import com.drmangotea.createindustry.blocks.pipes.normal.LockablePipeBlockEntity;
|
||||
import com.drmangotea.createindustry.registry.TFMGPartialModels;
|
||||
import com.simibubi.create.content.decoration.bracket.BracketedBlockEntityBehaviour;
|
||||
import com.simibubi.create.content.fluids.FluidTransportBehaviour;
|
||||
import com.simibubi.create.content.fluids.pipes.FluidPipeBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.model.BakedModelWrapperWithData;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.ChunkRenderTypeSet;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.locks.Lock;
|
||||
|
||||
import static net.minecraft.world.level.block.PipeBlock.PROPERTY_BY_DIRECTION;
|
||||
|
||||
public class SteelPipeAttachmentModel extends BakedModelWrapperWithData {
|
||||
|
||||
private static final ModelProperty<PipeModelData> PIPE_PROPERTY = new ModelProperty<>();
|
||||
|
||||
public SteelPipeAttachmentModel(BakedModel template) {
|
||||
super(template);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
|
||||
ModelData blockEntityData) {
|
||||
PipeModelData data = new PipeModelData();
|
||||
FluidTransportBehaviour transport = BlockEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE);
|
||||
BracketedBlockEntityBehaviour bracket = BlockEntityBehaviour.get(world, pos, BracketedBlockEntityBehaviour.TYPE);
|
||||
|
||||
if (transport != null)
|
||||
for (Direction d : Iterate.directions) {
|
||||
boolean shouldConnect = true;
|
||||
if(world.getBlockState(pos.relative(d)).getBlock() instanceof FluidPipeBlock) {
|
||||
|
||||
if(d.getAxis().isHorizontal())
|
||||
shouldConnect = world.getBlockState(pos.relative(d)).getValue(PROPERTY_BY_DIRECTION.get(d.getOpposite()));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
data.putAttachment(d, transport.getRenderedRimAttachment(world, pos, state, d));
|
||||
|
||||
if(!shouldConnect)
|
||||
if(state.getBlock() instanceof FluidPipeBlock)
|
||||
if(state.getValue(PROPERTY_BY_DIRECTION.get(d)))
|
||||
data.putAttachment(d, FluidTransportBehaviour.AttachmentTypes.RIM);
|
||||
|
||||
}
|
||||
if (bracket != null)
|
||||
data.putBracket(bracket.getBracket());
|
||||
|
||||
data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state));
|
||||
return builder.with(PIPE_PROPERTY, data);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Override
|
||||
public ChunkRenderTypeSet getRenderTypes(@NotNull BlockState state, @NotNull RandomSource rand, @NotNull ModelData data) {
|
||||
ChunkRenderTypeSet set = super.getRenderTypes(state, rand, data);
|
||||
if (set.isEmpty()) {
|
||||
return ItemBlockRenderTypes.getRenderLayers(state);
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData data, RenderType renderType) {
|
||||
List<BakedQuad> quads = super.getQuads(state, side, rand, data, renderType);
|
||||
if (data.has(PIPE_PROPERTY)) {
|
||||
PipeModelData pipeData = data.get(PIPE_PROPERTY);
|
||||
quads = new ArrayList<>(quads);
|
||||
addQuads(quads, state, side, rand, data, pipeData, renderType);
|
||||
}
|
||||
return quads;
|
||||
}
|
||||
|
||||
private void addQuads(List<BakedQuad> quads, BlockState state, Direction side, RandomSource rand, ModelData data,
|
||||
PipeModelData pipeData, RenderType renderType) {
|
||||
BakedModel bracket = pipeData.getBracket();
|
||||
if (bracket != null)
|
||||
quads.addAll(bracket.getQuads(state, side, rand, data, renderType));
|
||||
for (Direction d : Iterate.directions) {
|
||||
FluidTransportBehaviour.AttachmentTypes type = pipeData.getAttachment(d);
|
||||
for (FluidTransportBehaviour.AttachmentTypes.ComponentPartials partial : type.partials) {
|
||||
quads.addAll(TFMGPartialModels.STEEL_PIPE_ATTACHMENTS.get(partial)
|
||||
.get(d)
|
||||
.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
}
|
||||
if (pipeData.isEncased())
|
||||
quads.addAll(TFMGPartialModels.STEEL_FLUID_PIPE_CASING.get()
|
||||
.getQuads(state, side, rand, data, renderType));
|
||||
}
|
||||
|
||||
public class PipeModelData {
|
||||
private FluidTransportBehaviour.AttachmentTypes[] attachments;
|
||||
private boolean encased;
|
||||
private BakedModel bracket;
|
||||
|
||||
public PipeModelData() {
|
||||
attachments = new FluidTransportBehaviour.AttachmentTypes[6];
|
||||
Arrays.fill(attachments, FluidTransportBehaviour.AttachmentTypes.NONE);
|
||||
}
|
||||
|
||||
public void putBracket(BlockState state) {
|
||||
if (state != null) {
|
||||
this.bracket = Minecraft.getInstance()
|
||||
.getBlockRenderer()
|
||||
.getBlockModel(state);
|
||||
}
|
||||
}
|
||||
|
||||
public BakedModel getBracket() {
|
||||
return bracket;
|
||||
}
|
||||
|
||||
public void putAttachment(Direction face, FluidTransportBehaviour.AttachmentTypes rim) {
|
||||
attachments[face.get3DDataValue()] = rim;
|
||||
}
|
||||
|
||||
public FluidTransportBehaviour.AttachmentTypes getAttachment(Direction face) {
|
||||
return attachments[face.get3DDataValue()];
|
||||
}
|
||||
|
||||
public void setEncased(boolean encased) {
|
||||
this.encased = encased;
|
||||
}
|
||||
|
||||
public boolean isEncased() {
|
||||
return encased;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,68 +2,55 @@ package com.drmangotea.createindustry.blocks.tanks;
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.base.TFMGSpriteShifts;
|
||||
import com.simibubi.create.AllSpriteShifts;
|
||||
import com.simibubi.create.api.connectivity.ConnectivityHandler;
|
||||
import com.simibubi.create.content.fluids.tank.FluidTankCTBehaviour;
|
||||
import com.simibubi.create.content.fluids.tank.FluidTankModel;
|
||||
import com.simibubi.create.foundation.block.connected.CTModel;
|
||||
import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.client.model.data.ModelProperty;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public class SteelFluidTankModel extends CTModel {
|
||||
|
||||
protected static final ModelProperty<CullData> CULL_PROPERTY = new ModelProperty<>();
|
||||
|
||||
public static SteelFluidTankModel standard(BakedModel originalModel) {
|
||||
return new SteelFluidTankModel(originalModel, TFMGSpriteShifts.STEEL_FLUID_TANK, TFMGSpriteShifts.STEEL_FLUID_TANK_TOP,
|
||||
TFMGSpriteShifts.STEEL_FLUID_TANK_INNER);
|
||||
}
|
||||
|
||||
|
||||
private SteelFluidTankModel(BakedModel originalModel, CTSpriteShiftEntry side, CTSpriteShiftEntry top,
|
||||
CTSpriteShiftEntry inner) {
|
||||
super(originalModel, new FluidTankCTBehaviour(side, top, inner));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ModelData.Builder gatherModelData(ModelData.Builder builder, BlockAndTintGetter world, BlockPos pos, BlockState state,
|
||||
ModelData blockEntityData) {
|
||||
super.gatherModelData(builder, world, pos, state, blockEntityData);
|
||||
CullData cullData = new CullData();
|
||||
public void emitBlockQuads(BlockAndTintGetter blockView, BlockState state, BlockPos pos, Supplier<RandomSource> randomSupplier, RenderContext context) {
|
||||
SteelFluidTankModel.CullData cullData = new SteelFluidTankModel.CullData();
|
||||
for (Direction d : Iterate.horizontalDirections)
|
||||
cullData.setCulled(d, ConnectivityHandler.isConnected(world, pos, pos.relative(d)));
|
||||
return builder.with(CULL_PROPERTY, cullData);
|
||||
cullData.setCulled(d, ConnectivityHandler.isConnected(blockView, pos, pos.relative(d)));
|
||||
|
||||
context.pushTransform(quad -> {
|
||||
Direction cullFace = quad.cullFace();
|
||||
if (cullFace != null && cullData.isCulled(cullFace)) {
|
||||
return false;
|
||||
}
|
||||
quad.cullFace(null);
|
||||
return true;
|
||||
});
|
||||
super.emitBlockQuads(blockView, state, pos, randomSupplier, context);
|
||||
context.popTransform();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BakedQuad> getQuads(BlockState state, Direction side, RandomSource rand, ModelData extraData, RenderType renderType) {
|
||||
if (side != null)
|
||||
return Collections.emptyList();
|
||||
|
||||
List<BakedQuad> quads = new ArrayList<>();
|
||||
for (Direction d : Iterate.directions) {
|
||||
if (extraData.has(CULL_PROPERTY) && extraData.get(CULL_PROPERTY)
|
||||
.isCulled(d))
|
||||
continue;
|
||||
quads.addAll(super.getQuads(state, d, rand, extraData, renderType));
|
||||
}
|
||||
quads.addAll(super.getQuads(state, null, rand, extraData, renderType));
|
||||
return quads;
|
||||
}
|
||||
private class CullData {
|
||||
private static class CullData {
|
||||
boolean[] culledFaces;
|
||||
|
||||
public CullData() {
|
||||
@@ -87,3 +74,4 @@ public class SteelFluidTankModel extends CTModel {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -6,61 +6,62 @@ import com.jozufozu.flywheel.util.transform.TransformStack;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||
import com.simibubi.create.AllPartialModels;
|
||||
import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity;
|
||||
import com.simibubi.create.content.fluids.tank.FluidTankRenderer;
|
||||
import com.simibubi.create.foundation.blockEntity.renderer.SafeBlockEntityRenderer;
|
||||
import com.simibubi.create.foundation.fluid.FluidRenderer;
|
||||
import com.simibubi.create.foundation.render.CachedBufferer;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariantAttributes;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
public class SteelFluidTankRenderer extends SafeBlockEntityRenderer<SteelTankBlockEntity> {
|
||||
|
||||
public SteelFluidTankRenderer(BlockEntityRendererProvider.Context context) {}
|
||||
|
||||
@Override
|
||||
protected void renderSafe(SteelTankBlockEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer,
|
||||
protected void renderSafe(SteelTankBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer,
|
||||
int light, int overlay) {
|
||||
if (!te.isController())
|
||||
if (!be.isController())
|
||||
return;
|
||||
if (!te.window) {
|
||||
if (te.isDistillationTower)
|
||||
renderAsDistillationTower(te, partialTicks, ms, buffer, light, overlay);
|
||||
if (!be.window) {
|
||||
if (be.isDistillationTower)
|
||||
renderAsDistillationTower(be, partialTicks, ms, buffer, light, overlay);
|
||||
return;
|
||||
}
|
||||
|
||||
LerpedFloat fluidLevel = te.getFluidLevel();
|
||||
LerpedFloat fluidLevel = be.getFluidLevel();
|
||||
if (fluidLevel == null)
|
||||
return;
|
||||
|
||||
float capHeight = 1 / 4f;
|
||||
float tankHullWidth = 1 / 16f + 1 / 128f;
|
||||
float minPuddleHeight = 1 / 16f;
|
||||
float totalHeight = te.height - 2 * capHeight - minPuddleHeight;
|
||||
float totalHeight = be.height - 2 * capHeight - minPuddleHeight;
|
||||
|
||||
float level = fluidLevel.getValue(partialTicks);
|
||||
if (level < 1 / (512f * totalHeight))
|
||||
return;
|
||||
float clampedLevel = Mth.clamp(level * totalHeight, 0, totalHeight);
|
||||
|
||||
FluidTank tank = te.tankInventory;
|
||||
FluidTank tank = be.tankInventory;
|
||||
FluidStack fluidStack = tank.getFluid();
|
||||
|
||||
if (fluidStack.isEmpty())
|
||||
return;
|
||||
|
||||
boolean top = fluidStack.getFluid()
|
||||
.getFluidType()
|
||||
.isLighterThanAir();
|
||||
boolean top = FluidVariantAttributes.isLighterThanAir(fluidStack.getType());
|
||||
|
||||
float xMin = tankHullWidth;
|
||||
float xMax = xMin + te.width - 2 * tankHullWidth;
|
||||
float xMax = xMin + be.width - 2 * tankHullWidth;
|
||||
float yMin = totalHeight + capHeight + minPuddleHeight - clampedLevel;
|
||||
float yMax = yMin + clampedLevel;
|
||||
|
||||
@@ -70,7 +71,7 @@ public class SteelFluidTankRenderer extends SafeBlockEntityRenderer<SteelTankBlo
|
||||
}
|
||||
|
||||
float zMin = tankHullWidth;
|
||||
float zMax = zMin + te.width - 2 * tankHullWidth;
|
||||
float zMax = zMin + be.width - 2 * tankHullWidth;
|
||||
|
||||
ms.pushPose();
|
||||
ms.translate(0, clampedLevel - totalHeight, 0);
|
||||
@@ -78,13 +79,13 @@ public class SteelFluidTankRenderer extends SafeBlockEntityRenderer<SteelTankBlo
|
||||
ms.popPose();
|
||||
}
|
||||
|
||||
protected void renderAsDistillationTower(SteelTankBlockEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer,
|
||||
int light, int overlay) {
|
||||
BlockState blockState = te.getBlockState();
|
||||
protected void renderAsDistillationTower(SteelTankBlockEntity be, float partialTicks, PoseStack ms, MultiBufferSource buffer,
|
||||
int light, int overlay) {
|
||||
BlockState blockState = be.getBlockState();
|
||||
VertexConsumer vb = buffer.getBuffer(RenderType.solid());
|
||||
ms.pushPose();
|
||||
TransformStack msr = TransformStack.cast(ms);
|
||||
msr.translate(te.width / 2f, 0.5, te.width / 2f);
|
||||
msr.translate(be.width / 2f, 0.5, be.width / 2f);
|
||||
|
||||
float dialPivot = 5.75f / 16;
|
||||
|
||||
@@ -94,15 +95,15 @@ public class SteelFluidTankRenderer extends SafeBlockEntityRenderer<SteelTankBlo
|
||||
CachedBufferer.partial(TFMGPartialModels.TOWER_GAUGE, blockState)
|
||||
.rotateY(d.toYRot())
|
||||
.unCentre()
|
||||
.translate(te.width / 2f - 6 / 16f, 0, 0)
|
||||
.translate(be.width / 2f - 6 / 16f, 0, 0)
|
||||
.light(light)
|
||||
.renderInto(ms, vb);
|
||||
CachedBufferer.partial(AllPartialModels.BOILER_GAUGE_DIAL, blockState)
|
||||
.rotateY(d.toYRot())
|
||||
.unCentre()
|
||||
.translate(te.width / 2f - 6 / 16f, 0, 0)
|
||||
.translate(be.width / 2f - 6 / 16f, 0, 0)
|
||||
.translate(0, dialPivot, dialPivot)
|
||||
.rotateX(-te.visualGaugeRotation.getValue(partialTicks))
|
||||
.rotateX(-be.visualGaugeRotation.getValue(partialTicks))
|
||||
.translate(0, -dialPivot, -dialPivot)
|
||||
.light(light)
|
||||
.renderInto(ms, vb);
|
||||
@@ -113,8 +114,7 @@ public class SteelFluidTankRenderer extends SafeBlockEntityRenderer<SteelTankBlo
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRenderOffScreen(SteelTankBlockEntity te) {
|
||||
return te.isController();
|
||||
public boolean shouldRenderOffScreen(SteelTankBlockEntity be) {
|
||||
return be.isController();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,29 +1,37 @@
|
||||
package com.drmangotea.createindustry.blocks.tanks;
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
|
||||
import com.simibubi.create.api.connectivity.ConnectivityHandler;
|
||||
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
||||
import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity;
|
||||
import com.simibubi.create.content.fluids.tank.FluidTankItem;
|
||||
import com.simibubi.create.content.fluids.transfer.GenericItemEmptying;
|
||||
import com.simibubi.create.content.fluids.transfer.GenericItemFilling;
|
||||
import com.simibubi.create.foundation.advancement.AdvancementBehaviour;
|
||||
import com.simibubi.create.foundation.block.IBE;
|
||||
import com.simibubi.create.foundation.blockEntity.ComparatorUtil;
|
||||
import com.simibubi.create.foundation.fluid.FluidHelper;
|
||||
import com.simibubi.create.foundation.fluid.FluidHelper.FluidExchange;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import io.github.fabricators_of_create.porting_lib.block.CustomSoundTypeBlock;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.TransferUtil;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariantAttributes;
|
||||
import net.fabricmc.fabric.api.transfer.v1.storage.Storage;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.core.particles.BlockParticleOption;
|
||||
import net.minecraft.core.particles.ParticleTypes;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.util.StringRepresentable;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.context.UseOnContext;
|
||||
@@ -41,45 +49,48 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition.Builder;
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||
import net.minecraft.world.level.block.state.properties.EnumProperty;
|
||||
import net.minecraft.world.level.block.state.properties.IntegerProperty;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.Shapes;
|
||||
import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
import net.minecraftforge.common.util.ForgeSoundType;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
|
||||
public class SteelTankBlock extends Block implements IWrenchable, IBE<SteelTankBlockEntity> {
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public static final BooleanProperty TOP = BooleanProperty.create("top");
|
||||
public static final BooleanProperty BOTTOM = BooleanProperty.create("bottom");
|
||||
public static final EnumProperty<Shape> SHAPE = EnumProperty.create("shape", Shape.class);
|
||||
import static com.simibubi.create.content.fluids.tank.FluidTankBlock.SILENCED_METAL;
|
||||
|
||||
private boolean creative;
|
||||
public class SteelTankBlock extends Block implements IWrenchable, IBE<SteelTankBlockEntity>, CustomSoundTypeBlock {
|
||||
|
||||
public static SteelTankBlock regular(Properties p_i48440_1_) {
|
||||
return new SteelTankBlock(p_i48440_1_, false);
|
||||
public static final BooleanProperty TOP = BooleanProperty.create("top");
|
||||
public static final BooleanProperty BOTTOM = BooleanProperty.create("bottom");
|
||||
public static final EnumProperty<Shape> SHAPE = EnumProperty.create("shape", Shape.class);
|
||||
public static final IntegerProperty LIGHT_LEVEL = IntegerProperty.create("light_level", 0, 15);
|
||||
|
||||
public static SteelTankBlock regular(Properties p_i48440_1_) {
|
||||
return new SteelTankBlock(p_i48440_1_);
|
||||
}
|
||||
|
||||
public static SteelTankBlock creative(Properties p_i48440_1_) {
|
||||
return new SteelTankBlock(p_i48440_1_, true);
|
||||
}
|
||||
@Override
|
||||
public void setPlacedBy(Level pLevel, BlockPos pPos, BlockState pState, LivingEntity pPlacer, ItemStack pStack) {
|
||||
super.setPlacedBy(pLevel, pPos, pState, pPlacer, pStack);
|
||||
AdvancementBehaviour.setPlacedBy(pLevel, pPos, pPlacer);
|
||||
}
|
||||
|
||||
protected SteelTankBlock(Properties p_i48440_1_) {
|
||||
super(setLightFunction(p_i48440_1_));
|
||||
registerDefaultState(defaultBlockState().setValue(TOP, true)
|
||||
.setValue(BOTTOM, true)
|
||||
.setValue(SHAPE, Shape.WINDOW)
|
||||
.setValue(LIGHT_LEVEL, 0));
|
||||
}
|
||||
|
||||
private static Properties setLightFunction(Properties properties) {
|
||||
return properties.lightLevel(state -> state.getValue(LIGHT_LEVEL));
|
||||
}
|
||||
|
||||
protected SteelTankBlock(Properties p_i48440_1_, boolean creative) {
|
||||
super(p_i48440_1_);
|
||||
this.creative = creative;
|
||||
registerDefaultState(defaultBlockState().setValue(TOP, true)
|
||||
.setValue(BOTTOM, true)
|
||||
.setValue(SHAPE, Shape.WINDOW));
|
||||
}
|
||||
|
||||
public static boolean isTank(BlockState state) {
|
||||
public static boolean isTank(BlockState state) {
|
||||
return state.getBlock() instanceof SteelTankBlock;
|
||||
}
|
||||
|
||||
@@ -89,7 +100,10 @@ public class SteelTankBlock extends Block implements IWrenchable, IBE<SteelTankB
|
||||
return;
|
||||
if (moved)
|
||||
return;
|
||||
withBlockEntityDo(world, pos, SteelTankBlockEntity::updateConnectivity);
|
||||
Consumer<SteelTankBlockEntity> consumer = FluidTankItem.IS_PLACING_NBT
|
||||
? SteelTankBlockEntity::queueConnectivityUpdate
|
||||
: SteelTankBlockEntity::updateConnectivity;
|
||||
withBlockEntityDo(world, pos, consumer);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -97,17 +111,6 @@ public class SteelTankBlock extends Block implements IWrenchable, IBE<SteelTankB
|
||||
p_206840_1_.add(TOP, BOTTOM, SHAPE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLightEmission(BlockState state, BlockGetter world, BlockPos pos) {
|
||||
SteelTankBlockEntity tankAt = ConnectivityHandler.partAt(getBlockEntityType(), world, pos);
|
||||
if (tankAt == null)
|
||||
return 0;
|
||||
SteelTankBlockEntity controllerTE = (SteelTankBlockEntity) tankAt.getControllerBE();
|
||||
if (controllerTE == null || !controllerTE.window)
|
||||
return 0;
|
||||
return tankAt.luminosity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
|
||||
withBlockEntityDo(context.getLevel(), context.getClickedPos(), SteelTankBlockEntity::toggleWindows);
|
||||
@@ -116,149 +119,143 @@ public class SteelTankBlock extends Block implements IWrenchable, IBE<SteelTankB
|
||||
|
||||
static final VoxelShape CAMPFIRE_SMOKE_CLIP = Block.box(0, 4, 0, 16, 16, 16);
|
||||
|
||||
@Override
|
||||
public VoxelShape getCollisionShape(BlockState pState, BlockGetter pLevel, BlockPos pPos,
|
||||
CollisionContext pContext) {
|
||||
if (pContext == CollisionContext.empty())
|
||||
return CAMPFIRE_SMOKE_CLIP;
|
||||
return pState.getShape(pLevel, pPos);
|
||||
@Override
|
||||
public VoxelShape getCollisionShape(BlockState pState, BlockGetter pLevel, BlockPos pPos,
|
||||
CollisionContext pContext) {
|
||||
if (pContext == CollisionContext.empty())
|
||||
return CAMPFIRE_SMOKE_CLIP;
|
||||
return pState.getShape(pLevel, pPos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getBlockSupportShape(BlockState pState, BlockGetter pReader, BlockPos pPos) {
|
||||
return Shapes.block();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState,
|
||||
LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) {
|
||||
if (pDirection == Direction.DOWN && pNeighborState.getBlock() != this)
|
||||
withBlockEntityDo(pLevel, pCurrentPos, FluidTankBlockEntity::updateBoilerTemperature);
|
||||
return pState;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
|
||||
BlockHitResult ray) {
|
||||
ItemStack heldItem = player.getItemInHand(hand);
|
||||
boolean onClient = world.isClientSide;
|
||||
|
||||
if (heldItem.isEmpty())
|
||||
return InteractionResult.PASS;
|
||||
if (!player.isCreative())
|
||||
return InteractionResult.PASS;
|
||||
|
||||
FluidExchange exchange = null;
|
||||
SteelTankBlockEntity be = ConnectivityHandler.partAt(getBlockEntityType(), world, pos);
|
||||
if (be == null)
|
||||
return InteractionResult.FAIL;
|
||||
|
||||
Direction direction = ray.getDirection();
|
||||
Storage<FluidVariant> fluidTank = be.getFluidStorage(direction);
|
||||
if (fluidTank == null)
|
||||
return InteractionResult.PASS;
|
||||
|
||||
FluidStack prevFluidInTank = TransferUtil.firstCopyOrEmpty(fluidTank);
|
||||
|
||||
if (FluidHelper.tryEmptyItemIntoBE(world, player, hand, heldItem, be, direction))
|
||||
exchange = FluidExchange.ITEM_TO_TANK;
|
||||
else if (FluidHelper.tryFillItemFromBE(world, player, hand, heldItem, be, direction))
|
||||
exchange = FluidExchange.TANK_TO_ITEM;
|
||||
|
||||
if (exchange == null) {
|
||||
if (GenericItemEmptying.canItemBeEmptied(world, heldItem)
|
||||
|| GenericItemFilling.canItemBeFilled(world, heldItem))
|
||||
return InteractionResult.SUCCESS;
|
||||
return InteractionResult.PASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VoxelShape getBlockSupportShape(BlockState pState, BlockGetter pReader, BlockPos pPos) {
|
||||
return Shapes.block();
|
||||
SoundEvent soundevent = null;
|
||||
BlockState fluidState = null;
|
||||
FluidStack fluidInTank = TransferUtil.firstOrEmpty(fluidTank);
|
||||
|
||||
if (exchange == FluidExchange.ITEM_TO_TANK) {
|
||||
Fluid fluid = fluidInTank.getFluid();
|
||||
fluidState = fluid.defaultFluidState()
|
||||
.createLegacyBlock();
|
||||
soundevent = FluidVariantAttributes.getEmptySound(FluidVariant.of(fluid));
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState updateShape(BlockState pState, Direction pDirection, BlockState pNeighborState,
|
||||
LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pNeighborPos) {
|
||||
if (pDirection == Direction.DOWN && pNeighborState.getBlock() != this)
|
||||
withBlockEntityDo(pLevel, pCurrentPos, SteelTankBlockEntity::updateBoilerTemperature);
|
||||
return pState;
|
||||
if (exchange == FluidExchange.TANK_TO_ITEM) {
|
||||
Fluid fluid = prevFluidInTank.getFluid();
|
||||
fluidState = fluid.defaultFluidState()
|
||||
.createLegacyBlock();
|
||||
soundevent = FluidVariantAttributes.getFillSound(FluidVariant.of(fluid));
|
||||
}
|
||||
|
||||
@Override
|
||||
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
|
||||
BlockHitResult ray) {
|
||||
ItemStack heldItem = player.getItemInHand(hand);
|
||||
boolean onClient = world.isClientSide;
|
||||
if (soundevent != null && !onClient) {
|
||||
float pitch = Mth
|
||||
.clamp(1 - (1f * fluidInTank.getAmount() / (FluidTankBlockEntity.getCapacityMultiplier() * 16)), 0, 1);
|
||||
pitch /= 1.5f;
|
||||
pitch += .5f;
|
||||
pitch += (world.random.nextFloat() - .5f) / 4f;
|
||||
world.playSound(null, pos, soundevent, SoundSource.BLOCKS, .5f, pitch);
|
||||
}
|
||||
|
||||
if (heldItem.isEmpty())
|
||||
return InteractionResult.PASS;
|
||||
if (!player.isCreative() && !creative)
|
||||
return InteractionResult.PASS;
|
||||
if (!fluidInTank.isFluidEqual(prevFluidInTank)) {
|
||||
if (be instanceof SteelTankBlockEntity) {
|
||||
SteelTankBlockEntity controllerBE = be.getControllerBE();
|
||||
if (controllerBE != null) {
|
||||
if (fluidState != null && onClient) {
|
||||
BlockParticleOption blockParticleData =
|
||||
new BlockParticleOption(ParticleTypes.BLOCK, fluidState);
|
||||
float level = (float) fluidInTank.getAmount() / TransferUtil.firstCapacity(fluidTank);
|
||||
|
||||
FluidExchange exchange = null;
|
||||
SteelTankBlockEntity te = ConnectivityHandler.partAt(getBlockEntityType(), world, pos);
|
||||
if (te == null)
|
||||
return InteractionResult.FAIL;
|
||||
boolean reversed = FluidVariantAttributes.isLighterThanAir(fluidInTank.getType());
|
||||
if (reversed)
|
||||
level = 1 - level;
|
||||
|
||||
LazyOptional<IFluidHandler> tankCapability = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY);
|
||||
if (!tankCapability.isPresent())
|
||||
return InteractionResult.PASS;
|
||||
IFluidHandler fluidTank = tankCapability.orElse(null);
|
||||
FluidStack prevFluidInTank = fluidTank.getFluidInTank(0)
|
||||
.copy();
|
||||
|
||||
if (FluidHelper.tryEmptyItemIntoBE(world, player, hand, heldItem, te))
|
||||
exchange = FluidExchange.ITEM_TO_TANK;
|
||||
else if (FluidHelper.tryFillItemFromBE(world, player, hand, heldItem, te))
|
||||
exchange = FluidExchange.TANK_TO_ITEM;
|
||||
|
||||
if (exchange == null) {
|
||||
if (GenericItemEmptying.canItemBeEmptied(world, heldItem)
|
||||
|| GenericItemFilling.canItemBeFilled(world, heldItem))
|
||||
return InteractionResult.SUCCESS;
|
||||
return InteractionResult.PASS;
|
||||
}
|
||||
|
||||
SoundEvent soundevent = null;
|
||||
BlockState fluidState = null;
|
||||
FluidStack fluidInTank = tankCapability.map(fh -> fh.getFluidInTank(0))
|
||||
.orElse(FluidStack.EMPTY);
|
||||
|
||||
if (exchange == FluidExchange.ITEM_TO_TANK) {
|
||||
|
||||
|
||||
Fluid fluid = fluidInTank.getFluid();
|
||||
fluidState = fluid.defaultFluidState()
|
||||
.createLegacyBlock();
|
||||
soundevent = FluidHelper.getEmptySound(fluidInTank);
|
||||
}
|
||||
|
||||
if (exchange == FluidExchange.TANK_TO_ITEM) {
|
||||
|
||||
Fluid fluid = prevFluidInTank.getFluid();
|
||||
fluidState = fluid.defaultFluidState()
|
||||
.createLegacyBlock();
|
||||
soundevent = FluidHelper.getFillSound(prevFluidInTank);
|
||||
}
|
||||
|
||||
if (soundevent != null && !onClient) {
|
||||
float pitch = Mth
|
||||
.clamp(1 - (1f * fluidInTank.getAmount() / (SteelTankBlockEntity.getCapacityMultiplier() * 16)), 0, 1);
|
||||
pitch /= 1.5f;
|
||||
pitch += .5f;
|
||||
pitch += (world.random.nextFloat() - .5f) / 4f;
|
||||
world.playSound(null, pos, soundevent, SoundSource.BLOCKS, .5f, pitch);
|
||||
}
|
||||
|
||||
if (!fluidInTank.isFluidStackIdentical(prevFluidInTank)) {
|
||||
if (te instanceof SteelTankBlockEntity) {
|
||||
SteelTankBlockEntity controllerTE = (SteelTankBlockEntity) ((SteelTankBlockEntity) te).getControllerBE();
|
||||
if (controllerTE != null) {
|
||||
if (fluidState != null && onClient) {
|
||||
BlockParticleOption blockParticleData =
|
||||
new BlockParticleOption(ParticleTypes.BLOCK, fluidState);
|
||||
float level = (float) fluidInTank.getAmount() / fluidTank.getTankCapacity(0);
|
||||
|
||||
boolean reversed = fluidInTank.getFluid()
|
||||
.getFluidType()
|
||||
.isLighterThanAir();
|
||||
if (reversed)
|
||||
level = 1 - level;
|
||||
|
||||
Vec3 vec = ray.getLocation();
|
||||
vec = new Vec3(vec.x, controllerTE.getBlockPos()
|
||||
.getY() + level * (controllerTE.height - .5f) + .25f, vec.z);
|
||||
Vec3 motion = player.position()
|
||||
.subtract(vec)
|
||||
.scale(1 / 20f);
|
||||
vec = vec.add(motion);
|
||||
world.addParticle(blockParticleData, vec.x, vec.y, vec.z, motion.x, motion.y, motion.z);
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
controllerTE.sendDataImmediately();
|
||||
controllerTE.setChanged();
|
||||
Vec3 vec = ray.getLocation();
|
||||
vec = new Vec3(vec.x, controllerBE.getBlockPos()
|
||||
.getY() + level * (controllerBE.height - .5f) + .25f, vec.z);
|
||||
Vec3 motion = player.position()
|
||||
.subtract(vec)
|
||||
.scale(1 / 20f);
|
||||
vec = vec.add(motion);
|
||||
world.addParticle(blockParticleData, vec.x, vec.y, vec.z, motion.x, motion.y, motion.z);
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
controllerBE.sendDataImmediately();
|
||||
controllerBE.setChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) {
|
||||
if (state.hasBlockEntity() && (state.getBlock() != newState.getBlock() || !newState.hasBlockEntity())) {
|
||||
BlockEntity te = world.getBlockEntity(pos);
|
||||
if (!(te instanceof SteelTankBlockEntity))
|
||||
return;
|
||||
SteelTankBlockEntity tankTE = (SteelTankBlockEntity) te;
|
||||
world.removeBlockEntity(pos);
|
||||
ConnectivityHandler.splitMulti(tankTE);
|
||||
}
|
||||
}
|
||||
return InteractionResult.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<SteelTankBlockEntity> getBlockEntityClass() {
|
||||
@Override
|
||||
public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean isMoving) {
|
||||
if (state.hasBlockEntity() && (state.getBlock() != newState.getBlock() || !newState.hasBlockEntity())) {
|
||||
BlockEntity be = world.getBlockEntity(pos);
|
||||
if (!(be instanceof FluidTankBlockEntity))
|
||||
return;
|
||||
FluidTankBlockEntity tankBE = (FluidTankBlockEntity) be;
|
||||
world.removeBlockEntity(pos);
|
||||
ConnectivityHandler.splitMulti(tankBE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<SteelTankBlockEntity> getBlockEntityClass() {
|
||||
return SteelTankBlockEntity.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockEntityType<? extends SteelTankBlockEntity> getBlockEntityType() {
|
||||
return creative ? TFMGBlockEntities.STEEL_FLUID_TANK.get() : TFMGBlockEntities.STEEL_FLUID_TANK.get();
|
||||
}
|
||||
@Override
|
||||
public BlockEntityType<? extends SteelTankBlockEntity> getBlockEntityType() {
|
||||
return TFMGBlockEntities.STEEL_FLUID_TANK.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState mirror(BlockState state, Mirror mirror) {
|
||||
@@ -310,15 +307,10 @@ public class SteelTankBlock extends Block implements IWrenchable, IBE<SteelTankB
|
||||
}
|
||||
}
|
||||
|
||||
// Tanks are less noisy when placed in batch
|
||||
public static final SoundType SILENCED_METAL =
|
||||
new ForgeSoundType(0.1F, 1.5F, () -> SoundEvents.METAL_BREAK, () -> SoundEvents.METAL_STEP,
|
||||
() -> SoundEvents.METAL_PLACE, () -> SoundEvents.METAL_HIT, () -> SoundEvents.METAL_FALL);
|
||||
|
||||
@Override
|
||||
public SoundType getSoundType(BlockState state, LevelReader world, BlockPos pos, Entity entity) {
|
||||
SoundType soundType = super.getSoundType(state, world, pos, entity);
|
||||
if (entity != null && entity.getPersistentData()
|
||||
SoundType soundType = getSoundType(state);
|
||||
if (entity != null && entity.getExtraCustomData()
|
||||
.contains("SilenceTankSound"))
|
||||
return SILENCED_METAL;
|
||||
return soundType;
|
||||
|
||||
@@ -1,47 +1,36 @@
|
||||
package com.drmangotea.createindustry.blocks.tanks;
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.controller.DistillationControllerBlock;
|
||||
import com.drmangotea.createindustry.blocks.machines.oil_processing.distillation.output.DistillationOutputBlock;
|
||||
import com.drmangotea.createindustry.registry.TFMGBlocks;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.api.connectivity.ConnectivityHandler;
|
||||
import com.simibubi.create.content.decoration.steamWhistle.WhistleBlock;
|
||||
import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.content.fluids.tank.BoilerHeaters;
|
||||
import com.simibubi.create.content.fluids.tank.FluidTankBlock;
|
||||
import com.simibubi.create.content.fluids.tank.FluidTankBlockEntity;
|
||||
import com.simibubi.create.content.kinetics.steamEngine.SteamEngineBlock;
|
||||
import com.simibubi.create.foundation.blockEntity.IMultiBlockEntityContainer;
|
||||
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
|
||||
import com.simibubi.create.foundation.fluid.SmartFluidTank;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
|
||||
import com.simibubi.create.infrastructure.config.AllConfigs;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.TransferUtil;
|
||||
import io.github.fabricators_of_create.porting_lib.transfer.fluid.FluidTank;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import io.github.fabricators_of_create.porting_lib.util.LazyOptional;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariantAttributeHandler;
|
||||
import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariantAttributes;
|
||||
import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction;
|
||||
import net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.nbt.NbtUtils;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.util.LazyOptional;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.FluidType;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
@@ -53,7 +42,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
|
||||
private static final int MAX_SIZE = 3;
|
||||
|
||||
protected LazyOptional<IFluidHandler> fluidCapability;
|
||||
protected LazyOptional<FluidTank> fluidCapability;
|
||||
protected boolean forceFluidLevelUpdate;
|
||||
public FluidTank tankInventory;
|
||||
protected BlockPos controller;
|
||||
@@ -161,15 +150,14 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
removeController(true);
|
||||
lastKnownPos = worldPosition;
|
||||
}
|
||||
|
||||
protected void onFluidStackChanged(FluidStack newFluidStack) {
|
||||
if (!hasLevel())
|
||||
return;
|
||||
|
||||
FluidType attributes = newFluidStack.getFluid()
|
||||
.getFluidType();
|
||||
int luminosity = (int) (attributes.getLightLevel(newFluidStack) / 1.2f);
|
||||
boolean reversed = attributes.isLighterThanAir();
|
||||
FluidVariantAttributeHandler handler = FluidVariantAttributes.getHandlerOrDefault(newFluidStack.getFluid());
|
||||
FluidVariant variant = newFluidStack.getType();
|
||||
int luminosity = (int) (handler.getLuminance(variant) / 1.2f);
|
||||
boolean reversed = handler.isLighterThanAir(variant);
|
||||
int maxY = (int) ((getFillState() * height) + 1);
|
||||
|
||||
for (int yOffset = 0; yOffset < height; yOffset++) {
|
||||
@@ -226,9 +214,9 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
|
||||
public void applyFluidTankSize(int blocks) {
|
||||
tankInventory.setCapacity(blocks * getCapacityMultiplier());
|
||||
int overflow = tankInventory.getFluidAmount() - tankInventory.getCapacity();
|
||||
long overflow = tankInventory.getFluidAmount() - tankInventory.getCapacity();
|
||||
if (overflow > 0)
|
||||
tankInventory.drain(overflow, FluidAction.EXECUTE);
|
||||
tankInventory.extract(tankInventory.variant, overflow, Transaction.openOuter());
|
||||
forceFluidLevelUpdate = true;
|
||||
}
|
||||
|
||||
@@ -421,7 +409,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
}
|
||||
|
||||
public void refreshCapability() {
|
||||
LazyOptional<IFluidHandler> oldCap = fluidCapability;
|
||||
LazyOptional<FluidTank> oldCap = fluidCapability;
|
||||
fluidCapability = LazyOptional.of(() -> handlerForCapability());
|
||||
oldCap.invalidate();
|
||||
}
|
||||
@@ -430,7 +418,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
|
||||
|
||||
|
||||
private IFluidHandler handlerForCapability() {
|
||||
private FluidTank handlerForCapability() {
|
||||
return isController() ?
|
||||
tankInventory
|
||||
: getControllerBE() != null ? getControllerBE().handlerForCapability() : tankInventory;
|
||||
@@ -461,17 +449,14 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
|
||||
@Override
|
||||
public boolean addToGoggleTooltip(List<Component> tooltip, boolean isPlayerSneaking) {
|
||||
SteelTankBlockEntity controllerTE = getControllerBE();
|
||||
SteelTankBlockEntity controllerBE = getControllerBE();
|
||||
|
||||
if(isDistillationTower)
|
||||
if (isDistillationTower)
|
||||
return false;
|
||||
|
||||
if(getControllerBE()!=null)
|
||||
if(getControllerBE().isDistillationTower)
|
||||
return false;
|
||||
|
||||
if (controllerBE != null && controllerBE.isDistillationTower)
|
||||
return true;
|
||||
return containedFluidTooltip(tooltip, isPlayerSneaking,
|
||||
controllerTE.getCapability(ForgeCapabilities.FLUID_HANDLER));
|
||||
controllerBE.getFluidStorage(null));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -501,7 +486,10 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
tankInventory.setCapacity(getTotalTankSize() * getCapacityMultiplier());
|
||||
tankInventory.readFromNBT(compound.getCompound("TankContent"));
|
||||
if (tankInventory.getSpace() < 0)
|
||||
tankInventory.drain(-tankInventory.getSpace(), FluidAction.EXECUTE);
|
||||
try (Transaction t = TransferUtil.getTransaction()) {
|
||||
tankInventory.extract(tankInventory.variant, -tankInventory.getSpace(), t);
|
||||
t.commit();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -576,24 +564,12 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
forceFluidLevelUpdate = false;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
if (!fluidCapability.isPresent())
|
||||
refreshCapability();
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER)
|
||||
return fluidCapability.cast();
|
||||
return super.getCapability(cap, side);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
|
||||
//registerAwardables(behaviours, AllAdvancements.STEAM_ENGINE_MAXED, AllAdvancements.PIPE_ORGAN);
|
||||
}
|
||||
|
||||
public IFluidTank getTankInventory() {
|
||||
public FluidTank getTankInventory() {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
@@ -605,7 +581,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
return MAX_SIZE;
|
||||
}
|
||||
|
||||
public static int getCapacityMultiplier() {
|
||||
public static long getCapacityMultiplier() {
|
||||
return AllConfigs.server().fluids.fluidTankCapacity.get() * 1000;
|
||||
}
|
||||
|
||||
@@ -705,7 +681,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTankSize(int tank) {
|
||||
public long getTankSize(int tank) {
|
||||
return getCapacityMultiplier();
|
||||
}
|
||||
|
||||
@@ -715,7 +691,7 @@ public class SteelTankBlockEntity extends FluidTankBlockEntity implements IHaveG
|
||||
}
|
||||
|
||||
@Override
|
||||
public IFluidTank getTank(int tank) {
|
||||
public FluidTank getTank(int tank) {
|
||||
return tankInventory;
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.drmangotea.createindustry.blocks.tanks;
|
||||
|
||||
import com.drmangotea.createindustry.registry.TFMGBlockEntities;
|
||||
import com.simibubi.create.api.connectivity.ConnectivityHandler;
|
||||
import io.github.fabricators_of_create.porting_lib.util.FluidStack;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
@@ -15,7 +16,6 @@ import net.minecraft.world.item.context.BlockPlaceContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
public class SteelTankItem extends BlockItem {
|
||||
|
||||
@@ -121,10 +121,10 @@ public class SteelTankItem extends BlockItem {
|
||||
if (SteelTankBlock.isTank(blockState))
|
||||
continue;
|
||||
BlockPlaceContext context = BlockPlaceContext.at(ctx, offsetPos, face);
|
||||
player.getPersistentData()
|
||||
player.getExtraCustomData()
|
||||
.putBoolean("SilenceTankSound", true);
|
||||
super.place(context);
|
||||
player.getPersistentData()
|
||||
player.getExtraCustomData()
|
||||
.remove("SilenceTankSound");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
package com.drmangotea.createindustry.config;
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.simibubi.create.content.kinetics.BlockStressValues;
|
||||
import com.simibubi.create.foundation.config.ConfigBase;
|
||||
import net.minecraftforge.api.ModLoadingContext;
|
||||
import net.minecraftforge.api.fml.event.config.ModConfigEvents;
|
||||
import net.minecraftforge.common.ForgeConfigSpec;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.ModLoadingContext;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.config.ModConfig;
|
||||
import net.minecraftforge.fml.event.config.ModConfigEvent;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import java.util.EnumMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
|
||||
|
||||
public class TFMGConfigs {
|
||||
|
||||
private static final Map<ModConfig.Type, ConfigBase> CONFIGS = new EnumMap<>(ModConfig.Type.class);
|
||||
@@ -42,27 +41,28 @@ public class TFMGConfigs {
|
||||
return config;
|
||||
}
|
||||
|
||||
public static void register(ModLoadingContext context) {
|
||||
public static void register() {
|
||||
server = register(ServerConfig::new, ModConfig.Type.SERVER);
|
||||
|
||||
for (Map.Entry<ModConfig.Type, ConfigBase> pair : CONFIGS.entrySet())
|
||||
context.registerConfig(pair.getKey(), pair.getValue().specification);
|
||||
ModLoadingContext.registerConfig(CreateTFMG.MOD_ID, pair.getKey(), pair.getValue().specification);
|
||||
|
||||
BlockStressValues.registerProvider(context.getActiveNamespace(), server().stressValues);
|
||||
BlockStressValues.registerProvider(CreateTFMG.MOD_ID, server().stressValues);
|
||||
|
||||
ModConfigEvents.loading(CreateTFMG.MOD_ID).register(TFMGConfigs::onLoad);
|
||||
ModConfigEvents.loading(CreateTFMG.MOD_ID).register(TFMGConfigs::onReload);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onLoad(ModConfigEvent.Loading event) {
|
||||
public static void onLoad(ModConfig modConfig) {
|
||||
for (ConfigBase config : CONFIGS.values())
|
||||
if (config.specification == event.getConfig()
|
||||
if (config.specification == modConfig
|
||||
.getSpec())
|
||||
config.onLoad();
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onReload(ModConfigEvent.Reloading event) {
|
||||
public static void onReload(ModConfig modConfig) {
|
||||
for (ConfigBase config : CONFIGS.values())
|
||||
if (config.specification == event.getConfig()
|
||||
if (config.specification == modConfig
|
||||
.getSpec())
|
||||
config.onReload();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.drmangotea.createindustry.data;
|
||||
|
||||
import com.drmangotea.createindustry.base.TFMGLangPartials;
|
||||
import com.simibubi.create.foundation.data.LangMerger;
|
||||
import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint;
|
||||
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
|
||||
|
||||
import static com.drmangotea.createindustry.CreateTFMG.*;
|
||||
|
||||
public class CreateTFMGData implements DataGeneratorEntrypoint {
|
||||
@Override
|
||||
public void onInitializeDataGenerator(FabricDataGenerator generator) {
|
||||
generator.addProvider(true, new LangMerger(generator, MOD_ID, NAME, TFMGLangPartials.values()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.drmangotea.createindustry.events;
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMGClient;
|
||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
||||
public class ClientEvents {
|
||||
public static void onTick(Minecraft client) {
|
||||
CreateTFMGClient.ADVANCED_POTATO_CANNON_RENDER_HANDLER.tick();
|
||||
CreateTFMGClient.FLAMETHROWER_RENDER_HANDLER.tick();
|
||||
CreateTFMGClient.QUAD_POTATO_CANNON_RENDER_HANDLER.tick();
|
||||
}
|
||||
|
||||
public static void register() {
|
||||
|
||||
ClientTickEvents.END_CLIENT_TICK.register(ClientEvents::onTick);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.drmangotea.createindustry.events;
|
||||
|
||||
import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.worldgen.TFMGConfiguredFeatures;
|
||||
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
|
||||
import net.minecraft.core.Holder;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
|
||||
|
||||
public class CommonEvents {
|
||||
|
||||
public static void serverStarting(MinecraftServer event)
|
||||
{
|
||||
CreateTFMG.LOGGER.info("YEEEHAAW");
|
||||
}
|
||||
|
||||
public static void register() {
|
||||
final Holder<PlacedFeature> initializeOil = TFMGConfiguredFeatures.OIL_PLACED;
|
||||
final Holder<PlacedFeature> initializeSimulatedOil = TFMGConfiguredFeatures.OIL_DEPOSIT_PLACED;
|
||||
|
||||
ServerLifecycleEvents.SERVER_STARTED.register(CommonEvents::serverStarting);
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
package com.drmangotea.createindustry.items;
|
||||
|
||||
import net.minecraft.world.item.BucketItem;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.RecipeType;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class BadFuelBucketItem extends BucketItem {
|
||||
public BadFuelBucketItem(Fluid p_40689_, Properties p_40690_) {
|
||||
super(p_40689_, p_40690_);
|
||||
}
|
||||
public BadFuelBucketItem(java.util.function.Supplier<? extends Fluid> supplier, Item.Properties builder) {
|
||||
super(supplier,builder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
|
||||
return 200;
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
package com.drmangotea.createindustry.items;
|
||||
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.RecipeType;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class CoalCokeBlockItem extends BlockItem {
|
||||
|
||||
|
||||
|
||||
|
||||
public CoalCokeBlockItem(Block p_40565_, Properties p_40566_) {
|
||||
super(p_40565_, p_40566_);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
|
||||
return 28800;
|
||||
}
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
package com.drmangotea.createindustry.items;
|
||||
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.RecipeType;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraftforge.common.property.Properties;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class CoalCokeItem extends Item {
|
||||
|
||||
|
||||
|
||||
|
||||
public CoalCokeItem(Properties p_40566_) {
|
||||
super( p_40566_);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
|
||||
return 3200;
|
||||
}
|
||||
}
|
||||
@@ -1,25 +0,0 @@
|
||||
package com.drmangotea.createindustry.items;
|
||||
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.RecipeType;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class FossilstoneItem extends BlockItem {
|
||||
|
||||
|
||||
|
||||
|
||||
public FossilstoneItem(Block p_40565_, Properties p_40566_) {
|
||||
super(p_40565_, p_40566_);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
|
||||
return 4000;
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
package com.drmangotea.createindustry.items;
|
||||
|
||||
import net.minecraft.world.item.BucketItem;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.crafting.RecipeType;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class OilBucketItem extends BucketItem {
|
||||
public OilBucketItem(Fluid p_40689_, Properties p_40690_) {
|
||||
super(p_40689_, p_40690_);
|
||||
}
|
||||
public OilBucketItem(java.util.function.Supplier<? extends Fluid> supplier, Properties builder) {
|
||||
super(supplier,builder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBurnTime(ItemStack itemStack, @Nullable RecipeType<?> recipeType) {
|
||||
return 800;
|
||||
}
|
||||
}
|
||||
@@ -9,9 +9,12 @@ import com.simibubi.create.content.equipment.armor.BacktankUtil;
|
||||
import com.simibubi.create.content.equipment.potatoCannon.*;
|
||||
import com.simibubi.create.content.equipment.zapper.ShootableGadgetItemMethods;
|
||||
import com.simibubi.create.foundation.item.CustomArmPoseItem;
|
||||
import com.simibubi.create.foundation.item.render.SimpleCustomRenderer;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.infrastructure.config.AllConfigs;
|
||||
import io.github.fabricators_of_create.porting_lib.item.EntitySwingListenerItem;
|
||||
import io.github.fabricators_of_create.porting_lib.item.ReequipAnimationItem;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.HumanoidModel.ArmPose;
|
||||
import net.minecraft.client.player.AbstractClientPlayer;
|
||||
@@ -29,17 +32,13 @@ import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.client.extensions.common.IClientItemExtensions;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class AdvancedPotatoCannonItem extends ProjectileWeaponItem implements CustomArmPoseItem {
|
||||
|
||||
public class AdvancedPotatoCannonItem extends ProjectileWeaponItem implements CustomArmPoseItem,
|
||||
EntitySwingListenerItem, ReequipAnimationItem {
|
||||
public static ItemStack CLIENT_CURRENT_AMMO = ItemStack.EMPTY;
|
||||
public static final int MAX_DAMAGE = 500;
|
||||
|
||||
@@ -173,7 +172,7 @@ public class AdvancedPotatoCannonItem extends ProjectileWeaponItem implements Cu
|
||||
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public static Optional<ItemStack> getAmmoforPreview(ItemStack cannon) {
|
||||
if (AnimationTickHolder.getTicks() % 3 != 0)
|
||||
return Optional.of(CLIENT_CURRENT_AMMO)
|
||||
@@ -222,10 +221,6 @@ public class AdvancedPotatoCannonItem extends ProjectileWeaponItem implements Cu
|
||||
return 15;
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void initializeClient(Consumer<IClientItemExtensions> consumer) {
|
||||
consumer.accept(SimpleCustomRenderer.create(this, new AdvancedPotatoCannonItemRenderer()));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -18,8 +18,6 @@ import net.minecraft.world.item.ItemStack;
|
||||
|
||||
public class AdvancedPotatoCannonItemRenderer extends CustomRenderedItemModelRenderer {
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected void render(ItemStack stack, CustomRenderedItemModel model, PartialItemModelRenderer renderer,
|
||||
TransformType transformType, PoseStack ms, MultiBufferSource buffer, int light, int overlay) {
|
||||
|
||||
@@ -4,12 +4,12 @@ import com.drmangotea.createindustry.CreateTFMG;
|
||||
import com.drmangotea.createindustry.CreateTFMGClient;
|
||||
import com.simibubi.create.content.equipment.zapper.ShootGadgetPacket;
|
||||
import com.simibubi.create.content.equipment.zapper.ShootableGadgetRenderHandler;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
public class AdvancedPotatoCannonPacket extends ShootGadgetPacket {
|
||||
|
||||
@@ -46,7 +46,7 @@ public class AdvancedPotatoCannonPacket extends ShootGadgetPacket {
|
||||
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
protected void handleAdditional() {
|
||||
CreateTFMG.LOGGER.debug("AAAAAAAAAAAAAAAAAAAAAAAAAE");
|
||||
|
||||
@@ -54,7 +54,7 @@ public class AdvancedPotatoCannonPacket extends ShootGadgetPacket {
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
protected ShootableGadgetRenderHandler getHandler() {
|
||||
return CreateTFMGClient.ADVANCED_POTATO_CANNON_RENDER_HANDLER;
|
||||
}
|
||||
|
||||
@@ -2,13 +2,16 @@ package com.drmangotea.createindustry.items.weapons.advanced_potato_cannon.proje
|
||||
|
||||
|
||||
import com.drmangotea.createindustry.base.util.TFMGUtils;
|
||||
import com.drmangotea.createindustry.items.weapons.explosives.pipe_bomb.PipeBomb;
|
||||
import com.drmangotea.createindustry.registry.TFMGEntityTypes;
|
||||
import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.particles.ParticleOptions;
|
||||
import net.minecraft.core.particles.ParticleTypes;
|
||||
import net.minecraft.world.damagesource.DamageSource;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
import net.minecraft.world.entity.EntityDimensions;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.projectile.ThrowableItemProjectile;
|
||||
@@ -74,8 +77,8 @@ public class NapalmPotato extends ThrowableItemProjectile {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static EntityType.Builder<?> build(EntityType.Builder<?> builder) {
|
||||
EntityType.Builder<NapalmPotato> entityBuilder = (EntityType.Builder<NapalmPotato>) builder;
|
||||
return entityBuilder.sized(.25f, .25f);
|
||||
public static FabricEntityTypeBuilder<NapalmPotato> build(FabricEntityTypeBuilder<?> builder) {
|
||||
FabricEntityTypeBuilder<NapalmPotato> entityBuilder = (FabricEntityTypeBuilder<NapalmPotato>) builder;
|
||||
return entityBuilder.dimensions(EntityDimensions.scalable(.25f, .25f));
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,8 @@ package com.drmangotea.createindustry.items.weapons.advanced_potato_cannon.proje
|
||||
import com.drmangotea.createindustry.registry.TFMGItems;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.math.Vector3f;
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.block.model.ItemTransforms;
|
||||
import net.minecraft.client.renderer.entity.EntityRenderer;
|
||||
@@ -12,10 +14,8 @@ import net.minecraft.client.renderer.entity.ItemRenderer;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlas;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class NapalmPotatoRenderer extends EntityRenderer<NapalmPotato> {
|
||||
private final ItemRenderer itemRenderer;
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user