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:
LexManos authored and GitHub committed 2024-12-19 10:41:21 -08:00
1 parent 07977ba242
commit 0e74886f8d
55 files changed
+1346 -75

No files matched your search

+1
View File
@@ -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
+5
View File
@@ -41,3 +41,8 @@ src/*/generated/**/.cache/
/ForgeRoot.ipr
/ForgeRoot.iws
# APT stuff
/*/.gitignore
/*/.factorypath
/*/.apt_generated/
+45 -13
View File
@@ -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
View File
@@ -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;
}
@@ -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
@@ -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) {};
@@ -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");
}
}
}
@@ -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,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
+1 -1
View File
@@ -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();
@@ -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
View File
@@ -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"
}
}
+1 -1
View File
@@ -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";
@@ -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();
@@ -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");
@@ -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");
@@ -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");
@@ -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());
+352 -11
View File
@@ -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 -1
View File
@@ -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();