mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-08 14:44:48 +00:00
Add hooks for using Vanilla's new Client data generator (#10206)
Add new hook for custom block models that do not have real blocks backing them Some workspace cleanup fixing log4j annotation processor
This commit is contained in:
1 parent
07977ba242
commit
0e74886f8d
55 files changed
+1346
-75
No files matched your search
@@ -3,6 +3,7 @@
|
||||
*.patch text eol=lf
|
||||
*.java text eol=lf
|
||||
*.gradle text eol=crlf
|
||||
**/MANIFEST.MF text eol=crlf
|
||||
*.png binary
|
||||
*.gif binary
|
||||
*.exe binary
|
||||
|
||||
@@ -41,3 +41,8 @@ src/*/generated/**/.cache/
|
||||
|
||||
/ForgeRoot.ipr
|
||||
/ForgeRoot.iws
|
||||
|
||||
# APT stuff
|
||||
/*/.gitignore
|
||||
/*/.factorypath
|
||||
/*/.apt_generated/
|
||||
+45
-13
@@ -97,13 +97,13 @@ final String S2S_TOOL = 'net.minecraftforge:Srg2Source:8.1.0:fatjar'
|
||||
configurations {
|
||||
// Don't pull all libraries, if we're missing something, add it to the installer list so the installer knows to download it.
|
||||
bootstrap { transitive = false }
|
||||
installer {
|
||||
installer {
|
||||
extendsFrom(bootstrap)
|
||||
transitive = false
|
||||
transitive = false
|
||||
}
|
||||
installerextra {
|
||||
installerextra {
|
||||
extendsFrom(bootstrap)
|
||||
transitive = false
|
||||
transitive = false
|
||||
}
|
||||
api.extendsFrom(installer)
|
||||
}
|
||||
@@ -117,9 +117,9 @@ dependencies {
|
||||
bootstrap(libs.securemodules) // Has Union file system in it
|
||||
bootstrap(libs.unsafe) // Needed by securemodules
|
||||
bootstrap(libs.bundles.asm) // Needed by securemodules
|
||||
|
||||
|
||||
implementation(libs.jopt.simple) { version { strictly '5.0.4' } }
|
||||
|
||||
|
||||
installer(libs.bootstrap)
|
||||
installer(libs.bootstrap.api) // Needed by securemodules
|
||||
installer(libs.accesstransformers)
|
||||
@@ -227,6 +227,31 @@ patcher {
|
||||
'--assetsDir', downloadAssets.output,
|
||||
'--assetIndex', "{asset_index}"
|
||||
}
|
||||
|
||||
forge_client_data {
|
||||
args '--launchTarget', 'forge_dev_client_data',
|
||||
'--mod', 'forge',
|
||||
'--all',
|
||||
'--validate',
|
||||
'--output', rootProject.file('src/main/generated/'),
|
||||
'--existing', sourceSets.main.resources.srcDirs[0],
|
||||
'--assetsDir', downloadAssets.output,
|
||||
'--assetIndex', "{asset_index}"
|
||||
}
|
||||
|
||||
forge_client_data_test {
|
||||
source sourceSets.test
|
||||
args '--launchTarget', 'forge_dev',
|
||||
'--launchEntry', 'minecraft/net.minecraft.client.data.Main',
|
||||
'--launchData',
|
||||
'--mod', '.+',
|
||||
'--all',
|
||||
'--output', rootProject.file('src/test/generated/'),
|
||||
'--existing', sourceSets.main.resources.srcDirs[0],
|
||||
'--existing', sourceSets.test.resources.srcDirs[0],
|
||||
'--assetsDir', downloadAssets.output,
|
||||
'--assetIndex', "{asset_index}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,11 +293,11 @@ tasks.register('downloadCrowdin', Download) {
|
||||
tasks.userdevConfig.configure {
|
||||
configurations.installer.allDependencies.forEach {
|
||||
def dep = it.toString()
|
||||
if (it instanceof ProjectDependency)
|
||||
if (it instanceof ProjectDependency)
|
||||
dep = "net.minecraftforge:$it.dependencyProject.name:$it.dependencyProject.version"
|
||||
libraries.add(dep)
|
||||
}
|
||||
|
||||
|
||||
inject = '' // We don't have a userdev sourceset anymore. Empty as a gradle workaround...
|
||||
runs {
|
||||
client {
|
||||
@@ -284,6 +309,13 @@ tasks.userdevConfig.configure {
|
||||
args '--assetsDir', '{assets_root}'
|
||||
}
|
||||
|
||||
clientData {
|
||||
environment 'MCP_MAPPINGS', '{mcp_mappings}'
|
||||
args '--launchTarget', "forge_userdev_client_data"
|
||||
args '--assetIndex', '{asset_index}'
|
||||
args '--assetsDir', '{assets_root}'
|
||||
}
|
||||
|
||||
server {
|
||||
environment 'MCP_MAPPINGS', '{mcp_mappings}'
|
||||
property 'forge.enableGameTest', 'true'
|
||||
@@ -493,7 +525,7 @@ tasks.register('serverShimJar', Jar) {
|
||||
from {
|
||||
zipTree(downloadServerShim.output).find { it.name == 'MANIFEST.MF' }
|
||||
}
|
||||
|
||||
|
||||
attributes('Class-Path': configurations.bootstrap.resolvedConfiguration.resolvedArtifacts.collect { "libraries/${Util.getMavenInfoFromDep(it).path}" }.join(' '))
|
||||
}
|
||||
archiveClassifier = 'shim'
|
||||
@@ -586,7 +618,7 @@ tasks.register('checkJarCompatibility', CheckJarCompatibility) {
|
||||
baseLibraries.from(project.tasks.named('createJoinedSRG').flatMap { it.output })
|
||||
|
||||
inputJar = project.tasks.named('reobfJar').flatMap { it.output }
|
||||
|
||||
|
||||
commonLibraries.from(project.configurations.minecraftImplementation)
|
||||
commonLibraries.from(project.configurations.installer)
|
||||
}
|
||||
@@ -607,11 +639,11 @@ tasks.register('launcherJson', LauncherJson).configure {
|
||||
|
||||
tasks.register('installerJson', InstallerJson) {
|
||||
icon = rootProject.file('icon.ico')
|
||||
|
||||
|
||||
// Json to install into the client's launcher
|
||||
dependsOn(launcherJson)
|
||||
input.from(launcherJson.output)
|
||||
|
||||
|
||||
// Download Official Mappings
|
||||
dependsOn(downloadClientMappings, downloadServerMappings)
|
||||
input.from(downloadClientMappings.output, downloadServerMappings.output)
|
||||
@@ -1059,7 +1091,7 @@ publishing {
|
||||
license gradleutils.pom.Licenses.LGPLv2_1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
repositories {
|
||||
maven gradleutils.publishingForgeMaven
|
||||
}
|
||||
|
||||
@@ -84,16 +84,6 @@ public class RenderElement {
|
||||
|
||||
font.generateVerticesForTexts(10, context.scaledHeight() - texts.size() * font.lineSpacing() + font.descent() - 10, bb, texts.toArray(SimpleFont.DisplayText[]::new));
|
||||
}
|
||||
public static RenderElement monag() {
|
||||
return new RenderElement(RenderElement.initializeTexture("monagstudios.png", 45000, 4, (bb, ctx, sz, frame) -> {
|
||||
var size = 256;
|
||||
var x0 = (ctx.width() - 2 * size) / 2;
|
||||
var y0 = 64;
|
||||
QuadHelper.loadQuad(bb, x0, x0+size, y0, y0+size/2f, 0f, 1f, 0f, 0.5f, 0xFFFFFFFF);
|
||||
QuadHelper.loadQuad(bb, x0+size, x0+2*size, y0, y0+size/2f, 0f, 1f, 0.5f, 1f, 0xFFFFFFFF);
|
||||
}));
|
||||
|
||||
}
|
||||
|
||||
public static RenderElement mojang(final int textureId, final int frameStart) {
|
||||
return new RenderElement(()->(bb, ctx, frame) -> {
|
||||
|
||||
+21
-1
@@ -5,6 +5,7 @@ plugins {
|
||||
id 'maven-publish'
|
||||
id 'net.minecraftforge.licenser'
|
||||
id 'net.minecraftforge.gradleutils'
|
||||
alias(libs.plugins.apt)
|
||||
}
|
||||
|
||||
apply from: rootProject.file('build_shared.gradle')
|
||||
@@ -36,6 +37,7 @@ dependencies {
|
||||
implementation(libs.terminalconsoleappender)
|
||||
implementation(libs.jimfs)
|
||||
|
||||
// Needed because we have a custom log4j plugin, and they removed package scanning and require a data file to be generated
|
||||
implementation(libs.log4j.core)
|
||||
annotationProcessor(libs.bundles.log4j)
|
||||
|
||||
@@ -85,7 +87,7 @@ publishing {
|
||||
license PomUtils.Licenses.LGPLv2_1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
repositories {
|
||||
maven gradleutils.publishingForgeMaven
|
||||
}
|
||||
@@ -102,5 +104,23 @@ tasks.register('writeForgeVersionJson') {
|
||||
}
|
||||
|
||||
tasks.named('generateResources').configure {
|
||||
dependsOn('eclipseJdt')
|
||||
dependsOn('eclipseJdtApt')
|
||||
dependsOn('eclipseFactorypath')
|
||||
dependsOn('writeForgeVersionJson')
|
||||
}
|
||||
|
||||
eclipse {
|
||||
classpath {
|
||||
// We need to set the default output directory for the log4j annotation processor
|
||||
// Ideally we'd just set the value, but the eclipse plugin deduplicates the output directories
|
||||
// So we have to do a hacky whenMerged
|
||||
//defaultOutputDir = file('bin/main')
|
||||
file.whenMerged {
|
||||
entries.each { entry ->
|
||||
if (entry.kind == 'output' && entry.hasProperty('path'))
|
||||
entry.path = 'bin/main'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -18,9 +18,7 @@ import org.apache.logging.log4j.util.PerformanceSensitive;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A wrapper for {@link HighlightConverter} that auto-disables ANSI when the terminal doesn't support it.
|
||||
|
||||
@@ -81,6 +81,10 @@ class ArgumentList {
|
||||
.toArray(String[]::new);
|
||||
}
|
||||
|
||||
public boolean has(String key) {
|
||||
return this.values.containsKey(key);
|
||||
}
|
||||
|
||||
public boolean hasValue(String key) {
|
||||
return getOrDefault(key, null) != null;
|
||||
}
|
||||
|
||||
+30
-4
@@ -22,6 +22,10 @@ abstract class CommonDevLaunchHandler extends CommonLaunchHandler {
|
||||
super(type, prefix);
|
||||
}
|
||||
|
||||
protected CommonDevLaunchHandler(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override public String getNaming() { return "mcp"; }
|
||||
@Override public boolean isProduction() { return false; }
|
||||
|
||||
@@ -29,13 +33,35 @@ abstract class CommonDevLaunchHandler extends CommonLaunchHandler {
|
||||
protected String[] preLaunch(String[] arguments, ModuleLayer layer) {
|
||||
super.preLaunch(arguments, layer);
|
||||
|
||||
var args = ArgumentList.from(arguments);
|
||||
|
||||
if (this.module == null) {
|
||||
var entry = args.get("launchEntry");
|
||||
if (entry == null)
|
||||
throw new IllegalArgumentException("When using " + this.name() + " launch target you must specify a --launchEntry argument");
|
||||
|
||||
args.remove("launchEntry");
|
||||
|
||||
int idx = entry.indexOf('/');
|
||||
if (idx == -1) {
|
||||
this.module = "minecraft";
|
||||
this.main = entry;
|
||||
} else {
|
||||
this.module = entry.substring(0, idx);
|
||||
this.main = entry.substring(idx + 1);
|
||||
}
|
||||
|
||||
if (args.has("launchData")) {
|
||||
args.remove("launchData");
|
||||
this.isData = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (getDist().isDedicatedServer())
|
||||
return arguments;
|
||||
return args.getArguments();
|
||||
|
||||
if (isData())
|
||||
return arguments;
|
||||
|
||||
var args = ArgumentList.from(arguments);
|
||||
return args.getArguments();
|
||||
|
||||
String username = args.get("username");
|
||||
if (username != null) { // Replace '#' placeholders with random numbers
|
||||
|
||||
+18
-8
@@ -29,17 +29,27 @@ import java.util.List;
|
||||
public abstract class CommonLaunchHandler implements ILaunchHandlerService {
|
||||
protected static final Logger LOGGER = LogUtils.getLogger();
|
||||
|
||||
protected final LaunchType type;
|
||||
private final String prefix;
|
||||
private final String name;
|
||||
protected Dist dist = Dist.CLIENT;
|
||||
protected boolean isData = false;
|
||||
protected String module;
|
||||
protected String main;
|
||||
|
||||
protected CommonLaunchHandler(LaunchType type, String prefix) {
|
||||
this.type = type;
|
||||
this.prefix = prefix;
|
||||
this(prefix + type.name());
|
||||
this.dist = type.dist();
|
||||
this.isData = type.data();
|
||||
this.module = type.module();
|
||||
this.main = type.main();
|
||||
}
|
||||
|
||||
@Override public String name() { return this.prefix + this.type.name(); }
|
||||
public Dist getDist() { return this.type.dist(); }
|
||||
public boolean isData() { return this.type.data(); }
|
||||
protected CommonLaunchHandler(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override public String name() { return this.name; }
|
||||
public Dist getDist() { return this.dist; }
|
||||
public boolean isData() { return this.isData; }
|
||||
public boolean isProduction() { return false; }
|
||||
public abstract String getNaming();
|
||||
|
||||
@@ -66,7 +76,7 @@ public abstract class CommonLaunchHandler implements ILaunchHandlerService {
|
||||
}
|
||||
|
||||
protected ServiceRunner makeService(final String[] arguments, final ModuleLayer gameLayer) {
|
||||
return () -> runTarget(this.type.module(), this.type.main(), arguments, gameLayer);
|
||||
return () -> runTarget(this.module, this.main, arguments, gameLayer);
|
||||
}
|
||||
|
||||
protected record LaunchType(String name, String module, String main, Dist dist, boolean data) {};
|
||||
|
||||
+12
-4
@@ -14,12 +14,14 @@ sealed abstract class ForgeDevLaunchHandler extends CommonDevLaunchHandler {
|
||||
super(type, "forge_dev_");
|
||||
}
|
||||
|
||||
private ForgeDevLaunchHandler(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Path> getMinecraftPaths() {
|
||||
|
||||
// The extra jar is on the classpath, so try and pull it out of the legacy classpath
|
||||
var legacyCP = findClassPath();
|
||||
var extra = findJarOnClasspath(legacyCP, "client-extra");
|
||||
// The client extra jar is on the classpath we can try locating it using the .mcassetsroot which vanilla uses for loading data
|
||||
var extra = getPathFromResource("assets/.mcassetsroot");
|
||||
// Minecraft is an exploded directory, so find it.
|
||||
var minecraft = getPathFromResource("net/minecraft/client/Minecraft.class");
|
||||
var forge = getPathFromResource("net/minecraftforge/common/MinecraftForge.class");
|
||||
@@ -62,4 +64,10 @@ sealed abstract class ForgeDevLaunchHandler extends CommonDevLaunchHandler {
|
||||
super(SERVER_GAMETEST);
|
||||
}
|
||||
}
|
||||
|
||||
public static final class Custom extends ForgeDevLaunchHandler {
|
||||
public Custom() {
|
||||
super("forge_dev");
|
||||
}
|
||||
}
|
||||
}
|
||||
+17
-4
@@ -8,17 +8,18 @@ package net.minecraftforge.fml.loading.targets;
|
||||
import net.minecraftforge.fml.loading.FMLLoader;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
import java.util.function.BiPredicate;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
import cpw.mods.jarhandling.SecureJar;
|
||||
|
||||
@ApiStatus.Internal
|
||||
sealed abstract class ForgeUserdevLaunchHandler extends CommonDevLaunchHandler {
|
||||
private ForgeUserdevLaunchHandler(LaunchType type) {
|
||||
super(type, "forge_userdev_");
|
||||
}
|
||||
|
||||
private ForgeUserdevLaunchHandler(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Path> getMinecraftPaths() {
|
||||
var legacyCP = findClassPath();
|
||||
@@ -26,7 +27,7 @@ sealed abstract class ForgeUserdevLaunchHandler extends CommonDevLaunchHandler {
|
||||
|
||||
// Minecraft is extra jar {resources} + forge jar {patches}
|
||||
// The MC extra and forge jars are on the classpath, so try and pull them out
|
||||
var extra = findJarOnClasspath(legacyCP, "client-extra");
|
||||
var extra = findJarOnClasspath(legacyCP, "client-extra"); // This should be "client-" + vers.mcAndMCPVersion() + "-extra" but FG6 qwerks
|
||||
var forge = findJarOnClasspath(legacyCP, "forge-" + vers.mcAndForgeVersion());
|
||||
// We need to filter the forge jar to just MC code
|
||||
var minecraft = CommonDevLaunchHandler.getMinecraftOnly(extra, forge);
|
||||
@@ -39,6 +40,12 @@ sealed abstract class ForgeUserdevLaunchHandler extends CommonDevLaunchHandler {
|
||||
}
|
||||
}
|
||||
|
||||
public static final class ClientData extends ForgeUserdevLaunchHandler {
|
||||
public ClientData() {
|
||||
super(CLIENT_DATA);
|
||||
}
|
||||
}
|
||||
|
||||
public static final class Data extends ForgeUserdevLaunchHandler {
|
||||
public Data() {
|
||||
super(DATA);
|
||||
@@ -56,4 +63,10 @@ sealed abstract class ForgeUserdevLaunchHandler extends CommonDevLaunchHandler {
|
||||
super(SERVER_GAMETEST);
|
||||
}
|
||||
}
|
||||
|
||||
public static final class Custom extends ForgeUserdevLaunchHandler {
|
||||
public Custom() {
|
||||
super("forge_userdev");
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
@@ -4,12 +4,16 @@ net.minecraftforge.fml.loading.targets.ForgeProdLaunchHandler$Server
|
||||
|
||||
# Mod Developers
|
||||
net.minecraftforge.fml.loading.targets.ForgeUserdevLaunchHandler$Client
|
||||
net.minecraftforge.fml.loading.targets.ForgeUserdevLaunchHandler$ClientData
|
||||
net.minecraftforge.fml.loading.targets.ForgeUserdevLaunchHandler$Custom
|
||||
net.minecraftforge.fml.loading.targets.ForgeUserdevLaunchHandler$Data
|
||||
net.minecraftforge.fml.loading.targets.ForgeUserdevLaunchHandler$Server
|
||||
net.minecraftforge.fml.loading.targets.ForgeUserdevLaunchHandler$ServerGameTest
|
||||
|
||||
#Working on Forge itself
|
||||
net.minecraftforge.fml.loading.targets.ForgeDevLaunchHandler$Client
|
||||
net.minecraftforge.fml.loading.targets.ForgeDevLaunchHandler$ClientData
|
||||
net.minecraftforge.fml.loading.targets.ForgeDevLaunchHandler$Custom
|
||||
net.minecraftforge.fml.loading.targets.ForgeDevLaunchHandler$Data
|
||||
net.minecraftforge.fml.loading.targets.ForgeDevLaunchHandler$Server
|
||||
net.minecraftforge.fml.loading.targets.ForgeDevLaunchHandler$ServerGameTest
|
||||
@@ -4,7 +4,7 @@
|
||||
SPDX-License-Identifier: LGPL-2.1-only
|
||||
-->
|
||||
|
||||
<Configuration status="warn" packages="net.minecrell.terminalconsole,net.minecrell.terminalconsole.util,com.mojang.util,cpw.mods.modlauncher.log,net.minecraftforge.fml.loading.log4j" shutdownHook="disable">
|
||||
<Configuration status="warn" shutdownHook="disable">
|
||||
<filters>
|
||||
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="NEUTRAL"/>
|
||||
<MarkerFilter marker="NETWORK_PACKETS" onMatch="${sys:forge.logging.marker.networking:-DENY}" onMismatch="NEUTRAL"/>
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
--- a/net/minecraft/client/data/models/ItemModelGenerators.java
|
||||
+++ b/net/minecraft/client/data/models/ItemModelGenerators.java
|
||||
@@ -852,6 +_,9 @@
|
||||
this.declareCustomModelItem(Items.COD);
|
||||
this.declareCustomModelItem(Items.FEATHER);
|
||||
this.declareCustomModelItem(Items.LEAD);
|
||||
+ // moved from validate to here, because it's just vanilla default blocks
|
||||
+ if (this.itemModelOutput instanceof ModelProvider.ItemInfoCollector collector)
|
||||
+ collector.generateDefaultBlockModels();
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@@ -0,0 +1,111 @@
|
||||
--- a/net/minecraft/client/data/models/ModelProvider.java
|
||||
+++ b/net/minecraft/client/data/models/ModelProvider.java
|
||||
@@ -43,11 +_,11 @@
|
||||
|
||||
@Override
|
||||
public CompletableFuture<?> run(CachedOutput p_376268_) {
|
||||
- ModelProvider.ItemInfoCollector modelprovider$iteminfocollector = new ModelProvider.ItemInfoCollector();
|
||||
- ModelProvider.BlockStateGeneratorCollector modelprovider$blockstategeneratorcollector = new ModelProvider.BlockStateGeneratorCollector();
|
||||
+ ModelProvider.ItemInfoCollector modelprovider$iteminfocollector = new ModelProvider.ItemInfoCollector(this::getKnownItems);
|
||||
+ ModelProvider.BlockStateGeneratorCollector modelprovider$blockstategeneratorcollector = new ModelProvider.BlockStateGeneratorCollector(this::getKnownBlocks);
|
||||
ModelProvider.SimpleModelCollector modelprovider$simplemodelcollector = new ModelProvider.SimpleModelCollector();
|
||||
- new BlockModelGenerators(modelprovider$blockstategeneratorcollector, modelprovider$iteminfocollector, modelprovider$simplemodelcollector).run();
|
||||
- new ItemModelGenerators(modelprovider$iteminfocollector, modelprovider$simplemodelcollector).run();
|
||||
+ getBlockModelGenerators(modelprovider$blockstategeneratorcollector, modelprovider$iteminfocollector, modelprovider$simplemodelcollector).run();
|
||||
+ getItemModelGenerators(modelprovider$iteminfocollector, modelprovider$simplemodelcollector).run();
|
||||
modelprovider$blockstategeneratorcollector.validate();
|
||||
modelprovider$iteminfocollector.finalizeAndValidate();
|
||||
return CompletableFuture.allOf(
|
||||
@@ -57,6 +_,22 @@
|
||||
);
|
||||
}
|
||||
|
||||
+ protected Stream<Block> getKnownBlocks() {
|
||||
+ return BuiltInRegistries.BLOCK.stream().filter(block -> "minecraft".equals(block.builtInRegistryHolder().key().location().getNamespace()));
|
||||
+ }
|
||||
+
|
||||
+ protected Stream<Item> getKnownItems() {
|
||||
+ return BuiltInRegistries.ITEM.stream().filter(item -> "minecraft".equals(item.builtInRegistryHolder().key().location().getNamespace()));
|
||||
+ }
|
||||
+
|
||||
+ protected BlockModelGenerators getBlockModelGenerators(BlockStateGeneratorCollector blocks, ItemInfoCollector items, SimpleModelCollector models) {
|
||||
+ return new BlockModelGenerators(blocks, items, models);
|
||||
+ }
|
||||
+
|
||||
+ protected ItemModelGenerators getItemModelGenerators(ItemInfoCollector items, SimpleModelCollector models) {
|
||||
+ return new ItemModelGenerators(items, models);
|
||||
+ }
|
||||
+
|
||||
static <T> CompletableFuture<?> saveAll(CachedOutput p_378816_, Function<T, Path> p_377914_, Map<T, ? extends Supplier<JsonElement>> p_377836_) {
|
||||
return DataProvider.saveAll(p_378816_, Supplier::get, p_377914_, p_377836_);
|
||||
}
|
||||
@@ -69,6 +_,15 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public static class BlockStateGeneratorCollector implements Consumer<BlockStateGenerator> {
|
||||
private final Map<Block, BlockStateGenerator> generators = new HashMap<>();
|
||||
+ private final Supplier<Stream<Block>> known;
|
||||
+
|
||||
+ public BlockStateGeneratorCollector() {
|
||||
+ this(() -> BuiltInRegistries.BLOCK.stream().filter(block -> "minecraft".equals(block.builtInRegistryHolder().key().location().getNamespace())));
|
||||
+ }
|
||||
+
|
||||
+ public BlockStateGeneratorCollector(Supplier<Stream<Block>> known) {
|
||||
+ this.known = known;
|
||||
+ }
|
||||
|
||||
public void accept(BlockStateGenerator p_378147_) {
|
||||
Block block = p_378147_.getBlock();
|
||||
@@ -79,7 +_,7 @@
|
||||
}
|
||||
|
||||
public void validate() {
|
||||
- Stream<Holder.Reference<Block>> stream = BuiltInRegistries.BLOCK.listElements().filter(p_376480_ -> true);
|
||||
+ Stream<Holder.Reference<Block>> stream = known.get().map(Block::builtInRegistryHolder);
|
||||
List<ResourceLocation> list = stream.filter(p_378423_ -> !this.generators.containsKey(p_378423_.value()))
|
||||
.map(p_378200_ -> p_378200_.key().location())
|
||||
.toList();
|
||||
@@ -97,6 +_,15 @@
|
||||
public static class ItemInfoCollector implements ItemModelOutput {
|
||||
private final Map<Item, ClientItem> itemInfos = new HashMap<>();
|
||||
private final Map<Item, Item> copies = new HashMap<>();
|
||||
+ private final Supplier<Stream<Item>> known;
|
||||
+
|
||||
+ public ItemInfoCollector() {
|
||||
+ this(() -> BuiltInRegistries.ITEM.stream().filter(item -> "minecraft".equals(item.builtInRegistryHolder().key().location().getNamespace())));
|
||||
+ }
|
||||
+
|
||||
+ public ItemInfoCollector(Supplier<Stream<Item>> known) {
|
||||
+ this.known = known;
|
||||
+ }
|
||||
|
||||
@Override
|
||||
public void accept(Item p_376450_, ItemModel.Unbaked p_378513_) {
|
||||
@@ -115,7 +_,7 @@
|
||||
this.copies.put(p_376965_, p_377438_);
|
||||
}
|
||||
|
||||
- public void finalizeAndValidate() {
|
||||
+ public void generateDefaultBlockModels() {
|
||||
BuiltInRegistries.ITEM.forEach(p_378629_ -> {
|
||||
if (!this.copies.containsKey(p_378629_)) {
|
||||
if (p_378629_ instanceof BlockItem blockitem && !this.itemInfos.containsKey(blockitem)) {
|
||||
@@ -124,6 +_,8 @@
|
||||
}
|
||||
}
|
||||
});
|
||||
+ }
|
||||
+ public void finalizeAndValidate() {
|
||||
this.copies.forEach((p_376289_, p_375718_) -> {
|
||||
ClientItem clientitem = this.itemInfos.get(p_375718_);
|
||||
if (clientitem == null) {
|
||||
@@ -132,8 +_,8 @@
|
||||
this.register(p_376289_, clientitem);
|
||||
}
|
||||
});
|
||||
- List<ResourceLocation> list = BuiltInRegistries.ITEM
|
||||
- .listElements()
|
||||
+ List<ResourceLocation> list = known.get()
|
||||
+ .map(item -> item.builtInRegistryHolder())
|
||||
.filter(p_377225_ -> !this.itemInfos.containsKey(p_377225_.value()))
|
||||
.map(p_378591_ -> p_378591_.key().location())
|
||||
.toList();
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
--- a/net/minecraft/client/resources/model/BlockStateModelLoader.java
|
||||
+++ b/net/minecraft/client/resources/model/BlockStateModelLoader.java
|
||||
@@ -52,6 +_,8 @@
|
||||
|
||||
private static Function<ResourceLocation, StateDefinition<Block, BlockState>> definitionLocationToBlockMapper() {
|
||||
Map<ResourceLocation, StateDefinition<Block, BlockState>> map = new HashMap<>(STATIC_DEFINITIONS);
|
||||
+ var event = net.minecraftforge.client.event.ForgeEventFactoryClient.onRegisterModeStateDefinitions();
|
||||
+ map.putAll(event.getStates());
|
||||
|
||||
for (Block block : BuiltInRegistries.BLOCK) {
|
||||
map.put(block.builtInRegistryHolder().key().location(), block.getStateDefinition());
|
||||
+3
-1
@@ -23,6 +23,8 @@ plugins {
|
||||
dependencyResolutionManagement {
|
||||
versionCatalogs {
|
||||
libs {
|
||||
plugin('apt', 'com.diffplug.eclipse.apt').version('4.2.0')
|
||||
|
||||
library('forgespi', 'net.minecraftforge:forgespi:7.1.5') // Needs modlauncher
|
||||
library('modlauncher', 'net.minecraftforge:modlauncher:10.2.2') // Needs securemodules
|
||||
library('securemodules', 'net.minecraftforge:securemodules:2.2.20') // Needs unsafe
|
||||
@@ -43,7 +45,7 @@ dependencyResolutionManagement {
|
||||
library('jimfs', 'com.google.jimfs:jimfs:1.3.0')
|
||||
bundle('jimfs', ['guava', 'failureaccess'])
|
||||
|
||||
version('bootstrap', '2.1.6')
|
||||
version('bootstrap', '2.1.7')
|
||||
library('bootstrap', 'net.minecraftforge', 'bootstrap' ).versionRef('bootstrap') // Needs modlauncher
|
||||
library('bootstrap-api', 'net.minecraftforge', 'bootstrap-api' ).versionRef('bootstrap')
|
||||
library('bootstrap-dev', 'net.minecraftforge', 'bootstrap-dev' ).versionRef('bootstrap')
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"bonus_rolls": 0.0,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:alternatives",
|
||||
"children": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"action": "shears_dig",
|
||||
"condition": "forge:can_tool_perform_action"
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:match_tool",
|
||||
"predicate": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "minecraft:silk_touch",
|
||||
"levels": {
|
||||
"min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"name": "minecraft:pale_oak_leaves"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
},
|
||||
{
|
||||
"chances": [
|
||||
0.05,
|
||||
0.0625,
|
||||
0.083333336,
|
||||
0.1
|
||||
],
|
||||
"condition": "minecraft:table_bonus",
|
||||
"enchantment": "minecraft:fortune"
|
||||
}
|
||||
],
|
||||
"name": "minecraft:pale_oak_sapling"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"rolls": 1.0
|
||||
},
|
||||
{
|
||||
"bonus_rolls": 0.0,
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:inverted",
|
||||
"term": {
|
||||
"condition": "minecraft:any_of",
|
||||
"terms": [
|
||||
{
|
||||
"action": "shears_dig",
|
||||
"condition": "forge:can_tool_perform_action"
|
||||
},
|
||||
{
|
||||
"condition": "minecraft:match_tool",
|
||||
"predicate": {
|
||||
"predicates": {
|
||||
"minecraft:enchantments": [
|
||||
{
|
||||
"enchantments": "minecraft:silk_touch",
|
||||
"levels": {
|
||||
"min": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"conditions": [
|
||||
{
|
||||
"chances": [
|
||||
0.02,
|
||||
0.022222223,
|
||||
0.025,
|
||||
0.033333335,
|
||||
0.1
|
||||
],
|
||||
"condition": "minecraft:table_bonus",
|
||||
"enchantment": "minecraft:fortune"
|
||||
}
|
||||
],
|
||||
"functions": [
|
||||
{
|
||||
"add": false,
|
||||
"count": {
|
||||
"type": "minecraft:uniform",
|
||||
"max": 2.0,
|
||||
"min": 1.0
|
||||
},
|
||||
"function": "minecraft:set_count"
|
||||
},
|
||||
{
|
||||
"function": "minecraft:explosion_decay"
|
||||
}
|
||||
],
|
||||
"name": "minecraft:stick"
|
||||
}
|
||||
],
|
||||
"rolls": 1.0
|
||||
}
|
||||
],
|
||||
"random_sequence": "minecraft:blocks/pale_oak_leaves"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"type": "minecraft:crafting_shapeless",
|
||||
"category": "misc",
|
||||
"group": "chest_boat",
|
||||
"ingredients": [
|
||||
"#c:chests/wooden",
|
||||
"minecraft:pale_oak_boat"
|
||||
],
|
||||
"result": {
|
||||
"count": 1,
|
||||
"id": "minecraft:pale_oak_chest_boat"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"category": "misc",
|
||||
"group": "wooden_fence",
|
||||
"key": {
|
||||
"#": "#c:rods/wooden",
|
||||
"W": "minecraft:pale_oak_planks"
|
||||
},
|
||||
"pattern": [
|
||||
"W#W",
|
||||
"W#W"
|
||||
],
|
||||
"result": {
|
||||
"count": 3,
|
||||
"id": "minecraft:pale_oak_fence"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"category": "redstone",
|
||||
"group": "wooden_fence_gate",
|
||||
"key": {
|
||||
"#": "#c:rods/wooden",
|
||||
"W": "minecraft:pale_oak_planks"
|
||||
},
|
||||
"pattern": [
|
||||
"#W#",
|
||||
"#W#"
|
||||
],
|
||||
"result": {
|
||||
"count": 1,
|
||||
"id": "minecraft:pale_oak_fence_gate"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"category": "misc",
|
||||
"group": "wooden_sign",
|
||||
"key": {
|
||||
"#": "minecraft:pale_oak_planks",
|
||||
"X": "#c:rods/wooden"
|
||||
},
|
||||
"pattern": [
|
||||
"###",
|
||||
"###",
|
||||
" X "
|
||||
],
|
||||
"result": {
|
||||
"count": 3,
|
||||
"id": "minecraft:pale_oak_sign"
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,6 @@
|
||||
"description": {
|
||||
"translate": "pack.forge.description"
|
||||
},
|
||||
"pack_format": 57
|
||||
"pack_format": 61
|
||||
}
|
||||
}
|
||||
@@ -94,14 +94,14 @@ public final class ForgeEventFactoryClient {
|
||||
/**
|
||||
* Post an event to the {@link ModLoader#get()} event bus
|
||||
*/
|
||||
private static <T extends Event & IModBusEvent> T postModBus(T e) {
|
||||
private static <T extends Event & IModBusEvent> T fireModBus(T e) {
|
||||
ML.postEvent(e);
|
||||
return e;
|
||||
}
|
||||
|
||||
public static void onGatherLayers(Map<EntityType<?>, EntityRenderer<?, ?>> renderers, Map<Model, EntityRenderer<? extends Player, ?>> playerRenderers, Context context) {
|
||||
// TODO: Why is this a ModLoader event...
|
||||
postModBus(new EntityRenderersEvent.AddLayers(renderers, playerRenderers, context));
|
||||
fireModBus(new EntityRenderersEvent.AddLayers(renderers, playerRenderers, context));
|
||||
}
|
||||
|
||||
public static boolean onScreenMouseReleased(Screen screen, double mouseX, double mouseY, int button) {
|
||||
@@ -295,7 +295,12 @@ public final class ForgeEventFactoryClient {
|
||||
|
||||
public static Map<Type, Function<EntityModelSet, SkullModelBase>> onCreateSkullModels() {
|
||||
var builder = ImmutableMap.<Type, Function<EntityModelSet, SkullModelBase>>builder();
|
||||
postModBus(new EntityRenderersEvent.CreateSkullModels(builder));
|
||||
fireModBus(new EntityRenderersEvent.CreateSkullModels(builder));
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
public static ModelEvent.RegisterModelStateDefinitions onRegisterModeStateDefinitions() {
|
||||
// This is on the mod bus because it happens during the initial texture reload, which is while the Forge bus is shut down.
|
||||
return fireModBus(new ModelEvent.RegisterModelStateDefinitions());
|
||||
}
|
||||
}
|
||||
@@ -6,11 +6,12 @@
|
||||
package net.minecraftforge.client.event;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import net.minecraft.client.resources.model.BakedModel;
|
||||
import net.minecraft.client.resources.model.ModelBakery;
|
||||
import net.minecraft.client.resources.model.ModelManager;
|
||||
import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraftforge.client.model.geometry.IGeometryLoader;
|
||||
import net.minecraftforge.eventbus.api.Cancelable;
|
||||
import net.minecraftforge.eventbus.api.Event;
|
||||
@@ -20,6 +21,8 @@ import net.minecraftforge.fml.event.IModBusEvent;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -106,6 +109,37 @@ public abstract class ModelEvent extends Event {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fired when the {@link net.minecraft.client.resources.model.BlockStateModelLoader BlockStateModelLoader} is notified of the resource manager reloading.
|
||||
* Allows developers to register {@link net.minecraft.world.level.block.state.StateDefinition StateDefinitons} for blocks that are not in the normal Block registry.
|
||||
* This is designed to allow for extra models to be loaded in connection with a blockstates json file. This is not intended to allow
|
||||
* overriding or modification of StateDefinitions from registered Blocks
|
||||
*
|
||||
* <p>This event is fired on the {@linkplain FMLJavaModLoadingContext#getModEventBus() mod-specific event bus},
|
||||
* only on the {@linkplain LogicalSide#CLIENT logical client}.</p>
|
||||
*/
|
||||
public static class RegisterModelStateDefinitions extends ModelEvent implements IModBusEvent {
|
||||
private final Map<ResourceLocation, StateDefinition<Block, BlockState>> states = new HashMap<>();
|
||||
private final Map<ResourceLocation, StateDefinition<Block, BlockState>> view = Collections.unmodifiableMap(states);
|
||||
|
||||
@ApiStatus.Internal
|
||||
public RegisterModelStateDefinitions() { }
|
||||
|
||||
/**
|
||||
* Returns a read only view of the extra registered models
|
||||
*/
|
||||
public Map<ResourceLocation, StateDefinition<Block, BlockState>> getStates() {
|
||||
return this.view;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a StateDefinition for a synthetic block.
|
||||
*/
|
||||
public void register(ResourceLocation key, StateDefinition<Block, BlockState> value) {
|
||||
states.put(key, value);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows users to register their own {@link IGeometryLoader geometry loaders} for use in block/item models.
|
||||
*
|
||||
@@ -126,7 +160,9 @@ public abstract class ModelEvent extends Event {
|
||||
* Registers a new geometry loader.
|
||||
*/
|
||||
public void register(String name, IGeometryLoader<?> loader) {
|
||||
var key = ResourceLocation.fromNamespaceAndPath(ModLoadingContext.get().getActiveNamespace(), name);
|
||||
@SuppressWarnings("removal")
|
||||
var namespace = ModLoadingContext.get().getActiveNamespace();
|
||||
var key = ResourceLocation.fromNamespaceAndPath(namespace, name);
|
||||
Preconditions.checkArgument(!loaders.containsKey(key), "Geometry loader already registered: " + key);
|
||||
loaders.put(key, loader);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,12 @@ import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
*
|
||||
* @see ModelProvider
|
||||
* @see ModelBuilder
|
||||
*
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
public class BlockModelBuilder extends ModelBuilder<BlockModelBuilder>
|
||||
{
|
||||
public BlockModelBuilder(ResourceLocation outputLocation, ExistingFileHelper existingFileHelper)
|
||||
|
||||
@@ -12,7 +12,12 @@ import org.jetbrains.annotations.NotNull;
|
||||
/**
|
||||
* Stub class to extend for block model data providers, eliminates some
|
||||
* boilerplate constructor parameters.
|
||||
*
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
public abstract class BlockModelProvider extends ModelProvider<BlockModelBuilder> {
|
||||
|
||||
public BlockModelProvider(PackOutput output, String modid, ExistingFileHelper existingFileHelper) {
|
||||
|
||||
@@ -63,10 +63,17 @@ import org.jetbrains.annotations.VisibleForTesting;
|
||||
/**
|
||||
* Data provider for blockstate files. Extends {@link BlockModelProvider} so that
|
||||
* blockstates and their referenced models can be provided in tandem.
|
||||
*
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
public abstract class BlockStateProvider implements DataProvider {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
@SuppressWarnings("unused")
|
||||
private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().disableHtmlEscaping().create();
|
||||
|
||||
@VisibleForTesting
|
||||
|
||||
@@ -28,7 +28,12 @@ import org.jetbrains.annotations.Nullable;
|
||||
* Can be manually constructed, created by static factory such as
|
||||
* {@link #allYRotations(ModelFile, int, boolean)}, or created by builder via
|
||||
* {@link #builder()}.
|
||||
*
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
public final class ConfiguredModel {
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,6 +13,16 @@ import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
*
|
||||
* This is the only class that doesn't seem to have a vanilla alternative however, it should be a simple helper
|
||||
* function to replace this functionality for your custom models
|
||||
*
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
public abstract class CustomLoaderBuilder<T extends ModelBuilder<T>>
|
||||
{
|
||||
protected final ResourceLocation loaderId;
|
||||
|
||||
@@ -8,6 +8,12 @@ package net.minecraftforge.client.model.generators;
|
||||
import com.google.gson.JsonObject;
|
||||
import org.jetbrains.annotations.VisibleForTesting;
|
||||
|
||||
/**
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
@VisibleForTesting
|
||||
public interface IGeneratedBlockState
|
||||
{
|
||||
|
||||
@@ -20,7 +20,12 @@ import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
/**
|
||||
* Builder for item models, adds the ability to build overrides via
|
||||
* {@link #override()}.
|
||||
*
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
public class ItemModelBuilder extends ModelBuilder<ItemModelBuilder> {
|
||||
|
||||
protected List<OverrideBuilder> overrides = new ArrayList<>();
|
||||
@@ -37,7 +42,7 @@ public class ItemModelBuilder extends ModelBuilder<ItemModelBuilder> {
|
||||
|
||||
/**
|
||||
* Get an existing override builder
|
||||
*
|
||||
*
|
||||
* @param index the index of the existing override builder
|
||||
* @return the override builder
|
||||
* @throws IndexOutOfBoundsException if {@code} index is out of bounds
|
||||
|
||||
@@ -17,7 +17,12 @@ import java.util.Objects;
|
||||
/**
|
||||
* Stub class to extend for item model data providers, eliminates some
|
||||
* boilerplate constructor parameters.
|
||||
*
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
public abstract class ItemModelProvider extends ModelProvider<ItemModelBuilder> {
|
||||
|
||||
public ItemModelProvider(PackOutput output, String modid, ExistingFileHelper existingFileHelper) {
|
||||
|
||||
@@ -50,7 +50,12 @@ import org.joml.Vector3f;
|
||||
* @see ItemModelBuilder
|
||||
*
|
||||
* @param <T> Self type, for simpler chaining of methods.
|
||||
*
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
public class ModelBuilder<T extends ModelBuilder<T>> extends ModelFile {
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -10,6 +10,12 @@ import com.google.common.base.Preconditions;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
|
||||
/**
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
public abstract class ModelFile {
|
||||
|
||||
protected ResourceLocation location;
|
||||
|
||||
@@ -21,6 +21,12 @@ import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper.ResourceType;
|
||||
import org.jetbrains.annotations.VisibleForTesting;
|
||||
|
||||
/**
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
public abstract class ModelProvider<T extends ModelBuilder<T>> implements DataProvider {
|
||||
|
||||
public static final String BLOCK_FOLDER = "block";
|
||||
|
||||
+6
@@ -21,6 +21,12 @@ import com.google.gson.JsonObject;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.properties.Property;
|
||||
|
||||
/**
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
public final class MultiPartBlockStateBuilder implements IGeneratedBlockState {
|
||||
private final List<PartBuilder> parts = new ArrayList<>();
|
||||
private final Block owner;
|
||||
|
||||
@@ -50,7 +50,12 @@ import org.jetbrains.annotations.Nullable;
|
||||
* values.
|
||||
*
|
||||
* @see BlockStateProvider
|
||||
*
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
@Deprecated(since = "1.21.4", forRemoval = true)
|
||||
public class VariantBlockStateBuilder implements IGeneratedBlockState
|
||||
{
|
||||
|
||||
@@ -284,6 +289,7 @@ public class VariantBlockStateBuilder implements IGeneratedBlockState
|
||||
return true;
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder ret = new StringBuilder();
|
||||
|
||||
+5
@@ -15,6 +15,11 @@ import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
public class CompositeModelBuilder<T extends ModelBuilder<T>> extends CustomLoaderBuilder<T>
|
||||
{
|
||||
private static final ResourceLocation NAME = ResourceLocation.fromNamespaceAndPath("forge", "composite");
|
||||
|
||||
+5
@@ -14,6 +14,11 @@ import net.minecraftforge.client.model.generators.ModelBuilder;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
|
||||
/**
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
public class DynamicFluidContainerModelBuilder<T extends ModelBuilder<T>> extends CustomLoaderBuilder<T>
|
||||
{
|
||||
private static final ResourceLocation NAME = ResourceLocation.fromNamespaceAndPath("forge", "fluid_container");
|
||||
|
||||
+5
@@ -24,6 +24,11 @@ import net.minecraftforge.client.model.generators.CustomLoaderBuilder;
|
||||
import net.minecraftforge.client.model.generators.ModelBuilder;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
|
||||
/**
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
public class ItemLayerModelBuilder<T extends ModelBuilder<T>> extends CustomLoaderBuilder<T>
|
||||
{
|
||||
private static final ResourceLocation NAME = ResourceLocation.fromNamespaceAndPath("forge", "item_layers");
|
||||
|
||||
@@ -13,6 +13,11 @@ import net.minecraftforge.client.model.generators.CustomLoaderBuilder;
|
||||
import net.minecraftforge.client.model.generators.ModelBuilder;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
|
||||
/**
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
public class ObjModelBuilder<T extends ModelBuilder<T>> extends CustomLoaderBuilder<T>
|
||||
{
|
||||
private static final ResourceLocation NAME = ResourceLocation.fromNamespaceAndPath("forge", "obj");
|
||||
|
||||
+5
-1
@@ -7,7 +7,6 @@ package net.minecraftforge.client.model.generators.loaders;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.gson.JsonObject;
|
||||
import net.minecraft.client.renderer.block.model.ItemTransforms;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.item.ItemDisplayContext;
|
||||
import net.minecraftforge.client.model.generators.CustomLoaderBuilder;
|
||||
@@ -17,6 +16,11 @@ import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* In 1.21.4 Mojang exposed their data generators for their models. So it should be feasible to just use theirs.
|
||||
* If you find something lacking feel free to open a PR so that we can extend it.
|
||||
* @deprecated Use Vanilla's providers {@link net.minecraft.client.data.models.ModelProvider}
|
||||
*/
|
||||
public class SeparateTransformsModelBuilder<T extends ModelBuilder<T>> extends CustomLoaderBuilder<T>
|
||||
{
|
||||
private static final ResourceLocation NAME = ResourceLocation.fromNamespaceAndPath("forge", "separate_transforms");
|
||||
|
||||
@@ -35,7 +35,7 @@ public class BakedModelRenderable implements IRenderable<BakedModelRenderable.Co
|
||||
* Constructs a {@link BakedModelRenderable} from the given model location.
|
||||
* The model is expected to have been baked ahead of time.
|
||||
*
|
||||
* @see net.minecraftforge.client.event.ModelEvent.RegisterAdditional
|
||||
* @see net.minecraftforge.client.event.ModelEvent.RegisterModelStateDefinitions
|
||||
*/
|
||||
public static BakedModelRenderable of(ModelResourceLocation model) {
|
||||
return of(Minecraft.getInstance().getModelManager().getModel(model));
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
package net.minecraftforge.data.loading;
|
||||
|
||||
import net.minecraft.Util;
|
||||
import net.minecraft.client.ClientBootstrap;
|
||||
import net.minecraft.data.registries.VanillaRegistries;
|
||||
import net.minecraft.server.Bootstrap;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
@@ -21,7 +22,6 @@ import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@@ -42,8 +42,9 @@ public class DatagenModLoader {
|
||||
return new DatagenModLoader(parser, client);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
private final OptionParser parser;
|
||||
private final boolean client;
|
||||
private final OptionSpec<Void> client;
|
||||
private final OptionSpec<String> existing;
|
||||
private final OptionSpec<String> existingMod;
|
||||
private final OptionSpec<String> mod;
|
||||
@@ -55,7 +56,7 @@ public class DatagenModLoader {
|
||||
private DatagenModLoader(OptionParser parser, boolean client) {
|
||||
this.gameDir = parser.accepts("gameDir").withRequiredArg().ofType(java.io.File.class).defaultsTo(new java.io.File(".")).required(); //Need by modlauncher, so lets just eat it
|
||||
this.parser = parser;
|
||||
this.client = client;
|
||||
this.client = !client ? null : parser.accepts("client", "Include client generators");
|
||||
this.existing = parser.accepts("existing", "Existing resource packs that generated resources can reference").withRequiredArg();
|
||||
this.existingMod = parser.accepts("existing-mod", "Existing mods that generated resources can reference the resource packs of").withRequiredArg();
|
||||
this.mod = parser.accepts("mod", "A modid to dump").withRequiredArg().withValuesSeparatedBy(",");
|
||||
@@ -82,8 +83,13 @@ public class DatagenModLoader {
|
||||
if (patterns.contains("minecraft") && patterns.size() == 1)
|
||||
return true;
|
||||
|
||||
if (!genClient && this.client != null)
|
||||
genClient = options.has(this.client);
|
||||
|
||||
runningDataGen = true;
|
||||
Bootstrap.bootStrap();
|
||||
if (genClient)
|
||||
ClientBootstrap.bootstrap();
|
||||
ModLoader.get().gatherAndInitializeMods(ModWorkManager.syncExecutor(), ModWorkManager.parallelExecutor(), ()->{});
|
||||
var lookupProvider = CompletableFuture.supplyAsync(VanillaRegistries::createLookup, Util.backgroundExecutor());
|
||||
|
||||
|
||||
@@ -3,6 +3,350 @@ default net.minecraft.client.KeyMapping f_90817_ # isDown
|
||||
public net.minecraft.client.Minecraft f_90987_ # textureManager
|
||||
public-f net.minecraft.client.Options f_92059_ # keyMappings
|
||||
public net.minecraft.client.Options$FieldAccess
|
||||
public net.minecraft.client.color.item.ItemTintSources f_371619_ # ID_MAPPER
|
||||
#group protected net.minecraft.client.data.models.BlockModelGenerators *()
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372042_(Lnet/minecraft/world/item/Item;Lnet/minecraft/resources/ResourceLocation;)V # registerSimpleItemModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372049_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Ljava/lang/Boolean;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createSculkCatalyst$61
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372065_()V # createCartographyTable
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372079_(Lnet/minecraft/world/level/block/Block;II)Lnet/minecraft/resources/ResourceLocation; # lambda$createCropBlock$17
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372090_()V # createPitcherCrop
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372114_(Lnet/minecraft/client/data/models/blockstates/MultiPartGenerator;Lnet/minecraft/client/data/models/blockstates/Condition$TerminalCondition;Lnet/minecraft/client/data/models/blockstates/VariantProperties$Rotation;)V # addSlotStateAndRotationVariants
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372121_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # createWeightedPressurePlate
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372122_(Lnet/minecraft/client/data/models/blockstates/Variant;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createSoulFire$32
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372128_()V # createSmithingTable
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372129_()V # createPetrifiedOakSlab
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372134_()V # createFarmland
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372137_(Ljava/lang/String;I)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createBambooModels$14
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372151_()V # createIronBars
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372158_()V # createBookshelf
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372187_(Lnet/minecraft/world/level/block/Block;Ljava/lang/Boolean;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createHangingMoss$60
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372188_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createAxisAlignedPillarBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372190_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/item/Item;)V # createMultiface
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372196_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # copyTrapdoorModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372199_()V # createStructureBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372209_(Lnet/minecraft/world/item/Item;Lnet/minecraft/world/level/block/Block;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; # createFlatItemModelWithBlockTexture
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372211_(Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$new$4
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372231_()Lnet/minecraft/client/data/models/blockstates/PropertyDispatch; # createRotatedPillar
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372234_(Lnet/minecraft/world/level/block/Block;)V # createRotatedMirroredVariantBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372247_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createTrapdoor
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372261_()V # createBamboo
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372277_()V # createSnifferEgg
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372283_(Lnet/minecraft/client/data/models/blockstates/Variant;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createFire$24
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372285_()Lnet/minecraft/client/data/models/blockstates/PropertyDispatch; # createColumnWithFacing
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372302_(Lnet/minecraft/resources/ResourceLocation;)[Lnet/minecraft/client/data/models/blockstates/Variant; # createRotatedVariants
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372307_()V # createMangrovePropagule
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372310_()V # createPointedDripstone
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372311_(Ljava/lang/Integer;)Lnet/minecraft/resources/ResourceLocation; # lambda$createSnifferEgg$47
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372312_(Lnet/minecraft/core/FrontAndTop;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createCrafterBlock$21
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372325_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/data/models/model/TextureMapping;Ljava/util/function/BiConsumer;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createMirroredColumnGenerator
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372336_(Lnet/minecraft/client/data/models/blockstates/Variant;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createSoulFire$33
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372346_()Lnet/minecraft/client/data/models/blockstates/PropertyDispatch; # createTorchHorizontalDispatch
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372364_(Lnet/minecraft/world/level/block/state/properties/BooleanProperty;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/PropertyDispatch; # createBooleanModelDispatch
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372368_()V # createJigsaw
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372383_()V # createAmethystClusters
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372396_([Lnet/minecraft/world/level/block/Block;)V # createCampfires
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372397_(Lnet/minecraft/world/level/block/Block;)V # createLantern
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372399_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/MultiVariantGenerator; # createSimpleBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372406_()V # createObserver
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372418_()V # createDaylightDetector
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372455_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/model/TexturedModel$Provider;Lnet/minecraft/client/data/models/model/TexturedModel$Provider;)V # createRotatedPillarWithHorizontalVariant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372502_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/BlockModelGenerators$PlantType;Lnet/minecraft/client/data/models/model/TextureMapping;)V # createCrossBlockWithDefaultItem
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372503_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # createStems
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372507_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/item/Item;)V # createAirLikeBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372519_()V # createGrindstone
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372527_(Lnet/minecraft/world/level/block/Block;)V # registerSimpleFlatItemModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372530_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$createBarrel$15
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372543_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/world/level/block/entity/vault/VaultState;Ljava/lang/Boolean;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createVault$38
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372545_()V # createLightBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372548_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # createCoral
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372570_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$createCreakingHeart$6
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372582_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/MultiVariantGenerator; # createRotatedVariant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372599_()Lnet/minecraft/client/data/models/blockstates/PropertyDispatch; # createFacingDispatch
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372620_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # copyCopperBulbModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372638_(Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$new$3
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372644_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/data/models/blockstates/Variant;)V # createGrassLikeBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372663_()V # createFrostedIce
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372681_(Lnet/minecraft/client/data/models/model/TexturedModel$Provider;[Lnet/minecraft/world/level/block/Block;)V # createColoredBlockWithStateRotations
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372696_()V # createEndPortalFrame
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372705_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createOrientableTrapdoor
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372711_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createDoor
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372719_()V # createChorusFlower
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372720_()V # createCocoa
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372723_(Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$new$0
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372724_()V # createSmallDripleaf
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372726_(Lnet/minecraft/world/level/block/Block;)V # createMultiface
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372728_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/blockstates/Condition$TerminalCondition;Lnet/minecraft/world/level/block/state/properties/BooleanProperty;)V # lambda$createMultifaceBlockStates$55
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372729_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/BlockModelGenerators$PlantType;)V # createGrowingPlant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372730_()V # createBeds
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372737_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/BlockModelGenerators$PlantType;)V # createCrossBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372739_()V # createNetherPortalBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372745_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # createNetherRoots
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372746_(Lnet/minecraft/client/data/models/model/TextureMapping;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/model/TextureMapping; # lambda$createCommandBlock$13
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372768_(Lnet/minecraft/world/level/block/Block;)V # createAmethystCluster
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372788_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # copyDoorModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372818_(Lnet/minecraft/world/level/block/Block;)Ljava/util/List; # createTopFireModels
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372820_(Lnet/minecraft/client/data/models/blockstates/Variant;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createFire$25
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372825_(Ljava/lang/Integer;Ljava/lang/Integer;)Lnet/minecraft/resources/ResourceLocation; # createTurtleEggModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372827_()V # createMuddyMangroveRoots
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372830_(Lnet/minecraft/world/level/block/Block;)V # createFlowerBed
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372831_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # copyModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372841_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/MultiVariantGenerator; # createRotatedVariant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372857_()V # createSweetBerryBush
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372870_()V # createSculkCatalyst
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372876_()V # createBigDripLeafBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372882_(Lnet/minecraft/client/data/models/model/TexturedModel$Provider;[Lnet/minecraft/world/level/block/Block;)V # createColoredBlockWithRandomRotations
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372883_(Lnet/minecraft/client/data/models/blockstates/Variant;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createFire$28
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372884_()V # createLever
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372888_(Lnet/minecraft/core/FrontAndTop;Lnet/minecraft/client/data/models/blockstates/Variant;)Lnet/minecraft/client/data/models/blockstates/Variant; # applyRotation
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372890_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/model/TextureMapping;Ljava/lang/Integer;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createStems$10
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372908_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Z)V # createChest
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372933_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/BlockModelGenerators$PlantType;)V # createPlantWithDefaultItem
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372942_()V # createStonecutter
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372944_(Lnet/minecraft/world/level/block/Block;)V # createCreakingHeart
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372948_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/data/models/model/TextureMapping;Ljava/util/function/BiConsumer;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createNorthWestMirroredCubeGenerator
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372954_()V # createSmoothStoneSlab
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372958_()V # createDirtPath
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372959_()V # createComparator
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372960_(Lnet/minecraft/world/level/block/Block;)V # createTintedDoublePlant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372976_(Lnet/minecraft/world/level/block/Block;)V # createAzalea
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_372983_(Lnet/minecraft/client/data/models/blockstates/MultiPartGenerator;Lnet/minecraft/resources/ResourceLocation;Lcom/mojang/datafixers/util/Pair;)V # lambda$createChiseledBookshelf$62
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373004_(Lnet/minecraft/world/level/block/Block;)V # createCommandBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373008_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/item/DyeColor;)V # createShulkerBox
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373026_(Lnet/minecraft/world/item/Item;)V # registerSimpleFlatItemModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373031_(Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/util/List; # lambda$createTurtleEgg$46
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373035_(Lnet/minecraft/world/level/block/Block;)V # createItemWithGrassTint
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373046_(Lnet/minecraft/world/item/Item;Lnet/minecraft/world/level/block/Block;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; # createFlatItemModelWithBlockTextureAndOverlay
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373060_(Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$new$2
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373061_(Lnet/minecraft/client/data/models/blockstates/Variant;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createFire$26
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373071_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/BlockModelGenerators$PlantType;Lnet/minecraft/client/data/models/model/TextureMapping;)V # createCrossBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373072_(Lnet/minecraft/world/level/block/Block;)V # createParticleOnlyBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373079_(Lnet/minecraft/world/level/block/Block;Ljava/lang/Integer;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createBrushableBlock$5
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373089_(Lnet/minecraft/world/item/Item;)Lnet/minecraft/resources/ResourceLocation; # createFlatItemModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373098_()V # createCaveVines
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373127_(Lnet/minecraft/client/data/models/blockstates/Variant;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createFire$27
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373150_(Lnet/minecraft/resources/ResourceLocation;Ljava/lang/Integer;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createSnowBlocks$42
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373154_(Lnet/minecraft/client/data/models/blockstates/Variant;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createFire$29
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373159_()V # createComposter
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373167_(Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$static$52
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373171_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Ljava/util/function/BiFunction;)V # createCraftingTableLike
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373177_()V # createTrialSpawner
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373181_()V # createVine
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373188_()V # createInfestedStone
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373195_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/renderer/special/SpecialModelRenderer$Unbaked;)V # generateSimpleSpecialItemModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373216_(Lnet/minecraft/world/level/block/Block;)Ljava/util/List; # createFloorFireModels
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373228_(Lnet/minecraft/world/level/block/Block;)Lnet/minecraft/client/data/models/BlockModelGenerators$BlockFamilyProvider; # family
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373247_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$createFurnace$19
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373255_()V # createPumpkins
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373266_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createPressurePlate
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373285_(Lnet/minecraft/world/level/block/state/properties/Property;Ljava/lang/Comparable;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/PropertyDispatch; # createEmptyOrFullDispatch
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373293_()V # createTripwire
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373303_(Lnet/minecraft/world/level/block/Block;)V # createMossyCarpet
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373329_()V # createSculkSensor
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373330_()V # createPistonHeads
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373332_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createStairs
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373333_()V # createBanners
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373336_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/BlockModelGenerators$PlantType;)V # createCrossBlockWithDefaultItem
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373340_()V # createSnowBlocks
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373341_(Lnet/minecraft/core/Direction;Lnet/minecraft/world/level/block/state/properties/DripstoneThickness;)Lnet/minecraft/client/data/models/blockstates/Variant; # createPointedDripstoneVariant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373342_(Lnet/minecraft/world/level/block/Block;)V # createDispenserBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373358_()V # createSculkShrieker
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373367_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createRotatedPillarWithHorizontalVariant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373371_(Lnet/minecraft/world/level/block/Block;)V # createNonTemplateModelBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373393_()V # createRedstoneTorch
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373406_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;)V # createAxisAlignedPillarBlockCustomModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373407_(Lnet/minecraft/client/data/models/blockstates/Variant;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createSoulFire$34
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373410_(Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$new$1
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373413_(Lnet/minecraft/world/level/block/Block;)V # createMultifaceBlockStates
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373423_()V # createGrassBlocks
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373424_()V # createChiseledBookshelf
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373437_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # createNonTemplateModelBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373442_(Ljava/lang/Integer;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createSweetBerryBush$44
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373454_(Lnet/minecraft/client/data/models/model/TextureMapping;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/model/TextureMapping; # lambda$createChorusFlower$20
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373455_(Ljava/util/List;Ljava/util/function/UnaryOperator;)Ljava/util/List; # wrapModels
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373466_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;)V # registerSimpleItemModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373467_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/data/models/model/TextureMapping;)V # createPistonVariant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373468_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/color/item/ItemTintSource;)V # registerSimpleTintedItemModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373481_(Lnet/minecraft/world/level/block/Block;)V # createMushroomBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373512_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$createGrassBlocks$35
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373523_()V # createRepeater
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373526_()V # createRedstoneLamp
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373538_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/world/level/block/state/properties/SculkSensorPhase;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createSculkSensor$39
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373558_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/model/TexturedModel$Provider;)V # createFurnace
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373573_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createSlab
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373577_(Lnet/minecraft/client/data/models/blockstates/PropertyDispatch$C4;Lnet/minecraft/world/level/block/state/properties/DoubleBlockHalf;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/PropertyDispatch$C4; # configureDoorHalf
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373578_()V # createPitcherPlant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373590_(Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$static$50
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373608_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/BlockModelGenerators$PlantType;)V # createPlant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373622_(Lnet/minecraft/world/level/block/Block;Ljava/util/function/Function;)V # createBeeNest
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373634_()V # createScaffolding
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373643_()V # createVault
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373651_(Lnet/minecraft/client/data/models/blockstates/MultiPartGenerator;Lnet/minecraft/client/data/models/blockstates/Condition$TerminalCondition;Lnet/minecraft/client/data/models/blockstates/VariantProperties$Rotation;Lcom/mojang/datafixers/util/Pair;)V # lambda$addSlotStateAndRotationVariants$63
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373660_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/model/TextureMapping;Ljava/util/function/BiConsumer;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createPillarBlockUVLocked
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373673_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createButton
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373680_(Lnet/minecraft/world/level/block/Block;)V # createCopperBulb
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373694_()V # createCauldrons
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373697_()V # createSoulFire
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373701_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createWall
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373707_(Lnet/minecraft/world/level/block/Block;)V # createPottedAzalea
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373721_(Lnet/minecraft/world/level/block/Block;)V # createNonTemplateHorizontalBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373723_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # createGlassBlocks
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373729_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/model/TexturedModel$Provider;)V # createHorizontallyRotatedBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373730_(Lnet/minecraft/world/level/block/Block;Ljava/lang/String;Lnet/minecraft/client/data/models/model/ModelTemplate;Ljava/util/function/Function;)Lnet/minecraft/resources/ResourceLocation; # createSuffixedVariant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373738_(Ljava/util/function/Function;Ljava/lang/Integer;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createSnifferEgg$48
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373743_(Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$wrapModels$23
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373750_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$createMossyCarpet$58
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373795_(ILjava/lang/String;Lnet/minecraft/client/data/models/model/TextureMapping;)Lnet/minecraft/resources/ResourceLocation; # createTurtleEggModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373801_(Lnet/minecraft/world/item/Item;Lnet/minecraft/world/level/block/Block;)Lnet/minecraft/resources/ResourceLocation; # createFlatItemModelWithBlockTexture
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373808_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/data/models/model/TextureMapping;Ljava/util/function/BiConsumer;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createMirroredCubeGenerator
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373813_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/SkullBlock$Type;Lnet/minecraft/resources/ResourceLocation;)V # createHead
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373825_(Lnet/minecraft/world/level/block/Block;)V # createAnvil
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373827_()V # createTallSeagrass
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373843_()V # createHeads
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373844_()V # createLightningRod
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373857_([ILnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/BlockModelGenerators$PlantType;Ljava/lang/Integer;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createCrossBlock$9
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373862_()V # createFire
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373864_()V # createBrewingStand
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373879_()V # createMagmaBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373894_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Ljava/lang/Boolean;Ljava/lang/Boolean;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createCopperBulb$22
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373901_(Lnet/minecraft/client/data/models/blockstates/Variant;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createSoulFire$30
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373907_([ILit/unimi/dsi/fastutil/ints/Int2ObjectMap;Lnet/minecraft/world/level/block/Block;Ljava/lang/Integer;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createCropBlock$18
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373916_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/state/properties/Property;[I)V # createCropBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373929_()V # createSunflower
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373935_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/world/level/block/entity/trialspawner/TrialSpawnerState;Ljava/lang/Boolean;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createTrialSpawner$37
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373936_()V # createLilyPad
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373941_(Lnet/minecraft/world/level/block/Block;)Ljava/util/List; # createSideFireModels
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373945_()V # createTurtleEgg
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373948_(Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$static$54
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373958_()Lnet/minecraft/client/data/models/blockstates/PropertyDispatch; # createHorizontalFacingDispatch
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373961_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$createGrassBlocks$36
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373973_(Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$static$53
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373974_()V # createBell
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373976_()Lnet/minecraft/client/data/models/blockstates/PropertyDispatch; # createHorizontalFacingDispatchAlt
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373984_(Lnet/minecraft/world/level/block/Block;)V # createPassiveRail
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373986_(Lnet/minecraft/core/FrontAndTop;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createJigsaw$66
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_373989_(Lnet/minecraft/world/level/block/Block;)V # createRotatableColumn
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374000_(Lnet/minecraft/world/level/block/Block;)V # createRotatedVariantBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374002_(Lnet/minecraft/data/BlockFamily;)V # lambda$run$67
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374004_()V # createCalibratedSculkSensor
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374006_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/model/TextureMapping;)V # createPumpkinVariant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374030_()V # createChests
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374031_(Ljava/lang/Comparable;Lnet/minecraft/client/data/models/blockstates/Variant;Lnet/minecraft/client/data/models/blockstates/Variant;Ljava/lang/Comparable;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createEmptyOrFullDispatch$16
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374032_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Ljava/lang/Boolean;Lnet/minecraft/world/level/block/state/properties/RailShape;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createActiveRail$12
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374036_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/blockstates/Condition$TerminalCondition;)V # lambda$createMultifaceBlockStates$56
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374041_(Lnet/minecraft/world/level/block/Block;Ljava/lang/String;)V # registerSimpleFlatItemModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374042_(Lnet/minecraft/world/level/block/Block;)V # createTrapdoor
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374064_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/model/TexturedModel$Provider;)Lnet/minecraft/resources/ResourceLocation; # lambda$createCreakingHeart$8
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374071_(Ljava/lang/Boolean;Ljava/lang/Boolean;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createTripwireHook$45
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374076_(Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$static$49
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374126_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)V # createDoubleBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374134_(I)Ljava/util/List; # createBambooModels
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374141_(Lnet/minecraft/world/level/block/Block;)V # createBrushableBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374146_(Lnet/minecraft/world/level/block/Block;)V # createHangingMoss
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374177_()V # createCrafterBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374200_(Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$static$51
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374216_(Lnet/minecraft/world/level/block/Block;)V # createOrientableTrapdoor
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374249_()V # createChorusPlant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374256_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # createFullAndCarpetBlocks
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374262_(Lnet/minecraft/client/data/models/blockstates/Variant;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createSoulFire$31
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374265_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;)V # createAirLikeBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374268_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/item/DyeColor;)V # createBanner
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374271_(Lnet/minecraft/world/level/block/state/properties/StructureMode;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createStructureBlock$43
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374273_()V # createNetherrack
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374284_()V # createInfestedDeepslate
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374293_()V # createPistons
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374299_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createFence
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374303_(Lnet/minecraft/world/level/block/Block;)V # createNyliumBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374308_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # createCandleAndCandleCake
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374309_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$createCreakingHeart$7
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374312_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/model/TextureMapping;)V # lambda$createMossyCarpet$57
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374339_()V # createRedstoneWire
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374347_()V # createBarrel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374348_()V # createRespawnAnchor
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374353_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)Lnet/minecraft/resources/ResourceLocation; # createParticleOnlyBlockModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374355_()V # createFrogspawnBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374363_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/BlockModelGenerators$PlantType;)V # createDoublePlantWithDefaultItem
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374364_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/world/level/block/state/properties/SculkSensorPhase;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createCalibratedSculkSensor$40
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374369_(Lnet/minecraft/world/level/block/Block;Ljava/lang/String;)V # registerTwoLayerFlatItemModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374379_(Ljava/lang/Integer;Ljava/lang/Boolean;Ljava/lang/Boolean;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createRepeater$41
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374411_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/item/DyeColor;)V # createBed
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374412_()V # createTripwireHook
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374415_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createCustomFence
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374416_()V # createHopper
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374434_(Lnet/minecraft/world/level/block/Block;)V # createDoor
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374436_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/blockstates/Condition$TerminalCondition;Lnet/minecraft/core/Direction;)V # lambda$createMossyCarpet$59
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374440_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createCopperBulb
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374454_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # createCoralFans
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374464_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/world/level/block/Block;)V # createNormalTorch
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374484_()V # createSeaPickle
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374486_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/BlockModelGenerators$PlantType;)V # createDoublePlant
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374496_(Lnet/minecraft/world/level/block/Block;)Lnet/minecraft/client/data/models/BlockModelGenerators$WoodProvider; # woodProvider
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374498_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Z)Lnet/minecraft/client/data/models/blockstates/BlockStateGenerator; # createFenceGate
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374503_([Lnet/minecraft/resources/ResourceLocation;Ljava/lang/Integer;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createRespawnAnchor$65
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374511_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/BlockModelGenerators$PlantType;Lnet/minecraft/world/level/block/state/properties/Property;[I)V # createCrossBlock
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374514_(Lnet/minecraft/world/level/block/Block;)V # createActiveRail
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374516_(Lnet/minecraft/world/level/block/Block;Ljava/lang/Integer;Lnet/minecraft/world/level/block/state/properties/DoubleBlockHalf;)Lnet/minecraft/client/data/models/blockstates/Variant; # lambda$createPitcherCrop$11
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374532_(Lnet/minecraft/client/data/models/blockstates/MultiPartGenerator;Lnet/minecraft/client/data/models/blockstates/Condition$TerminalCondition;Lnet/minecraft/client/data/models/blockstates/VariantProperties$Rotation;Lnet/minecraft/world/level/block/state/properties/BooleanProperty;Lnet/minecraft/client/data/models/model/ModelTemplate;Z)V # addBookSlotModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374541_(Lnet/minecraft/client/data/models/model/ModelTemplate;Ljava/lang/String;Lnet/minecraft/client/data/models/model/TextureMapping;Lnet/minecraft/client/data/models/BlockModelGenerators$BookSlotModelCacheKey;)Lnet/minecraft/resources/ResourceLocation; # lambda$addBookSlotModel$64
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators m_374546_()V # createCakeBlock
|
||||
#endgroup
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators f_371124_ # itemModelOutput
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators f_371133_ # modelOutput
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators f_371615_ # blockStateOutput
|
||||
public net.minecraft.client.data.models.BlockModelGenerators$BlockFamilyProvider
|
||||
#group protected net.minecraft.client.data.models.BlockModelGenerators$BlockFamilyProvider *()
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators$BlockFamilyProvider m_372389_(Lnet/minecraft/world/level/block/Block;)V # trapdoor
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators$BlockFamilyProvider m_372633_(Lnet/minecraft/world/level/block/Block;Lnet/minecraft/client/data/models/model/ModelTemplate;)Lnet/minecraft/resources/ResourceLocation; # lambda$getOrCreateModel$0
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators$BlockFamilyProvider m_373052_(Lnet/minecraft/world/level/block/Block;)Lnet/minecraft/client/data/models/BlockModelGenerators$BlockFamilyProvider; # door
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators$BlockFamilyProvider m_373078_(Lnet/minecraft/client/data/models/model/ModelTemplate;Lnet/minecraft/world/level/block/Block;)Lnet/minecraft/resources/ResourceLocation; # getOrCreateModel
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators$BlockFamilyProvider m_373633_(Lnet/minecraft/data/BlockFamily$Variant;Lnet/minecraft/world/level/block/Block;)V # lambda$generateFor$1
|
||||
protected net.minecraft.client.data.models.BlockModelGenerators$BlockFamilyProvider m_373732_(Lnet/minecraft/world/level/block/Block;)Lnet/minecraft/client/data/models/BlockModelGenerators$BlockFamilyProvider; # fullBlockVariant
|
||||
#endgroup
|
||||
public net.minecraft.client.data.models.BlockModelGenerators$WoodProvider
|
||||
#group protected net.minecraft.client.data.models.ItemModelGenerators *()
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372103_(Lnet/minecraft/world/item/Item;I)V # generateDyedItem
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372177_(Lnet/minecraft/world/item/Item;)V # generateBundleModels
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372280_(Lnet/minecraft/world/item/Item;Lnet/minecraft/client/data/models/model/ModelTemplate;)V # generateFlatItem
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372299_(Lnet/minecraft/world/item/Item;)V # generateClockItem
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372587_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)V # generateLayeredItem
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372592_(Lnet/minecraft/world/item/Item;)Ljava/util/List; # createCompassModels
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372634_(Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/resources/ResourceLocation; # generateLayeredItem
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372677_(Lnet/minecraft/world/item/Item;Lnet/minecraft/resources/ResourceLocation;)V # addPotionTint
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372690_(Lnet/minecraft/world/item/Item;)V # generateCrossbow
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372771_(Lnet/minecraft/world/item/Item;)V # generateGoatHorn
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372861_(Lnet/minecraft/world/item/Item;)V # generatePotion
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372885_(Lnet/minecraft/world/item/Item;Lnet/minecraft/resources/ResourceLocation;Lnet/minecraft/resources/ResourceLocation;)Lnet/minecraft/resources/ResourceLocation; # generateLayeredItem
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372915_(Lnet/minecraft/world/item/Item;Lnet/minecraft/client/color/item/ItemTintSource;)V # generateItemWithTintedOverlay
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372919_(Lnet/minecraft/world/item/Item;Lnet/minecraft/resources/ResourceKey;Ljava/lang/String;Z)V # generateTrimmableItem
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_372969_(Lnet/minecraft/world/item/Item;Ljava/lang/String;Lnet/minecraft/client/data/models/model/ModelTemplate;)Lnet/minecraft/resources/ResourceLocation; # createFlatItemModel
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373030_(Lnet/minecraft/world/item/Item;)V # generateShield
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373037_(Lnet/minecraft/world/item/Item;)V # generateStandardCompassItem
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373158_(Lnet/minecraft/world/item/Item;Lnet/minecraft/client/data/models/model/ModelTemplate;Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation; # generateBundleCoverModel
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373235_(Lnet/minecraft/world/item/Item;)V # generateTippedArrow
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373294_(Lnet/minecraft/client/renderer/item/ItemModel$Unbaked;Lnet/minecraft/client/renderer/item/ItemModel$Unbaked;)Lnet/minecraft/client/renderer/item/ItemModel$Unbaked; # createFlatModelDispatch
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373463_(Lnet/minecraft/world/item/Item;)V # declareCustomModelItem
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373547_(Lnet/minecraft/world/item/Item;)V # generateSpyglass
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373727_(Lnet/minecraft/world/item/Item;)V # generateElytra
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373789_(Lnet/minecraft/world/item/Item;Lnet/minecraft/client/renderer/item/properties/conditional/ConditionalItemModelProperty;Lnet/minecraft/client/renderer/item/ItemModel$Unbaked;Lnet/minecraft/client/renderer/item/ItemModel$Unbaked;)V # generateBooleanDispatch
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373819_(Lnet/minecraft/world/item/Item;Ljava/lang/String;Lnet/minecraft/client/color/item/ItemTintSource;)V # generateItemWithTintedOverlay
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373839_(Lnet/minecraft/world/item/Item;)V # generateTrident
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373858_(Lnet/minecraft/world/item/Item;Lnet/minecraft/client/data/models/model/ModelTemplate;)Lnet/minecraft/resources/ResourceLocation; # createFlatItemModel
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373869_(Lnet/minecraft/world/item/Item;Lnet/minecraft/world/item/Item;Lnet/minecraft/client/data/models/model/ModelTemplate;)Lnet/minecraft/resources/ResourceLocation; # createFlatItemModel
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_373892_(Lnet/minecraft/world/item/Item;)V # generateWolfArmor
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_374089_(Lnet/minecraft/world/item/Item;)V # generateBow
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_374190_(Lnet/minecraft/world/item/Item;)V # generateFishingRod
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_374289_(Lnet/minecraft/world/item/Item;)V # generateBrush
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_374337_(Lnet/minecraft/world/item/Item;Lnet/minecraft/world/item/Item;Lnet/minecraft/client/data/models/model/ModelTemplate;)V # generateFlatItem
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_374345_(Lnet/minecraft/world/item/Item;II)V # generateSpawnEgg
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators m_374365_(Lnet/minecraft/world/item/Item;)V # generateRecoveryCompassItem
|
||||
#endgroup
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators f_370758_ # modelOutput
|
||||
protected net.minecraft.client.data.models.ItemModelGenerators f_370978_ # itemModelOutput
|
||||
public net.minecraft.client.data.models.ModelProvider$BlockStateGeneratorCollector
|
||||
public net.minecraft.client.data.models.ModelProvider$BlockStateGeneratorCollector <init>()V # constructor
|
||||
public net.minecraft.client.data.models.ModelProvider$ItemInfoCollector
|
||||
public net.minecraft.client.data.models.ModelProvider$ItemInfoCollector <init>()V # constructor
|
||||
public net.minecraft.client.data.models.ModelProvider$SimpleModelCollector
|
||||
public net.minecraft.client.data.models.ModelProvider$SimpleModelCollector <init>()V # constructor
|
||||
protected net.minecraft.client.gui.components.AbstractButton f_290895_ # SPRITES
|
||||
protected net.minecraft.client.gui.components.AbstractSelectionList$Entry f_93521_ # list
|
||||
protected net.minecraft.client.gui.components.AbstractSliderButton m_293290_()Lnet/minecraft/resources/ResourceLocation; # getHandleSprite
|
||||
@@ -48,7 +392,6 @@ public net.minecraft.client.renderer.RenderStateShard$TransparencyStateShard
|
||||
public net.minecraft.client.renderer.RenderStateShard$WriteMaskStateShard
|
||||
public net.minecraft.client.renderer.RenderType m_173215_(Ljava/lang/String;Lcom/mojang/blaze3d/vertex/VertexFormat;Lcom/mojang/blaze3d/vertex/VertexFormat$Mode;IZZLnet/minecraft/client/renderer/RenderType$CompositeState;)Lnet/minecraft/client/renderer/RenderType$CompositeRenderType; # create
|
||||
public net.minecraft.client.renderer.RenderType$CompositeState
|
||||
protected net.minecraft.client.renderer.block.model.BakedOverrides <init>()V # constructor
|
||||
public net.minecraft.client.renderer.block.model.BlockElement m_111320_(Lnet/minecraft/core/Direction;)[F # uvsByFace
|
||||
public net.minecraft.client.renderer.block.model.BlockElement$Deserializer
|
||||
public net.minecraft.client.renderer.block.model.BlockElement$Deserializer <init>()V # constructor
|
||||
@@ -56,13 +399,10 @@ public net.minecraft.client.renderer.block.model.BlockElementFace$Deserializer
|
||||
public net.minecraft.client.renderer.block.model.BlockElementFace$Deserializer <init>()V # constructor
|
||||
public net.minecraft.client.renderer.block.model.BlockFaceUV$Deserializer
|
||||
public net.minecraft.client.renderer.block.model.BlockFaceUV$Deserializer <init>()V # constructor
|
||||
public net.minecraft.client.renderer.block.model.BlockModel f_111417_ # textureMap
|
||||
public net.minecraft.client.renderer.block.model.BlockModel f_111418_ # parent
|
||||
public net.minecraft.client.renderer.block.model.BlockModel f_111424_ # hasAmbientOcclusion
|
||||
public net.minecraft.client.renderer.block.model.BlockModel m_111437_(Lnet/minecraft/client/renderer/block/model/BlockElement;Lnet/minecraft/client/renderer/block/model/BlockElementFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/core/Direction;Lnet/minecraft/client/resources/model/ModelState;)Lnet/minecraft/client/renderer/block/model/BakedQuad; # bakeFace
|
||||
public net.minecraft.client.renderer.block.model.BlockModel f_370667_ # textureSlots
|
||||
public net.minecraft.client.renderer.block.model.ItemModelGenerator m_111638_(ILjava/lang/String;Lnet/minecraft/client/renderer/texture/SpriteContents;)Ljava/util/List; # processFrames
|
||||
public net.minecraft.client.renderer.block.model.ItemOverride$Deserializer
|
||||
public net.minecraft.client.renderer.block.model.ItemOverride$Deserializer <init>()V # constructor
|
||||
public net.minecraft.client.renderer.block.model.ItemTransform$Deserializer
|
||||
public net.minecraft.client.renderer.block.model.ItemTransform$Deserializer <init>()V # constructor
|
||||
public net.minecraft.client.renderer.block.model.ItemTransform$Deserializer f_111769_ # DEFAULT_ROTATION
|
||||
@@ -76,18 +416,18 @@ private-f net.minecraft.client.renderer.blockentity.PistonHeadRenderer f_112441_
|
||||
public net.minecraft.client.renderer.blockentity.SkullBlockRenderer f_112519_ # SKIN_BY_TYPE
|
||||
public net.minecraft.client.renderer.entity.EntityRenderDispatcher f_114362_ # renderers
|
||||
public net.minecraft.client.renderer.entity.EntityRenderers m_174036_(Lnet/minecraft/world/entity/EntityType;Lnet/minecraft/client/renderer/entity/EntityRendererProvider;)V # register
|
||||
public net.minecraft.client.renderer.entity.ItemRenderer m_115162_(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;Ljava/util/List;Lnet/minecraft/world/item/ItemStack;II)V # renderQuadList
|
||||
public net.minecraft.client.renderer.entity.ItemRenderer m_115189_(Lnet/minecraft/client/resources/model/BakedModel;Lnet/minecraft/world/item/ItemStack;IILcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;)V # renderModelLists
|
||||
public net.minecraft.client.renderer.entity.ItemRenderer m_115162_(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;Ljava/util/List;[III)V # renderQuadList
|
||||
public net.minecraft.client.renderer.entity.ItemRenderer m_115189_(Lnet/minecraft/client/resources/model/BakedModel;[IIILcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;)V # renderModelLists
|
||||
public net.minecraft.client.renderer.entity.LivingEntityRenderer m_115326_(Lnet/minecraft/client/renderer/entity/layers/RenderLayer;)Z # addLayer
|
||||
protected net.minecraft.client.renderer.entity.layers.HumanoidArmorLayer m_117078_(Lnet/minecraft/client/renderer/entity/state/HumanoidRenderState;Lnet/minecraft/world/entity/EquipmentSlot;)Lnet/minecraft/client/model/HumanoidModel; # getArmorModel
|
||||
public net.minecraft.client.renderer.item.BlockModelWrapper f_371418_ # model
|
||||
public net.minecraft.client.renderer.texture.SpriteContents f_243731_ # byMipLevel
|
||||
default net.minecraft.client.renderer.texture.SpriteContents f_244575_ # animatedTexture
|
||||
default net.minecraft.client.renderer.texture.SpriteContents m_245088_()I # getFrameCount
|
||||
public net.minecraft.client.resources.ClientPackSource m_246691_(Ljava/nio/file/Path;)Lnet/minecraft/server/packs/VanillaPackResources; # createVanillaPackSource
|
||||
protected net.minecraft.client.resources.TextureAtlasHolder f_118884_ # textureAtlas
|
||||
public net.minecraft.client.resources.model.ModelBakery f_119241_ # ITEM_MODEL_GENERATOR
|
||||
public net.minecraft.client.resources.model.SimpleBakedModel$Builder <init>(ZZZLnet/minecraft/client/renderer/block/model/ItemTransforms;)V # constructor
|
||||
public net.minecraft.client.resources.model.SimpleBakedModel m_373830_(Lnet/minecraft/client/renderer/block/model/BlockElement;Lnet/minecraft/client/renderer/block/model/BlockElementFace;Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;Lnet/minecraft/core/Direction;Lnet/minecraft/client/resources/model/ModelState;)Lnet/minecraft/client/renderer/block/model/BakedQuad; # bakeFace
|
||||
public net.minecraft.client.resources.model.SimpleBakedModel$Builder <init>(ZZZLnet/minecraft/client/renderer/block/model/ItemTransforms;)V # constructor
|
||||
public net.minecraft.client.sounds.SoundEngine f_120217_ # soundManager
|
||||
public net.minecraft.commands.CommandSourceStack f_81288_ # source
|
||||
public net.minecraft.commands.arguments.selector.EntitySelectorParser m_121229_()V # finalizePredicates
|
||||
@@ -234,6 +574,7 @@ protected net.minecraft.world.level.biome.BiomeGenerationSettings$PlainBuilder f
|
||||
protected net.minecraft.world.level.biome.BiomeGenerationSettings$PlainBuilder f_254678_ # carvers
|
||||
protected net.minecraft.world.level.biome.BiomeGenerationSettings$PlainBuilder m_255276_(I)V # addFeatureStepsUpTo
|
||||
#group protected net.minecraft.world.level.biome.BiomeSpecialEffects$Builder *
|
||||
protected net.minecraft.world.level.biome.BiomeSpecialEffects$Builder f_371299_ # backgroundMusicVolume
|
||||
protected net.minecraft.world.level.biome.BiomeSpecialEffects$Builder f_48005_ # fogColor
|
||||
protected net.minecraft.world.level.biome.BiomeSpecialEffects$Builder f_48006_ # waterColor
|
||||
protected net.minecraft.world.level.biome.BiomeSpecialEffects$Builder f_48007_ # waterFogColor
|
||||
@@ -352,8 +693,8 @@ public net.minecraft.world.level.block.WoolCarpetBlock <init>(Lnet/minecraft/wor
|
||||
public net.minecraft.world.level.block.Block m_49805_(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/core/BlockPos;I)V # popExperience
|
||||
public net.minecraft.world.level.block.FireBlock m_221164_(Lnet/minecraft/world/level/block/state/BlockState;)I # getBurnOdds
|
||||
public net.minecraft.world.level.block.FireBlock m_221166_(Lnet/minecraft/world/level/block/state/BlockState;)I # getIgniteOdds
|
||||
public net.minecraft.world.level.block.entity.BlockEntityType <init>(Lnet/minecraft/world/level/block/entity/BlockEntityType$BlockEntitySupplier;Ljava/util/Set;)V # constructor
|
||||
public net.minecraft.world.level.block.entity.BlockEntityType$BlockEntitySupplier
|
||||
public net.minecraft.world.level.block.entity.BlockEntityType <init>(Lnet/minecraft/world/level/block/entity/BlockEntityType$BlockEntitySupplier;Ljava/util/Set;)V # <init>
|
||||
public net.minecraft.world.level.block.entity.HopperBlockEntity m_59395_(I)V # setCooldown
|
||||
public net.minecraft.world.level.block.entity.HopperBlockEntity m_59409_()Z # isOnCustomCooldown
|
||||
public net.minecraft.world.level.block.state.properties.BlockSetType m_272115_(Lnet/minecraft/world/level/block/state/properties/BlockSetType;)Lnet/minecraft/world/level/block/state/properties/BlockSetType; # register
|
||||
@@ -399,4 +740,4 @@ public net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacerType <
|
||||
protected net.minecraft.world.level.portal.PortalForcer f_77648_ # level
|
||||
public net.minecraft.world.level.storage.LevelResource <init>(Ljava/lang/String;)V # constructor
|
||||
private-f net.minecraft.world.level.storage.loot.LootPool f_79028_ # rolls
|
||||
private-f net.minecraft.world.level.storage.loot.LootPool f_79029_ # bonusRolls
|
||||
private-f net.minecraft.world.level.storage.loot.LootPool f_79029_ # bonusRolls
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"variants": {
|
||||
"": {
|
||||
"model": "additional_model:block/cow_head"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"model": {
|
||||
"type": "minecraft:model",
|
||||
"model": "additional_model:block/pig_head"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "minecraft:block/cube_all",
|
||||
"textures": {
|
||||
"all": "minecraft:block/bedrock"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"parent": "minecraft:block/cube_all",
|
||||
"textures": {
|
||||
"all": "minecraft:block/cobblestone"
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"pack": {
|
||||
"description": "${mod_id} resources",
|
||||
"pack_format": 42
|
||||
"pack_format": 46
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"pack": {
|
||||
"description": "Forge tests resource pack",
|
||||
"pack_format": 42
|
||||
"pack_format": 46
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,230 @@
|
||||
/*
|
||||
* Copyright (c) Forge Development LLC and contributors
|
||||
* SPDX-License-Identifier: LGPL-2.1-only
|
||||
*/
|
||||
|
||||
package net.minecraftforge.debug.client;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.data.models.BlockModelGenerators;
|
||||
import net.minecraft.client.data.models.ItemModelGenerators;
|
||||
import net.minecraft.client.data.models.model.ItemModelUtils;
|
||||
import net.minecraft.client.data.models.model.ModelLocationUtils;
|
||||
import net.minecraft.client.data.models.model.ModelTemplates;
|
||||
import net.minecraft.client.data.models.model.TextureMapping;
|
||||
import net.minecraft.client.model.CowModel;
|
||||
import net.minecraft.client.model.PigModel;
|
||||
import net.minecraft.client.renderer.MultiBufferSource;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.entity.LivingEntityRenderer;
|
||||
import net.minecraft.client.renderer.entity.layers.RenderLayer;
|
||||
import net.minecraft.client.renderer.entity.state.LivingEntityRenderState;
|
||||
import net.minecraft.client.renderer.entity.state.PigRenderState;
|
||||
import net.minecraft.client.renderer.item.BlockModelWrapper;
|
||||
import net.minecraft.client.renderer.item.ItemStackRenderState;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||
import net.minecraft.core.registries.Registries;
|
||||
import net.minecraft.data.CachedOutput;
|
||||
import net.minecraft.data.DataProvider;
|
||||
import net.minecraft.data.PackOutput;
|
||||
import net.minecraft.gametest.framework.GameTest;
|
||||
import net.minecraft.gametest.framework.GameTestHelper;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.animal.Cow;
|
||||
import net.minecraft.world.entity.animal.Pig;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraft.world.level.block.state.BlockBehaviour;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraftforge.client.event.EntityRenderersEvent;
|
||||
import net.minecraftforge.client.event.ModelEvent;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.data.event.GatherDataEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
import net.minecraftforge.fml.loading.FMLLoader;
|
||||
import net.minecraftforge.gametest.GameTestHolder;
|
||||
import net.minecraftforge.registries.DeferredRegister;
|
||||
import net.minecraftforge.registries.RegistryObject;
|
||||
import net.minecraftforge.test.BaseTestMod;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import com.google.gson.JsonElement;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
|
||||
@Mod(AdditionalModelTest.MODID)
|
||||
@GameTestHolder("forge." + AdditionalModelTest.MODID)
|
||||
public class AdditionalModelTest extends BaseTestMod {
|
||||
public static final String MODID = "additional_model";
|
||||
|
||||
private static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(Registries.BLOCK, MODID);
|
||||
private static final RegistryObject<Block> PIG_HEAD = BLOCKS.register("pig_head", () -> new Block(BlockBehaviour.Properties.of().setId(BLOCKS.key("pig_head"))));
|
||||
private static final RegistryObject<Block> COW_HEAD = BLOCKS.register("cow_head", () -> new Block(BlockBehaviour.Properties.of().setId(BLOCKS.key("cow_head"))));
|
||||
|
||||
private static final DeferredRegister<Item> ITEMS = DeferredRegister.create(Registries.ITEM, MODID);
|
||||
private static final RegistryObject<Item> PIG_HEAD_ITEM = ITEMS.register("pig_head", () -> new Item(new Item.Properties().setId(ITEMS.key("pig_head"))));
|
||||
|
||||
private static ResourceLocation rl(String path) {
|
||||
return ResourceLocation.fromNamespaceAndPath(MODID, path);
|
||||
}
|
||||
|
||||
public AdditionalModelTest(FMLJavaModLoadingContext context) {
|
||||
super(context, false);
|
||||
|
||||
modBus.register(this);
|
||||
|
||||
if (FMLLoader.getLaunchHandler().isData()) {
|
||||
BLOCKS.register(modBus);
|
||||
ITEMS.register(modBus);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void runData(GatherDataEvent event) {
|
||||
var out = event.getGenerator().getPackOutput();
|
||||
event.getGenerator().addProvider(event.includeClient(), new ModelProvider(out));
|
||||
}
|
||||
|
||||
|
||||
@SubscribeEvent
|
||||
public void onRegisterAdditional(ModelEvent.RegisterModelStateDefinitions event) {
|
||||
// Our fake blocks are only created during data gen, so we have to add a fake mapper
|
||||
event.register(rl("cow_head"),
|
||||
new StateDefinition.Builder<Block, BlockState>(Blocks.AIR)
|
||||
.create(Block::defaultBlockState, BlockState::new)
|
||||
);
|
||||
}
|
||||
|
||||
@GameTest(template = "forge:empty3x3x3")
|
||||
public static void item_model(GameTestHelper helper) {
|
||||
var manager = Minecraft.getInstance().getModelManager();
|
||||
|
||||
var key = rl("pig_head");
|
||||
var model = manager.getItemModel(key);
|
||||
if (model == null)
|
||||
helper.fail("Failed to retreive " + key + " item model");
|
||||
|
||||
if (!(model instanceof BlockModelWrapper))
|
||||
helper.fail("Itme Model was " + model.getClass() + " when BlockModelWrapper expected");
|
||||
|
||||
helper.succeed();
|
||||
}
|
||||
|
||||
@GameTest(template = "forge:empty3x3x3")
|
||||
public static void block_model(GameTestHelper helper) {
|
||||
var manager = Minecraft.getInstance().getModelManager();
|
||||
|
||||
var key = new ModelResourceLocation(rl("cow_head"), "");
|
||||
var model = manager.getModel(key);
|
||||
|
||||
if (model == null)
|
||||
helper.fail("Failed to retreive " + key + " block model");
|
||||
|
||||
helper.succeed();
|
||||
}
|
||||
|
||||
// An example on how to render both the item and block model variants
|
||||
//@SubscribeEvent
|
||||
public void onAddLayers(EntityRenderersEvent.AddLayers event) {
|
||||
// Pigs get a block on their head, this is a test of going through the ItemModel loader
|
||||
LivingEntityRenderer<Pig, PigRenderState, PigModel> pig = event.getEntityRenderer(EntityType.PIG);
|
||||
pig.addLayer(new RenderLayer<>(pig) {
|
||||
@Override
|
||||
public void render(PoseStack stack, MultiBufferSource source, int light, PigRenderState state, float xRot, float yRot) {
|
||||
this.getParentModel().getAnyDescendantWithName("head").ifPresent(part -> {
|
||||
var manager = Minecraft.getInstance().getModelManager();
|
||||
stack.pushPose();
|
||||
this.getParentModel().root().translateAndRotate(stack);
|
||||
part.translateAndRotate(stack);
|
||||
stack.scale(0.5F, 0.5F, 0.5F);
|
||||
stack.translate(0, -1, -0.5);
|
||||
|
||||
var model = manager.getItemModel(rl("pig_head"));
|
||||
if (model instanceof BlockModelWrapper wrapper) {
|
||||
var itemState = new ItemStackRenderState();
|
||||
itemState.newLayer().setupBlockModel(wrapper.model, RenderType.solid());
|
||||
itemState.render(stack, source, light, light);
|
||||
}
|
||||
stack.popPose();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Cows get a block on their head, this is a test of going through the BlockModel loader
|
||||
LivingEntityRenderer<Cow, LivingEntityRenderState, CowModel> cow = event.getEntityRenderer(EntityType.COW);
|
||||
cow.addLayer(new RenderLayer<>(cow) {
|
||||
@Override
|
||||
public void render(PoseStack stack, MultiBufferSource source, int light, LivingEntityRenderState state, float xRot, float yRot) {
|
||||
this.getParentModel().getAnyDescendantWithName("head").ifPresent(part -> {
|
||||
var manager = Minecraft.getInstance().getModelManager();
|
||||
var renderer = Minecraft.getInstance().getBlockRenderer().getModelRenderer();
|
||||
|
||||
stack.pushPose();
|
||||
|
||||
this.getParentModel().root().translateAndRotate(stack);
|
||||
part.translateAndRotate(stack);
|
||||
stack.scale(0.5F, 0.5F, 0.5F);
|
||||
stack.translate(-0.5, -0.5, -0.5);
|
||||
stack.translate(0, -1, -0.5);
|
||||
|
||||
var ml = new ModelResourceLocation(rl("cow_head"), "");
|
||||
var model = manager.getModel(ml);
|
||||
|
||||
var consumer = source.getBuffer(RenderType.solid());
|
||||
renderer.renderModel(stack.last(), consumer, null, model, 1.0F, 1.0F, 1.0F, light, OverlayTexture.NO_OVERLAY, ModelData.EMPTY, null);
|
||||
stack.popPose();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public class ModelProvider extends net.minecraft.client.data.models.ModelProvider {
|
||||
public ModelProvider(PackOutput output) {
|
||||
super(output);
|
||||
}
|
||||
|
||||
protected Stream<Block> getKnownBlocks() {
|
||||
return Stream.of(PIG_HEAD.get(), COW_HEAD.get());
|
||||
}
|
||||
|
||||
protected Stream<Item> getKnownItems() {
|
||||
return Stream.of(PIG_HEAD_ITEM.get());
|
||||
}
|
||||
|
||||
protected BlockModelGenerators getBlockModelGenerators(BlockStateGeneratorCollector blocks, ItemInfoCollector items, SimpleModelCollector models) {
|
||||
return new BlockModelGenerators(blocks, items, models) {
|
||||
@Override
|
||||
public void run() {
|
||||
ModelTemplates.CUBE_ALL.create(PIG_HEAD.get(), TextureMapping.cube(Blocks.COBBLESTONE), this.modelOutput);
|
||||
var cow = ModelTemplates.CUBE_ALL.create(COW_HEAD.get(), TextureMapping.cube(Blocks.BEDROCK), this.modelOutput);
|
||||
this.blockStateOutput.accept(createSimpleBlock(COW_HEAD.get(), cow));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
protected ItemModelGenerators getItemModelGenerators(ItemInfoCollector items, SimpleModelCollector models) {
|
||||
return new ItemModelGenerators(items, models) {
|
||||
@Override
|
||||
public void run() {
|
||||
this.itemModelOutput.accept(PIG_HEAD_ITEM.get(), ItemModelUtils.plainModel(ModelLocationUtils.getModelLocation(PIG_HEAD.get())));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
static <T> CompletableFuture<?> saveAll(CachedOutput p_378816_, Function<T, Path> p_377914_, Map<T, ? extends Supplier<JsonElement>> p_377836_) {
|
||||
return DataProvider.saveAll(p_378816_, Supplier::get, p_377914_, p_377836_);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Copyright (c) Forge Development LLC and contributors
|
||||
* SPDX-License-Identifier: LGPL-2.1-only
|
||||
*/
|
||||
|
||||
package net.minecraftforge.debug.client;
|
||||
|
||||
import net.minecraft.client.color.item.ItemTintSource;
|
||||
import net.minecraft.client.color.item.ItemTintSources;
|
||||
import net.minecraft.client.multiplayer.ClientLevel;
|
||||
import net.minecraft.gametest.framework.GameTest;
|
||||
import net.minecraft.gametest.framework.GameTestHelper;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
import net.minecraftforge.gametest.GameTestHolder;
|
||||
import net.minecraftforge.test.BaseTestMod;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.mojang.datafixers.util.Pair;
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.JsonOps;
|
||||
import com.mojang.serialization.MapCodec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
|
||||
@Mod(LateBoundIdMapperTest.MODID)
|
||||
@GameTestHolder("forge." + LateBoundIdMapperTest.MODID)
|
||||
public class LateBoundIdMapperTest extends BaseTestMod {
|
||||
public LateBoundIdMapperTest(FMLJavaModLoadingContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public static final String MODID = "late_bound_id_mapper";
|
||||
private static ResourceLocation rl(String path) {
|
||||
return ResourceLocation.fromNamespaceAndPath(MODID, path);
|
||||
}
|
||||
|
||||
@GameTest(template = "forge:empty3x3x3")
|
||||
public static void compound(GameTestHelper helper) {
|
||||
var ID_MAPPER = ItemTintSources.ID_MAPPER;
|
||||
|
||||
ID_MAPPER.put(rl("test"), Test.CODEC);
|
||||
|
||||
var expected = new Test(10);
|
||||
|
||||
var encoded = ItemTintSources.CODEC.encodeStart(JsonOps.INSTANCE, expected).result().orElse(null);
|
||||
if (encoded == null)
|
||||
helper.fail("Failed to encode test value");
|
||||
|
||||
var found = ItemTintSources.CODEC.decode(JsonOps.INSTANCE, encoded).result().orElse(Pair.of(null, null)).getFirst();
|
||||
if (found == null)
|
||||
helper.fail("Failed to decode test value");
|
||||
|
||||
if (!found.equals(expected))
|
||||
helper.fail("Decoded value was not the same as encoded");
|
||||
|
||||
helper.succeed();
|
||||
}
|
||||
|
||||
private record Test(int value) implements ItemTintSource {
|
||||
public static final MapCodec<Test> CODEC = RecordCodecBuilder.mapCodec(
|
||||
b -> b.group(Codec.INT.fieldOf("value").forGetter(Test::value)).apply(b, Test::new)
|
||||
);
|
||||
|
||||
@Override
|
||||
public int calculate(ItemStack stack, @Nullable ClientLevel level, @Nullable LivingEntity entity) {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MapCodec<Test> type() {
|
||||
return CODEC;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,9 +30,15 @@ public abstract class BaseTestMod {
|
||||
protected final IEventBus modBus;
|
||||
|
||||
public BaseTestMod(FMLJavaModLoadingContext context) {
|
||||
// TODO: Some form of enable flag?
|
||||
this(context, true);
|
||||
}
|
||||
|
||||
public BaseTestMod(FMLJavaModLoadingContext context, boolean register) {
|
||||
this.modBus = context.getModEventBus();
|
||||
|
||||
if (!register)
|
||||
return;
|
||||
|
||||
modBus.register(this);
|
||||
|
||||
Class<?> cls = getClass();
|
||||
|
||||
Reference in new issue
Block a user