mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-14 01:04:24 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
220cb1fd81 | ||
|
|
19abf0cb9a | ||
|
|
508d872ef3 | ||
|
|
b67c37fd6c | ||
|
|
d4a3762f21 | ||
|
|
4c7f1096e5 | ||
|
|
4ff65feb63 | ||
|
|
dbec9b3d5a | ||
|
|
28515d7c59 | ||
|
|
ca819e09f2 | ||
|
|
d28cd0352b | ||
|
|
a436118e39 | ||
|
|
9e5ecaaf75 | ||
|
|
3701ec06d0 | ||
|
|
5d0fb2967c | ||
|
|
5c88451f6f | ||
|
|
cfc53c939e | ||
|
|
3ba78225c3 | ||
|
|
d8e6181058 | ||
|
|
bb4e78da90 | ||
|
|
4dd32d6f72 | ||
|
|
68b0075fe6 | ||
|
|
f9686cf098 | ||
|
|
ca28877fd5 | ||
|
|
c18d26c7d8 | ||
|
|
241db39cea | ||
|
|
31da9a4878 | ||
|
|
0e65f20f22 | ||
|
|
d8d70e8b35 | ||
|
|
5d62261082 | ||
|
|
a72b774acf | ||
|
|
b1042f2c3c | ||
|
|
124c78b926 | ||
|
|
7332bf91d5 | ||
|
|
33307fb1bd | ||
|
|
1ef8b75cbb | ||
|
|
f4a85e5f03 | ||
|
|
7f8b30aed3 | ||
|
|
b8ea220925 | ||
|
|
1e1644f6d4 | ||
|
|
fab4ce894a | ||
|
|
f2f7ab80f6 | ||
|
|
c044f3b0c4 | ||
|
|
ebd463e92f | ||
|
|
69ba974960 | ||
|
|
dbee8a24d8 | ||
|
|
2373dab982 | ||
|
|
1ebfef5ec9 | ||
|
|
ff7a2fe4d6 | ||
|
|
862289cf56 | ||
|
|
e3068d7db2 | ||
|
|
29ad7a39de | ||
|
|
3484200f80 | ||
|
|
acaa470dea | ||
|
|
3bf6c17bb8 | ||
|
|
ca8a418364 | ||
|
|
6422310453 | ||
|
|
ebf489be8c | ||
|
|
c8967fa176 | ||
|
|
51d08ad8ab | ||
|
|
dc664ba597 | ||
|
|
8e74ba8c24 | ||
|
|
ec3e8c2039 | ||
|
|
6cbd418703 | ||
|
|
6c8342b74e | ||
|
|
c345dfb0c6 | ||
|
|
8adc546d92 | ||
|
|
25a9e477cb | ||
|
|
886de4ee43 | ||
|
|
c98abaaa42 | ||
|
|
a8bd5e7ece | ||
|
|
a328364999 | ||
|
|
94cbf72e39 | ||
|
|
8248eb6ea1 | ||
|
|
408104dbaf | ||
|
|
5978670897 | ||
|
|
01d14004a9 | ||
|
|
940bbc4e91 | ||
|
|
7070bd0340 | ||
|
|
5e9380ab85 | ||
|
|
9c759294c6 | ||
|
|
b294f4d894 | ||
|
|
ca980a56bc | ||
|
|
8482293b40 | ||
|
|
dc5a06aab4 | ||
|
|
35bd69808c | ||
|
|
4f12261080 | ||
|
|
fbdfc0f95c | ||
|
|
48735c3946 | ||
|
|
c985225d0c | ||
|
|
48ff897ed1 | ||
|
|
9db568d49d | ||
|
|
896e785994 | ||
|
|
78cdb705d4 | ||
|
|
136452840d | ||
|
|
b3631b707c | ||
|
|
f4bab8b8c1 | ||
|
|
2392a4c184 | ||
|
|
476b7056fb | ||
|
|
d510978446 | ||
|
|
583ff81dba | ||
|
|
01a862db30 | ||
|
|
dfbd61436b | ||
|
|
f03745ce45 | ||
|
|
48cf910626 | ||
|
|
0492b25335 | ||
|
|
6d9cb0a646 | ||
|
|
571ecafdbc | ||
|
|
dee844e232 | ||
|
|
07bcff5067 | ||
|
|
7fa3594c04 | ||
|
|
6fda1e968d | ||
|
|
af8074cc39 | ||
|
|
71a4828809 | ||
|
|
79ce18ac3e | ||
|
|
bb83e11a7c | ||
|
|
0f888dde49 | ||
|
|
f4215d121c | ||
|
|
60eecb98a6 | ||
|
|
3cc76a3f60 | ||
|
|
ffdeeb95b7 | ||
|
|
58335d7bc0 | ||
|
|
b0c9d7cce9 | ||
|
|
281ef5a152 | ||
|
|
9183c2fa0d | ||
|
|
389751beae | ||
|
|
2b4e3bcf54 | ||
|
|
3dce85c49f | ||
|
|
185ce79a68 | ||
|
|
f777aba227 | ||
|
|
5efa373d7f | ||
|
|
b6cd19b4ae | ||
|
|
fc5573333d | ||
|
|
55fe7c470f | ||
|
|
3ef1d6919c | ||
|
|
e1863383ff | ||
|
|
4dc34b7d5b | ||
|
|
2c8c022034 | ||
|
|
b5b43a5a36 | ||
|
|
c09fe57031 | ||
|
|
68524ddde9 | ||
|
|
55bdd4d937 | ||
|
|
3f089e3add | ||
|
|
ddb90a69d3 | ||
|
|
bdce8d0494 | ||
|
|
734a3d76aa | ||
|
|
a4aa85259e | ||
|
|
ea1c7a7339 | ||
|
|
185f7344fa | ||
|
|
26e4bf92a0 | ||
|
|
68cb017be1 | ||
|
|
68ff1afac1 | ||
|
|
0d448a5e4f | ||
|
|
d9f6659f2c | ||
|
|
bae2ee0420 | ||
|
|
799e864d93 | ||
|
|
aa38f62bae | ||
|
|
06c3e255b3 | ||
|
|
d5e20b13b9 | ||
|
|
c83d4d29e4 | ||
|
|
ee1c06085b | ||
|
|
336d53b692 | ||
|
|
95c58ba75c | ||
|
|
56857cf5e7 | ||
|
|
838998b885 | ||
|
|
a9b3b48273 | ||
|
|
a788e8a475 | ||
|
|
b7e1cc5f6b | ||
|
|
e784a7f606 | ||
|
|
3e9bc3c434 | ||
|
|
dd340b8ef2 | ||
|
|
7deb479676 | ||
|
|
1ab40e0b3f | ||
|
|
283c3d1664 | ||
|
|
5291ea7270 | ||
|
|
0c1c1b65e1 | ||
|
|
b0787e9f40 | ||
|
|
dc0eacb80f | ||
|
|
8c04651301 | ||
|
|
94621fecd1 | ||
|
|
5e392e3300 | ||
|
|
88595dd26b | ||
|
|
4323c6d845 | ||
|
|
81ec8b99ac | ||
|
|
1af7b7603d | ||
|
|
0fd8fa2211 | ||
|
|
5048739b7f | ||
|
|
44f3f9e2d0 | ||
|
|
ed1c55508f | ||
|
|
50e411b82a | ||
|
|
a8a0306f98 | ||
|
|
19b7d26bc2 | ||
|
|
c7940e70ed | ||
|
|
58ede2c80a | ||
|
|
e83e00520f | ||
|
|
9a50c208f0 | ||
|
|
7acb380ba8 | ||
|
|
48fa2f458c | ||
|
|
318fc6ffe8 | ||
|
|
b009cedc0c | ||
|
|
c6dd475610 | ||
|
|
61285a098a | ||
|
|
995a8b8d35 | ||
|
|
5d33697cb1 | ||
|
|
ae09fc6b6d | ||
|
|
cd826f7bcf | ||
|
|
283ece29e8 | ||
|
|
1918148b8e | ||
|
|
e17714583f | ||
|
|
4c05c63a04 | ||
|
|
0bdc2d04b4 | ||
|
|
57d4d60a33 | ||
|
|
731e1920d2 | ||
|
|
7411b444d3 | ||
|
|
ae3d002ac6 | ||
|
|
1bd70ac5ab | ||
|
|
c90b1732e9 | ||
|
|
fcd9582133 | ||
|
|
9d82d822db | ||
|
|
186d91c03f | ||
|
|
eec5809097 | ||
|
|
4582a29ec1 | ||
|
|
2f83234ccb | ||
|
|
bef52c945b | ||
|
|
1de4ad735b | ||
|
|
00fc29d40d | ||
|
|
b99453d568 |
No files matched your search
+160
-29
@@ -8,18 +8,30 @@ buildscript {
|
||||
dependencies {
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:3.+'
|
||||
classpath 'org.ow2.asm:asm:7.1'
|
||||
classpath 'org.ow2.asm:asm-tree:7.1'
|
||||
}
|
||||
}
|
||||
import groovy.json.JsonSlurper
|
||||
import groovy.json.JsonBuilder
|
||||
|
||||
import java.nio.file.Files
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Date
|
||||
import java.util.LinkedHashMap
|
||||
import java.util.TreeSet
|
||||
import java.util.stream.Collectors
|
||||
import java.util.zip.ZipEntry
|
||||
import java.util.zip.ZipInputStream
|
||||
import java.util.zip.ZipOutputStream
|
||||
import java.security.MessageDigest
|
||||
import java.net.URL
|
||||
import net.minecraftforge.gradle.common.task.ArchiveChecksum
|
||||
import net.minecraftforge.gradle.common.task.DownloadMavenArtifact
|
||||
import net.minecraftforge.gradle.common.task.ExtractInheritance
|
||||
import net.minecraftforge.gradle.common.task.SignJar
|
||||
import net.minecraftforge.gradle.common.util.HashStore
|
||||
import net.minecraftforge.gradle.mcp.function.MCPFunction
|
||||
import net.minecraftforge.gradle.mcp.util.MCPEnvironment
|
||||
import net.minecraftforge.gradle.patcher.task.ApplyBinPatches
|
||||
import net.minecraftforge.gradle.patcher.task.TaskReobfuscateJar
|
||||
import net.minecraftforge.gradle.userdev.tasks.RenameJar
|
||||
@@ -28,13 +40,11 @@ import de.undercouch.gradle.tasks.download.Download
|
||||
import org.gradle.plugins.ide.eclipse.model.SourceFolder
|
||||
import org.objectweb.asm.ClassReader
|
||||
|
||||
import java.util.stream.Collectors
|
||||
|
||||
plugins {
|
||||
id 'net.minecrell.licenser' version '0.4'
|
||||
id 'org.ajoberstar.grgit' version '2.3.0'
|
||||
id 'org.ajoberstar.grgit' version '3.1.1'
|
||||
id 'de.undercouch.download' version '3.3.0'
|
||||
id 'com.github.ben-manes.versions' version '0.20.0'
|
||||
id 'com.github.ben-manes.versions' version '0.22.0'
|
||||
}
|
||||
apply plugin: 'eclipse'
|
||||
|
||||
@@ -50,7 +60,7 @@ ext {
|
||||
MAPPING_CHANNEL = 'snapshot'
|
||||
MAPPING_VERSION = '20190719-1.14.3'
|
||||
MC_VERSION = '1.14.4'
|
||||
MCP_VERSION = '20190719.173545'
|
||||
MCP_VERSION = '20190829.143755'
|
||||
}
|
||||
|
||||
project(':mcp') {
|
||||
@@ -72,7 +82,7 @@ project(':clean') {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'net.minecraftforge:forgespi:0.13.+'
|
||||
implementation 'net.minecraftforge:forgespi:1.1.+'
|
||||
}
|
||||
patcher {
|
||||
parent = project(':mcp')
|
||||
@@ -149,7 +159,10 @@ project(':forge') {
|
||||
]
|
||||
}
|
||||
resources {
|
||||
srcDirs = ["$rootDir/src/test/resources"]
|
||||
srcDirs = [
|
||||
"$rootDir/src/test/resources",
|
||||
"$rootDir/src/generated_test/resources"
|
||||
]
|
||||
}
|
||||
}
|
||||
userdev {
|
||||
@@ -172,18 +185,20 @@ project(':forge') {
|
||||
}
|
||||
|
||||
ext {
|
||||
SPEC_VERSION = '28.0' // This is overwritten by git tag, but here so dev time doesnt explode
|
||||
SPEC_VERSION = '28.1' // This is overwritten by git tag, but here so dev time doesnt explode
|
||||
// The new versioning sceme is <MCVersion>-<ForgeMC>.<RB>.<CommitsSinceRB>
|
||||
// ForgeMC is a unique identifier for every MC version we have supported.
|
||||
// Essentially, the same as the old, except dropping the first number, and the builds are no longer unique.
|
||||
MCP_ARTIFACT = project(':mcp').mcp.config
|
||||
SPECIAL_SOURCE = 'net.md-5:SpecialSource:1.8.5'
|
||||
VERSION_JSON = project(':mcp').file('build/mcp/downloadJson/version.json')
|
||||
BINPATCH_TOOL = 'net.minecraftforge:binarypatcher:1.0.12:fatjar'
|
||||
}
|
||||
|
||||
def getVersion = {
|
||||
//TAG-offset-hash
|
||||
def raw = grgit.describe(longDescr: true)
|
||||
def desc = (raw == null ? '0.0-0-unknown' : grgit.describe(longDescr: true)).split('-') as List
|
||||
def raw = grgit.describe(longDescr: true, tags:true)
|
||||
def desc = (raw == null ? '0.0-0-unknown' : grgit.describe(longDescr: true, tags:true)).split('-') as List
|
||||
def hash = desc.remove(desc.size() - 1)
|
||||
def offset = desc.remove(desc.size() - 1)
|
||||
def tag = desc.join('-')
|
||||
@@ -205,6 +220,7 @@ project(':forge') {
|
||||
patchedSrc = file('src/main/java')
|
||||
srgPatches = true
|
||||
accessTransformer = file("$rootDir/src/main/resources/META-INF/accesstransformer.cfg")
|
||||
sideAnnotationStripper = file("$rootDir/src/main/resources/forge.sas")
|
||||
|
||||
runs {
|
||||
forge_client {
|
||||
@@ -224,7 +240,6 @@ project(':forge') {
|
||||
environment 'FORGE_SPEC', SPEC_VERSION
|
||||
environment 'FORGE_VERSION', project.version.substring(MC_VERSION.length() + 1).toString()
|
||||
environment 'LAUNCHER_VERSION', SPEC_VERSION
|
||||
property 'terminal.ansi', 'true'
|
||||
property 'org.lwjgl.system.SharedLibraryExtractDirectory', 'lwjgl_dll'
|
||||
|
||||
ideaModule "${rootProject.name}.${project.name}.userdev"
|
||||
@@ -296,7 +311,22 @@ project(':forge') {
|
||||
source sourceSets.main
|
||||
source sourceSets.userdev
|
||||
|
||||
args '--mod', 'forge', '--all', '--output', rootProject.file('src/generated/resources/')
|
||||
args '--mod', 'forge', '--all', '--output', rootProject.file('src/generated/resources/'), '--validate',
|
||||
'--existing', sourceSets.main.resources.srcDirs[0]
|
||||
}
|
||||
|
||||
forge_test_data {
|
||||
parent runs.forge_data
|
||||
taskName 'forge_test_data'
|
||||
|
||||
environment 'MOD_CLASSES', 'dummy' // Needed to work around FG limitation, FG will replace this!
|
||||
|
||||
mods {
|
||||
tests { sources sourceSets.test }
|
||||
}
|
||||
|
||||
args '--mod', 'data_gen_test', '--all', '--output', rootProject.file('src/generated_test/resources/'), '--validate',
|
||||
'--existing', sourceSets.main.resources.srcDirs[0]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -332,6 +362,14 @@ project(':forge') {
|
||||
'Implementation-Version': SPEC_VERSION,
|
||||
'Implementation-Vendor': 'Forge'
|
||||
] as LinkedHashMap,
|
||||
'net/minecraftforge/fml/mclanguageprovider/': [
|
||||
'Specification-Title': 'Mod Language Provider',
|
||||
'Specification-Vendor': 'Forge Development LLC',
|
||||
'Specification-Version': '1',
|
||||
'Implementation-Title': 'Minecraft Language Mod Provider',
|
||||
'Implementation-Version': '1',
|
||||
'Implementation-Vendor': 'Forge'
|
||||
] as LinkedHashMap,
|
||||
'net/minecraftforge/fml/loading/': [
|
||||
'Specification-Title': 'Launcher',
|
||||
'Specification-Vendor': 'Forge Development LLC',
|
||||
@@ -367,26 +405,31 @@ project(':forge') {
|
||||
installer 'org.ow2.asm:asm:6.2'
|
||||
installer 'org.ow2.asm:asm-commons:6.2'
|
||||
installer 'org.ow2.asm:asm-tree:6.2'
|
||||
installer 'cpw.mods:modlauncher:3.0.+'
|
||||
installer 'cpw.mods:modlauncher:4.1.+'
|
||||
installer 'cpw.mods:grossjava9hacks:1.1.+'
|
||||
installer 'net.minecraftforge:accesstransformers:0.16.+:shadowed'
|
||||
installer 'net.minecraftforge:eventbus:0.10.+:service'
|
||||
installer 'net.minecraftforge:forgespi:0.13.+'
|
||||
installer 'net.minecraftforge:coremods:0.6.+'
|
||||
installer 'net.minecraftforge:accesstransformers:1.0.+:shadowed'
|
||||
installer 'net.minecraftforge:eventbus:1.0.+:service'
|
||||
installer 'net.minecraftforge:forgespi:1.5.+'
|
||||
installer 'net.minecraftforge:coremods:1.0.+'
|
||||
installer 'net.minecraftforge:unsafe:0.2.+'
|
||||
installer 'com.electronwill.night-config:core:3.6.0'
|
||||
installer 'com.electronwill.night-config:toml:3.6.0'
|
||||
installer 'org.jline:jline:3.9.0'
|
||||
installer 'org.jline:jline:3.12.+'
|
||||
installer 'org.apache.maven:maven-artifact:3.6.0'
|
||||
installer 'net.jodah:typetools:0.6.0'
|
||||
installer 'java3d:vecmath:1.5.2'
|
||||
installer 'org.apache.logging.log4j:log4j-api:2.11.2'
|
||||
installer 'org.apache.logging.log4j:log4j-core:2.11.2'
|
||||
installer 'net.minecrell:terminalconsoleappender:1.1.+'
|
||||
installer 'net.minecrell:terminalconsoleappender:1.2.+'
|
||||
installer 'net.sf.jopt-simple:jopt-simple:5.0.4'
|
||||
fmllauncherImplementation 'com.google.guava:guava:21.0'
|
||||
fmllauncherImplementation 'com.google.code.gson:gson:2.8.0'
|
||||
fmllauncherImplementation "org.lwjgl:lwjgl:3.2.2"
|
||||
fmllauncherImplementation "org.lwjgl:lwjgl-glfw:3.2.2"
|
||||
fmllauncherImplementation "org.lwjgl:lwjgl-opengl:3.2.2"
|
||||
fmllauncherImplementation "org.lwjgl:lwjgl-stb:3.2.2"
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.0.0'
|
||||
testImplementation 'org.junit.vintage:junit-vintage-engine:5.+'
|
||||
testImplementation 'org.opentest4j:opentest4j:1.0.0' // needed for junit 5
|
||||
testImplementation 'org.hamcrest:hamcrest-all:1.3' // needs advanced matching for list order
|
||||
}
|
||||
@@ -449,17 +492,23 @@ project(':forge') {
|
||||
}
|
||||
|
||||
// We apply the bin patches we just created to make a jar that is JUST our changes
|
||||
genClientBinPatches.tool = BINPATCH_TOOL
|
||||
task applyClientBinPatches(type: ApplyBinPatches, dependsOn: genClientBinPatches) {
|
||||
clean = { genClientBinPatches.cleanJar }
|
||||
input = genClientBinPatches.output
|
||||
tool = BINPATCH_TOOL
|
||||
}
|
||||
genServerBinPatches.tool = BINPATCH_TOOL
|
||||
task applyServerBinPatches(type: ApplyBinPatches, dependsOn: genServerBinPatches) {
|
||||
clean = { genServerBinPatches.cleanJar }
|
||||
input = genServerBinPatches.output
|
||||
tool = BINPATCH_TOOL
|
||||
}
|
||||
genJoinedBinPatches.tool = BINPATCH_TOOL
|
||||
task applyJoinedBinPatches(type: ApplyBinPatches, dependsOn: genJoinedBinPatches) {
|
||||
clean = { genJoinedBinPatches.cleanJar }
|
||||
input = genJoinedBinPatches.output
|
||||
tool = BINPATCH_TOOL
|
||||
}
|
||||
// Create SRG named Vanilla jars, using the SpecialSource we have in the installer
|
||||
task createClientSRG(type: RenameJar, dependsOn: genClientBinPatches) {
|
||||
@@ -518,6 +567,40 @@ project(':forge') {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task downloadLibraries(dependsOn: ':mcp:setupMCP') {
|
||||
inputs.file VERSION_JSON
|
||||
doLast {
|
||||
def json = new JsonSlurper().parseText(VERSION_JSON.text)
|
||||
json.libraries.each {lib ->
|
||||
def artifacts = [lib.downloads.artifact] + lib.downloads.get('classifiers', [:]).values()
|
||||
artifacts.each{ art ->
|
||||
def target = file('build/libraries/' + art.path)
|
||||
if (!target.exists()) {
|
||||
download {
|
||||
src art.url
|
||||
dest target
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task extractInheritance(type: ExtractInheritance, dependsOn: [genJoinedBinPatches, downloadLibraries]) {
|
||||
input { genJoinedBinPatches.cleanJar }
|
||||
doFirst {
|
||||
def json = new JsonSlurper().parseText(VERSION_JSON.text)
|
||||
json.libraries.each {lib ->
|
||||
def artifacts = [lib.downloads.artifact] + lib.downloads.get('classifiers', [:]).values()
|
||||
artifacts.each{ art ->
|
||||
def target = file('build/libraries/' + art.path)
|
||||
if (target.exists())
|
||||
addLibrary(target)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
task checkATs(dependsOn: genJoinedBinPatches) {
|
||||
inputs.file { genJoinedBinPatches.cleanJar }
|
||||
inputs.files patcher.accessTransformers
|
||||
@@ -566,7 +649,44 @@ project(':forge') {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task checkSAS(dependsOn: extractInheritance) {
|
||||
inputs.file { extractInheritance.output }
|
||||
inputs.files patcher.sideAnnotationStrippers
|
||||
doLast {
|
||||
def json = new JsonSlurper().parseText(extractInheritance.output.text)
|
||||
|
||||
patcher.sideAnnotationStrippers.each { f ->
|
||||
def lines = []
|
||||
f.eachLine { line ->
|
||||
if (line[0] == '\t') return //Skip any tabed lines, those are ones we add
|
||||
def idx = line.indexOf('#')
|
||||
if (idx == 0 || line.isEmpty()) {
|
||||
lines.add(line)
|
||||
return
|
||||
}
|
||||
|
||||
def comment = idx == -1 ? null : line.substring(idx)
|
||||
if (idx != -1) line = line.substring(0, idx - 1)
|
||||
|
||||
def (cls, desc) = (line.trim() + ' ').split(' ', -1)
|
||||
cls = cls.replaceAll('\\.', '/')
|
||||
desc = desc.replace('(', ' (')
|
||||
if (desc.isEmpty() || json[cls] == null || json[cls]['methods'] == null || json[cls]['methods'][desc] == null) {
|
||||
println('Invalid: ' + line)
|
||||
return
|
||||
}
|
||||
|
||||
def mtd = json[cls]['methods'][desc]
|
||||
lines.add(cls + ' ' + desc.replace(' ', '') + (comment == null ? '' : ' ' + comment))
|
||||
def children = json.values().findAll{ it.methods != null && it.methods[desc] != null && it.methods[desc].override == cls}
|
||||
.collect { it.name + ' ' + desc.replace(' ', '') } as TreeSet
|
||||
children.each { lines.add('\t' + it) }
|
||||
}
|
||||
f.text = lines.join('\n')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
task launcherJson(dependsOn: ['signUniversalJar', 'signLauncherJar']) {
|
||||
inputs.file universalJar.archivePath
|
||||
inputs.file { launcherJar.archivePath }
|
||||
@@ -622,15 +742,15 @@ project(':forge') {
|
||||
output.text = new JsonBuilder(json).toPrettyString()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
task installerJson(dependsOn: [launcherJson, genClientBinPatches, applyClientBinPatches, applyServerBinPatches/*, createClientSRG, createServerSRG*/]) {
|
||||
ext {
|
||||
output = file('build/install_profile.json')
|
||||
INSTALLER_TOOLS = 'net.minecraftforge:installertools:1.1.4'
|
||||
JAR_SPLITTER = 'net.minecraftforge:jarsplitter:1.1.0'
|
||||
JAR_SPLITTER = 'net.minecraftforge:jarsplitter:1.1.2'
|
||||
}
|
||||
doFirst {
|
||||
ext.BIN_PATCHER = 'net.minecraftforge:binarypatcher:' + genClientBinPatches.resolvedVersion
|
||||
ext.BIN_PATCHER = BINPATCH_TOOL.substring(0, BINPATCH_TOOL.length() - 1 - BINPATCH_TOOL.split(':')[3].length())
|
||||
}
|
||||
inputs.file applyClientBinPatches.output
|
||||
inputs.file applyServerBinPatches.output
|
||||
@@ -660,6 +780,7 @@ project(':forge') {
|
||||
spec: 0,
|
||||
profile: project.name,
|
||||
version: launcherJson.id,
|
||||
icon: "data:image/png;base64," + new String(Base64.getEncoder().encode(Files.readAllBytes(rootProject.file("icon.ico").toPath()))),
|
||||
json: '/version.json',
|
||||
path: "${project.group}:${project.name}:${project.version}",
|
||||
logo: '/big_logo.png',
|
||||
@@ -675,16 +796,16 @@ project(':forge') {
|
||||
server: '/data/server.lzma'
|
||||
],
|
||||
MC_SLIM: [
|
||||
client: "[net.minecraft:client:${MC_VERSION}:slim]",
|
||||
server: "[net.minecraft:server:${MC_VERSION}:slim]"
|
||||
client: "[net.minecraft:client:${MC_VERSION}:slim${MC_VERSION == '1.14.4' ? '-stable' : ''}]",
|
||||
server: "[net.minecraft:server:${MC_VERSION}:slim${MC_VERSION == '1.14.4' ? '-stable' : ''}]"
|
||||
],
|
||||
MC_SLIM_SHA: [
|
||||
client: "'${sha1(tasks.getByName('downloadClientSlim').output)}'",
|
||||
server: "'${sha1(tasks.getByName('downloadServerSlim').output)}'"
|
||||
],
|
||||
MC_EXTRA: [
|
||||
client: "[net.minecraft:client:${MC_VERSION}:extra]",
|
||||
server: "[net.minecraft:server:${MC_VERSION}:extra]"
|
||||
client: "[net.minecraft:client:${MC_VERSION}:extra${MC_VERSION == '1.14.4' ? '-stable' : ''}]",
|
||||
server: "[net.minecraft:server:${MC_VERSION}:extra${MC_VERSION == '1.14.4' ? '-stable' : ''}]"
|
||||
],
|
||||
MC_EXTRA_SHA: [
|
||||
client: "'${sha1(tasks.getByName('downloadClientExtra').output)}'",
|
||||
@@ -772,7 +893,7 @@ project(':forge') {
|
||||
['slim', 'extra'].each { type ->
|
||||
def name = "download${side.capitalize()}${type.capitalize()}"
|
||||
task "${name}"(type: DownloadMavenArtifact) {
|
||||
artifact = "net.minecraft:${side}:${MC_VERSION}:${type}"
|
||||
artifact = "net.minecraft:${side}:${MC_VERSION}${MC_VERSION == '1.14.4' ? '-stable' : ''}:${type}"
|
||||
}
|
||||
installerJson.dependsOn(name)
|
||||
installerJson.inputs.file(tasks.getByName(name).output)
|
||||
@@ -825,7 +946,7 @@ project(':forge') {
|
||||
artifacts.each { key, lib ->
|
||||
classpath += "libraries/${lib.downloads.artifact.path} "
|
||||
}
|
||||
classpath += "libraries/net/minecraft/server/${MC_VERSION}/server-${MC_VERSION}-extra.jar"
|
||||
classpath += "libraries/net/minecraft/server/${MC_VERSION}/server-${MC_VERSION}-extra${MC_VERSION == '1.14.4' ? '-stable' : ''}.jar"
|
||||
|
||||
MANIFESTS.each{ pkg, values ->
|
||||
if (pkg == '/') {
|
||||
@@ -1035,6 +1156,16 @@ project(':forge') {
|
||||
|
||||
tasks.eclipse.dependsOn('genEclipseRuns')
|
||||
|
||||
if (project.hasProperty('UPDATE_MAPPINGS')) {
|
||||
extractRangeMap {
|
||||
sources sourceSets.test.java.srcDirs
|
||||
}
|
||||
applyRangeMap {
|
||||
sources sourceSets.test.java.srcDirs
|
||||
}
|
||||
sourceSets.test.java.srcDirs.each { extractMappedNew.addTarget it }
|
||||
}
|
||||
|
||||
publishing {
|
||||
publications {
|
||||
mavenJava(MavenPublication) {
|
||||
|
||||
+6
-3
@@ -1,14 +1,17 @@
|
||||
<img src="assets/Forge_logo.svg">
|
||||
|
||||
MinecraftForge [](https://files.minecraftforge.net) [](https://discord.gg/UvedJ9m) [](https://www.patreon.com/LexManos) [](https://forgedev.flocker.tv/)
|
||||
MinecraftForge
|
||||
=============
|
||||
[](https://files.minecraftforge.net)
|
||||
[](https://files.minecraftforge.net) [](https://discord.gg/UvedJ9m) [](https://www.patreon.com/LexManos) [](https://forgedev.flocker.tv/)
|
||||
|
||||
Forge is a free, open-source modding API all of your favourite mods use!
|
||||
|
||||
| Version | Support |
|
||||
| ------------- | ------------- |
|
||||
| 1.14.x | Active (latest) |
|
||||
| 1.12.x | Active (stable) |
|
||||
| 1.14.x | Active |
|
||||
| 1.12.x | Legacy |
|
||||
|
||||
* [Download]
|
||||
* [Forum]
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
# The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
|
||||
modLoader="javafml" #mandatory
|
||||
# A version range to match for said mod loader - for regular FML @Mod it will be the forge version
|
||||
loaderVersion="[26,)" #mandatory (26 is current forge version)
|
||||
loaderVersion="[28,)" #mandatory (28 is current forge version)
|
||||
# A URL to refer people to when problems occur with this mod
|
||||
issueTrackerURL="http://my.issue.tracker/" #optional
|
||||
# A list of mods - how many allowed here is determined by the individual mod loader
|
||||
@@ -42,7 +42,7 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis lacinia magn
|
||||
# Does this dependency have to exist - if not, ordering below must be specified
|
||||
mandatory=true #mandatory
|
||||
# The version range of the dependency
|
||||
versionRange="[27,)" #mandatory
|
||||
versionRange="[28,)" #mandatory
|
||||
# An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
|
||||
ordering="NONE"
|
||||
# Side this dependency is applied on - BOTH, CLIENT or SERVER
|
||||
@@ -51,6 +51,6 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed mollis lacinia magn
|
||||
[[dependencies.examplemod]]
|
||||
modId="minecraft"
|
||||
mandatory=true
|
||||
versionRange="[1.14.3]"
|
||||
versionRange="[1.14.4]"
|
||||
ordering="NONE"
|
||||
side="BOTH"
|
||||
side="BOTH"
|
||||
@@ -0,0 +1,15 @@
|
||||
--- a/net/minecraft/advancements/AdvancementManager.java
|
||||
+++ b/net/minecraft/advancements/AdvancementManager.java
|
||||
@@ -36,7 +36,11 @@
|
||||
Map<ResourceLocation, Advancement.Builder> map = Maps.newHashMap();
|
||||
p_212853_1_.forEach((p_223387_1_, p_223387_2_) -> {
|
||||
try {
|
||||
- Advancement.Builder advancement$builder = field_192783_b.fromJson(p_223387_2_, Advancement.Builder.class);
|
||||
+ Advancement.Builder advancement$builder = net.minecraftforge.common.crafting.ConditionalAdvancement.read(field_192783_b, p_223387_1_, p_223387_2_);
|
||||
+ if (advancement$builder == null) {
|
||||
+ field_192782_a.info("Skipping loading advancement {} as it's conditions were not met", p_223387_1_);
|
||||
+ return;
|
||||
+ }
|
||||
map.put(p_223387_1_, advancement$builder);
|
||||
} catch (IllegalArgumentException | JsonParseException jsonparseexception) {
|
||||
field_192782_a.error("Parsing error loading custom advancement {}: {}", p_223387_1_, jsonparseexception.getMessage());
|
||||
@@ -13,16 +13,18 @@
|
||||
private static final Direction[] field_212556_a = new Direction[]{Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP};
|
||||
private static final LoadingCache<VoxelShape, Boolean> field_223006_b = CacheBuilder.newBuilder().maximumSize(512L).weakKeys().build(new CacheLoader<VoxelShape, Boolean>() {
|
||||
public Boolean load(VoxelShape p_load_1_) {
|
||||
@@ -246,6 +247,8 @@
|
||||
@@ -246,6 +247,10 @@
|
||||
this.field_149765_K = p_i48440_1_.field_200961_i;
|
||||
this.field_208621_p = p_i48440_1_.field_208772_j;
|
||||
this.field_220085_g = p_i48440_1_.field_222381_j;
|
||||
+ this.harvestLevel = p_i48440_1_.harvestLevel;
|
||||
+ this.harvestTool = p_i48440_1_.harvestTool;
|
||||
+ final ResourceLocation lootTableCache = p_i48440_1_.field_222381_j;
|
||||
+ this.lootTableSupplier = lootTableCache != null ? () -> lootTableCache : p_i48440_1_.lootTableSupplier != null ? p_i48440_1_.lootTableSupplier : () -> new ResourceLocation(this.getRegistryName().func_110624_b(), "blocks/" + this.getRegistryName().func_110623_a());
|
||||
this.field_176227_L = builder.func_206893_a(BlockState::new);
|
||||
this.func_180632_j(this.field_176227_L.func_177621_b());
|
||||
}
|
||||
@@ -291,7 +294,7 @@
|
||||
@@ -291,7 +296,7 @@
|
||||
|
||||
@Deprecated
|
||||
public boolean func_196253_a(BlockState p_196253_1_, BlockItemUseContext p_196253_2_) {
|
||||
@@ -31,7 +33,7 @@
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@@ -303,8 +306,9 @@
|
||||
@@ -303,8 +308,9 @@
|
||||
return this.field_149789_z;
|
||||
}
|
||||
|
||||
@@ -42,7 +44,7 @@
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@@ -315,7 +319,7 @@
|
||||
@@ -315,7 +321,7 @@
|
||||
@Deprecated
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public int func_220058_a(BlockState p_220058_1_, IEnviromentBlockReader p_220058_2_, BlockPos p_220058_3_) {
|
||||
@@ -51,7 +53,7 @@
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@@ -460,10 +464,9 @@
|
||||
@@ -460,10 +466,9 @@
|
||||
|
||||
@Deprecated
|
||||
public void func_196243_a(BlockState p_196243_1_, World p_196243_2_, BlockPos p_196243_3_, BlockState p_196243_4_, boolean p_196243_5_) {
|
||||
@@ -63,7 +65,7 @@
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
@@ -472,8 +475,8 @@
|
||||
@@ -472,8 +477,8 @@
|
||||
if (f == -1.0F) {
|
||||
return 0.0F;
|
||||
} else {
|
||||
@@ -74,7 +76,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -553,7 +556,7 @@
|
||||
@@ -483,8 +488,7 @@
|
||||
|
||||
public ResourceLocation func_220068_i() {
|
||||
if (this.field_220085_g == null) {
|
||||
- ResourceLocation resourcelocation = Registry.field_212618_g.func_177774_c(this);
|
||||
- this.field_220085_g = new ResourceLocation(resourcelocation.func_110624_b(), "blocks/" + resourcelocation.func_110623_a());
|
||||
+ this.field_220085_g = this.lootTableSupplier.get();
|
||||
}
|
||||
|
||||
return this.field_220085_g;
|
||||
@@ -553,7 +557,7 @@
|
||||
}
|
||||
|
||||
public static void func_180635_a(World p_180635_0_, BlockPos p_180635_1_, ItemStack p_180635_2_) {
|
||||
@@ -83,7 +95,7 @@
|
||||
float f = 0.5F;
|
||||
double d0 = (double)(p_180635_0_.field_73012_v.nextFloat() * 0.5F) + 0.25D;
|
||||
double d1 = (double)(p_180635_0_.field_73012_v.nextFloat() * 0.5F) + 0.25D;
|
||||
@@ -565,7 +568,7 @@
|
||||
@@ -565,7 +569,7 @@
|
||||
}
|
||||
|
||||
public void func_180637_b(World p_180637_1_, BlockPos p_180637_2_, int p_180637_3_) {
|
||||
@@ -92,7 +104,7 @@
|
||||
while(p_180637_3_ > 0) {
|
||||
int i = ExperienceOrbEntity.func_70527_a(p_180637_3_);
|
||||
p_180637_3_ -= i;
|
||||
@@ -575,6 +578,7 @@
|
||||
@@ -575,6 +579,7 @@
|
||||
|
||||
}
|
||||
|
||||
@@ -100,15 +112,15 @@
|
||||
public float func_149638_a() {
|
||||
return this.field_149781_w;
|
||||
}
|
||||
@@ -677,6 +681,7 @@
|
||||
@@ -677,6 +682,7 @@
|
||||
p_176216_2_.func_213317_d(p_176216_2_.func_213322_ci().func_216372_d(1.0D, 0.0D, 1.0D));
|
||||
}
|
||||
|
||||
+ @Deprecated // Forge: Use more sensitive version below: getPickBlock
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public ItemStack func_185473_a(IBlockReader p_185473_1_, BlockPos p_185473_2_, BlockState p_185473_3_) {
|
||||
return new ItemStack(this);
|
||||
@@ -691,6 +696,7 @@
|
||||
}
|
||||
@@ -690,6 +696,7 @@
|
||||
return Fluids.field_204541_a.func_207188_f();
|
||||
}
|
||||
|
||||
@@ -116,7 +128,7 @@
|
||||
public float func_208618_m() {
|
||||
return this.field_149765_K;
|
||||
}
|
||||
@@ -711,6 +717,7 @@
|
||||
@@ -710,6 +717,7 @@
|
||||
public void func_176224_k(World p_176224_1_, BlockPos p_176224_2_) {
|
||||
}
|
||||
|
||||
@@ -124,7 +136,7 @@
|
||||
public boolean func_149659_a(Explosion p_149659_1_) {
|
||||
return true;
|
||||
}
|
||||
@@ -755,6 +762,7 @@
|
||||
@@ -754,6 +762,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +144,25 @@
|
||||
public SoundType func_220072_p(BlockState p_220072_1_) {
|
||||
return this.field_149762_H;
|
||||
}
|
||||
@@ -780,13 +788,80 @@
|
||||
@@ -763,7 +772,7 @@
|
||||
this.field_220086_i = Item.func_150898_a(this);
|
||||
}
|
||||
|
||||
- return this.field_220086_i;
|
||||
+ return this.field_220086_i.delegate.get(); //Forge: Vanilla caches the items, update with registry replacements.
|
||||
}
|
||||
|
||||
public boolean func_208619_r() {
|
||||
@@ -771,7 +780,7 @@
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
- return "Block{" + Registry.field_212618_g.func_177774_c(this) + "}";
|
||||
+ return "Block{" + getRegistryName() + "}";
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
@@ -779,13 +788,81 @@
|
||||
}
|
||||
|
||||
public static boolean func_196252_e(Block p_196252_0_) {
|
||||
@@ -150,6 +180,7 @@
|
||||
+ private net.minecraftforge.common.ToolType harvestTool;
|
||||
+ private int harvestLevel;
|
||||
+ private final net.minecraftforge.common.util.ReverseTagWrapper<Block> reverseTags = new net.minecraftforge.common.util.ReverseTagWrapper<>(this, BlockTags::getGeneration, BlockTags::func_199896_a);
|
||||
+ private final java.util.function.Supplier<ResourceLocation> lootTableSupplier;
|
||||
+
|
||||
+ @Override
|
||||
+ public float getSlipperiness(BlockState state, IWorldReader world, BlockPos pos, @Nullable Entity entity) {
|
||||
@@ -215,16 +246,17 @@
|
||||
public static enum OffsetType {
|
||||
NONE,
|
||||
XZ,
|
||||
@@ -805,6 +880,8 @@
|
||||
@@ -804,6 +881,9 @@
|
||||
private float field_200961_i = 0.6F;
|
||||
private ResourceLocation field_222381_j;
|
||||
private boolean field_208772_j;
|
||||
+ private int harvestLevel = -1;
|
||||
+ private net.minecraftforge.common.ToolType harvestTool;
|
||||
+ private java.util.function.Supplier<ResourceLocation> lootTableSupplier;
|
||||
|
||||
private Properties(Material p_i48616_1_, MaterialColor p_i48616_2_) {
|
||||
this.field_200953_a = p_i48616_1_;
|
||||
@@ -835,6 +912,8 @@
|
||||
@@ -834,6 +914,8 @@
|
||||
block$properties.field_200956_d = p_200950_0_.field_149762_H;
|
||||
block$properties.field_200961_i = p_200950_0_.func_208618_m();
|
||||
block$properties.field_208772_j = p_200950_0_.field_208621_p;
|
||||
@@ -233,7 +265,7 @@
|
||||
return block$properties;
|
||||
}
|
||||
|
||||
@@ -883,6 +962,16 @@
|
||||
@@ -882,13 +964,23 @@
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -250,3 +282,11 @@
|
||||
public Block.Properties func_222380_e() {
|
||||
this.field_222381_j = LootTables.field_186419_a;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Block.Properties func_222379_b(Block p_222379_1_) {
|
||||
- this.field_222381_j = p_222379_1_.func_220068_i();
|
||||
+ this.lootTableSupplier = () -> p_222379_1_.delegate.get().func_220068_i();
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/block/CropsBlock.java
|
||||
+++ b/net/minecraft/block/CropsBlock.java
|
||||
@@ -59,12 +59,14 @@
|
||||
@@ -57,12 +57,14 @@
|
||||
|
||||
public void func_196267_b(BlockState p_196267_1_, World p_196267_2_, BlockPos p_196267_3_, Random p_196267_4_) {
|
||||
super.func_196267_b(p_196267_1_, p_196267_2_, p_196267_3_, p_196267_4_);
|
||||
@@ -16,7 +16,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -93,9 +95,9 @@
|
||||
@@ -91,9 +93,9 @@
|
||||
for(int j = -1; j <= 1; ++j) {
|
||||
float f1 = 0.0F;
|
||||
BlockState blockstate = p_180672_1_.func_180495_p(blockpos.func_177982_a(i, 0, j));
|
||||
@@ -28,7 +28,7 @@
|
||||
f1 = 3.0F;
|
||||
}
|
||||
}
|
||||
@@ -131,7 +133,7 @@
|
||||
@@ -129,7 +131,7 @@
|
||||
}
|
||||
|
||||
public void func_196262_a(BlockState p_196262_1_, World p_196262_2_, BlockPos p_196262_3_, Entity p_196262_4_) {
|
||||
|
||||
@@ -83,7 +83,19 @@
|
||||
if (p_176536_4_.nextInt(p_176536_3_) < i) {
|
||||
BlockState blockstate = p_176536_1_.func_180495_p(p_176536_2_);
|
||||
if (p_176536_4_.nextInt(p_176536_5_ + 10) < 5 && !p_176536_1_.func_175727_C(p_176536_2_)) {
|
||||
@@ -199,7 +203,7 @@
|
||||
@@ -188,18 +192,14 @@
|
||||
p_176536_1_.func_217377_a(p_176536_2_, false);
|
||||
}
|
||||
|
||||
- Block block = blockstate.func_177230_c();
|
||||
- if (block instanceof TNTBlock) {
|
||||
- TNTBlock tntblock = (TNTBlock)block;
|
||||
- TNTBlock.func_196534_a(p_176536_1_, p_176536_2_);
|
||||
- }
|
||||
+ blockstate.catchFire(p_176536_1_, p_176536_2_, face, null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean func_196447_a(IBlockReader p_196447_1_, BlockPos p_196447_2_) {
|
||||
for(Direction direction : Direction.values()) {
|
||||
@@ -92,7 +104,7 @@
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -215,13 +219,14 @@
|
||||
@@ -215,13 +215,14 @@
|
||||
|
||||
for(Direction direction : Direction.values()) {
|
||||
BlockState blockstate = p_176538_1_.func_180495_p(p_176538_2_.func_177972_a(direction));
|
||||
@@ -108,7 +120,7 @@
|
||||
public boolean func_196446_i(BlockState p_196446_1_) {
|
||||
return this.func_220275_r(p_196446_1_) > 0;
|
||||
}
|
||||
@@ -246,8 +251,8 @@
|
||||
@@ -246,8 +247,8 @@
|
||||
|
||||
BlockPos blockpos = p_180655_3_.func_177977_b();
|
||||
BlockState blockstate = p_180655_2_.func_180495_p(blockpos);
|
||||
@@ -119,7 +131,7 @@
|
||||
for(int j = 0; j < 2; ++j) {
|
||||
double d3 = (double)p_180655_3_.func_177958_n() + p_180655_4_.nextDouble() * (double)0.1F;
|
||||
double d8 = (double)p_180655_3_.func_177956_o() + p_180655_4_.nextDouble();
|
||||
@@ -256,7 +261,7 @@
|
||||
@@ -256,7 +257,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,7 +140,7 @@
|
||||
for(int k = 0; k < 2; ++k) {
|
||||
double d4 = (double)(p_180655_3_.func_177958_n() + 1) - p_180655_4_.nextDouble() * (double)0.1F;
|
||||
double d9 = (double)p_180655_3_.func_177956_o() + p_180655_4_.nextDouble();
|
||||
@@ -265,7 +270,7 @@
|
||||
@@ -265,7 +266,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,7 +149,7 @@
|
||||
for(int l = 0; l < 2; ++l) {
|
||||
double d5 = (double)p_180655_3_.func_177958_n() + p_180655_4_.nextDouble();
|
||||
double d10 = (double)p_180655_3_.func_177956_o() + p_180655_4_.nextDouble();
|
||||
@@ -274,7 +279,7 @@
|
||||
@@ -274,7 +275,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,7 +158,7 @@
|
||||
for(int i1 = 0; i1 < 2; ++i1) {
|
||||
double d6 = (double)p_180655_3_.func_177958_n() + p_180655_4_.nextDouble();
|
||||
double d11 = (double)p_180655_3_.func_177956_o() + p_180655_4_.nextDouble();
|
||||
@@ -283,7 +288,7 @@
|
||||
@@ -283,7 +284,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,7 +167,7 @@
|
||||
for(int j1 = 0; j1 < 2; ++j1) {
|
||||
double d7 = (double)p_180655_3_.func_177958_n() + p_180655_4_.nextDouble();
|
||||
double d12 = (double)(p_180655_3_.func_177956_o() + 1) - p_180655_4_.nextDouble() * (double)0.1F;
|
||||
@@ -311,10 +316,23 @@
|
||||
@@ -311,10 +312,23 @@
|
||||
}
|
||||
|
||||
public void func_180686_a(Block p_180686_1_, int p_180686_2_, int p_180686_3_) {
|
||||
|
||||
@@ -1,11 +1,79 @@
|
||||
--- a/net/minecraft/block/FlowerPotBlock.java
|
||||
+++ b/net/minecraft/block/FlowerPotBlock.java
|
||||
@@ -21,7 +21,7 @@
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
public class FlowerPotBlock extends Block {
|
||||
- private static final Map<Block, Block> field_196451_b = Maps.newHashMap();
|
||||
+ private static final Map<Block, Block> field_196451_b = Maps.newHashMap(); //TODO: Delegates
|
||||
@@ -23,10 +23,37 @@
|
||||
protected static final VoxelShape field_196450_a = Block.func_208617_a(5.0D, 0.0D, 5.0D, 11.0D, 6.0D, 11.0D);
|
||||
private final Block field_196452_c;
|
||||
|
||||
+ private final Map<net.minecraft.util.ResourceLocation, java.util.function.Supplier<? extends Block>> fullPots;
|
||||
+ private final java.util.function.Supplier<FlowerPotBlock> emptyPot;
|
||||
+ private final java.util.function.Supplier<? extends Block> flowerDelegate;
|
||||
+
|
||||
+ @Deprecated // Mods should use the constructor below
|
||||
public FlowerPotBlock(Block p_i48395_1_, Block.Properties p_i48395_2_) {
|
||||
+ this(Blocks.field_150457_bL == null ? null : () -> (FlowerPotBlock) Blocks.field_150457_bL.delegate.get(), () -> p_i48395_1_.delegate.get(), p_i48395_2_);
|
||||
+ if (Blocks.field_150457_bL != null) {
|
||||
+ ((FlowerPotBlock)Blocks.field_150457_bL).addPlant(p_i48395_1_.getRegistryName(), () -> this);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * For mod use, eliminates the need to extend this class, and prevents modded
|
||||
+ * flower pots from altering vanilla behavior.
|
||||
+ *
|
||||
+ * @param emptyPot The empty pot for this pot, or null for self.
|
||||
+ * @param p_i48395_1_ The flower block.
|
||||
+ * @param p_i48395_2_
|
||||
+ */
|
||||
+ public FlowerPotBlock(@javax.annotation.Nullable java.util.function.Supplier<FlowerPotBlock> emptyPot, java.util.function.Supplier<? extends Block> p_i48395_1_, Block.Properties p_i48395_2_) {
|
||||
super(p_i48395_2_);
|
||||
- this.field_196452_c = p_i48395_1_;
|
||||
- field_196451_b.put(p_i48395_1_, this);
|
||||
+ this.field_196452_c = null; // Unused, redirected by coremod
|
||||
+ this.flowerDelegate = p_i48395_1_;
|
||||
+ if (emptyPot == null) {
|
||||
+ this.fullPots = Maps.newHashMap();
|
||||
+ this.emptyPot = null;
|
||||
+ } else {
|
||||
+ this.fullPots = java.util.Collections.emptyMap();
|
||||
+ this.emptyPot = emptyPot;
|
||||
+ }
|
||||
}
|
||||
|
||||
public VoxelShape func_220053_a(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) {
|
||||
@@ -40,7 +67,7 @@
|
||||
public boolean func_220051_a(BlockState p_220051_1_, World p_220051_2_, BlockPos p_220051_3_, PlayerEntity p_220051_4_, Hand p_220051_5_, BlockRayTraceResult p_220051_6_) {
|
||||
ItemStack itemstack = p_220051_4_.func_184586_b(p_220051_5_);
|
||||
Item item = itemstack.func_77973_b();
|
||||
- Block block = item instanceof BlockItem ? field_196451_b.getOrDefault(((BlockItem)item).func_179223_d(), Blocks.field_150350_a) : Blocks.field_150350_a;
|
||||
+ Block block = item instanceof BlockItem ? getEmptyPot().fullPots.getOrDefault(((BlockItem)item).func_179223_d().getRegistryName(), Blocks.field_150350_a.delegate).get() : Blocks.field_150350_a;
|
||||
boolean flag = block == Blocks.field_150350_a;
|
||||
boolean flag1 = this.field_196452_c == Blocks.field_150350_a;
|
||||
if (flag != flag1) {
|
||||
@@ -58,7 +85,7 @@
|
||||
p_220051_4_.func_71019_a(itemstack1, false);
|
||||
}
|
||||
|
||||
- p_220051_2_.func_180501_a(p_220051_3_, Blocks.field_150457_bL.func_176223_P(), 3);
|
||||
+ p_220051_2_.func_180501_a(p_220051_3_, getEmptyPot().func_176223_P(), 3);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,6 +105,17 @@
|
||||
}
|
||||
|
||||
public Block func_220276_d() {
|
||||
- return this.field_196452_c;
|
||||
+ return flowerDelegate.get();
|
||||
}
|
||||
+
|
||||
+ public FlowerPotBlock getEmptyPot() {
|
||||
+ return emptyPot == null ? this : emptyPot.get();
|
||||
+ }
|
||||
+
|
||||
+ public void addPlant(net.minecraft.util.ResourceLocation flower, java.util.function.Supplier<? extends Block> fullPot) {
|
||||
+ if (getEmptyPot() != this) {
|
||||
+ throw new IllegalArgumentException("Cannot add plant to non-empty pot: " + this);
|
||||
+ }
|
||||
+ fullPots.put(flower, fullPot);
|
||||
+ }
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
--- a/net/minecraft/block/FlowingFluidBlock.java
|
||||
+++ b/net/minecraft/block/FlowingFluidBlock.java
|
||||
@@ -30,9 +30,11 @@
|
||||
|
||||
public class FlowingFluidBlock extends Block implements IBucketPickupHandler {
|
||||
public static final IntegerProperty field_176367_b = BlockStateProperties.field_208132_ag;
|
||||
- protected final FlowingFluid field_204517_c;
|
||||
+ private final FlowingFluid field_204517_c;
|
||||
private final List<IFluidState> field_212565_c;
|
||||
|
||||
+ // Forge: Use the constructor that takes a supplier
|
||||
+ @Deprecated
|
||||
protected FlowingFluidBlock(FlowingFluid p_i49014_1_, Block.Properties p_i49014_2_) {
|
||||
super(p_i49014_2_);
|
||||
this.field_204517_c = p_i49014_1_;
|
||||
@@ -45,8 +47,21 @@
|
||||
|
||||
this.field_212565_c.add(p_i49014_1_.func_207207_a(8, true));
|
||||
this.func_180632_j(this.field_176227_L.func_177621_b().func_206870_a(field_176367_b, Integer.valueOf(0)));
|
||||
+ fluidStateCacheInitialized = true;
|
||||
+ supplier = p_i49014_1_.delegate;
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * @param supplier A fluid supplier such as {@link net.minecraftforge.fml.RegistryObject<Fluid>}
|
||||
+ */
|
||||
+ public FlowingFluidBlock(java.util.function.Supplier<? extends FlowingFluid> supplier, Block.Properties p_i48368_1_) {
|
||||
+ super(p_i48368_1_);
|
||||
+ this.field_204517_c = null;
|
||||
+ this.field_212565_c = Lists.newArrayList();
|
||||
+ this.func_180632_j(this.field_176227_L.func_177621_b().func_206870_a(field_176367_b, Integer.valueOf(0)));
|
||||
+ this.supplier = supplier;
|
||||
+ }
|
||||
+
|
||||
public void func_196265_a(BlockState p_196265_1_, World p_196265_2_, BlockPos p_196265_3_, Random p_196265_4_) {
|
||||
p_196265_2_.func_204610_c(p_196265_3_).func_206891_b(p_196265_2_, p_196265_3_, p_196265_4_);
|
||||
}
|
||||
@@ -61,6 +76,7 @@
|
||||
|
||||
public IFluidState func_204507_t(BlockState p_204507_1_) {
|
||||
int i = p_204507_1_.func_177229_b(field_176367_b);
|
||||
+ if (!fluidStateCacheInitialized) initFluidStateCache();
|
||||
return this.field_212565_c.get(Math.min(i, 8));
|
||||
}
|
||||
|
||||
@@ -121,13 +137,13 @@
|
||||
if (flag) {
|
||||
IFluidState ifluidstate = p_204515_1_.func_204610_c(p_204515_2_);
|
||||
if (ifluidstate.func_206889_d()) {
|
||||
- p_204515_1_.func_175656_a(p_204515_2_, Blocks.field_150343_Z.func_176223_P());
|
||||
+ p_204515_1_.func_175656_a(p_204515_2_, net.minecraftforge.event.ForgeEventFactory.fireFluidPlaceBlockEvent(p_204515_1_, p_204515_2_, p_204515_2_, Blocks.field_150343_Z.func_176223_P()));
|
||||
this.func_180688_d(p_204515_1_, p_204515_2_);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (ifluidstate.func_215679_a(p_204515_1_, p_204515_2_) >= 0.44444445F) {
|
||||
- p_204515_1_.func_175656_a(p_204515_2_, Blocks.field_150347_e.func_176223_P());
|
||||
+ p_204515_1_.func_175656_a(p_204515_2_, net.minecraftforge.event.ForgeEventFactory.fireFluidPlaceBlockEvent(p_204515_1_, p_204515_2_, p_204515_2_, Blocks.field_150347_e.func_176223_P()));
|
||||
this.func_180688_d(p_204515_1_, p_204515_2_);
|
||||
return false;
|
||||
}
|
||||
@@ -160,4 +176,27 @@
|
||||
}
|
||||
|
||||
}
|
||||
+
|
||||
+ // Forge start
|
||||
+ private final java.util.function.Supplier<? extends Fluid> supplier;
|
||||
+ public FlowingFluid getFluid() {
|
||||
+ return (FlowingFluid)supplier.get();
|
||||
+ }
|
||||
+
|
||||
+ private boolean fluidStateCacheInitialized = false;
|
||||
+ protected synchronized void initFluidStateCache() {
|
||||
+ if (fluidStateCacheInitialized == false)
|
||||
+ {
|
||||
+ this.field_212565_c.add(getFluid().func_207204_a(false));
|
||||
+
|
||||
+ for (int i = 1; i < 8; ++i)
|
||||
+ {
|
||||
+ this.field_212565_c.add(getFluid().func_207207_a(8 - i, false));
|
||||
+ }
|
||||
+
|
||||
+ this.field_212565_c.add(getFluid().func_207207_a(8, true));
|
||||
+
|
||||
+ fluidStateCacheInitialized = true;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
--- a/net/minecraft/block/JigsawBlock.java
|
||||
+++ b/net/minecraft/block/JigsawBlock.java
|
||||
@@ -29,6 +29,13 @@
|
||||
return p_185499_1_.func_206870_a(field_176387_N, p_185499_2_.func_185831_a(p_185499_1_.func_177229_b(field_176387_N)));
|
||||
}
|
||||
|
||||
+ // FORGE: Fix jigsaw blocks not mirroring properly
|
||||
+ @Override
|
||||
+ @Deprecated
|
||||
+ public BlockState func_185471_a(BlockState state, net.minecraft.util.Mirror mirrorIn) {
|
||||
+ return state.func_206870_a(field_176387_N, mirrorIn.func_185803_b(state.func_177229_b(field_176387_N)));
|
||||
+ }
|
||||
+
|
||||
public BlockState func_196258_a(BlockItemUseContext p_196258_1_) {
|
||||
return this.func_176223_P().func_206870_a(field_176387_N, p_196258_1_.func_196000_l());
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
--- a/net/minecraft/block/KelpTopBlock.java
|
||||
+++ b/net/minecraft/block/KelpTopBlock.java
|
||||
@@ -57,8 +57,9 @@
|
||||
} else {
|
||||
BlockPos blockpos = p_196267_3_.func_177984_a();
|
||||
BlockState blockstate = p_196267_2_.func_180495_p(blockpos);
|
||||
- if (blockstate.func_177230_c() == Blocks.field_150355_j && p_196267_1_.func_177229_b(field_203163_a) < 25 && p_196267_4_.nextDouble() < 0.14D) {
|
||||
+ if (blockstate.func_177230_c() == Blocks.field_150355_j && p_196267_1_.func_177229_b(field_203163_a) < 25 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_196267_2_, blockpos, p_196267_1_, p_196267_4_.nextDouble() < 0.14D)) {
|
||||
p_196267_2_.func_175656_a(blockpos, p_196267_1_.func_177231_a(field_203163_a));
|
||||
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_196267_2_, p_196267_3_, p_196267_1_);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,3 +9,48 @@
|
||||
netherportalblock$size.func_150859_c();
|
||||
return true;
|
||||
} else {
|
||||
@@ -245,13 +245,13 @@
|
||||
int i;
|
||||
for(i = 0; i < 22; ++i) {
|
||||
BlockPos blockpos = p_180120_1_.func_177967_a(p_180120_2_, i);
|
||||
- if (!this.func_196900_a(this.field_150867_a.func_180495_p(blockpos)) || this.field_150867_a.func_180495_p(blockpos.func_177977_b()).func_177230_c() != Blocks.field_150343_Z) {
|
||||
+ if (!this.func_196900_a(this.field_150867_a.func_180495_p(blockpos)) || !this.field_150867_a.func_180495_p(blockpos.func_177977_b()).isPortalFrame(this.field_150867_a, blockpos.func_177977_b())) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
- Block block = this.field_150867_a.func_180495_p(p_180120_1_.func_177967_a(p_180120_2_, i)).func_177230_c();
|
||||
- return block == Blocks.field_150343_Z ? i : 0;
|
||||
+ BlockPos framePos = p_180120_1_.func_177967_a(p_180120_2_, i);
|
||||
+ return this.field_150867_a.func_180495_p(framePos).isPortalFrame(this.field_150867_a, framePos) ? i : 0;
|
||||
}
|
||||
|
||||
public int func_181100_a() {
|
||||
@@ -278,13 +278,13 @@
|
||||
}
|
||||
|
||||
if (i == 0) {
|
||||
- block = this.field_150867_a.func_180495_p(blockpos.func_177972_a(this.field_150863_d)).func_177230_c();
|
||||
- if (block != Blocks.field_150343_Z) {
|
||||
+ BlockPos framePos = blockpos.func_177972_a(this.field_150863_d);
|
||||
+ if (!this.field_150867_a.func_180495_p(framePos).isPortalFrame(this.field_150867_a, framePos)) {
|
||||
break label56;
|
||||
}
|
||||
} else if (i == this.field_150868_h - 1) {
|
||||
- block = this.field_150867_a.func_180495_p(blockpos.func_177972_a(this.field_150866_c)).func_177230_c();
|
||||
- if (block != Blocks.field_150343_Z) {
|
||||
+ BlockPos framePos = blockpos.func_177972_a(this.field_150866_c);
|
||||
+ if (!this.field_150867_a.func_180495_p(framePos).isPortalFrame(this.field_150867_a, framePos)) {
|
||||
break label56;
|
||||
}
|
||||
}
|
||||
@@ -292,7 +292,8 @@
|
||||
}
|
||||
|
||||
for(int j = 0; j < this.field_150868_h; ++j) {
|
||||
- if (this.field_150867_a.func_180495_p(this.field_150861_f.func_177967_a(this.field_150866_c, j).func_177981_b(this.field_150862_g)).func_177230_c() != Blocks.field_150343_Z) {
|
||||
+ BlockPos framePos = this.field_150861_f.func_177967_a(this.field_150866_c, j).func_177981_b(this.field_150862_g);
|
||||
+ if (!this.field_150867_a.func_180495_p(framePos).isPortalFrame(this.field_150867_a, framePos)) {
|
||||
this.field_150862_g = 0;
|
||||
break;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/block/NetherWartBlock.java
|
||||
+++ b/net/minecraft/block/NetherWartBlock.java
|
||||
@@ -33,9 +33,10 @@
|
||||
@@ -31,9 +31,10 @@
|
||||
|
||||
public void func_196267_b(BlockState p_196267_1_, World p_196267_2_, BlockPos p_196267_3_, Random p_196267_4_) {
|
||||
int i = p_196267_1_.func_177229_b(field_176486_a);
|
||||
|
||||
@@ -1,6 +1,22 @@
|
||||
--- a/net/minecraft/block/PistonBlock.java
|
||||
+++ b/net/minecraft/block/PistonBlock.java
|
||||
@@ -197,7 +197,7 @@
|
||||
@@ -166,6 +166,7 @@
|
||||
}
|
||||
|
||||
if (p_189539_4_ == 0) {
|
||||
+ if(net.minecraftforge.event.ForgeEventFactory.onPistonMovePre(p_189539_2_, p_189539_3_, direction, true)) return false;
|
||||
if (!this.func_176319_a(p_189539_2_, p_189539_3_, direction, true)) {
|
||||
return false;
|
||||
}
|
||||
@@ -173,6 +174,7 @@
|
||||
p_189539_2_.func_180501_a(p_189539_3_, p_189539_1_.func_206870_a(field_176320_b, Boolean.valueOf(true)), 67);
|
||||
p_189539_2_.func_184133_a((PlayerEntity)null, p_189539_3_, SoundEvents.field_187715_dR, SoundCategory.BLOCKS, 0.5F, p_189539_2_.field_73012_v.nextFloat() * 0.25F + 0.6F);
|
||||
} else if (p_189539_4_ == 1 || p_189539_4_ == 2) {
|
||||
+ if(net.minecraftforge.event.ForgeEventFactory.onPistonMovePre(p_189539_2_, p_189539_3_, direction, false)) return false;
|
||||
TileEntity tileentity1 = p_189539_2_.func_175625_s(p_189539_3_.func_177972_a(direction));
|
||||
if (tileentity1 instanceof PistonTileEntity) {
|
||||
((PistonTileEntity)tileentity1).func_145866_f();
|
||||
@@ -197,7 +199,7 @@
|
||||
}
|
||||
|
||||
if (!flag1) {
|
||||
@@ -9,7 +25,15 @@
|
||||
p_189539_2_.func_217377_a(p_189539_3_.func_177972_a(direction), false);
|
||||
} else {
|
||||
this.func_176319_a(p_189539_2_, p_189539_3_, direction, false);
|
||||
@@ -238,7 +238,7 @@
|
||||
@@ -210,6 +212,7 @@
|
||||
p_189539_2_.func_184133_a((PlayerEntity)null, p_189539_3_, SoundEvents.field_187712_dQ, SoundCategory.BLOCKS, 0.5F, p_189539_2_.field_73012_v.nextFloat() * 0.15F + 0.6F);
|
||||
}
|
||||
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPistonMovePost(p_189539_2_, p_189539_3_, direction, (p_189539_4_ == 0));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -238,7 +241,7 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -18,7 +42,7 @@
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@@ -274,7 +274,7 @@
|
||||
@@ -274,7 +277,7 @@
|
||||
for(int j = list2.size() - 1; j >= 0; --j) {
|
||||
BlockPos blockpos2 = list2.get(j);
|
||||
BlockState blockstate = p_176319_1_.func_180495_p(blockpos2);
|
||||
@@ -27,7 +51,7 @@
|
||||
func_220059_a(blockstate, p_176319_1_, blockpos2, tileentity);
|
||||
p_176319_1_.func_180501_a(blockpos2, Blocks.field_150350_a.func_176223_P(), 18);
|
||||
--k;
|
||||
@@ -328,6 +328,10 @@
|
||||
@@ -328,6 +331,10 @@
|
||||
return p_185499_1_.func_206870_a(field_176387_N, p_185499_2_.func_185831_a(p_185499_1_.func_177229_b(field_176387_N)));
|
||||
}
|
||||
|
||||
|
||||
@@ -4,17 +4,17 @@
|
||||
public class PoweredRailBlock extends AbstractRailBlock {
|
||||
public static final EnumProperty<RailShape> field_176568_b = BlockStateProperties.field_208166_S;
|
||||
public static final BooleanProperty field_176569_M = BlockStateProperties.field_208194_u;
|
||||
+ private final boolean isActivator;
|
||||
+ private final boolean isActivator; // TRUE for an Activator Rail, FALSE for Powered Rail
|
||||
|
||||
protected PoweredRailBlock(Block.Properties p_i48349_1_) {
|
||||
- super(true, p_i48349_1_);
|
||||
+ this(p_i48349_1_, false);
|
||||
+ }
|
||||
+
|
||||
+ protected PoweredRailBlock(Block.Properties builder, boolean isActivator) {
|
||||
+ protected PoweredRailBlock(Block.Properties builder, boolean isPoweredRail) {
|
||||
+ super(true, builder);
|
||||
this.func_180632_j(this.field_176227_L.func_177621_b().func_206870_a(field_176568_b, RailShape.NORTH_SOUTH).func_206870_a(field_176569_M, Boolean.valueOf(false)));
|
||||
+ this.isActivator = isActivator;
|
||||
+ this.isActivator = !isPoweredRail;
|
||||
}
|
||||
|
||||
protected boolean func_176566_a(World p_176566_1_, BlockPos p_176566_2_, BlockState p_176566_3_, boolean p_176566_4_, int p_176566_5_) {
|
||||
@@ -35,3 +35,12 @@
|
||||
return p_208071_1_.func_175640_z(p_208071_2_) ? true : this.func_176566_a(p_208071_1_, p_208071_2_, blockstate, p_208071_3_, p_208071_4_ + 1);
|
||||
} else {
|
||||
return false;
|
||||
@@ -255,4 +261,8 @@
|
||||
protected void func_206840_a(StateContainer.Builder<Block, BlockState> p_206840_1_) {
|
||||
p_206840_1_.func_206894_a(field_176568_b, field_176569_M);
|
||||
}
|
||||
+
|
||||
+ public boolean isActivatorRail() {
|
||||
+ return isActivator;
|
||||
+ }
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
--- a/net/minecraft/block/SoundType.java
|
||||
+++ b/net/minecraft/block/SoundType.java
|
||||
@@ -54,7 +54,6 @@
|
||||
return this.field_185861_n;
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public SoundEvent func_185845_c() {
|
||||
return this.field_185862_o;
|
||||
}
|
||||
@@ -67,7 +66,6 @@
|
||||
return this.field_185864_q;
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public SoundEvent func_185846_f() {
|
||||
return this.field_185865_r;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/block/SpawnerBlock.java
|
||||
+++ b/net/minecraft/block/SpawnerBlock.java
|
||||
@@ -21,10 +21,13 @@
|
||||
@@ -19,10 +19,13 @@
|
||||
|
||||
public void func_220062_a(BlockState p_220062_1_, World p_220062_2_, BlockPos p_220062_3_, ItemStack p_220062_4_) {
|
||||
super.func_220062_a(p_220062_1_, p_220062_2_, p_220062_3_, p_220062_4_);
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
--- a/net/minecraft/block/StairsBlock.java
|
||||
+++ b/net/minecraft/block/StairsBlock.java
|
||||
@@ -83,13 +83,24 @@
|
||||
return voxelshape;
|
||||
}
|
||||
|
||||
+ // Forge: Use the other constructor that takes a Supplier
|
||||
+ @Deprecated
|
||||
protected StairsBlock(BlockState p_i48321_1_, Block.Properties p_i48321_2_) {
|
||||
super(p_i48321_2_);
|
||||
this.func_180632_j(this.field_176227_L.func_177621_b().func_206870_a(field_176309_a, Direction.NORTH).func_206870_a(field_176308_b, Half.BOTTOM).func_206870_a(field_176310_M, StairsShape.STRAIGHT).func_206870_a(field_204513_t, Boolean.valueOf(false)));
|
||||
this.field_150149_b = p_i48321_1_.func_177230_c();
|
||||
this.field_150151_M = p_i48321_1_;
|
||||
+ this.stateSupplier = () -> p_i48321_1_;
|
||||
}
|
||||
|
||||
+ public StairsBlock(java.util.function.Supplier<BlockState> state, Block.Properties properties) {
|
||||
+ super(properties);
|
||||
+ this.func_180632_j(this.field_176227_L.func_177621_b().func_206870_a(field_176309_a, Direction.NORTH).func_206870_a(field_176308_b, Half.BOTTOM).func_206870_a(field_176310_M, StairsShape.STRAIGHT).func_206870_a(field_204513_t, Boolean.valueOf(false)));
|
||||
+ this.field_150149_b = Blocks.field_150350_a; // These are unused, fields are redirected
|
||||
+ this.field_150151_M = Blocks.field_150350_a.func_176223_P();
|
||||
+ this.stateSupplier = state;
|
||||
+ }
|
||||
+
|
||||
public boolean func_220074_n(BlockState p_220074_1_) {
|
||||
return true;
|
||||
}
|
||||
@@ -265,4 +276,12 @@
|
||||
public boolean func_196266_a(BlockState p_196266_1_, IBlockReader p_196266_2_, BlockPos p_196266_3_, PathType p_196266_4_) {
|
||||
return false;
|
||||
}
|
||||
+
|
||||
+ private final java.util.function.Supplier<BlockState> stateSupplier;
|
||||
+ private Block getModelBlock() {
|
||||
+ return getModelState().func_177230_c();
|
||||
+ }
|
||||
+ private BlockState getModelState() {
|
||||
+ return stateSupplier.get();
|
||||
+ }
|
||||
}
|
||||
@@ -30,3 +30,14 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -100,4 +102,10 @@
|
||||
public StemGrownBlock func_208486_d() {
|
||||
return this.field_149877_a;
|
||||
}
|
||||
+
|
||||
+ //FORGE START
|
||||
+ @Override
|
||||
+ public net.minecraftforge.common.PlantType getPlantType(IBlockReader world, BlockPos pos) {
|
||||
+ return net.minecraftforge.common.PlantType.Crop;
|
||||
+ }
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
--- a/net/minecraft/block/SweetBerryBushBlock.java
|
||||
+++ b/net/minecraft/block/SweetBerryBushBlock.java
|
||||
@@ -47,8 +47,9 @@
|
||||
public void func_196267_b(BlockState p_196267_1_, World p_196267_2_, BlockPos p_196267_3_, Random p_196267_4_) {
|
||||
super.func_196267_b(p_196267_1_, p_196267_2_, p_196267_3_, p_196267_4_);
|
||||
int i = p_196267_1_.func_177229_b(field_220125_a);
|
||||
- if (i < 3 && p_196267_4_.nextInt(5) == 0 && p_196267_2_.func_201669_a(p_196267_3_.func_177984_a(), 0) >= 9) {
|
||||
+ if (i < 3 && p_196267_2_.func_201669_a(p_196267_3_.func_177984_a(), 0) >= 9 && net.minecraftforge.common.ForgeHooks.onCropsGrowPre(p_196267_2_, p_196267_3_, p_196267_1_, p_196267_4_.nextInt(5) == 0)) {
|
||||
p_196267_2_.func_180501_a(p_196267_3_, p_196267_1_.func_206870_a(field_220125_a, Integer.valueOf(i + 1)), 2);
|
||||
+ net.minecraftforge.common.ForgeHooks.onCropsGrowPost(p_196267_2_, p_196267_3_, p_196267_1_);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
--- a/net/minecraft/block/TNTBlock.java
|
||||
+++ b/net/minecraft/block/TNTBlock.java
|
||||
@@ -28,10 +28,14 @@
|
||||
this.func_180632_j(this.func_176223_P().func_206870_a(field_212569_a, Boolean.valueOf(false)));
|
||||
}
|
||||
|
||||
+ public void catchFire(BlockState state, World world, BlockPos pos, @Nullable net.minecraft.util.Direction face, @Nullable LivingEntity igniter) {
|
||||
+ func_196535_a(world, pos, igniter);
|
||||
+ }
|
||||
+
|
||||
public void func_220082_b(BlockState p_220082_1_, World p_220082_2_, BlockPos p_220082_3_, BlockState p_220082_4_, boolean p_220082_5_) {
|
||||
if (p_220082_4_.func_177230_c() != p_220082_1_.func_177230_c()) {
|
||||
if (p_220082_2_.func_175640_z(p_220082_3_)) {
|
||||
- func_196534_a(p_220082_2_, p_220082_3_);
|
||||
+ catchFire(p_220082_1_, p_220082_2_, p_220082_3_, null, null);
|
||||
p_220082_2_.func_217377_a(p_220082_3_, false);
|
||||
}
|
||||
|
||||
@@ -40,7 +44,7 @@
|
||||
|
||||
public void func_220069_a(BlockState p_220069_1_, World p_220069_2_, BlockPos p_220069_3_, Block p_220069_4_, BlockPos p_220069_5_, boolean p_220069_6_) {
|
||||
if (p_220069_2_.func_175640_z(p_220069_3_)) {
|
||||
- func_196534_a(p_220069_2_, p_220069_3_);
|
||||
+ catchFire(p_220069_1_, p_220069_2_, p_220069_3_, null, null);
|
||||
p_220069_2_.func_217377_a(p_220069_3_, false);
|
||||
}
|
||||
|
||||
@@ -48,7 +52,7 @@
|
||||
|
||||
public void func_176208_a(World p_176208_1_, BlockPos p_176208_2_, BlockState p_176208_3_, PlayerEntity p_176208_4_) {
|
||||
if (!p_176208_1_.func_201670_d() && !p_176208_4_.func_184812_l_() && p_176208_3_.func_177229_b(field_212569_a)) {
|
||||
- func_196534_a(p_176208_1_, p_176208_2_);
|
||||
+ catchFire(p_176208_3_, p_176208_1_, p_176208_2_, null, null);
|
||||
}
|
||||
|
||||
super.func_176208_a(p_176208_1_, p_176208_2_, p_176208_3_, p_176208_4_);
|
||||
@@ -62,10 +66,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ @Deprecated //Forge: Prefer using IForgeBlock#catchFire
|
||||
public static void func_196534_a(World p_196534_0_, BlockPos p_196534_1_) {
|
||||
func_196535_a(p_196534_0_, p_196534_1_, (LivingEntity)null);
|
||||
}
|
||||
|
||||
+ @Deprecated //Forge: Prefer using IForgeBlock#catchFire
|
||||
private static void func_196535_a(World p_196535_0_, BlockPos p_196535_1_, @Nullable LivingEntity p_196535_2_) {
|
||||
if (!p_196535_0_.field_72995_K) {
|
||||
TNTEntity tntentity = new TNTEntity(p_196535_0_, (double)((float)p_196535_1_.func_177958_n() + 0.5F), (double)p_196535_1_.func_177956_o(), (double)((float)p_196535_1_.func_177952_p() + 0.5F), p_196535_2_);
|
||||
@@ -80,7 +86,7 @@
|
||||
if (item != Items.field_151033_d && item != Items.field_151059_bz) {
|
||||
return super.func_220051_a(p_220051_1_, p_220051_2_, p_220051_3_, p_220051_4_, p_220051_5_, p_220051_6_);
|
||||
} else {
|
||||
- func_196535_a(p_220051_2_, p_220051_3_, p_220051_4_);
|
||||
+ catchFire(p_220051_1_, p_220051_2_, p_220051_3_, p_220051_6_.func_216354_b(), p_220051_4_);
|
||||
p_220051_2_.func_180501_a(p_220051_3_, Blocks.field_150350_a.func_176223_P(), 11);
|
||||
if (item == Items.field_151033_d) {
|
||||
itemstack.func_222118_a(1, p_220051_4_, (p_220287_1_) -> {
|
||||
@@ -100,7 +106,7 @@
|
||||
Entity entity = abstractarrowentity.func_212360_k();
|
||||
if (abstractarrowentity.func_70027_ad()) {
|
||||
BlockPos blockpos = p_220066_3_.func_216350_a();
|
||||
- func_196535_a(p_220066_1_, blockpos, entity instanceof LivingEntity ? (LivingEntity)entity : null);
|
||||
+ catchFire(p_220066_2_, p_220066_1_, blockpos, null, entity instanceof LivingEntity ? (LivingEntity)entity : null);
|
||||
p_220066_1_.func_217377_a(blockpos, false);
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,15 @@
|
||||
this.field_71459_aj = p_i45547_1_.field_178741_d.field_178756_a;
|
||||
this.field_147129_ai = func_147122_X();
|
||||
this.field_71437_Z = null;
|
||||
@@ -442,7 +442,6 @@
|
||||
@@ -423,6 +423,7 @@
|
||||
screensize = new ScreenSize(this.field_71474_y.field_92118_B, this.field_71474_y.field_92119_C, screensize.field_216496_c, screensize.field_216497_d, screensize.field_216498_e);
|
||||
}
|
||||
|
||||
+ net.minecraftforge.fml.loading.progress.EarlyProgressVisualization.INSTANCE.join();
|
||||
LongSupplier longsupplier = GLX.initGlfw();
|
||||
if (longsupplier != null) {
|
||||
Util.field_211180_a = longsupplier;
|
||||
@@ -442,7 +443,6 @@
|
||||
|
||||
this.field_195558_d.func_216526_a(this.field_71474_y.field_74350_i);
|
||||
this.field_71417_B = new MouseHelper(this);
|
||||
@@ -33,7 +41,7 @@
|
||||
this.field_195559_v = new KeyboardListener(this);
|
||||
this.field_195559_v.func_197968_a(this.field_195558_d.func_198092_i());
|
||||
GLX.init();
|
||||
@@ -451,6 +450,7 @@
|
||||
@@ -451,6 +451,7 @@
|
||||
this.field_147124_at.func_147604_a(0.0F, 0.0F, 0.0F, 0.0F);
|
||||
this.field_110451_am = new SimpleReloadableResourceManager(ResourcePackType.CLIENT_RESOURCES, this.field_152352_aC);
|
||||
this.field_71474_y.func_198017_a(this.field_110448_aq);
|
||||
@@ -41,7 +49,13 @@
|
||||
this.field_110448_aq.func_198983_a();
|
||||
List<IResourcePack> list = this.field_110448_aq.func_198980_d().stream().map(ResourcePackInfo::func_195796_e).collect(Collectors.toList());
|
||||
|
||||
@@ -521,7 +521,8 @@
|
||||
@@ -516,12 +517,14 @@
|
||||
this.field_110451_am.func_219534_a(this.field_193995_ae);
|
||||
GlStateManager.viewport(0, 0, this.field_195558_d.func_198109_k(), this.field_195558_d.func_198091_l());
|
||||
this.field_71452_i = new ParticleManager(this.field_71441_e, this.field_71446_o);
|
||||
+ net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.client.event.ParticleFactoryRegisterEvent());
|
||||
this.field_110451_am.func_219534_a(this.field_71452_i);
|
||||
this.field_213272_aL = new PaintingSpriteUploader(this.field_71446_o);
|
||||
this.field_110451_am.func_219534_a(this.field_213272_aL);
|
||||
this.field_213273_aM = new PotionSpriteUploader(this.field_71446_o);
|
||||
this.field_110451_am.func_219534_a(this.field_213273_aM);
|
||||
@@ -51,16 +65,34 @@
|
||||
this.field_184132_p = new DebugRenderer(this);
|
||||
GLX.setGlfwErrorCallback(this::func_195545_a);
|
||||
if (this.field_71474_y.field_74353_u && !this.field_195558_d.func_198113_j()) {
|
||||
@@ -543,7 +544,7 @@
|
||||
@@ -532,18 +535,20 @@
|
||||
this.field_195558_d.func_216523_b(this.field_71474_y.field_74352_v);
|
||||
this.field_195558_d.func_224798_d(this.field_71474_y.field_225307_E);
|
||||
this.field_195558_d.func_198112_b();
|
||||
- if (this.field_71475_ae != null) {
|
||||
- this.func_147108_a(new ConnectingScreen(new MainMenuScreen(), this, this.field_71475_ae, this.field_71477_af));
|
||||
- } else {
|
||||
- this.func_147108_a(new MainMenuScreen(true));
|
||||
- }
|
||||
|
||||
ResourceLoadProgressGui.func_212970_a(this);
|
||||
this.func_213268_a(new ResourceLoadProgressGui(this, this.field_110451_am.func_219535_a(Util.func_215072_e(), this, field_223714_G), () -> {
|
||||
if (SharedConstants.field_206244_b) {
|
||||
this.func_213256_aB();
|
||||
}
|
||||
-
|
||||
+ net.minecraftforge.fml.client.ClientModLoader.complete();
|
||||
+ if (net.minecraftforge.fml.client.ClientModLoader.completeModLoading()) return; // Do not overwrite the error sceen
|
||||
+ // FORGE: Move opening initial screen to after startup and events are enabled.
|
||||
+ // Also Fixes MC-145102
|
||||
+ if (this.field_71475_ae != null) {
|
||||
+ this.func_147108_a(new ConnectingScreen(new MainMenuScreen(), this, this.field_71475_ae, this.field_71477_af));
|
||||
+ } else {
|
||||
+ this.func_147108_a(new MainMenuScreen(true));
|
||||
+ }
|
||||
}, false));
|
||||
}
|
||||
|
||||
@@ -558,7 +559,7 @@
|
||||
@@ -558,7 +563,7 @@
|
||||
return Stream.of(Registry.field_212630_s.func_177774_c(p_213251_0_.func_77973_b()));
|
||||
});
|
||||
SearchTreeReloadable<ItemStack> searchtreereloadable = new SearchTreeReloadable<>((p_213235_0_) -> {
|
||||
@@ -69,7 +101,7 @@
|
||||
});
|
||||
NonNullList<ItemStack> nonnulllist = NonNullList.func_191196_a();
|
||||
|
||||
@@ -647,7 +648,7 @@
|
||||
@@ -647,7 +652,7 @@
|
||||
Bootstrap.func_179870_a(p_71377_1_.func_71502_e());
|
||||
if (p_71377_1_.func_71497_f() != null) {
|
||||
Bootstrap.func_179870_a("#@!@# Game crashed! Crash report saved to: #@!@# " + p_71377_1_.func_71497_f());
|
||||
@@ -78,7 +110,7 @@
|
||||
} else if (p_71377_1_.func_147149_a(file2)) {
|
||||
Bootstrap.func_179870_a("#@!@# Game crashed! Crash report saved to: #@!@# " + file2.getAbsolutePath());
|
||||
System.exit(-1);
|
||||
@@ -662,6 +663,7 @@
|
||||
@@ -662,6 +667,7 @@
|
||||
return this.field_71474_y.field_211842_aO;
|
||||
}
|
||||
|
||||
@@ -86,7 +118,7 @@
|
||||
public CompletableFuture<Void> func_213237_g() {
|
||||
if (this.field_213276_aV != null) {
|
||||
return this.field_213276_aV;
|
||||
@@ -741,16 +743,20 @@
|
||||
@@ -741,16 +747,20 @@
|
||||
}
|
||||
|
||||
public void func_147108_a(@Nullable Screen p_147108_1_) {
|
||||
@@ -111,7 +143,7 @@
|
||||
if (p_147108_1_ instanceof MainMenuScreen || p_147108_1_ instanceof MultiplayerScreen) {
|
||||
this.field_71474_y.field_74330_P = false;
|
||||
this.field_71456_v.func_146158_b().func_146231_a(true);
|
||||
@@ -875,11 +881,13 @@
|
||||
@@ -875,11 +885,13 @@
|
||||
GlStateManager.enableTexture();
|
||||
this.field_71424_I.func_76319_b();
|
||||
if (!this.field_71454_w) {
|
||||
@@ -125,7 +157,7 @@
|
||||
}
|
||||
|
||||
this.field_71424_I.func_219897_b();
|
||||
@@ -1147,10 +1155,10 @@
|
||||
@@ -1147,10 +1159,10 @@
|
||||
if (p_147115_1_ && this.field_71476_x != null && this.field_71476_x.func_216346_c() == RayTraceResult.Type.BLOCK) {
|
||||
BlockRayTraceResult blockraytraceresult = (BlockRayTraceResult)this.field_71476_x;
|
||||
BlockPos blockpos = blockraytraceresult.func_216350_a();
|
||||
@@ -138,7 +170,7 @@
|
||||
this.field_71439_g.func_184609_a(Hand.MAIN_HAND);
|
||||
}
|
||||
}
|
||||
@@ -1177,7 +1185,7 @@
|
||||
@@ -1177,7 +1189,7 @@
|
||||
case BLOCK:
|
||||
BlockRayTraceResult blockraytraceresult = (BlockRayTraceResult)this.field_71476_x;
|
||||
BlockPos blockpos = blockraytraceresult.func_216350_a();
|
||||
@@ -147,7 +179,7 @@
|
||||
this.field_71442_b.func_180511_b(blockpos, blockraytraceresult.func_216354_b());
|
||||
break;
|
||||
}
|
||||
@@ -1187,6 +1195,7 @@
|
||||
@@ -1187,6 +1199,7 @@
|
||||
}
|
||||
|
||||
this.field_71439_g.func_184821_cY();
|
||||
@@ -155,7 +187,7 @@
|
||||
}
|
||||
|
||||
this.field_71439_g.func_184609_a(Hand.MAIN_HAND);
|
||||
@@ -1236,6 +1245,9 @@
|
||||
@@ -1236,6 +1249,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,7 +197,7 @@
|
||||
if (!itemstack.func_190926_b() && this.field_71442_b.func_187101_a(this.field_71439_g, this.field_71441_e, hand) == ActionResultType.SUCCESS) {
|
||||
this.field_71460_t.field_78516_c.func_187460_a(hand);
|
||||
return;
|
||||
@@ -1255,6 +1267,8 @@
|
||||
@@ -1255,6 +1271,8 @@
|
||||
--this.field_71467_ac;
|
||||
}
|
||||
|
||||
@@ -174,7 +206,7 @@
|
||||
this.field_71424_I.func_76320_a("gui");
|
||||
if (!this.field_71445_n) {
|
||||
this.field_71456_v.func_73831_a();
|
||||
@@ -1373,6 +1387,8 @@
|
||||
@@ -1373,6 +1391,8 @@
|
||||
this.field_71424_I.func_219895_b("keyboard");
|
||||
this.field_195559_v.func_204870_b();
|
||||
this.field_71424_I.func_76319_b();
|
||||
@@ -183,7 +215,7 @@
|
||||
}
|
||||
|
||||
private void func_184117_aA() {
|
||||
@@ -1527,6 +1543,12 @@
|
||||
@@ -1527,6 +1547,12 @@
|
||||
this.func_147108_a(worldloadprogressscreen);
|
||||
|
||||
while(!this.field_71437_Z.func_71200_ad()) {
|
||||
@@ -196,7 +228,7 @@
|
||||
worldloadprogressscreen.tick();
|
||||
this.func_195542_b(false);
|
||||
|
||||
@@ -1547,11 +1569,17 @@
|
||||
@@ -1547,11 +1573,17 @@
|
||||
networkmanager.func_150719_a(new ClientLoginNetHandler(networkmanager, this, (Screen)null, (p_213261_0_) -> {
|
||||
}));
|
||||
networkmanager.func_179290_a(new CHandshakePacket(socketaddress.toString(), 0, ProtocolType.LOGIN));
|
||||
@@ -215,7 +247,12 @@
|
||||
WorkingScreen workingscreen = new WorkingScreen();
|
||||
workingscreen.func_200210_a(new TranslationTextComponent("connect.joining"));
|
||||
this.func_213241_c(workingscreen);
|
||||
@@ -1587,6 +1615,7 @@
|
||||
@@ -1583,10 +1615,12 @@
|
||||
IntegratedServer integratedserver = this.field_71437_Z;
|
||||
this.field_71437_Z = null;
|
||||
this.field_71460_t.func_190564_k();
|
||||
+ net.minecraftforge.fml.client.ClientHooks.firePlayerLogout(this.field_71442_b, this.field_71439_g);
|
||||
this.field_71442_b = null;
|
||||
NarratorChatListener.field_193643_a.func_193642_b();
|
||||
this.func_213241_c(p_213231_1_);
|
||||
if (this.field_71441_e != null) {
|
||||
@@ -223,7 +260,7 @@
|
||||
if (integratedserver != null) {
|
||||
while(!integratedserver.func_213201_w()) {
|
||||
this.func_195542_b(false);
|
||||
@@ -1624,6 +1653,7 @@
|
||||
@@ -1624,6 +1658,7 @@
|
||||
}
|
||||
|
||||
TileEntityRendererDispatcher.field_147556_a.func_147543_a(p_213257_1_);
|
||||
@@ -231,7 +268,7 @@
|
||||
}
|
||||
|
||||
public final boolean func_71355_q() {
|
||||
@@ -1649,112 +1679,8 @@
|
||||
@@ -1649,112 +1684,8 @@
|
||||
|
||||
private void func_147112_ai() {
|
||||
if (this.field_71476_x != null && this.field_71476_x.func_216346_c() != RayTraceResult.Type.MISS) {
|
||||
@@ -346,7 +383,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1826,6 +1752,7 @@
|
||||
@@ -1826,6 +1757,7 @@
|
||||
return field_71432_P;
|
||||
}
|
||||
|
||||
@@ -354,7 +391,7 @@
|
||||
public CompletableFuture<Void> func_213245_w() {
|
||||
return this.func_213169_a(this::func_213237_g).thenCompose((p_213240_0_) -> {
|
||||
return p_213240_0_;
|
||||
@@ -1972,6 +1899,8 @@
|
||||
@@ -1972,6 +1904,8 @@
|
||||
}
|
||||
|
||||
public MusicTicker.MusicType func_147109_W() {
|
||||
@@ -363,7 +400,7 @@
|
||||
if (this.field_71462_r instanceof WinGameScreen) {
|
||||
return MusicTicker.MusicType.CREDITS;
|
||||
} else if (this.field_71439_g == null) {
|
||||
@@ -2128,4 +2057,12 @@
|
||||
@@ -2128,4 +2062,12 @@
|
||||
public LoadingGui func_213250_au() {
|
||||
return this.field_213279_p;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
--- a/net/minecraft/client/MouseHelper.java
|
||||
+++ b/net/minecraft/client/MouseHelper.java
|
||||
@@ -77,11 +77,15 @@
|
||||
@@ -71,17 +71,22 @@
|
||||
if (!this.field_198051_p && flag) {
|
||||
this.func_198034_i();
|
||||
}
|
||||
+ if (net.minecraftforge.client.ForgeHooksClient.onRawMouseClicked(p_198023_3_, p_198023_4_, p_198023_5_)) return;
|
||||
} else {
|
||||
double d0 = this.field_198040_e * (double)this.field_198036_a.field_195558_d.func_198107_o() / (double)this.field_198036_a.field_195558_d.func_198105_m();
|
||||
double d1 = this.field_198041_f * (double)this.field_198036_a.field_195558_d.func_198087_p() / (double)this.field_198036_a.field_195558_d.func_198083_n();
|
||||
int p_198023_3_f = p_198023_3_;
|
||||
if (flag) {
|
||||
Screen.wrapScreenError(() -> {
|
||||
@@ -18,7 +25,7 @@
|
||||
}, "mouseReleased event handler", this.field_198036_a.field_71462_r.getClass().getCanonicalName());
|
||||
}
|
||||
}
|
||||
@@ -105,7 +109,7 @@
|
||||
@@ -105,7 +110,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,7 +34,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,7 +120,9 @@
|
||||
@@ -116,7 +121,9 @@
|
||||
if (this.field_198036_a.field_71462_r != null) {
|
||||
double d1 = this.field_198040_e * (double)this.field_198036_a.field_195558_d.func_198107_o() / (double)this.field_198036_a.field_195558_d.func_198105_m();
|
||||
double d2 = this.field_198041_f * (double)this.field_198036_a.field_195558_d.func_198087_p() / (double)this.field_198036_a.field_195558_d.func_198083_n();
|
||||
@@ -38,7 +45,15 @@
|
||||
} else if (this.field_198036_a.field_71439_g != null) {
|
||||
if (this.field_200542_o != 0.0D && Math.signum(d0) != Math.signum(this.field_200542_o)) {
|
||||
this.field_200542_o = 0.0D;
|
||||
@@ -168,7 +174,9 @@
|
||||
@@ -129,6 +136,7 @@
|
||||
}
|
||||
|
||||
this.field_200542_o -= (double)f1;
|
||||
+ if (net.minecraftforge.client.ForgeHooksClient.onMouseScroll(this, d0)) return;
|
||||
if (this.field_198036_a.field_71439_g.func_175149_v()) {
|
||||
if (this.field_198036_a.field_71456_v.func_175187_g().func_175262_a()) {
|
||||
this.field_198036_a.field_71456_v.func_175187_g().func_195621_a((double)(-f1));
|
||||
@@ -168,7 +176,9 @@
|
||||
double d2 = (p_198022_3_ - this.field_198040_e) * (double)this.field_198036_a.field_195558_d.func_198107_o() / (double)this.field_198036_a.field_195558_d.func_198105_m();
|
||||
double d3 = (p_198022_5_ - this.field_198041_f) * (double)this.field_198036_a.field_195558_d.func_198087_p() / (double)this.field_198036_a.field_195558_d.func_198083_n();
|
||||
Screen.wrapScreenError(() -> {
|
||||
@@ -49,7 +64,7 @@
|
||||
}, "mouseDragged event handler", iguieventlistener.getClass().getCanonicalName());
|
||||
}
|
||||
}
|
||||
@@ -233,6 +241,10 @@
|
||||
@@ -233,6 +243,10 @@
|
||||
return this.field_198039_d;
|
||||
}
|
||||
|
||||
@@ -60,7 +75,7 @@
|
||||
public double func_198024_e() {
|
||||
return this.field_198040_e;
|
||||
}
|
||||
@@ -241,6 +253,14 @@
|
||||
@@ -241,6 +255,14 @@
|
||||
return this.field_198041_f;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +1,26 @@
|
||||
--- a/net/minecraft/client/gui/DisplayEffectsScreen.java
|
||||
+++ b/net/minecraft/client/gui/DisplayEffectsScreen.java
|
||||
@@ -84,6 +84,7 @@
|
||||
int i = this.field_147009_r;
|
||||
@@ -34,6 +34,7 @@
|
||||
this.field_147003_i = (this.width - this.field_146999_f) / 2;
|
||||
this.field_147045_u = false;
|
||||
} else {
|
||||
+ if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.GuiScreenEvent.PotionShiftEvent(this))) this.field_147003_i = (this.width - this.field_146999_f) / 2; else
|
||||
this.field_147003_i = 160 + (this.width - this.field_146999_f - 200) / 2;
|
||||
this.field_147045_u = true;
|
||||
}
|
||||
@@ -59,7 +60,7 @@
|
||||
j = 132 / (collection.size() - 1);
|
||||
}
|
||||
|
||||
for(EffectInstance effectinstance : p_214077_3_) {
|
||||
+ if (!effectinstance.func_188419_a().shouldRender(effectinstance)) continue;
|
||||
Effect effect = effectinstance.func_188419_a();
|
||||
blit(p_214077_1_ + 6, i + 7, this.blitOffset, 18, 18, potionspriteuploader.func_215288_a(effect));
|
||||
i += p_214077_2_;
|
||||
@@ -95,6 +96,9 @@
|
||||
- Iterable<EffectInstance> iterable = Ordering.<EffectInstance>natural().sortedCopy(collection);
|
||||
+ Iterable<EffectInstance> iterable = collection.stream().filter( effectInstance -> effectInstance.func_188419_a().shouldRender(effectInstance)).sorted().collect(java.util.stream.Collectors.toList());
|
||||
this.func_214079_a(i, j, iterable);
|
||||
this.func_214077_b(i, j, iterable);
|
||||
this.func_214078_c(i, j, iterable);
|
||||
@@ -95,6 +96,8 @@
|
||||
int i = this.field_147009_r;
|
||||
|
||||
for(EffectInstance effectinstance : p_214078_3_) {
|
||||
+ if (!effectinstance.func_188419_a().shouldRender(effectinstance)) continue;
|
||||
+ effectinstance.func_188419_a().renderInventoryEffect(effectinstance, this, p_214078_1_, i, this.blitOffset);
|
||||
+ if (!effectinstance.func_188419_a().shouldRenderInvText(effectinstance)) { i += p_214078_2_; continue; }
|
||||
String s = I18n.func_135052_a(effectinstance.func_188419_a().func_76393_a());
|
||||
|
||||
@@ -24,7 +24,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -588,7 +593,13 @@
|
||||
@@ -572,6 +577,7 @@
|
||||
}
|
||||
|
||||
String s = itextcomponent.func_150254_d();
|
||||
+ s = this.field_92016_l.func_77973_b().getHighlightTip(this.field_92016_l, s);
|
||||
int i = (this.field_194811_H - this.func_175179_f().func_78256_a(s)) / 2;
|
||||
int j = this.field_194812_I - 59;
|
||||
if (!this.field_73839_d.field_71442_b.func_78755_b()) {
|
||||
@@ -588,7 +594,13 @@
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
|
||||
fill(i - 2, j - 2, i + this.func_175179_f().func_78256_a(s) + 2, j + 9 + 2, this.field_73839_d.field_71474_y.func_216839_a(0));
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
--- a/net/minecraft/client/gui/screen/DeathScreen.java
|
||||
+++ b/net/minecraft/client/gui/screen/DeathScreen.java
|
||||
@@ -44,6 +44,7 @@
|
||||
}));
|
||||
Button button = this.addButton(new Button(this.width / 2 - 100, this.height / 4 + 96, 200, 20, s1, (p_213020_1_) -> {
|
||||
if (this.field_213023_c) {
|
||||
+ func_213022_a(true);
|
||||
this.minecraft.func_147108_a(new MainMenuScreen());
|
||||
} else {
|
||||
ConfirmScreen confirmscreen = new ConfirmScreen(this::func_213022_a, new TranslationTextComponent("deathScreen.quit.confirm"), new StringTextComponent(""), I18n.func_135052_a("deathScreen.titleScreen"), I18n.func_135052_a("deathScreen.respawn"));
|
||||
@@ -48,7 +48,7 @@
|
||||
if (this.field_73975_c != null) {
|
||||
GlStateManager.pushMatrix();
|
||||
GlStateManager.translatef((float)(this.width / 2 + 90), 70.0F, 0.0F);
|
||||
@@ -222,7 +229,10 @@
|
||||
@@ -222,7 +229,13 @@
|
||||
s = s + ("release".equalsIgnoreCase(this.minecraft.func_184123_d()) ? "" : "/" + this.minecraft.func_184123_d());
|
||||
}
|
||||
|
||||
@@ -57,10 +57,13 @@
|
||||
+ this.drawString(this.font, brd, 2, this.height - ( 10 + brdline * (this.font.field_78288_b + 1)), 16777215 | l)
|
||||
+ );
|
||||
+
|
||||
+ net.minecraftforge.fml.BrandingControl.forEachAboveCopyrightLine((brdline, brd) ->
|
||||
+ this.drawString(this.font, brd, this.width - font.func_78256_a(brd), this.height - (10 + (brdline + 1) * ( this.font.field_78288_b + 1)), 16777215 | l)
|
||||
+ );
|
||||
this.drawString(this.font, "Copyright Mojang AB. Do not distribute!", this.field_193979_N, this.height - 10, 16777215 | l);
|
||||
if (p_render_1_ > this.field_193979_N && p_render_1_ < this.field_193979_N + this.field_193978_M && p_render_2_ > this.height - 10 && p_render_2_ < this.height) {
|
||||
fill(this.field_193979_N, this.height - 1, this.field_193979_N + this.field_193978_M, this.height, 16777215 | l);
|
||||
@@ -240,6 +250,7 @@
|
||||
@@ -240,6 +253,7 @@
|
||||
if (this.func_183501_a() && f1 >= 1.0F) {
|
||||
this.field_183503_M.render(p_render_1_, p_render_2_, p_render_3_);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
--- a/net/minecraft/client/multiplayer/ClientChunkProvider.java
|
||||
+++ b/net/minecraft/client/multiplayer/ClientChunkProvider.java
|
||||
@@ -72,6 +72,7 @@
|
||||
if (this.field_217256_d.func_217183_b(p_212849_1_, p_212849_2_)) {
|
||||
Chunk chunk = this.field_217256_d.func_217192_a(this.field_217256_d.func_217191_a(p_212849_1_, p_212849_2_));
|
||||
if (func_217249_a(chunk, p_212849_1_, p_212849_2_)) {
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.world.ChunkEvent.Load(chunk));
|
||||
return chunk;
|
||||
@@ -61,6 +61,7 @@
|
||||
int i = this.field_217256_d.func_217191_a(p_73234_1_, p_73234_2_);
|
||||
Chunk chunk = this.field_217256_d.func_217192_a(i);
|
||||
if (func_217249_a(chunk, p_73234_1_, p_73234_2_)) {
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.world.ChunkEvent.Unload(chunk));
|
||||
this.field_217256_d.func_217190_a(i, chunk, (Chunk)null);
|
||||
}
|
||||
|
||||
@@ -113,6 +114,7 @@
|
||||
worldlightmanager.func_215566_a(SectionPos.func_218154_a(p_217250_2_, j, p_217250_3_), ChunkSection.func_222628_a(chunksection));
|
||||
}
|
||||
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.world.ChunkEvent.Load(chunk));
|
||||
return chunk;
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,38 @@
|
||||
return false;
|
||||
} else {
|
||||
block.func_176208_a(world, p_187103_1_, blockstate, this.field_78776_a.field_71439_g);
|
||||
@@ -187,13 +189,13 @@
|
||||
@@ -129,21 +131,25 @@
|
||||
BlockState blockstate = this.field_78776_a.field_71441_e.func_180495_p(p_180511_1_);
|
||||
this.field_78776_a.func_193032_ao().func_193294_a(this.field_78776_a.field_71441_e, p_180511_1_, blockstate, 1.0F);
|
||||
this.func_225324_a(CPlayerDiggingPacket.Action.START_DESTROY_BLOCK, p_180511_1_, p_180511_2_);
|
||||
+ if (!net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.field_78776_a.field_71439_g, p_180511_1_, p_180511_2_).isCanceled())
|
||||
func_178891_a(this.field_78776_a, this, p_180511_1_, p_180511_2_);
|
||||
this.field_78781_i = 5;
|
||||
} else if (!this.field_78778_j || !this.func_178893_a(p_180511_1_)) {
|
||||
if (this.field_78778_j) {
|
||||
this.func_225324_a(CPlayerDiggingPacket.Action.ABORT_DESTROY_BLOCK, this.field_178895_c, p_180511_2_);
|
||||
}
|
||||
+ net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock event = net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.field_78776_a.field_71439_g, p_180511_1_, p_180511_2_);
|
||||
|
||||
BlockState blockstate1 = this.field_78776_a.field_71441_e.func_180495_p(p_180511_1_);
|
||||
this.field_78776_a.func_193032_ao().func_193294_a(this.field_78776_a.field_71441_e, p_180511_1_, blockstate1, 0.0F);
|
||||
this.func_225324_a(CPlayerDiggingPacket.Action.START_DESTROY_BLOCK, p_180511_1_, p_180511_2_);
|
||||
boolean flag = !blockstate1.func_196958_f();
|
||||
if (flag && this.field_78770_f == 0.0F) {
|
||||
+ if (event.getUseBlock() != net.minecraftforge.eventbus.api.Event.Result.DENY)
|
||||
blockstate1.func_196942_a(this.field_78776_a.field_71441_e, p_180511_1_, this.field_78776_a.field_71439_g);
|
||||
}
|
||||
|
||||
+ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) return true;
|
||||
if (flag && blockstate1.func_185903_a(this.field_78776_a.field_71439_g, this.field_78776_a.field_71439_g.field_70170_p, p_180511_1_) >= 1.0F) {
|
||||
this.func_187103_a(p_180511_1_);
|
||||
} else {
|
||||
@@ -183,22 +189,24 @@
|
||||
BlockState blockstate1 = this.field_78776_a.field_71441_e.func_180495_p(p_180512_1_);
|
||||
this.field_78776_a.func_193032_ao().func_193294_a(this.field_78776_a.field_71441_e, p_180512_1_, blockstate1, 1.0F);
|
||||
this.func_225324_a(CPlayerDiggingPacket.Action.START_DESTROY_BLOCK, p_180512_1_, p_180512_2_);
|
||||
+ if (!net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.field_78776_a.field_71439_g, p_180512_1_, p_180512_2_).isCanceled())
|
||||
func_178891_a(this.field_78776_a, this, p_180512_1_, p_180512_2_);
|
||||
return true;
|
||||
} else if (this.func_178893_a(p_180512_1_)) {
|
||||
BlockState blockstate = this.field_78776_a.field_71441_e.func_180495_p(p_180512_1_);
|
||||
@@ -27,7 +58,13 @@
|
||||
this.field_78776_a.func_147118_V().func_147682_a(new SimpleSound(soundtype.func_185846_f(), SoundCategory.NEUTRAL, (soundtype.func_185843_a() + 1.0F) / 8.0F, soundtype.func_185847_b() * 0.5F, p_180512_1_));
|
||||
}
|
||||
|
||||
@@ -217,7 +219,8 @@
|
||||
++this.field_78780_h;
|
||||
this.field_78776_a.func_193032_ao().func_193294_a(this.field_78776_a.field_71441_e, p_180512_1_, blockstate, MathHelper.func_76131_a(this.field_78770_f, 0.0F, 1.0F));
|
||||
+ if (net.minecraftforge.common.ForgeHooks.onLeftClickBlock(this.field_78776_a.field_71439_g, p_180512_1_, p_180512_2_).getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) return true;
|
||||
if (this.field_78770_f >= 1.0F) {
|
||||
this.field_78778_j = false;
|
||||
this.func_225324_a(CPlayerDiggingPacket.Action.STOP_DESTROY_BLOCK, p_180512_1_, p_180512_2_);
|
||||
@@ -217,7 +225,8 @@
|
||||
}
|
||||
|
||||
public float func_78757_d() {
|
||||
@@ -37,7 +74,7 @@
|
||||
}
|
||||
|
||||
public void func_78765_e() {
|
||||
@@ -234,7 +237,7 @@
|
||||
@@ -234,7 +243,7 @@
|
||||
ItemStack itemstack = this.field_78776_a.field_71439_g.func_184614_ca();
|
||||
boolean flag = this.field_85183_f.func_190926_b() && itemstack.func_190926_b();
|
||||
if (!this.field_85183_f.func_190926_b() && !itemstack.func_190926_b()) {
|
||||
@@ -46,7 +83,34 @@
|
||||
}
|
||||
|
||||
return p_178893_1_.equals(this.field_178895_c) && flag;
|
||||
@@ -298,11 +301,14 @@
|
||||
@@ -257,17 +266,24 @@
|
||||
return ActionResultType.FAIL;
|
||||
} else {
|
||||
ItemStack itemstack = p_217292_1_.func_184586_b(p_217292_3_);
|
||||
+ net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock event = net.minecraftforge.common.ForgeHooks
|
||||
+ .onRightClickBlock(p_217292_1_, p_217292_3_, blockpos, p_217292_4_.func_216354_b());
|
||||
+ if (event.isCanceled()) {
|
||||
+ this.field_78774_b.func_147297_a(new CPlayerTryUseItemOnBlockPacket(p_217292_3_, p_217292_4_));
|
||||
+ return event.getCancellationResult();
|
||||
+ }
|
||||
if (this.field_78779_k == GameType.SPECTATOR) {
|
||||
this.field_78774_b.func_147297_a(new CPlayerTryUseItemOnBlockPacket(p_217292_3_, p_217292_4_));
|
||||
return ActionResultType.SUCCESS;
|
||||
} else {
|
||||
boolean flag = !p_217292_1_.func_184614_ca().func_190926_b() || !p_217292_1_.func_184592_cb().func_190926_b();
|
||||
- boolean flag1 = p_217292_1_.func_70093_af() && flag;
|
||||
- if (!flag1 && p_217292_2_.func_180495_p(blockpos).func_215687_a(p_217292_2_, p_217292_1_, p_217292_3_, p_217292_4_)) {
|
||||
+ boolean flag1 = !(p_217292_1_.func_70093_af() && flag) || (p_217292_1_.func_184614_ca().doesSneakBypassUse(p_217292_2_,blockpos,p_217292_1_) && p_217292_1_.func_184592_cb().doesSneakBypassUse(p_217292_2_,blockpos,p_217292_1_));
|
||||
+ if (event.getUseBlock() != net.minecraftforge.eventbus.api.Event.Result.DENY && flag1 && p_217292_2_.func_180495_p(blockpos).func_215687_a(p_217292_2_, p_217292_1_, p_217292_3_, p_217292_4_)) {
|
||||
this.field_78774_b.func_147297_a(new CPlayerTryUseItemOnBlockPacket(p_217292_3_, p_217292_4_));
|
||||
return ActionResultType.SUCCESS;
|
||||
} else {
|
||||
this.field_78774_b.func_147297_a(new CPlayerTryUseItemOnBlockPacket(p_217292_3_, p_217292_4_));
|
||||
+ if (event.getUseItem() == net.minecraftforge.eventbus.api.Event.Result.DENY) return ActionResultType.PASS;
|
||||
if (!itemstack.func_190926_b() && !p_217292_1_.func_184811_cZ().func_185141_a(itemstack.func_77973_b())) {
|
||||
ItemUseContext itemusecontext = new ItemUseContext(p_217292_1_, p_217292_3_, p_217292_4_);
|
||||
ActionResultType actionresulttype;
|
||||
@@ -298,11 +314,14 @@
|
||||
if (p_187101_1_.func_184811_cZ().func_185141_a(itemstack.func_77973_b())) {
|
||||
return ActionResultType.PASS;
|
||||
} else {
|
||||
@@ -61,7 +125,7 @@
|
||||
}
|
||||
|
||||
return actionresult.func_188397_a();
|
||||
@@ -327,6 +333,9 @@
|
||||
@@ -327,6 +346,9 @@
|
||||
public ActionResultType func_187097_a(PlayerEntity p_187097_1_, Entity p_187097_2_, Hand p_187097_3_) {
|
||||
this.func_78750_j();
|
||||
this.field_78774_b.func_147297_a(new CUseEntityPacket(p_187097_2_, p_187097_3_));
|
||||
@@ -71,7 +135,7 @@
|
||||
return this.field_78779_k == GameType.SPECTATOR ? ActionResultType.PASS : p_187097_1_.func_190775_a(p_187097_2_, p_187097_3_);
|
||||
}
|
||||
|
||||
@@ -334,6 +343,9 @@
|
||||
@@ -334,6 +356,9 @@
|
||||
this.func_78750_j();
|
||||
Vec3d vec3d = p_187102_3_.func_216347_e().func_178786_a(p_187102_2_.field_70165_t, p_187102_2_.field_70163_u, p_187102_2_.field_70161_v);
|
||||
this.field_78774_b.func_147297_a(new CUseEntityPacket(p_187102_2_, p_187102_4_, vec3d));
|
||||
|
||||
+46
-9
@@ -1,6 +1,22 @@
|
||||
--- a/net/minecraft/client/network/play/ClientPlayNetHandler.java
|
||||
+++ b/net/minecraft/client/network/play/ClientPlayNetHandler.java
|
||||
@@ -714,7 +714,7 @@
|
||||
@@ -356,6 +356,7 @@
|
||||
|
||||
this.field_147299_f.field_184132_p.func_217737_a();
|
||||
this.field_147299_f.field_71439_g.func_70065_x();
|
||||
+ net.minecraftforge.fml.client.ClientHooks.firePlayerLogin(this.field_147299_f.field_71442_b, this.field_147299_f.field_71439_g, this.field_147299_f.func_147114_u().func_147298_b());
|
||||
int i = p_147282_1_.func_149197_c();
|
||||
this.field_147300_g.func_217408_a(i, this.field_147299_f.field_71439_g);
|
||||
this.field_147299_f.field_71439_g.field_71158_b = new MovementInputFromOptions(this.field_147299_f.field_71474_y);
|
||||
@@ -366,6 +367,7 @@
|
||||
this.field_147299_f.field_71439_g.func_145769_d(i);
|
||||
this.field_147299_f.field_71439_g.func_175150_k(p_147282_1_.func_179744_h());
|
||||
this.field_147299_f.field_71442_b.func_78746_a(p_147282_1_.func_149198_e());
|
||||
+ net.minecraftforge.fml.network.NetworkHooks.sendMCRegistryPackets(field_147302_e, "PLAY_TO_SERVER");
|
||||
this.field_147299_f.field_71474_y.func_82879_c();
|
||||
this.field_147302_e.func_179290_a(new CCustomPayloadPacket(CCustomPayloadPacket.field_210344_a, (new PacketBuffer(Unpooled.buffer())).func_180714_a(ClientBrandRetriever.getClientModName())));
|
||||
this.field_147299_f.func_213229_ar().func_216814_a();
|
||||
@@ -714,7 +716,7 @@
|
||||
BlockPos blockpos = new BlockPos(compoundnbt.func_74762_e("x"), compoundnbt.func_74762_e("y"), compoundnbt.func_74762_e("z"));
|
||||
TileEntity tileentity = this.field_147300_g.func_175625_s(blockpos);
|
||||
if (tileentity != null) {
|
||||
@@ -9,7 +25,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -790,7 +790,9 @@
|
||||
@@ -790,7 +792,9 @@
|
||||
|
||||
public void func_147251_a(SChatPacket p_147251_1_) {
|
||||
PacketThreadUtil.func_218797_a(p_147251_1_, this, this.field_147299_f);
|
||||
@@ -20,15 +36,18 @@
|
||||
}
|
||||
|
||||
public void func_147279_a(SAnimateHandPacket p_147279_1_) {
|
||||
@@ -962,6 +964,7 @@
|
||||
@@ -962,8 +966,10 @@
|
||||
this.field_147299_f.field_71439_g = clientplayerentity1;
|
||||
this.field_147299_f.field_175622_Z = clientplayerentity1;
|
||||
clientplayerentity1.func_184212_Q().func_187218_a(clientplayerentity.func_184212_Q().func_187231_c());
|
||||
+ clientplayerentity1.updateSyncFields(clientplayerentity); // Forge: fix MC-10657
|
||||
clientplayerentity1.func_70065_x();
|
||||
clientplayerentity1.func_175158_f(s);
|
||||
+ net.minecraftforge.fml.client.ClientHooks.firePlayerRespawn(this.field_147299_f.field_71442_b, clientplayerentity, clientplayerentity1, clientplayerentity1.field_71174_a.func_147298_b());
|
||||
this.field_147300_g.func_217408_a(i, clientplayerentity1);
|
||||
@@ -1084,6 +1087,12 @@
|
||||
clientplayerentity1.field_70177_z = -180.0F;
|
||||
clientplayerentity1.field_71158_b = new MovementInputFromOptions(this.field_147299_f.field_71474_y);
|
||||
@@ -1084,6 +1090,12 @@
|
||||
boolean flag = i == 2 && tileentity instanceof CommandBlockTileEntity;
|
||||
if (i == 1 && tileentity instanceof MobSpawnerTileEntity || flag || i == 3 && tileentity instanceof BeaconTileEntity || i == 4 && tileentity instanceof SkullTileEntity || i == 6 && tileentity instanceof BannerTileEntity || i == 7 && tileentity instanceof StructureBlockTileEntity || i == 8 && tileentity instanceof EndGatewayTileEntity || i == 9 && tileentity instanceof SignTileEntity || i == 11 && tileentity instanceof BedTileEntity || i == 5 && tileentity instanceof ConduitTileEntity || i == 12 && tileentity instanceof JigsawTileEntity || i == 13 && tileentity instanceof CampfireTileEntity) {
|
||||
tileentity.func_145839_a(p_147273_1_.func_148857_g());
|
||||
@@ -41,15 +60,15 @@
|
||||
}
|
||||
|
||||
if (flag && this.field_147299_f.field_71462_r instanceof CommandBlockScreen) {
|
||||
@@ -1253,6 +1262,7 @@
|
||||
@@ -1253,6 +1265,7 @@
|
||||
clientrecipebook.func_199644_c();
|
||||
clientrecipebook.func_199642_d().forEach(imutablesearchtree::func_217872_a);
|
||||
imutablesearchtree.func_194040_a();
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onRecipesUpdated();
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onRecipesUpdated(this.field_199528_o);
|
||||
}
|
||||
|
||||
public void func_200232_a(SPlayerLookPacket p_200232_1_) {
|
||||
@@ -1333,7 +1343,7 @@
|
||||
@@ -1333,7 +1346,7 @@
|
||||
PacketThreadUtil.func_218797_a(p_147260_1_, this, this.field_147299_f);
|
||||
Entity entity = this.field_147300_g.func_73045_a(p_147260_1_.func_149426_d());
|
||||
if (entity instanceof LivingEntity) {
|
||||
@@ -58,12 +77,21 @@
|
||||
if (effect != null) {
|
||||
EffectInstance effectinstance = new EffectInstance(effect, p_147260_1_.func_180755_e(), p_147260_1_.func_149428_f(), p_147260_1_.func_186984_g(), p_147260_1_.func_179707_f(), p_147260_1_.func_205527_h());
|
||||
effectinstance.func_100012_b(p_147260_1_.func_149429_c());
|
||||
@@ -1766,10 +1776,12 @@
|
||||
@@ -1353,6 +1366,7 @@
|
||||
}
|
||||
|
||||
this.field_147299_f.func_213253_a(SearchTreeManager.field_215360_b).func_194040_a();
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.TagsUpdatedEvent(this.field_199725_m));
|
||||
}
|
||||
|
||||
public void func_175098_a(SCombatPacket p_175098_1_) {
|
||||
@@ -1766,10 +1780,12 @@
|
||||
|
||||
this.field_147299_f.field_184132_p.field_217741_m.func_217692_a(pointofinterestdebugrenderer$braininfo);
|
||||
} else {
|
||||
- field_147301_d.warn("Unknown custom packed identifier: {}", (Object)resourcelocation);
|
||||
+ if (!net.minecraftforge.fml.network.NetworkHooks.onCustomPayload(p_147240_1_, this.field_147302_e))
|
||||
field_147301_d.warn("Unknown custom packed identifier: {}", (Object)resourcelocation);
|
||||
+ field_147301_d.warn("Unknown custom packet identifier: {}", (Object)resourcelocation);
|
||||
}
|
||||
} finally {
|
||||
if (packetbuffer != null) {
|
||||
@@ -71,3 +99,12 @@
|
||||
packetbuffer.release();
|
||||
}
|
||||
|
||||
@@ -1909,7 +1925,7 @@
|
||||
for(SEntityPropertiesPacket.Snapshot sentitypropertiespacket$snapshot : p_147290_1_.func_149441_d()) {
|
||||
IAttributeInstance iattributeinstance = abstractattributemap.func_111152_a(sentitypropertiespacket$snapshot.func_151409_a());
|
||||
if (iattributeinstance == null) {
|
||||
- iattributeinstance = abstractattributemap.func_111150_b(new RangedAttribute((IAttribute)null, sentitypropertiespacket$snapshot.func_151409_a(), 0.0D, Double.MIN_NORMAL, Double.MAX_VALUE));
|
||||
+ iattributeinstance = abstractattributemap.func_111150_b(new RangedAttribute((IAttribute)null, sentitypropertiespacket$snapshot.func_151409_a(), 0.0D, -Double.MAX_VALUE, Double.MAX_VALUE)); // FORGE: fix invalid value range (MC-150405)
|
||||
}
|
||||
|
||||
iattributeinstance.func_111128_a(sentitypropertiespacket$snapshot.func_151410_b());
|
||||
@@ -1,11 +1,25 @@
|
||||
--- a/net/minecraft/client/particle/DiggingParticle.java
|
||||
+++ b/net/minecraft/client/particle/DiggingParticle.java
|
||||
@@ -21,7 +21,7 @@
|
||||
public DiggingParticle(World p_i46280_1_, double p_i46280_2_, double p_i46280_4_, double p_i46280_6_, double p_i46280_8_, double p_i46280_10_, double p_i46280_12_, BlockState p_i46280_14_) {
|
||||
super(p_i46280_1_, p_i46280_2_, p_i46280_4_, p_i46280_6_, p_i46280_8_, p_i46280_10_, p_i46280_12_);
|
||||
this.field_174847_a = p_i46280_14_;
|
||||
- this.func_217567_a(Minecraft.func_71410_x().func_175602_ab().func_175023_a().func_178122_a(p_i46280_14_));
|
||||
+ this.func_217567_a(Minecraft.func_71410_x().func_175602_ab().func_175023_a().getTexture(p_i46280_14_, p_i46280_1_, new BlockPos(field_187126_f, field_187127_g, field_187128_h)));
|
||||
this.field_70545_g = 1.0F;
|
||||
this.field_70552_h = 0.6F;
|
||||
this.field_70553_i = 0.6F;
|
||||
@@ -36,6 +36,7 @@
|
||||
}
|
||||
|
||||
public DiggingParticle func_174846_a(BlockPos p_174846_1_) {
|
||||
+ updateSprite(p_174846_1_);
|
||||
this.field_181019_az = p_174846_1_;
|
||||
if (this.field_174847_a.func_177230_c() == Blocks.field_196658_i) {
|
||||
return this;
|
||||
@@ -93,7 +94,13 @@
|
||||
public static class Factory implements IParticleFactory<BlockParticleData> {
|
||||
public Particle func_199234_a(BlockParticleData p_199234_1_, World p_199234_2_, double p_199234_3_, double p_199234_5_, double p_199234_7_, double p_199234_9_, double p_199234_11_, double p_199234_13_) {
|
||||
BlockState blockstate = p_199234_1_.func_197584_c();
|
||||
- return !blockstate.func_196958_f() && blockstate.func_177230_c() != Blocks.field_196603_bb ? (new DiggingParticle(p_199234_2_, p_199234_3_, p_199234_5_, p_199234_7_, p_199234_9_, p_199234_11_, p_199234_13_, blockstate)).func_174845_l() : null;
|
||||
+ return !blockstate.func_196958_f() && blockstate.func_177230_c() != Blocks.field_196603_bb ? (new DiggingParticle(p_199234_2_, p_199234_3_, p_199234_5_, p_199234_7_, p_199234_9_, p_199234_11_, p_199234_13_, blockstate)).func_174845_l().updateSprite(p_199234_1_.getPos()) : null;
|
||||
}
|
||||
}
|
||||
+
|
||||
+ private Particle updateSprite(BlockPos pos) { //FORGE: we cannot assume that the x y z of the particles match the block pos of the block.
|
||||
+ if (pos != null) // There are cases where we are not able to obtain the correct source pos, and need to fallback to the non-model data version
|
||||
+ this.func_217567_a(Minecraft.func_71410_x().func_175602_ab().func_175023_a().getTexture(field_174847_a, field_187122_b, pos));
|
||||
+ return this;
|
||||
+ }
|
||||
}
|
||||
@@ -1,6 +1,37 @@
|
||||
--- a/net/minecraft/client/particle/ParticleManager.java
|
||||
+++ b/net/minecraft/client/particle/ParticleManager.java
|
||||
@@ -235,6 +235,7 @@
|
||||
@@ -63,7 +63,7 @@
|
||||
private final Queue<EmitterParticle> field_178933_d = Queues.newArrayDeque();
|
||||
private final TextureManager field_78877_c;
|
||||
private final Random field_78875_d = new Random();
|
||||
- private final Int2ObjectMap<IParticleFactory<?>> field_178932_g = new Int2ObjectOpenHashMap<>();
|
||||
+ private final Map<ResourceLocation, IParticleFactory<?>> field_178932_g = new java.util.HashMap<>();
|
||||
private final Queue<Particle> field_187241_h = Queues.newArrayDeque();
|
||||
private final Map<ResourceLocation, ParticleManager.AnimatedSpriteImpl> field_215242_i = Maps.newHashMap();
|
||||
private final AtlasTexture field_215243_j = new AtlasTexture("textures/particle");
|
||||
@@ -137,13 +137,13 @@
|
||||
}
|
||||
|
||||
public <T extends IParticleData> void func_199283_a(ParticleType<T> p_199283_1_, IParticleFactory<T> p_199283_2_) {
|
||||
- this.field_178932_g.put(Registry.field_212632_u.func_148757_b(p_199283_1_), p_199283_2_);
|
||||
+ this.field_178932_g.put(Registry.field_212632_u.func_177774_c(p_199283_1_), p_199283_2_);
|
||||
}
|
||||
|
||||
public <T extends IParticleData> void func_215234_a(ParticleType<T> p_215234_1_, ParticleManager.IParticleMetaFactory<T> p_215234_2_) {
|
||||
ParticleManager.AnimatedSpriteImpl particlemanager$animatedspriteimpl = new ParticleManager.AnimatedSpriteImpl();
|
||||
this.field_215242_i.put(Registry.field_212632_u.func_177774_c(p_215234_1_), particlemanager$animatedspriteimpl);
|
||||
- this.field_178932_g.put(Registry.field_212632_u.func_148757_b(p_215234_1_), p_215234_2_.create(particlemanager$animatedspriteimpl));
|
||||
+ this.field_178932_g.put(Registry.field_212632_u.func_177774_c(p_215234_1_), p_215234_2_.create(particlemanager$animatedspriteimpl));
|
||||
}
|
||||
|
||||
public CompletableFuture<Void> func_215226_a(IFutureReloadListener.IStage p_215226_1_, IResourceManager p_215226_2_, IProfiler p_215226_3_, IProfiler p_215226_4_, Executor p_215226_5_, Executor p_215226_6_) {
|
||||
@@ -230,11 +230,12 @@
|
||||
|
||||
@Nullable
|
||||
private <T extends IParticleData> Particle func_199927_b(T p_199927_1_, double p_199927_2_, double p_199927_4_, double p_199927_6_, double p_199927_8_, double p_199927_10_, double p_199927_12_) {
|
||||
- IParticleFactory<T> iparticlefactory = (IParticleFactory<T>) this.field_178932_g.get(Registry.field_212632_u.func_148757_b(p_199927_1_.func_197554_b()));
|
||||
+ IParticleFactory<T> iparticlefactory = (IParticleFactory<T>) this.field_178932_g.get(Registry.field_212632_u.func_177774_c(p_199927_1_.func_197554_b()));
|
||||
return iparticlefactory == null ? null : iparticlefactory.func_199234_a(p_199927_1_, this.field_78878_a, p_199927_2_, p_199927_4_, p_199927_6_, p_199927_8_, p_199927_10_, p_199927_12_);
|
||||
}
|
||||
|
||||
public void func_78873_a(Particle p_78873_1_) {
|
||||
@@ -8,7 +39,17 @@
|
||||
this.field_187241_h.add(p_78873_1_);
|
||||
}
|
||||
|
||||
@@ -342,7 +343,7 @@
|
||||
@@ -306,7 +307,8 @@
|
||||
Particle.field_70554_ao = p_215233_1_.func_216785_c().field_72448_b;
|
||||
Particle.field_70555_ap = p_215233_1_.func_216785_c().field_72449_c;
|
||||
|
||||
- for(IParticleRenderType iparticlerendertype : field_215241_b) {
|
||||
+ for(IParticleRenderType iparticlerendertype : this.field_78876_b.keySet()) { // Forge: allow custom IParticleRenderType's
|
||||
+ if(iparticlerendertype == IParticleRenderType.field_217606_f) continue;
|
||||
Iterable<Particle> iterable = this.field_78876_b.get(iparticlerendertype);
|
||||
if (iterable != null) {
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
@@ -342,7 +344,7 @@
|
||||
}
|
||||
|
||||
public void func_180533_a(BlockPos p_180533_1_, BlockState p_180533_2_) {
|
||||
@@ -17,7 +58,7 @@
|
||||
VoxelShape voxelshape = p_180533_2_.func_196954_c(this.field_78878_a, p_180533_1_);
|
||||
double d0 = 0.25D;
|
||||
voxelshape.func_197755_b((p_199284_3_, p_199284_5_, p_199284_7_, p_199284_9_, p_199284_11_, p_199284_13_) -> {
|
||||
@@ -414,6 +415,12 @@
|
||||
@@ -414,6 +416,12 @@
|
||||
return String.valueOf(this.field_78876_b.values().stream().mapToInt(Collection::size).sum());
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,17 @@
|
||||
--- a/net/minecraft/client/renderer/ActiveRenderInfo.java
|
||||
+++ b/net/minecraft/client/renderer/ActiveRenderInfo.java
|
||||
@@ -172,4 +172,11 @@
|
||||
@@ -53,6 +53,10 @@
|
||||
this.func_216776_a(direction != null ? direction.func_185119_l() - 180.0F : 0.0F, 0.0F);
|
||||
this.func_216782_a(0.0D, 0.3D, 0.0D);
|
||||
}
|
||||
+ net.minecraftforge.client.event.EntityViewRenderEvent.CameraSetup cameraSetup = net.minecraftforge.client.ForgeHooksClient.onCameraSetup(net.minecraft.client.Minecraft.func_71410_x().field_71460_t, this, p_216772_5_, this.field_216798_j, this.field_216797_i, 0f);
|
||||
+ this.field_216797_i = cameraSetup.getPitch();
|
||||
+ this.field_216798_j = cameraSetup.getYaw();
|
||||
+ GlStateManager.rotatef(cameraSetup.getRoll(), 0, 0, 1);
|
||||
|
||||
GlStateManager.rotatef(this.field_216797_i, 1.0F, 0.0F, 0.0F);
|
||||
GlStateManager.rotatef(this.field_216798_j + 180.0F, 0.0F, 1.0F, 0.0F);
|
||||
@@ -172,4 +176,11 @@
|
||||
this.field_216791_c = null;
|
||||
this.field_216789_a = false;
|
||||
}
|
||||
|
||||
@@ -97,10 +97,12 @@
|
||||
GlStateManager.popMatrix();
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.disableBlend();
|
||||
@@ -600,6 +608,15 @@
|
||||
@@ -600,8 +608,17 @@
|
||||
this.field_187471_h = MathHelper.func_76131_a(this.field_187471_h - 0.4F, 0.0F, 1.0F);
|
||||
} else {
|
||||
float f = clientplayerentity.func_184825_o(1.0F);
|
||||
- this.field_187469_f += MathHelper.func_76131_a((Objects.equals(this.field_187467_d, itemstack) ? f * f * f : 0.0F) - this.field_187469_f, -0.4F, 0.4F);
|
||||
- this.field_187471_h += MathHelper.func_76131_a((float)(Objects.equals(this.field_187468_e, itemstack1) ? 1 : 0) - this.field_187471_h, -0.4F, 0.4F);
|
||||
+
|
||||
+ boolean requipM = net.minecraftforge.client.ForgeHooksClient.shouldCauseReequipAnimation(this.field_187467_d, itemstack, clientplayerentity.field_71071_by.field_70461_c);
|
||||
+ boolean requipO = net.minecraftforge.client.ForgeHooksClient.shouldCauseReequipAnimation(this.field_187468_e, itemstack1, -1);
|
||||
@@ -110,6 +112,8 @@
|
||||
+ if (!requipO && !Objects.equals(this.field_187468_e, itemstack1))
|
||||
+ this.field_187468_e = itemstack1;
|
||||
+
|
||||
this.field_187469_f += MathHelper.func_76131_a((Objects.equals(this.field_187467_d, itemstack) ? f * f * f : 0.0F) - this.field_187469_f, -0.4F, 0.4F);
|
||||
this.field_187471_h += MathHelper.func_76131_a((float)(Objects.equals(this.field_187468_e, itemstack1) ? 1 : 0) - this.field_187471_h, -0.4F, 0.4F);
|
||||
+ this.field_187469_f += MathHelper.func_76131_a((!requipM ? f * f * f : 0.0F) - this.field_187469_f, -0.4F, 0.4F);
|
||||
+ this.field_187471_h += MathHelper.func_76131_a((float)(!requipO ? 1 : 0) - this.field_187471_h, -0.4F, 0.4F);
|
||||
}
|
||||
|
||||
if (this.field_187469_f < 0.1F) {
|
||||
@@ -0,0 +1,77 @@
|
||||
--- a/net/minecraft/client/renderer/FluidBlockRenderer.java
|
||||
+++ b/net/minecraft/client/renderer/FluidBlockRenderer.java
|
||||
@@ -58,8 +58,9 @@
|
||||
|
||||
public boolean func_217638_a(IEnviromentBlockReader p_217638_1_, BlockPos p_217638_2_, BufferBuilder p_217638_3_, IFluidState p_217638_4_) {
|
||||
boolean flag = p_217638_4_.func_206884_a(FluidTags.field_206960_b);
|
||||
- TextureAtlasSprite[] atextureatlassprite = flag ? this.field_178272_a : this.field_178271_b;
|
||||
- int i = flag ? 16777215 : BiomeColors.func_217612_c(p_217638_1_, p_217638_2_);
|
||||
+ TextureAtlasSprite[] atextureatlassprite = net.minecraftforge.client.ForgeHooksClient.getFluidSprites(p_217638_1_, p_217638_2_, p_217638_4_);
|
||||
+ int i = p_217638_4_.func_206886_c().getAttributes().getColor(p_217638_1_, p_217638_2_);
|
||||
+ float alpha = (float)(i >> 24 & 255) / 255.0F;
|
||||
float f = (float)(i >> 16 & 255) / 255.0F;
|
||||
float f1 = (float)(i >> 8 & 255) / 255.0F;
|
||||
float f2 = (float)(i & 255) / 255.0F;
|
||||
@@ -145,15 +146,15 @@
|
||||
float f24 = 1.0F * f;
|
||||
float f25 = 1.0F * f1;
|
||||
float f26 = 1.0F * f2;
|
||||
- p_217638_3_.func_181662_b(d0 + 0.0D, d1 + (double)f7, d2 + 0.0D).func_181666_a(f24, f25, f26, 1.0F).func_187315_a((double)f12, (double)f16).func_187314_a(k, l).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d0 + 0.0D, d1 + (double)f8, d2 + 1.0D).func_181666_a(f24, f25, f26, 1.0F).func_187315_a((double)f13, (double)f17).func_187314_a(k, l).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d0 + 1.0D, d1 + (double)f9, d2 + 1.0D).func_181666_a(f24, f25, f26, 1.0F).func_187315_a((double)f14, (double)f18).func_187314_a(k, l).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d0 + 1.0D, d1 + (double)f10, d2 + 0.0D).func_181666_a(f24, f25, f26, 1.0F).func_187315_a((double)f15, (double)f19).func_187314_a(k, l).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d0 + 0.0D, d1 + (double)f7, d2 + 0.0D).func_181666_a(f24, f25, f26, alpha).func_187315_a((double)f12, (double)f16).func_187314_a(k, l).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d0 + 0.0D, d1 + (double)f8, d2 + 1.0D).func_181666_a(f24, f25, f26, alpha).func_187315_a((double)f13, (double)f17).func_187314_a(k, l).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d0 + 1.0D, d1 + (double)f9, d2 + 1.0D).func_181666_a(f24, f25, f26, alpha).func_187315_a((double)f14, (double)f18).func_187314_a(k, l).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d0 + 1.0D, d1 + (double)f10, d2 + 0.0D).func_181666_a(f24, f25, f26, alpha).func_187315_a((double)f15, (double)f19).func_187314_a(k, l).func_181675_d();
|
||||
if (p_217638_4_.func_205586_a(p_217638_1_, p_217638_2_.func_177984_a())) {
|
||||
- p_217638_3_.func_181662_b(d0 + 0.0D, d1 + (double)f7, d2 + 0.0D).func_181666_a(f24, f25, f26, 1.0F).func_187315_a((double)f12, (double)f16).func_187314_a(k, l).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d0 + 1.0D, d1 + (double)f10, d2 + 0.0D).func_181666_a(f24, f25, f26, 1.0F).func_187315_a((double)f15, (double)f19).func_187314_a(k, l).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d0 + 1.0D, d1 + (double)f9, d2 + 1.0D).func_181666_a(f24, f25, f26, 1.0F).func_187315_a((double)f14, (double)f18).func_187314_a(k, l).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d0 + 0.0D, d1 + (double)f8, d2 + 1.0D).func_181666_a(f24, f25, f26, 1.0F).func_187315_a((double)f13, (double)f17).func_187314_a(k, l).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d0 + 0.0D, d1 + (double)f7, d2 + 0.0D).func_181666_a(f24, f25, f26, alpha).func_187315_a((double)f12, (double)f16).func_187314_a(k, l).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d0 + 1.0D, d1 + (double)f10, d2 + 0.0D).func_181666_a(f24, f25, f26, alpha).func_187315_a((double)f15, (double)f19).func_187314_a(k, l).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d0 + 1.0D, d1 + (double)f9, d2 + 1.0D).func_181666_a(f24, f25, f26, alpha).func_187315_a((double)f14, (double)f18).func_187314_a(k, l).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d0 + 0.0D, d1 + (double)f8, d2 + 1.0D).func_181666_a(f24, f25, f26, alpha).func_187315_a((double)f13, (double)f17).func_187314_a(k, l).func_181675_d();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,10 +169,10 @@
|
||||
float f37 = 0.5F * f;
|
||||
float f38 = 0.5F * f1;
|
||||
float f40 = 0.5F * f2;
|
||||
- p_217638_3_.func_181662_b(d0, d1, d2 + 1.0D).func_181666_a(f37, f38, f40, 1.0F).func_187315_a((double)f31, (double)f36).func_187314_a(j2, k2).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d0, d1, d2).func_181666_a(f37, f38, f40, 1.0F).func_187315_a((double)f31, (double)f34).func_187314_a(j2, k2).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d0 + 1.0D, d1, d2).func_181666_a(f37, f38, f40, 1.0F).func_187315_a((double)f32, (double)f34).func_187314_a(j2, k2).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d0 + 1.0D, d1, d2 + 1.0D).func_181666_a(f37, f38, f40, 1.0F).func_187315_a((double)f32, (double)f36).func_187314_a(j2, k2).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d0, d1, d2 + 1.0D).func_181666_a(f37, f38, f40, alpha).func_187315_a((double)f31, (double)f36).func_187314_a(j2, k2).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d0, d1, d2).func_181666_a(f37, f38, f40, alpha).func_187315_a((double)f31, (double)f34).func_187314_a(j2, k2).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d0 + 1.0D, d1, d2).func_181666_a(f37, f38, f40, alpha).func_187315_a((double)f32, (double)f34).func_187314_a(j2, k2).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d0 + 1.0D, d1, d2 + 1.0D).func_181666_a(f37, f38, f40, alpha).func_187315_a((double)f32, (double)f36).func_187314_a(j2, k2).func_181675_d();
|
||||
flag7 = true;
|
||||
}
|
||||
|
||||
@@ -245,15 +246,15 @@
|
||||
float f28 = 1.0F * f27 * f;
|
||||
float f29 = 1.0F * f27 * f1;
|
||||
float f30 = 1.0F * f27 * f2;
|
||||
- p_217638_3_.func_181662_b(d3, d1 + (double)f33, d4).func_181666_a(f28, f29, f30, 1.0F).func_187315_a((double)f45, (double)f47).func_187314_a(j1, k1).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d5, d1 + (double)f35, d6).func_181666_a(f28, f29, f30, 1.0F).func_187315_a((double)f46, (double)f48).func_187314_a(j1, k1).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d5, d1 + 0.0D, d6).func_181666_a(f28, f29, f30, 1.0F).func_187315_a((double)f46, (double)f49).func_187314_a(j1, k1).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d3, d1 + 0.0D, d4).func_181666_a(f28, f29, f30, 1.0F).func_187315_a((double)f45, (double)f49).func_187314_a(j1, k1).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d3, d1 + (double)f33, d4).func_181666_a(f28, f29, f30, alpha).func_187315_a((double)f45, (double)f47).func_187314_a(j1, k1).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d5, d1 + (double)f35, d6).func_181666_a(f28, f29, f30, alpha).func_187315_a((double)f46, (double)f48).func_187314_a(j1, k1).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d5, d1 + 0.0D, d6).func_181666_a(f28, f29, f30, alpha).func_187315_a((double)f46, (double)f49).func_187314_a(j1, k1).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d3, d1 + 0.0D, d4).func_181666_a(f28, f29, f30, alpha).func_187315_a((double)f45, (double)f49).func_187314_a(j1, k1).func_181675_d();
|
||||
if (textureatlassprite2 != this.field_187501_d) {
|
||||
- p_217638_3_.func_181662_b(d3, d1 + 0.0D, d4).func_181666_a(f28, f29, f30, 1.0F).func_187315_a((double)f45, (double)f49).func_187314_a(j1, k1).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d5, d1 + 0.0D, d6).func_181666_a(f28, f29, f30, 1.0F).func_187315_a((double)f46, (double)f49).func_187314_a(j1, k1).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d5, d1 + (double)f35, d6).func_181666_a(f28, f29, f30, 1.0F).func_187315_a((double)f46, (double)f48).func_187314_a(j1, k1).func_181675_d();
|
||||
- p_217638_3_.func_181662_b(d3, d1 + (double)f33, d4).func_181666_a(f28, f29, f30, 1.0F).func_187315_a((double)f45, (double)f47).func_187314_a(j1, k1).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d3, d1 + 0.0D, d4).func_181666_a(f28, f29, f30, alpha).func_187315_a((double)f45, (double)f49).func_187314_a(j1, k1).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d5, d1 + 0.0D, d6).func_181666_a(f28, f29, f30, alpha).func_187315_a((double)f46, (double)f49).func_187314_a(j1, k1).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d5, d1 + (double)f35, d6).func_181666_a(f28, f29, f30, alpha).func_187315_a((double)f46, (double)f48).func_187314_a(j1, k1).func_181675_d();
|
||||
+ p_217638_3_.func_181662_b(d3, d1 + (double)f33, d4).func_181666_a(f28, f29, f30, alpha).func_187315_a((double)f45, (double)f47).func_187314_a(j1, k1).func_181675_d();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/client/renderer/ItemRenderer.java
|
||||
+++ b/net/minecraft/client/renderer/ItemRenderer.java
|
||||
@@ -51,13 +51,14 @@
|
||||
@@ -51,7 +51,7 @@
|
||||
|
||||
public ItemRenderer(TextureManager p_i46552_1_, ModelManager p_i46552_2_, ItemColors p_i46552_3_) {
|
||||
this.field_175057_n = p_i46552_1_;
|
||||
@@ -9,14 +9,7 @@
|
||||
|
||||
for(Item item : Registry.field_212630_s) {
|
||||
if (!field_195411_c.contains(item)) {
|
||||
this.field_175059_m.func_199311_a(item, new ModelResourceLocation(Registry.field_212630_s.func_177774_c(item), "inventory"));
|
||||
}
|
||||
}
|
||||
+ net.minecraftforge.client.model.ModelLoader.onRegisterItems(this.field_175059_m);
|
||||
|
||||
this.field_184395_f = p_i46552_3_;
|
||||
}
|
||||
@@ -75,6 +76,10 @@
|
||||
@@ -75,6 +75,10 @@
|
||||
}
|
||||
|
||||
private void func_191967_a(IBakedModel p_191967_1_, int p_191967_2_, ItemStack p_191967_3_) {
|
||||
@@ -27,7 +20,7 @@
|
||||
Tessellator tessellator = Tessellator.func_178181_a();
|
||||
BufferBuilder bufferbuilder = tessellator.func_178180_c();
|
||||
bufferbuilder.func_181668_a(7, DefaultVertexFormats.field_176599_b);
|
||||
@@ -98,7 +103,7 @@
|
||||
@@ -98,7 +102,7 @@
|
||||
if (p_180454_2_.func_188618_c()) {
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.enableRescaleNormal();
|
||||
@@ -36,7 +29,7 @@
|
||||
} else {
|
||||
this.func_191961_a(p_180454_2_, p_180454_1_);
|
||||
if (p_180454_1_.func_77962_s()) {
|
||||
@@ -164,7 +169,7 @@
|
||||
@@ -164,7 +168,7 @@
|
||||
k = k | -16777216;
|
||||
}
|
||||
|
||||
@@ -45,7 +38,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -225,11 +230,8 @@
|
||||
@@ -225,11 +229,8 @@
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
|
||||
GlStateManager.pushMatrix();
|
||||
@@ -59,7 +52,7 @@
|
||||
|
||||
this.func_180454_a(p_184394_1_, p_184394_2_);
|
||||
GlStateManager.cullFace(GlStateManager.CullFace.BACK);
|
||||
@@ -260,7 +262,7 @@
|
||||
@@ -260,7 +261,7 @@
|
||||
GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
|
||||
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.func_180452_a(p_191962_2_, p_191962_3_, p_191962_4_.func_177556_c());
|
||||
@@ -68,7 +61,7 @@
|
||||
this.func_180454_a(p_191962_1_, p_191962_4_);
|
||||
GlStateManager.disableAlphaTest();
|
||||
GlStateManager.disableRescaleNormal();
|
||||
@@ -299,6 +301,7 @@
|
||||
@@ -299,6 +300,7 @@
|
||||
crashreportcategory.func_189529_a("Item Type", () -> {
|
||||
return String.valueOf((Object)p_184391_2_.func_77973_b());
|
||||
});
|
||||
@@ -76,7 +69,7 @@
|
||||
crashreportcategory.func_189529_a("Item Damage", () -> {
|
||||
return String.valueOf(p_184391_2_.func_77952_i());
|
||||
});
|
||||
@@ -330,9 +333,12 @@
|
||||
@@ -330,9 +332,12 @@
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.enableLighting();
|
||||
GlStateManager.enableDepthTest();
|
||||
@@ -90,7 +83,7 @@
|
||||
GlStateManager.disableLighting();
|
||||
GlStateManager.disableDepthTest();
|
||||
GlStateManager.disableTexture();
|
||||
@@ -340,11 +346,9 @@
|
||||
@@ -340,11 +345,9 @@
|
||||
GlStateManager.disableBlend();
|
||||
Tessellator tessellator = Tessellator.func_178181_a();
|
||||
BufferBuilder bufferbuilder = tessellator.func_178180_c();
|
||||
@@ -105,7 +98,7 @@
|
||||
this.func_181565_a(bufferbuilder, p_180453_3_ + 2, p_180453_4_ + 13, 13, 2, 0, 0, 0, 255);
|
||||
this.func_181565_a(bufferbuilder, p_180453_3_ + 2, p_180453_4_ + 13, i, 1, j >> 16 & 255, j >> 8 & 255, j & 255, 255);
|
||||
GlStateManager.enableBlend();
|
||||
@@ -383,4 +387,9 @@
|
||||
@@ -383,4 +386,9 @@
|
||||
public void func_195410_a(IResourceManager p_195410_1_) {
|
||||
this.field_175059_m.func_178085_b();
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
BlockPos blockpos2 = chunkrender4.func_178568_j().func_177982_a(8, 8, 8);
|
||||
boolean flag3 = blockpos2.func_177951_i(blockpos1) < 768.0D;
|
||||
- if (!chunkrender4.func_188281_o() && !flag3) {
|
||||
+ if (net.minecraftforge.common.ForgeMod.alwaysSetupTerrainOffThread || !chunkrender4.func_188281_o() && !flag3) {
|
||||
+ if (net.minecraftforge.common.ForgeConfig.CLIENT.alwaysSetupTerrainOffThread.get() || !chunkrender4.func_188281_o() && !flag3) {
|
||||
this.field_175009_l.add(chunkrender4);
|
||||
} else {
|
||||
this.field_72777_q.func_213239_aq().func_76320_a("build near");
|
||||
@@ -102,15 +102,17 @@
|
||||
GlStateManager.enableBlend();
|
||||
GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
|
||||
GlStateManager.lineWidth(Math.max(2.5F, (float)this.field_72777_q.field_195558_d.func_198109_k() / 1920.0F * 2.5F));
|
||||
@@ -1994,7 +2008,7 @@
|
||||
@@ -1994,8 +2008,8 @@
|
||||
break;
|
||||
case 2001:
|
||||
BlockState blockstate = Block.func_196257_b(p_180439_4_);
|
||||
- if (!blockstate.func_196958_f()) {
|
||||
- SoundType soundtype = blockstate.func_215695_r();
|
||||
+ if (!blockstate.isAir(this.field_72769_h, p_180439_3_)) {
|
||||
SoundType soundtype = blockstate.func_215695_r();
|
||||
+ SoundType soundtype = blockstate.getSoundType(field_72769_h, p_180439_3_, null);
|
||||
this.field_72769_h.func_184156_a(p_180439_3_, soundtype.func_185845_c(), SoundCategory.BLOCKS, (soundtype.func_185843_a() + 1.0F) / 2.0F, soundtype.func_185847_b() * 0.8F, false);
|
||||
}
|
||||
|
||||
@@ -2118,6 +2132,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,9 +11,10 @@
|
||||
boolean flag = this.func_188363_b(p_188361_9_);
|
||||
- this.func_215333_a(this.func_177181_a(armoritem, flag));
|
||||
- if (armoritem instanceof DyeableArmorItem) {
|
||||
- int i = ((DyeableArmorItem)armoritem).func_200886_f(itemstack);
|
||||
+ this.func_215333_a(this.getArmorResource(p_188361_1_, itemstack, p_188361_9_, null));
|
||||
+ if (armoritem instanceof net.minecraft.item.IDyeableArmorItem) { // Allow this for anything, not only cloth
|
||||
int i = ((DyeableArmorItem)armoritem).func_200886_f(itemstack);
|
||||
+ int i = ((net.minecraft.item.IDyeableArmorItem)armoritem).func_200886_f(itemstack);
|
||||
float f = (float)(i >> 16 & 255) / 255.0F;
|
||||
float f1 = (float)(i >> 8 & 255) / 255.0F;
|
||||
float f2 = (float)(i & 255) / 255.0F;
|
||||
|
||||
@@ -10,17 +10,17 @@
|
||||
public boolean func_178309_b() {
|
||||
return this.field_178315_d != null ? this.field_178315_d.func_178309_b() : this.field_178322_i;
|
||||
}
|
||||
@@ -90,6 +93,10 @@
|
||||
private ItemOverrideList func_217646_a(ModelBakery p_217646_1_, BlockModel p_217646_2_) {
|
||||
@@ -91,6 +94,10 @@
|
||||
return this.field_187968_k.isEmpty() ? ItemOverrideList.field_188022_a : new ItemOverrideList(p_217646_1_, p_217646_2_, p_217646_1_::func_209597_a, this.field_187968_k);
|
||||
}
|
||||
+
|
||||
|
||||
+ public ItemOverrideList getOverrides(ModelBakery p_217646_1_, BlockModel p_217646_2_, Function<ResourceLocation, TextureAtlasSprite> textureGetter, net.minecraft.client.renderer.vertex.VertexFormat format) {
|
||||
+ return this.field_187968_k.isEmpty() ? ItemOverrideList.field_188022_a : new ItemOverrideList(p_217646_1_, p_217646_2_, p_217646_1_::func_209597_a, textureGetter, this.field_187968_k, format);
|
||||
+ }
|
||||
|
||||
+
|
||||
public Collection<ResourceLocation> func_187965_e() {
|
||||
Set<ResourceLocation> set = Sets.newHashSet();
|
||||
|
||||
@@ -160,25 +167,33 @@
|
||||
return set1;
|
||||
}
|
||||
@@ -38,7 +38,7 @@
|
||||
public IBakedModel func_217644_a(ModelBakery p_217644_1_, BlockModel p_217644_2_, Function<ResourceLocation, TextureAtlasSprite> p_217644_3_, ISprite p_217644_4_) {
|
||||
+ return bake(p_217644_1_, p_217644_2_, p_217644_3_, p_217644_4_, net.minecraft.client.renderer.vertex.DefaultVertexFormats.field_176599_b);
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ public IBakedModel bake(ModelBakery p_217644_1_, BlockModel p_217644_2_, Function<ResourceLocation, TextureAtlasSprite> p_217644_3_, ISprite p_217644_4_, net.minecraft.client.renderer.vertex.VertexFormat format) {
|
||||
TextureAtlasSprite textureatlassprite = p_217644_3_.apply(new ResourceLocation(this.func_178308_c("particle")));
|
||||
if (this.func_178310_f() == ModelBakery.field_177616_r) {
|
||||
@@ -57,7 +57,7 @@
|
||||
+ simplebakedmodel$builder.func_177648_a(makeBakedQuad(blockpart, blockpartface, textureatlassprite1, direction, p_217644_4_));
|
||||
} else {
|
||||
- simplebakedmodel$builder.func_177650_a(p_217644_4_.func_188048_b().func_177523_a(blockpartface.field_178244_b), func_217645_a(blockpart, blockpartface, textureatlassprite1, direction, p_217644_4_));
|
||||
+ simplebakedmodel$builder.func_177650_a(p_217644_4_.getState().apply(java.util.Optional.empty()).map(trsr -> trsr.rotate(blockpartface.field_178244_b)).orElse(blockpartface.field_178244_b), makeBakedQuad(blockpart, blockpartface, textureatlassprite1, direction, p_217644_4_));
|
||||
+ simplebakedmodel$builder.func_177650_a(p_217644_4_.getState().apply(java.util.Optional.empty()).map(trsr -> trsr.rotateTransform(blockpartface.field_178244_b)).orElse(blockpartface.field_178244_b), makeBakedQuad(blockpart, blockpartface, textureatlassprite1, direction, p_217644_4_));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -7,11 +7,11 @@
|
||||
+ @Deprecated
|
||||
public static BlockModelDefinition func_209577_a(BlockModelDefinition.ContainerHolder p_209577_0_, Reader p_209577_1_) {
|
||||
- return JSONUtils.func_193839_a(p_209577_0_.field_209575_a, p_209577_1_, BlockModelDefinition.class);
|
||||
+ return fromJson(p_209577_0_, p_209577_1_, null);
|
||||
+ return fromJson(p_209577_0_, p_209577_1_, null, null, null);
|
||||
}
|
||||
|
||||
+ public static BlockModelDefinition fromJson(BlockModelDefinition.ContainerHolder containerHolderIn, Reader readerIn, @Nullable net.minecraft.util.ResourceLocation location) {
|
||||
+ return net.minecraftforge.client.model.BlockStateLoader.load(readerIn, location, containerHolderIn.field_209575_a);
|
||||
+ public static BlockModelDefinition fromJson(BlockModelDefinition.ContainerHolder containerHolderIn, Reader readerIn, @Nullable net.minecraft.util.ResourceLocation location, @Nullable ModelBakery bakery, @Nullable java.util.function.BiConsumer<net.minecraft.util.ResourceLocation, IUnbakedModel> modelConsumer) {
|
||||
+ return net.minecraftforge.client.model.BlockStateLoader.load(readerIn, location, containerHolderIn.field_209575_a, bakery, modelConsumer);
|
||||
+ }
|
||||
+
|
||||
public BlockModelDefinition(Map<String, VariantList> p_i46572_1_, Multipart p_i46572_2_) {
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
+ }
|
||||
+
|
||||
+ private void fillVertexData(int[] p_188015_1_, int p_188015_2_, Direction p_188015_3_, BlockFaceUV p_188015_4_, float[] p_188015_5_, TextureAtlasSprite p_188015_6_, net.minecraftforge.common.model.ITransformation p_188015_7_, @Nullable BlockPartRotation p_188015_8_, boolean p_188015_9_) {
|
||||
+ Direction direction = p_188015_7_.rotate(p_188015_3_);
|
||||
+ Direction direction = p_188015_7_.rotateTransform(p_188015_3_);
|
||||
int i = p_188015_9_ ? this.func_178413_a(direction) : -1;
|
||||
FaceDirection.VertexInformation facedirection$vertexinformation = FaceDirection.func_179027_a(p_188015_3_).func_179025_a(p_188015_2_);
|
||||
Vector3f vector3f = new Vector3f(p_188015_5_[facedirection$vertexinformation.field_179184_a], p_188015_5_[facedirection$vertexinformation.field_179182_b], p_188015_5_[facedirection$vertexinformation.field_179183_c]);
|
||||
|
||||
@@ -8,17 +8,55 @@
|
||||
+ private final Map<Triple<ResourceLocation, net.minecraftforge.common.model.IModelState, Boolean>, IBakedModel> field_217850_G = Maps.newHashMap();
|
||||
private final Map<ResourceLocation, IUnbakedModel> field_217851_H = Maps.newHashMap();
|
||||
private final Map<ResourceLocation, IBakedModel> field_217852_I = Maps.newHashMap();
|
||||
private final AtlasTexture.SheetData field_217853_J;
|
||||
@@ -288,7 +288,7 @@
|
||||
private AtlasTexture.SheetData field_217853_J;
|
||||
@@ -107,9 +107,17 @@
|
||||
});
|
||||
|
||||
public ModelBakery(IResourceManager p_i51735_1_, AtlasTexture p_i51735_2_, BlockColors p_i51735_3_, IProfiler p_i51735_4_) {
|
||||
+ this(p_i51735_1_, p_i51735_2_, p_i51735_3_, true);
|
||||
+ processLoading(p_i51735_4_);
|
||||
+ }
|
||||
+
|
||||
+ protected ModelBakery(IResourceManager p_i51735_1_, AtlasTexture p_i51735_2_, BlockColors p_i51735_3_, boolean vanillaBakery) {
|
||||
this.field_177598_f = p_i51735_1_;
|
||||
this.field_177609_j = p_i51735_2_;
|
||||
this.field_225365_D = p_i51735_3_;
|
||||
+ }
|
||||
+
|
||||
+ protected void processLoading(IProfiler p_i51735_4_) {
|
||||
p_i51735_4_.func_76320_a("missing_model");
|
||||
|
||||
try {
|
||||
@@ -142,12 +150,19 @@
|
||||
|
||||
p_i51735_4_.func_219895_b("special");
|
||||
this.func_217843_a(new ModelResourceLocation("minecraft:trident_in_hand#inventory"));
|
||||
+ for (ResourceLocation rl : getSpecialModels()) {
|
||||
+ // Same as func_217843_a but without restricting to MRL's
|
||||
+ IUnbakedModel iunbakedmodel = this.func_209597_a(rl);
|
||||
+ this.field_217849_F.put(rl, iunbakedmodel);
|
||||
+ this.field_217851_H.put(rl, iunbakedmodel);
|
||||
+ }
|
||||
p_i51735_4_.func_219895_b("textures");
|
||||
Set<String> set = Sets.newLinkedHashSet();
|
||||
Set<ResourceLocation> set1 = this.field_217851_H.values().stream().flatMap((p_217838_2_) -> {
|
||||
return p_217838_2_.func_209559_a(this::func_209597_a, set).stream();
|
||||
}).collect(Collectors.toSet());
|
||||
set1.addAll(field_177602_b);
|
||||
+ net.minecraftforge.client.ForgeHooksClient.gatherFluidTextures(set1);
|
||||
set.forEach((p_217833_0_) -> {
|
||||
field_177603_c.warn("Unable to resolve texture reference: {}", (Object)p_217833_0_);
|
||||
});
|
||||
@@ -288,7 +303,7 @@
|
||||
{
|
||||
lvt_13_5_ = this.field_177598_f.func_199004_b(resourcelocation1).stream().map((p_217839_1_) -> {
|
||||
try (InputStream inputstream = p_217839_1_.func_199027_b()) {
|
||||
- Pair pair2 = Pair.of(p_217839_1_.func_199026_d(), BlockModelDefinition.func_209577_a(this.field_209610_F, new InputStreamReader(inputstream, StandardCharsets.UTF_8)));
|
||||
+ Pair<String,BlockModelDefinition> pair2 = Pair.of(p_217839_1_.func_199026_d(), BlockModelDefinition.fromJson(this.field_209610_F, new InputStreamReader(inputstream, StandardCharsets.UTF_8), p_209598_1_));
|
||||
- Pair<String, BlockModelDefinition> pair2 = Pair.of(p_217839_1_.func_199026_d(), BlockModelDefinition.func_209577_a(this.field_209610_F, new InputStreamReader(inputstream, StandardCharsets.UTF_8)));
|
||||
+ Pair<String, BlockModelDefinition> pair2 = Pair.of(p_217839_1_.func_199026_d(), BlockModelDefinition.fromJson(this.field_209610_F, new InputStreamReader(inputstream, StandardCharsets.UTF_8), p_209598_1_, this, this::func_209593_a));
|
||||
return pair2;
|
||||
} catch (Exception exception1) {
|
||||
throw new ModelBakery.BlockStateDefinitionException(String.format("Exception loading blockstate definition: '%s' in resourcepack: '%s': %s", p_217839_1_.func_199029_a(), p_217839_1_.func_199026_d(), exception1.getMessage()));
|
||||
@@ -404,7 +404,12 @@
|
||||
@@ -404,7 +419,12 @@
|
||||
|
||||
@Nullable
|
||||
public IBakedModel func_217845_a(ResourceLocation p_217845_1_, ISprite p_217845_2_) {
|
||||
@@ -32,7 +70,7 @@
|
||||
if (this.field_217850_G.containsKey(triple)) {
|
||||
return this.field_217850_G.get(triple);
|
||||
} else {
|
||||
@@ -412,11 +417,11 @@
|
||||
@@ -412,11 +432,11 @@
|
||||
if (iunbakedmodel instanceof BlockModel) {
|
||||
BlockModel blockmodel = (BlockModel)iunbakedmodel;
|
||||
if (blockmodel.func_178310_f() == field_177606_o) {
|
||||
@@ -46,3 +84,14 @@
|
||||
this.field_217850_G.put(triple, ibakedmodel);
|
||||
return ibakedmodel;
|
||||
}
|
||||
@@ -471,6 +491,10 @@
|
||||
return this.field_225367_M;
|
||||
}
|
||||
|
||||
+ public Set<ResourceLocation> getSpecialModels() {
|
||||
+ return java.util.Collections.emptySet();
|
||||
+ }
|
||||
+
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
static class BlockStateDefinitionException extends RuntimeException {
|
||||
public BlockStateDefinitionException(String p_i49526_1_) {
|
||||
@@ -16,6 +16,6 @@
|
||||
+
|
||||
+ public java.util.Optional<net.minecraftforge.common.model.TRSRTransformation> apply(java.util.Optional<? extends net.minecraftforge.common.model.IModelPart> part) { return net.minecraftforge.client.ForgeHooksClient.applyTransform(this, part); }
|
||||
+ public javax.vecmath.Matrix4f getMatrixVec() { return net.minecraftforge.common.model.TRSRTransformation.from(this).getMatrixVec(); }
|
||||
+ public Direction rotate(Direction facing) { return func_177523_a(facing); }
|
||||
+ public Direction rotateTransform(Direction facing) { return func_177523_a(facing); }
|
||||
+ public int rotate(Direction facing, int vertexIndex) { return func_177520_a(facing, vertexIndex); }
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
private final ResourceLocation field_188050_a;
|
||||
private final ModelRotation field_188051_b;
|
||||
private final boolean field_188052_c;
|
||||
@@ -30,10 +30,16 @@
|
||||
@@ -30,6 +30,7 @@
|
||||
return this.field_188050_a;
|
||||
}
|
||||
|
||||
@@ -17,12 +17,3 @@
|
||||
public ModelRotation func_188048_b() {
|
||||
return this.field_188051_b;
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ public net.minecraftforge.common.model.IModelState getState() {
|
||||
+ return this.field_188051_b;
|
||||
+ }
|
||||
+
|
||||
public boolean func_188049_c() {
|
||||
return this.field_188052_c;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
--- a/net/minecraft/client/renderer/texture/NativeImage.java
|
||||
+++ b/net/minecraft/client/renderer/texture/NativeImage.java
|
||||
@@ -172,7 +172,7 @@
|
||||
public int func_195709_a(int p_195709_1_, int p_195709_2_) {
|
||||
if (this.field_211680_b != NativeImage.PixelFormat.RGBA) {
|
||||
throw new IllegalArgumentException(String.format("getPixelRGBA only works on RGBA images; have %s", this.field_211680_b));
|
||||
- } else if (p_195709_1_ <= this.field_195719_a && p_195709_2_ <= this.field_195720_b) {
|
||||
+ } else if (p_195709_1_ >= 0 && p_195709_2_ >= 0 && p_195709_1_ < this.field_195719_a && p_195709_2_ < this.field_195720_b) { //Fix MC-162953 bounds checks in `NativeImage`
|
||||
this.func_195696_g();
|
||||
return MemoryUtil.memIntBuffer(this.field_195722_d, this.field_195723_e).get(p_195709_1_ + p_195709_2_ * this.field_195719_a);
|
||||
} else {
|
||||
@@ -183,7 +183,7 @@
|
||||
public void func_195700_a(int p_195700_1_, int p_195700_2_, int p_195700_3_) {
|
||||
if (this.field_211680_b != NativeImage.PixelFormat.RGBA) {
|
||||
throw new IllegalArgumentException(String.format("getPixelRGBA only works on RGBA images; have %s", this.field_211680_b));
|
||||
- } else if (p_195700_1_ <= this.field_195719_a && p_195700_2_ <= this.field_195720_b) {
|
||||
+ } else if (p_195700_1_ >= 0 && p_195700_2_ >= 0 && p_195700_1_ < this.field_195719_a && p_195700_2_ < this.field_195720_b) { //Fix MC-162953 bounds checks in `NativeImage`
|
||||
this.func_195696_g();
|
||||
MemoryUtil.memIntBuffer(this.field_195722_d, this.field_195723_e).put(p_195700_1_ + p_195700_2_ * this.field_195719_a, p_195700_3_);
|
||||
} else {
|
||||
@@ -194,7 +194,7 @@
|
||||
public byte func_211675_e(int p_211675_1_, int p_211675_2_) {
|
||||
if (!this.field_211680_b.func_211653_r()) {
|
||||
throw new IllegalArgumentException(String.format("no luminance or alpha in %s", this.field_211680_b));
|
||||
- } else if (p_211675_1_ <= this.field_195719_a && p_211675_2_ <= this.field_195720_b) {
|
||||
+ } else if (p_211675_1_ >= 0 && p_211675_2_ >= 0 && p_211675_1_ < this.field_195719_a && p_211675_2_ < this.field_195720_b) { //Fix MC-162953 bounds checks in `NativeImage`
|
||||
return MemoryUtil.memByteBuffer(this.field_195722_d, this.field_195723_e).get((p_211675_1_ + p_211675_2_ * this.field_195719_a) * this.field_211680_b.func_211651_a() + this.field_211680_b.func_211647_v() / 8);
|
||||
} else {
|
||||
throw new IllegalArgumentException(String.format("(%s, %s) outside of image bounds (%s, %s)", p_211675_1_, p_211675_2_, this.field_195719_a, this.field_195720_b));
|
||||
@@ -9,19 +9,19 @@
|
||||
private static final Comparator<Stitcher.Holder> field_217797_a = Comparator.<Stitcher.Holder, Integer>comparing((p_217793_0_) -> {
|
||||
return -p_217793_0_.field_94201_d;
|
||||
}).thenComparing((p_217795_0_) -> {
|
||||
@@ -53,6 +55,12 @@
|
||||
list.sort(field_217797_a);
|
||||
@@ -54,6 +56,12 @@
|
||||
|
||||
for(Stitcher.Holder stitcher$holder : list) {
|
||||
if (!this.func_94310_b(stitcher$holder)) {
|
||||
+ LOGGER.info(new net.minecraftforge.fml.loading.AdvancedLogMessageAdapter(sb->{
|
||||
+ sb.append("Unable to fit: ").append(stitcher$holder.field_98151_a.func_195668_m());
|
||||
+ sb.append(" - size: ").append(stitcher$holder.field_98151_a.func_94211_a()).append("x").append(stitcher$holder.field_98151_a.func_94216_b());
|
||||
+ sb.append(" - Maybe try a lower resolution resourcepack?\n");
|
||||
+ list.forEach(h-> sb.append("\t").append(h).append("\n"));
|
||||
+ }));
|
||||
if (!this.func_94310_b(stitcher$holder)) {
|
||||
throw new StitcherException(stitcher$holder.field_98151_a, list.stream().map((p_225334_0_) -> {
|
||||
return p_225334_0_.field_98151_a;
|
||||
}).collect(ImmutableList.toImmutableList()));
|
||||
@@ -107,7 +115,7 @@
|
||||
boolean flag4 = flag2 && j != l;
|
||||
boolean flag;
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
--- a/net/minecraft/client/renderer/texture/TextureManager.java
|
||||
+++ b/net/minecraft/client/renderer/texture/TextureManager.java
|
||||
@@ -49,7 +49,7 @@
|
||||
}
|
||||
|
||||
public boolean func_110580_a(ResourceLocation p_110580_1_, ITickableTextureObject p_110580_2_) {
|
||||
- if (this.func_110579_a(p_110580_1_, p_110580_2_)) {
|
||||
+ if (this.func_110579_a(p_110580_1_, (ITextureObject)p_110580_2_)) { //TODO: Move to MCPConfig
|
||||
this.field_110583_b.add(p_110580_2_);
|
||||
return true;
|
||||
} else {
|
||||
@@ -125,6 +125,7 @@
|
||||
public void func_147645_c(ResourceLocation p_147645_1_) {
|
||||
ITextureObject itextureobject = this.func_110581_b(p_147645_1_);
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
--- a/net/minecraft/command/impl/LocateCommand.java
|
||||
+++ b/net/minecraft/command/impl/LocateCommand.java
|
||||
@@ -50,7 +50,13 @@
|
||||
return func_198534_a(p_204758_0_.getSource(), "Shipwreck");
|
||||
})).then(Commands.func_197057_a("Village").executes((p_218858_0_) -> {
|
||||
return func_198534_a(p_218858_0_.getSource(), "Village");
|
||||
- })));
|
||||
+ // FORGE: Support modded structures via registry name
|
||||
+ })).then(Commands.func_197056_a("structure_type", net.minecraft.command.arguments.ResourceLocationArgument.func_197197_a())
|
||||
+ .suggests((ctx, sb) -> net.minecraft.command.ISuggestionProvider.func_197013_a(
|
||||
+ net.minecraftforge.registries.GameData.getStructureFeatures().func_148742_b().stream()
|
||||
+ .map(net.minecraft.util.ResourceLocation::toString), sb))
|
||||
+ .executes(ctx -> func_198534_a(ctx.getSource(), ctx.getArgument("structure_type", net.minecraft.util.ResourceLocation.class).toString().replace("minecraft:", ""))
|
||||
+ )));
|
||||
}
|
||||
|
||||
private static int func_198534_a(CommandSource p_198534_0_, String p_198534_1_) throws CommandSyntaxException {
|
||||
@@ -0,0 +1,47 @@
|
||||
--- a/net/minecraft/data/LootTableProvider.java
|
||||
+++ b/net/minecraft/data/LootTableProvider.java
|
||||
@@ -42,7 +42,7 @@
|
||||
public void func_200398_a(DirectoryCache p_200398_1_) {
|
||||
Path path = this.field_218443_d.func_200391_b();
|
||||
Map<ResourceLocation, LootTable> map = Maps.newHashMap();
|
||||
- this.field_218444_e.forEach((p_218438_1_) -> {
|
||||
+ this.getTables().forEach((p_218438_1_) -> {
|
||||
p_218438_1_.getFirst().get().accept((p_218437_2_, p_218437_3_) -> {
|
||||
if (map.put(p_218437_2_, p_218437_3_.func_216039_a(p_218438_1_.getSecond()).func_216038_b()) != null) {
|
||||
throw new IllegalStateException("Duplicate loot table " + p_218437_2_);
|
||||
@@ -51,13 +51,8 @@
|
||||
});
|
||||
ValidationResults validationresults = new ValidationResults();
|
||||
|
||||
- for(ResourceLocation resourcelocation : Sets.difference(LootTables.func_215796_a(), map.keySet())) {
|
||||
- validationresults.func_216105_a("Missing built-in table: " + resourcelocation);
|
||||
- }
|
||||
+ validate(map, validationresults);
|
||||
|
||||
- map.forEach((p_218436_2_, p_218436_3_) -> {
|
||||
- LootTableManager.func_215302_a(validationresults, p_218436_2_, p_218436_3_, map::get);
|
||||
- });
|
||||
Multimap<String, String> multimap = validationresults.func_216106_a();
|
||||
if (!multimap.isEmpty()) {
|
||||
multimap.forEach((p_218435_0_, p_218435_1_) -> {
|
||||
@@ -78,6 +73,20 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ protected List<Pair<Supplier<Consumer<BiConsumer<ResourceLocation, LootTable.Builder>>>, LootParameterSet>> getTables() {
|
||||
+ return field_218444_e;
|
||||
+ }
|
||||
+
|
||||
+ protected void validate(Map<ResourceLocation, LootTable> map, ValidationResults validationresults) {
|
||||
+ for(ResourceLocation resourcelocation : Sets.difference(LootTables.func_215796_a(), map.keySet())) {
|
||||
+ validationresults.func_216105_a("Missing built-in table: " + resourcelocation);
|
||||
+ }
|
||||
+
|
||||
+ map.forEach((p_218436_2_, p_218436_3_) -> {
|
||||
+ LootTableManager.func_215302_a(validationresults, p_218436_2_, p_218436_3_, map::get);
|
||||
+ });
|
||||
+ }
|
||||
+
|
||||
private static Path func_218439_a(Path p_218439_0_, ResourceLocation p_218439_1_) {
|
||||
return p_218439_0_.resolve("data/" + p_218439_1_.func_110624_b() + "/loot_tables/" + p_218439_1_.func_110623_a() + ".json");
|
||||
}
|
||||
@@ -7,10 +7,11 @@
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
@@ -21,8 +22,10 @@
|
||||
@@ -21,8 +22,11 @@
|
||||
OptionSpec<Void> optionspec6 = optionparser.accepts("all", "Include all generators");
|
||||
OptionSpec<String> optionspec7 = optionparser.accepts("output", "Output folder").withRequiredArg().defaultsTo("generated");
|
||||
OptionSpec<String> optionspec8 = optionparser.accepts("input", "Input folder").withRequiredArg();
|
||||
+ OptionSpec<String> existing = optionparser.accepts("existing", "Existing resource packs that generated resources can reference").withRequiredArg();
|
||||
+ OptionSpec<File> gameDir = optionparser.accepts("gameDir").withRequiredArg().ofType(File.class).defaultsTo(new File(".")).required();
|
||||
+ OptionSpec<String> mod = optionparser.accepts("mod", "A modid to dump").withRequiredArg().withValuesSeparatedBy(",");
|
||||
OptionSet optionset = optionparser.parse(p_main_0_);
|
||||
@@ -19,7 +20,7 @@
|
||||
Path path = Paths.get(optionspec7.value(optionset));
|
||||
boolean flag = optionset.has(optionspec6);
|
||||
boolean flag1 = flag || optionset.has(optionspec2);
|
||||
@@ -30,10 +33,11 @@
|
||||
@@ -30,10 +34,12 @@
|
||||
boolean flag3 = flag || optionset.has(optionspec3);
|
||||
boolean flag4 = flag || optionset.has(optionspec4);
|
||||
boolean flag5 = flag || optionset.has(optionspec5);
|
||||
@@ -28,8 +29,9 @@
|
||||
- }).collect(Collectors.toList()), flag1, flag2, flag3, flag4, flag5);
|
||||
- datagenerator.func_200392_c();
|
||||
+ Collection<Path> inputs = optionset.valuesOf(optionspec8).stream().map(Paths::get).collect(Collectors.toList());
|
||||
+ Collection<Path> existingPacks = optionset.valuesOf(existing).stream().map(Paths::get).collect(Collectors.toList());
|
||||
+ java.util.Set<String> mods = new java.util.HashSet<>(optionset.valuesOf(mod));
|
||||
+ net.minecraftforge.fml.ModLoader.get().runDataGenerator(mods, path, inputs, flag2, flag1, flag3, flag4, flag5);
|
||||
+ net.minecraftforge.fml.ModLoader.get().runDataGenerator(mods, path, inputs, existingPacks, flag2, flag1, flag3, flag4, flag5);
|
||||
+ if (mods.contains("minecraft") || mods.isEmpty())
|
||||
+ func_200264_a(mods.isEmpty() ? path : path.resolve("minecraft"), inputs, flag1, flag2, flag3, flag4, flag5).func_200392_c();
|
||||
} else {
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
--- a/net/minecraft/data/RecipeProvider.java
|
||||
+++ b/net/minecraft/data/RecipeProvider.java
|
||||
@@ -58,6 +58,7 @@
|
||||
|
||||
}
|
||||
});
|
||||
+ if (this.getClass() == RecipeProvider.class) //Forge: Subclasses don't need this.
|
||||
this.func_208310_b(p_200398_1_, Advancement.Builder.func_200278_a().func_200275_a("impossible", new ImpossibleTrigger.Instance()).func_200273_b(), path.resolve("data/minecraft/advancements/recipes/root.json"));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
--- a/net/minecraft/data/loot/BlockLootTables.java
|
||||
+++ b/net/minecraft/data/loot/BlockLootTables.java
|
||||
@@ -188,7 +188,7 @@
|
||||
return LootTable.func_216119_b();
|
||||
}
|
||||
|
||||
- public void accept(BiConsumer<ResourceLocation, LootTable.Builder> p_accept_1_) {
|
||||
+ protected void addTables() {
|
||||
this.func_218492_c(Blocks.field_196650_c);
|
||||
this.func_218492_c(Blocks.field_196652_d);
|
||||
this.func_218492_c(Blocks.field_196654_e);
|
||||
@@ -962,9 +962,13 @@
|
||||
this.func_218507_a(Blocks.field_196713_dt, func_218482_a());
|
||||
this.func_218507_a(Blocks.field_185778_de, func_218482_a());
|
||||
this.func_218507_a(Blocks.field_150474_ac, func_218482_a());
|
||||
+ }
|
||||
+
|
||||
+ public void accept(BiConsumer<ResourceLocation, LootTable.Builder> p_accept_1_) {
|
||||
+ this.addTables();
|
||||
Set<ResourceLocation> set = Sets.newHashSet();
|
||||
|
||||
- for(Block block : Registry.field_212618_g) {
|
||||
+ for(Block block : getKnownBlocks()) {
|
||||
ResourceLocation resourcelocation = block.func_220068_i();
|
||||
if (resourcelocation != LootTables.field_186419_a && set.add(resourcelocation)) {
|
||||
LootTable.Builder loottable$builder = this.field_218581_i.remove(resourcelocation);
|
||||
@@ -981,6 +985,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ protected Iterable<Block> getKnownBlocks() {
|
||||
+ return Registry.field_212618_g;
|
||||
+ }
|
||||
+
|
||||
public void func_218547_a(Block p_218547_1_) {
|
||||
this.func_218522_a(p_218547_1_, (p_218524_0_) -> {
|
||||
return func_218523_c(((FlowerPotBlock)p_218524_0_).func_220276_d());
|
||||
@@ -0,0 +1,49 @@
|
||||
--- a/net/minecraft/data/loot/EntityLootTables.java
|
||||
+++ b/net/minecraft/data/loot/EntityLootTables.java
|
||||
@@ -51,7 +51,7 @@
|
||||
return LootTable.func_216119_b().func_216040_a(LootPool.func_216096_a().func_216046_a(ConstantRange.func_215835_a(1)).func_216045_a(ItemLootEntry.func_216168_a(p_218583_0_))).func_216040_a(LootPool.func_216096_a().func_216046_a(ConstantRange.func_215835_a(1)).func_216045_a(TableLootEntry.func_216171_a(EntityType.field_200737_ac.func_220348_g())));
|
||||
}
|
||||
|
||||
- public void accept(BiConsumer<ResourceLocation, LootTable.Builder> p_accept_1_) {
|
||||
+ protected void addTables() {
|
||||
this.func_218582_a(EntityType.field_200789_c, LootTable.func_216119_b());
|
||||
this.func_218582_a(EntityType.field_200791_e, LootTable.func_216119_b());
|
||||
this.func_218582_a(EntityType.field_200792_f, LootTable.func_216119_b().func_216040_a(LootPool.func_216096_a().func_216046_a(ConstantRange.func_215835_a(1)).func_216045_a(ItemLootEntry.func_216168_a(Items.field_151072_bj).func_212841_b_(SetCount.func_215932_a(RandomValueRange.func_215837_a(0.0F, 1.0F))).func_212841_b_(LootingEnchantBonus.func_215915_a(RandomValueRange.func_215837_a(0.0F, 1.0F)))).func_212840_b_(KilledByPlayer.func_215994_b())));
|
||||
@@ -136,8 +136,12 @@
|
||||
this.func_218582_a(EntityType.field_200726_aE, LootTable.func_216119_b().func_216040_a(LootPool.func_216096_a().func_216046_a(ConstantRange.func_215835_a(1)).func_216045_a(ItemLootEntry.func_216168_a(Items.field_151078_bh).func_212841_b_(SetCount.func_215932_a(RandomValueRange.func_215837_a(0.0F, 2.0F))).func_212841_b_(LootingEnchantBonus.func_215915_a(RandomValueRange.func_215837_a(0.0F, 1.0F))))));
|
||||
this.func_218582_a(EntityType.field_200785_Y, LootTable.func_216119_b().func_216040_a(LootPool.func_216096_a().func_216046_a(ConstantRange.func_215835_a(1)).func_216045_a(ItemLootEntry.func_216168_a(Items.field_151078_bh).func_212841_b_(SetCount.func_215932_a(RandomValueRange.func_215837_a(0.0F, 1.0F))).func_212841_b_(LootingEnchantBonus.func_215915_a(RandomValueRange.func_215837_a(0.0F, 1.0F))))).func_216040_a(LootPool.func_216096_a().func_216046_a(ConstantRange.func_215835_a(1)).func_216045_a(ItemLootEntry.func_216168_a(Items.field_151074_bl).func_212841_b_(SetCount.func_215932_a(RandomValueRange.func_215837_a(0.0F, 1.0F))).func_212841_b_(LootingEnchantBonus.func_215915_a(RandomValueRange.func_215837_a(0.0F, 1.0F))))).func_216040_a(LootPool.func_216096_a().func_216046_a(ConstantRange.func_215835_a(1)).func_216045_a(ItemLootEntry.func_216168_a(Items.field_151043_k)).func_212840_b_(KilledByPlayer.func_215994_b()).func_212840_b_(RandomChanceWithLooting.func_216003_a(0.025F, 0.01F))));
|
||||
this.func_218582_a(EntityType.field_200727_aF, LootTable.func_216119_b().func_216040_a(LootPool.func_216096_a().func_216046_a(ConstantRange.func_215835_a(1)).func_216045_a(ItemLootEntry.func_216168_a(Items.field_151078_bh).func_212841_b_(SetCount.func_215932_a(RandomValueRange.func_215837_a(0.0F, 2.0F))).func_212841_b_(LootingEnchantBonus.func_215915_a(RandomValueRange.func_215837_a(0.0F, 1.0F))))).func_216040_a(LootPool.func_216096_a().func_216046_a(ConstantRange.func_215835_a(1)).func_216045_a(ItemLootEntry.func_216168_a(Items.field_151042_j)).func_216045_a(ItemLootEntry.func_216168_a(Items.field_151172_bF)).func_216045_a(ItemLootEntry.func_216168_a(Items.field_151174_bG)).func_212840_b_(KilledByPlayer.func_215994_b()).func_212840_b_(RandomChanceWithLooting.func_216003_a(0.025F, 0.01F))));
|
||||
+ }
|
||||
+
|
||||
+ public void accept(BiConsumer<ResourceLocation, LootTable.Builder> p_accept_1_) {
|
||||
+ this.addTables();
|
||||
Set<ResourceLocation> set = Sets.newHashSet();
|
||||
- Iterator iterator = Registry.field_212629_r.iterator();
|
||||
+ Iterator iterator = getKnownEntities().iterator();
|
||||
|
||||
EntityType<?> entitytype;
|
||||
ResourceLocation resourcelocation;
|
||||
@@ -149,7 +153,7 @@
|
||||
|
||||
entitytype = (EntityType)iterator.next();
|
||||
resourcelocation = entitytype.func_220348_g();
|
||||
- if (!field_222944_b.contains(entitytype) && entitytype.func_220339_d() == EntityClassification.MISC) {
|
||||
+ if (isNonLiving(entitytype)) {
|
||||
if (resourcelocation != LootTables.field_186419_a && this.field_218587_b.remove(resourcelocation) != null) {
|
||||
break;
|
||||
}
|
||||
@@ -166,6 +170,14 @@
|
||||
throw new IllegalStateException(String.format("Weird loottable '%s' for '%s', not a LivingEntity so should not have loot", resourcelocation, Registry.field_212629_r.func_177774_c(entitytype)));
|
||||
}
|
||||
|
||||
+ protected Iterable<EntityType<?>> getKnownEntities() {
|
||||
+ return Registry.field_212629_r;
|
||||
+ }
|
||||
+
|
||||
+ protected boolean isNonLiving(EntityType<?> entitytype) {
|
||||
+ return !field_222944_b.contains(entitytype) && entitytype.func_220339_d() == EntityClassification.MISC;
|
||||
+ }
|
||||
+
|
||||
protected void func_218582_a(EntityType<?> p_218582_1_, LootTable.Builder p_218582_2_) {
|
||||
this.func_218585_a(p_218582_1_.func_220348_g(), p_218582_2_);
|
||||
}
|
||||
@@ -1,6 +1,18 @@
|
||||
--- a/net/minecraft/dispenser/IDispenseItemBehavior.java
|
||||
+++ b/net/minecraft/dispenser/IDispenseItemBehavior.java
|
||||
@@ -370,15 +370,23 @@
|
||||
@@ -270,8 +270,9 @@
|
||||
world.func_175656_a(blockpos, Blocks.field_150480_ab.func_176223_P());
|
||||
} else if (FlintAndSteelItem.func_219997_a(blockstate)) {
|
||||
world.func_175656_a(blockpos, blockstate.func_206870_a(BlockStateProperties.field_208190_q, Boolean.valueOf(true)));
|
||||
- } else if (blockstate.func_177230_c() instanceof TNTBlock) {
|
||||
- TNTBlock.func_196534_a(world, blockpos);
|
||||
+ } else if (blockstate.isFlammable(world, blockpos, p_82487_1_.func_189992_e().func_177229_b(DispenserBlock.field_176441_a).func_176734_d())) {
|
||||
+ blockstate.catchFire(world, blockpos, p_82487_1_.func_189992_e().func_177229_b(DispenserBlock.field_176441_a).func_176734_d(), null);
|
||||
+ if (blockstate.func_177230_c() instanceof TNTBlock)
|
||||
world.func_217377_a(blockpos, false);
|
||||
} else {
|
||||
this.field_218407_b = false;
|
||||
@@ -370,15 +371,23 @@
|
||||
}
|
||||
|
||||
DispenserBlock.func_199774_a(Items.field_151097_aZ.func_199767_j(), new OptionalDispenseBehavior() {
|
||||
@@ -14,7 +26,7 @@
|
||||
- for(SheepEntity sheepentity : world.func_217357_a(SheepEntity.class, new AxisAlignedBB(blockpos))) {
|
||||
- if (sheepentity.func_70089_S() && !sheepentity.func_70892_o() && !sheepentity.func_70631_g_()) {
|
||||
- sheepentity.func_213612_dV();
|
||||
+ for(net.minecraft.entity.Entity entity : world.func_175674_a(null, new AxisAlignedBB(blockpos), e -> !e.func_175149_v() && e instanceof net.minecraftforge.common.IShearable)) {
|
||||
+ for(net.minecraft.entity.Entity entity : world.func_175674_a((net.minecraft.entity.Entity)null, new AxisAlignedBB(blockpos), e -> !e.func_175149_v() && e instanceof net.minecraftforge.common.IShearable)) {
|
||||
+ net.minecraftforge.common.IShearable target = (net.minecraftforge.common.IShearable)entity;
|
||||
+ if (target.isShearable(p_82487_2_, world, blockpos)) {
|
||||
+ java.util.List<ItemStack> drops = target.onSheared(p_82487_2_, entity.field_70170_p, blockpos,
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
float f = this.field_213325_aI.field_220315_a / 2.0F;
|
||||
float f1 = this.field_213325_aI.field_220316_b;
|
||||
this.func_174826_a(new AxisAlignedBB(p_70107_1_ - (double)f, p_70107_3_, p_70107_5_ - (double)f, p_70107_1_ + (double)f, p_70107_3_ + (double)f1, p_70107_5_ + (double)f));
|
||||
@@ -496,7 +508,7 @@
|
||||
@@ -496,11 +508,11 @@
|
||||
int k = MathHelper.func_76128_c(this.field_70161_v);
|
||||
BlockPos blockpos = new BlockPos(i, j, k);
|
||||
BlockState blockstate = this.field_70170_p.func_180495_p(blockpos);
|
||||
@@ -73,6 +73,11 @@
|
||||
BlockPos blockpos1 = blockpos.func_177977_b();
|
||||
BlockState blockstate1 = this.field_70170_p.func_180495_p(blockpos1);
|
||||
Block block = blockstate1.func_177230_c();
|
||||
- if (block.func_203417_a(BlockTags.field_219748_G) || block.func_203417_a(BlockTags.field_219757_z) || block instanceof FenceGateBlock) {
|
||||
+ if (blockstate.collisionExtendsVertically(this.field_70170_p, blockpos, this)) {
|
||||
blockstate = blockstate1;
|
||||
blockpos = blockpos1;
|
||||
}
|
||||
@@ -535,7 +547,7 @@
|
||||
|
||||
this.field_70140_Q = (float)((double)this.field_70140_Q + (double)MathHelper.func_76133_a(func_213296_b(vec3d)) * 0.6D);
|
||||
@@ -104,18 +109,22 @@
|
||||
if (!p_180429_2_.func_185904_a().func_76224_d()) {
|
||||
BlockState blockstate = this.field_70170_p.func_180495_p(p_180429_1_.func_177984_a());
|
||||
- SoundType soundtype = blockstate.func_177230_c() == Blocks.field_150433_aE ? blockstate.func_215695_r() : p_180429_2_.func_215695_r();
|
||||
+ SoundType soundtype = blockstate.func_177230_c() == Blocks.field_150433_aE ? blockstate.func_215695_r() : p_180429_2_.getSoundType(field_70170_p, p_180429_1_, this);
|
||||
+ SoundType soundtype = blockstate.func_177230_c() == Blocks.field_150433_aE ? blockstate.getSoundType(field_70170_p, p_180429_1_, this) : p_180429_2_.getSoundType(field_70170_p, p_180429_1_, this);
|
||||
this.func_184185_a(soundtype.func_185844_d(), soundtype.func_185843_a() * 0.15F, soundtype.func_185847_b());
|
||||
}
|
||||
}
|
||||
@@ -1040,6 +1053,7 @@
|
||||
@@ -1040,9 +1053,10 @@
|
||||
int k = MathHelper.func_76128_c(this.field_70161_v);
|
||||
BlockPos blockpos = new BlockPos(i, j, k);
|
||||
BlockState blockstate = this.field_70170_p.func_180495_p(blockpos);
|
||||
+ if (!blockstate.addRunningEffects(field_70170_p, blockpos, this))
|
||||
if (blockstate.func_185901_i() != BlockRenderType.INVISIBLE) {
|
||||
Vec3d vec3d = this.func_213322_ci();
|
||||
this.field_70170_p.func_195594_a(new BlockParticleData(ParticleTypes.field_197611_d, blockstate), this.field_70165_t + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.field_213325_aI.field_220315_a, this.field_70163_u + 0.1D, this.field_70161_v + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.field_213325_aI.field_220315_a, vec3d.field_72450_a * -4.0D, 1.5D, vec3d.field_72449_c * -4.0D);
|
||||
- this.field_70170_p.func_195594_a(new BlockParticleData(ParticleTypes.field_197611_d, blockstate), this.field_70165_t + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.field_213325_aI.field_220315_a, this.field_70163_u + 0.1D, this.field_70161_v + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.field_213325_aI.field_220315_a, vec3d.field_72450_a * -4.0D, 1.5D, vec3d.field_72449_c * -4.0D);
|
||||
+ this.field_70170_p.func_195594_a(new BlockParticleData(ParticleTypes.field_197611_d, blockstate).setPos(blockpos), this.field_70165_t + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.field_213325_aI.field_220315_a, this.field_70163_u + 0.1D, this.field_70161_v + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.field_213325_aI.field_220315_a, vec3d.field_72450_a * -4.0D, 1.5D, vec3d.field_72449_c * -4.0D);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1061,7 +1075,7 @@
|
||||
return false;
|
||||
} else {
|
||||
@@ -129,7 +138,7 @@
|
||||
this.field_70126_B -= 360.0F;
|
||||
}
|
||||
|
||||
+ if (!this.field_70170_p.field_72995_K) this.field_70170_p.func_212866_a_((int) Math.floor(this.field_70165_t) >> 4, (int) Math.floor(this.field_70161_v) >> 4); // Forge - ensure target chunk is loaded.
|
||||
+ if (!this.field_70170_p.field_72995_K && this.func_70089_S()) this.field_70170_p.func_212866_a_((int) Math.floor(this.field_70165_t) >> 4, (int) Math.floor(this.field_70161_v) >> 4); // Forge - ensure target chunk is loaded.
|
||||
this.func_70107_b(this.field_70165_t, this.field_70163_u, this.field_70161_v);
|
||||
this.func_70101_b(p_70080_7_, p_70080_8_);
|
||||
}
|
||||
@@ -147,7 +156,7 @@
|
||||
|
||||
+ CompoundNBT caps = serializeCaps();
|
||||
+ if (caps != null) p_189511_1_.func_218657_a("ForgeCaps", caps);
|
||||
+ if (entityData != null) p_189511_1_.func_218657_a("ForgeData", entityData);
|
||||
+ if (persistentData != null) p_189511_1_.func_218657_a("ForgeData", persistentData);
|
||||
+
|
||||
this.func_213281_b(p_189511_1_);
|
||||
if (this.func_184207_aI()) {
|
||||
@@ -156,7 +165,7 @@
|
||||
this.func_174810_b(p_70020_1_.func_74767_n("Silent"));
|
||||
this.func_189654_d(p_70020_1_.func_74767_n("NoGravity"));
|
||||
this.func_184195_f(p_70020_1_.func_74767_n("Glowing"));
|
||||
+ if (p_70020_1_.func_150297_b("ForgeData", 10)) entityData = p_70020_1_.func_74775_l("ForgeData");
|
||||
+ if (p_70020_1_.func_150297_b("ForgeData", 10)) persistentData = p_70020_1_.func_74775_l("ForgeData");
|
||||
+ if (p_70020_1_.func_150297_b("CanUpdate", 99)) this.canUpdate(p_70020_1_.func_74767_n("CanUpdate"));
|
||||
+ if (p_70020_1_.func_150297_b("ForgeCaps", 10)) deserializeCaps(p_70020_1_.func_74775_l("ForgeCaps"));
|
||||
if (p_70020_1_.func_150297_b("Tags", 9)) {
|
||||
@@ -306,12 +315,12 @@
|
||||
+ this.captureDrops = value;
|
||||
+ return ret;
|
||||
+ }
|
||||
+ private CompoundNBT entityData;
|
||||
+ private CompoundNBT persistentData;
|
||||
+ @Override
|
||||
+ public CompoundNBT getEntityData() {
|
||||
+ if (entityData == null)
|
||||
+ entityData = new CompoundNBT();
|
||||
+ return entityData;
|
||||
+ public CompoundNBT getPersistentData() {
|
||||
+ if (persistentData == null)
|
||||
+ persistentData = new CompoundNBT();
|
||||
+ return persistentData;
|
||||
+ }
|
||||
+ @Override
|
||||
+ public boolean canTrample(BlockState state, BlockPos pos, float fallDistance) {
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
@Nullable
|
||||
public T func_220342_a(World p_220342_1_, @Nullable CompoundNBT p_220342_2_, @Nullable ITextComponent p_220342_3_, @Nullable PlayerEntity p_220342_4_, BlockPos p_220342_5_, SpawnReason p_220342_6_, boolean p_220342_7_, boolean p_220342_8_) {
|
||||
T t = this.func_220349_b(p_220342_1_, p_220342_2_, p_220342_3_, p_220342_4_, p_220342_5_, p_220342_6_, p_220342_7_, p_220342_8_);
|
||||
+ if (t instanceof net.minecraft.entity.MobEntity && net.minecraftforge.event.ForgeEventFactory.doSpecialSpawn((net.minecraft.entity.MobEntity) t, p_220342_1_, p_220342_5_.func_177958_n(), p_220342_5_.func_177956_o(), p_220342_5_.func_177952_p(), null)) return null;
|
||||
+ if (t instanceof net.minecraft.entity.MobEntity && net.minecraftforge.event.ForgeEventFactory.doSpecialSpawn((net.minecraft.entity.MobEntity) t, p_220342_1_, p_220342_5_.func_177958_n(), p_220342_5_.func_177956_o(), p_220342_5_.func_177952_p(), null, p_220342_6_)) return null;
|
||||
p_220342_1_.func_217376_c(t);
|
||||
return t;
|
||||
}
|
||||
@@ -85,7 +85,7 @@
|
||||
}
|
||||
|
||||
+ public T customClientSpawn(net.minecraftforge.fml.network.FMLPlayMessages.SpawnEntity packet, World world) {
|
||||
+ if (customClientFactory == null) throw new RuntimeException("Missing custom spawn data for entity type "+this);
|
||||
+ if (customClientFactory == null) return this.func_200721_a(world);
|
||||
+ return customClientFactory.apply(packet, world);
|
||||
+ }
|
||||
+
|
||||
@@ -111,7 +111,7 @@
|
||||
private boolean field_225436_f;
|
||||
private EntitySize field_220326_f = EntitySize.func_220314_b(0.6F, 1.8F);
|
||||
|
||||
@@ -553,6 +591,26 @@
|
||||
@@ -553,11 +591,35 @@
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -130,6 +130,10 @@
|
||||
+ return this;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * By default, entities are spawned clientside via {@link EntityType#create(World)}.
|
||||
+ * If you need finer control over the spawning process, use this to get read access to the spawn packet.
|
||||
+ */
|
||||
+ public EntityType.Builder<T> setCustomClientFactory(java.util.function.BiFunction<net.minecraftforge.fml.network.FMLPlayMessages.SpawnEntity, World, T> customClientFactory) {
|
||||
+ this.customClientFactory = customClientFactory;
|
||||
+ return this;
|
||||
@@ -138,7 +142,13 @@
|
||||
public EntityType<T> func_206830_a(String p_206830_1_) {
|
||||
if (this.field_200710_b) {
|
||||
try {
|
||||
@@ -566,7 +624,7 @@
|
||||
DataFixesManager.func_210901_a().getSchema(DataFixUtils.makeKey(SharedConstants.func_215069_a().getWorldVersion())).getChoiceType(TypeReferences.field_211298_n, p_206830_1_);
|
||||
- } catch (IllegalStateException illegalstateexception) {
|
||||
+ } catch (IllegalArgumentException illegalstateexception) { // Forge: fix catching wrong exception
|
||||
if (SharedConstants.field_206244_b) {
|
||||
throw illegalstateexception;
|
||||
}
|
||||
@@ -566,7 +628,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,24 +1,29 @@
|
||||
--- a/net/minecraft/entity/LivingEntity.java
|
||||
+++ b/net/minecraft/entity/LivingEntity.java
|
||||
@@ -105,6 +105,8 @@
|
||||
@@ -104,7 +104,12 @@
|
||||
|
||||
public abstract class LivingEntity extends Entity {
|
||||
private static final UUID field_110156_b = UUID.fromString("662A6B8D-DA3E-4C1C-8813-96EA6097278D");
|
||||
+ private static final UUID SLOW_FALLING_ID = UUID.fromString("A5B6CF2A-2F7C-31EF-9022-7C3E7D5E6ABA");
|
||||
private static final AttributeModifier field_110157_c = (new AttributeModifier(field_110156_b, "Sprinting speed boost", (double)0.3F, AttributeModifier.Operation.MULTIPLY_TOTAL)).func_111168_a(false);
|
||||
+ private static final AttributeModifier SLOW_FALLING = new AttributeModifier(SLOW_FALLING_ID, "Slow falling acceleration reduction", -0.07, AttributeModifier.Operation.ADDITION).func_111168_a(false); // Add -0.07 to 0.08 so we get the vanilla default of 0.01
|
||||
+ public static final net.minecraft.entity.ai.attributes.IAttribute SWIM_SPEED = new net.minecraft.entity.ai.attributes.RangedAttribute(null, "forge.swimSpeed", 1.0D, 0.0D, 1024.0D).func_111112_a(true);
|
||||
+ public static final net.minecraft.entity.ai.attributes.IAttribute NAMETAG_DISTANCE = new net.minecraft.entity.ai.attributes.RangedAttribute(null, "forge.nameTagDistance", 64.0D, 0.0D, Float.MAX_VALUE).func_111112_a(true);
|
||||
+ public static final net.minecraft.entity.ai.attributes.IAttribute ENTITY_GRAVITY = new net.minecraft.entity.ai.attributes.RangedAttribute(null, "forge.entity_gravity", 0.08D, -8.0D, 8.0D).func_111112_a(true);
|
||||
protected static final DataParameter<Byte> field_184621_as = EntityDataManager.func_187226_a(LivingEntity.class, DataSerializers.field_187191_a);
|
||||
private static final DataParameter<Float> field_184632_c = EntityDataManager.func_187226_a(LivingEntity.class, DataSerializers.field_187193_c);
|
||||
private static final DataParameter<Integer> field_184633_f = EntityDataManager.func_187226_a(LivingEntity.class, DataSerializers.field_187192_b);
|
||||
@@ -228,6 +230,8 @@
|
||||
@@ -228,6 +233,9 @@
|
||||
this.func_110140_aT().func_111150_b(SharedMonsterAttributes.field_111263_d);
|
||||
this.func_110140_aT().func_111150_b(SharedMonsterAttributes.field_188791_g);
|
||||
this.func_110140_aT().func_111150_b(SharedMonsterAttributes.field_189429_h);
|
||||
+ this.func_110140_aT().func_111150_b(SWIM_SPEED);
|
||||
+ this.func_110140_aT().func_111150_b(NAMETAG_DISTANCE);
|
||||
+ this.func_110140_aT().func_111150_b(ENTITY_GRAVITY);
|
||||
}
|
||||
|
||||
protected void func_184231_a(double p_184231_1_, boolean p_184231_3_, BlockState p_184231_4_, BlockPos p_184231_5_) {
|
||||
@@ -237,9 +241,10 @@
|
||||
@@ -237,9 +245,10 @@
|
||||
|
||||
if (!this.field_70170_p.field_72995_K && this.field_70143_R > 3.0F && p_184231_3_) {
|
||||
float f = (float)MathHelper.func_76123_f(this.field_70143_R - 3.0F);
|
||||
@@ -30,7 +35,7 @@
|
||||
((ServerWorld)this.field_70170_p).func_195598_a(new BlockParticleData(ParticleTypes.field_197611_d, p_184231_4_), this.field_70165_t, this.field_70163_u, this.field_70161_v, i, 0.0D, 0.0D, 0.0D, (double)0.15F);
|
||||
}
|
||||
}
|
||||
@@ -303,7 +308,7 @@
|
||||
@@ -303,7 +312,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,7 +44,7 @@
|
||||
this.func_184210_p();
|
||||
}
|
||||
} else if (this.func_70086_ai() < this.func_205010_bg()) {
|
||||
@@ -388,6 +393,7 @@
|
||||
@@ -388,6 +397,7 @@
|
||||
if (!this.field_70170_p.field_72995_K && (this.func_70684_aJ() || this.field_70718_bc > 0 && this.func_146066_aG() && this.field_70170_p.func_82736_K().func_223586_b(GameRules.field_223602_e))) {
|
||||
int i = this.func_70693_a(this.field_70717_bb);
|
||||
|
||||
@@ -47,7 +52,16 @@
|
||||
while(i > 0) {
|
||||
int j = ExperienceOrbEntity.func_70527_a(i);
|
||||
i -= j;
|
||||
@@ -590,7 +596,7 @@
|
||||
@@ -395,7 +405,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- this.func_70106_y();
|
||||
+ this.remove(this instanceof net.minecraft.entity.player.ServerPlayerEntity); //Forge keep data until we revive player
|
||||
|
||||
for(int k = 0; k < 20; ++k) {
|
||||
double d2 = this.field_70146_Z.nextGaussian() * 0.02D;
|
||||
@@ -590,7 +600,7 @@
|
||||
Effect effect = iterator.next();
|
||||
EffectInstance effectinstance = this.field_70713_bf.get(effect);
|
||||
if (!effectinstance.func_76455_a(this)) {
|
||||
@@ -56,7 +70,7 @@
|
||||
iterator.remove();
|
||||
this.func_70688_c(effectinstance);
|
||||
}
|
||||
@@ -640,8 +646,10 @@
|
||||
@@ -640,8 +650,10 @@
|
||||
this.func_82142_c(false);
|
||||
} else {
|
||||
Collection<EffectInstance> collection = this.field_70713_bf.values();
|
||||
@@ -69,7 +83,7 @@
|
||||
this.func_82142_c(this.func_70644_a(Effects.field_76441_p));
|
||||
}
|
||||
|
||||
@@ -705,7 +713,10 @@
|
||||
@@ -705,7 +717,10 @@
|
||||
|
||||
boolean flag;
|
||||
for(flag = false; iterator.hasNext(); flag = true) {
|
||||
@@ -81,7 +95,7 @@
|
||||
iterator.remove();
|
||||
}
|
||||
|
||||
@@ -735,6 +746,7 @@
|
||||
@@ -735,6 +750,7 @@
|
||||
return false;
|
||||
} else {
|
||||
EffectInstance effectinstance = this.field_70713_bf.get(p_195064_1_.func_188419_a());
|
||||
@@ -89,7 +103,7 @@
|
||||
if (effectinstance == null) {
|
||||
this.field_70713_bf.put(p_195064_1_.func_188419_a(), p_195064_1_);
|
||||
this.func_70670_a(p_195064_1_);
|
||||
@@ -749,6 +761,9 @@
|
||||
@@ -749,6 +765,9 @@
|
||||
}
|
||||
|
||||
public boolean func_70687_e(EffectInstance p_70687_1_) {
|
||||
@@ -99,7 +113,7 @@
|
||||
if (this.func_70668_bt() == CreatureAttribute.field_223223_b_) {
|
||||
Effect effect = p_70687_1_.func_188419_a();
|
||||
if (effect == Effects.field_76428_l || effect == Effects.field_76436_u) {
|
||||
@@ -769,6 +784,7 @@
|
||||
@@ -769,6 +788,7 @@
|
||||
}
|
||||
|
||||
public boolean func_195063_d(Effect p_195063_1_) {
|
||||
@@ -107,7 +121,7 @@
|
||||
EffectInstance effectinstance = this.func_184596_c(p_195063_1_);
|
||||
if (effectinstance != null) {
|
||||
this.func_70688_c(effectinstance);
|
||||
@@ -805,6 +821,8 @@
|
||||
@@ -805,6 +825,8 @@
|
||||
}
|
||||
|
||||
public void func_70691_i(float p_70691_1_) {
|
||||
@@ -116,7 +130,7 @@
|
||||
float f = this.func_110143_aJ();
|
||||
if (f > 0.0F) {
|
||||
this.func_70606_j(f + p_70691_1_);
|
||||
@@ -821,6 +839,7 @@
|
||||
@@ -821,6 +843,7 @@
|
||||
}
|
||||
|
||||
public boolean func_70097_a(DamageSource p_70097_1_, float p_70097_2_) {
|
||||
@@ -124,7 +138,7 @@
|
||||
if (this.func_180431_b(p_70097_1_)) {
|
||||
return false;
|
||||
} else if (this.field_70170_p.field_72995_K) {
|
||||
@@ -887,8 +906,8 @@
|
||||
@@ -887,8 +910,8 @@
|
||||
if (entity1 instanceof PlayerEntity) {
|
||||
this.field_70718_bc = 100;
|
||||
this.field_70717_bb = (PlayerEntity)entity1;
|
||||
@@ -135,7 +149,7 @@
|
||||
if (wolfentity.func_70909_n()) {
|
||||
this.field_70718_bc = 100;
|
||||
LivingEntity livingentity = wolfentity.func_70902_q();
|
||||
@@ -1070,6 +1089,7 @@
|
||||
@@ -1070,6 +1093,7 @@
|
||||
}
|
||||
|
||||
public void func_70645_a(DamageSource p_70645_1_) {
|
||||
@@ -143,7 +157,7 @@
|
||||
if (!this.field_70729_aU) {
|
||||
Entity entity = p_70645_1_.func_76346_g();
|
||||
LivingEntity livingentity = this.func_94060_bK();
|
||||
@@ -1091,7 +1111,7 @@
|
||||
@@ -1091,7 +1115,7 @@
|
||||
this.func_213345_d(p_70645_1_);
|
||||
boolean flag = false;
|
||||
if (livingentity instanceof WitherEntity) {
|
||||
@@ -152,7 +166,7 @@
|
||||
BlockPos blockpos = new BlockPos(this.field_70165_t, this.field_70163_u, this.field_70161_v);
|
||||
BlockState blockstate = Blocks.field_222388_bz.func_176223_P();
|
||||
if (this.field_70170_p.func_180495_p(blockpos).func_196958_f() && blockstate.func_196955_c(this.field_70170_p, blockpos)) {
|
||||
@@ -1114,13 +1134,10 @@
|
||||
@@ -1114,13 +1138,10 @@
|
||||
|
||||
protected void func_213345_d(DamageSource p_213345_1_) {
|
||||
Entity entity = p_213345_1_.func_76346_g();
|
||||
@@ -169,7 +183,7 @@
|
||||
boolean flag = this.field_70718_bc > 0;
|
||||
if (this.func_146066_aG() && this.field_70170_p.func_82736_K().func_223586_b(GameRules.field_223602_e)) {
|
||||
this.func_213354_a(p_213345_1_, flag);
|
||||
@@ -1128,6 +1145,10 @@
|
||||
@@ -1128,6 +1149,10 @@
|
||||
}
|
||||
|
||||
this.func_213337_cE();
|
||||
@@ -180,7 +194,7 @@
|
||||
}
|
||||
|
||||
protected void func_213337_cE() {
|
||||
@@ -1157,6 +1178,9 @@
|
||||
@@ -1157,6 +1182,9 @@
|
||||
}
|
||||
|
||||
public void func_70653_a(Entity p_70653_1_, float p_70653_2_, double p_70653_3_, double p_70653_5_) {
|
||||
@@ -190,7 +204,7 @@
|
||||
if (!(this.field_70146_Z.nextDouble() < this.func_110148_a(SharedMonsterAttributes.field_111266_c).func_111126_e())) {
|
||||
this.field_70160_al = true;
|
||||
Vec3d vec3d = this.func_213322_ci();
|
||||
@@ -1192,12 +1216,7 @@
|
||||
@@ -1192,12 +1220,7 @@
|
||||
return false;
|
||||
} else {
|
||||
BlockState blockstate = this.func_213339_cH();
|
||||
@@ -204,7 +218,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1221,6 +1240,9 @@
|
||||
@@ -1221,6 +1244,9 @@
|
||||
}
|
||||
|
||||
public void func_180430_e(float p_180430_1_, float p_180430_2_) {
|
||||
@@ -214,7 +228,7 @@
|
||||
super.func_180430_e(p_180430_1_, p_180430_2_);
|
||||
EffectInstance effectinstance = this.func_70660_b(Effects.field_76430_j);
|
||||
float f = effectinstance == null ? 0.0F : (float)(effectinstance.func_76458_c() + 1);
|
||||
@@ -1233,7 +1255,7 @@
|
||||
@@ -1233,7 +1259,7 @@
|
||||
int l = MathHelper.func_76128_c(this.field_70161_v);
|
||||
BlockState blockstate = this.field_70170_p.func_180495_p(new BlockPos(j, k, l));
|
||||
if (!blockstate.func_196958_f()) {
|
||||
@@ -223,7 +237,7 @@
|
||||
this.func_184185_a(soundtype.func_185842_g(), soundtype.func_185843_a() * 0.5F, soundtype.func_185847_b() * 0.75F);
|
||||
}
|
||||
}
|
||||
@@ -1302,6 +1324,8 @@
|
||||
@@ -1302,6 +1328,8 @@
|
||||
|
||||
protected void func_70665_d(DamageSource p_70665_1_, float p_70665_2_) {
|
||||
if (!this.func_180431_b(p_70665_1_)) {
|
||||
@@ -232,7 +246,7 @@
|
||||
p_70665_2_ = this.func_70655_b(p_70665_1_, p_70665_2_);
|
||||
p_70665_2_ = this.func_70672_c(p_70665_1_, p_70665_2_);
|
||||
float f = p_70665_2_;
|
||||
@@ -1312,10 +1336,11 @@
|
||||
@@ -1312,10 +1340,11 @@
|
||||
((ServerPlayerEntity)p_70665_1_.func_76346_g()).func_195067_a(Stats.field_212735_F, Math.round(f1 * 10.0F));
|
||||
}
|
||||
|
||||
@@ -245,7 +259,7 @@
|
||||
this.func_110149_m(this.func_110139_bj() - p_70665_2_);
|
||||
}
|
||||
}
|
||||
@@ -1357,6 +1382,8 @@
|
||||
@@ -1357,6 +1386,8 @@
|
||||
}
|
||||
|
||||
public void func_184609_a(Hand p_184609_1_) {
|
||||
@@ -254,7 +268,7 @@
|
||||
if (!this.field_82175_bq || this.field_110158_av >= this.func_82166_i() / 2 || this.field_110158_av < 0) {
|
||||
this.field_110158_av = -1;
|
||||
this.field_82175_bq = true;
|
||||
@@ -1715,15 +1742,16 @@
|
||||
@@ -1715,15 +1746,16 @@
|
||||
}
|
||||
|
||||
this.field_70160_al = true;
|
||||
@@ -273,7 +287,24 @@
|
||||
}
|
||||
|
||||
protected float func_189749_co() {
|
||||
@@ -1786,7 +1814,7 @@
|
||||
@@ -1733,11 +1765,15 @@
|
||||
public void func_213352_e(Vec3d p_213352_1_) {
|
||||
if (this.func_70613_aW() || this.func_184186_bw()) {
|
||||
double d0 = 0.08D;
|
||||
+ IAttributeInstance gravity = this.func_110148_a(ENTITY_GRAVITY);
|
||||
boolean flag = this.func_213322_ci().field_72448_b <= 0.0D;
|
||||
if (flag && this.func_70644_a(Effects.field_204839_B)) {
|
||||
- d0 = 0.01D;
|
||||
+ if (!gravity.func_180374_a(SLOW_FALLING)) gravity.func_111121_a(SLOW_FALLING);
|
||||
this.field_70143_R = 0.0F;
|
||||
+ } else if (gravity.func_180374_a(SLOW_FALLING)) {
|
||||
+ gravity.func_111124_b(SLOW_FALLING);
|
||||
}
|
||||
+ d0 = gravity.func_111126_e();
|
||||
|
||||
if (!this.func_70090_H() || this instanceof PlayerEntity && ((PlayerEntity)this).field_71075_bZ.field_75100_b) {
|
||||
if (!this.func_180799_ab() || this instanceof PlayerEntity && ((PlayerEntity)this).field_71075_bZ.field_75100_b) {
|
||||
@@ -1786,7 +1822,7 @@
|
||||
}
|
||||
} else {
|
||||
BlockPos blockpos = new BlockPos(this.field_70165_t, this.func_174813_aQ().field_72338_b - 1.0D, this.field_70161_v);
|
||||
@@ -282,7 +313,7 @@
|
||||
float f7 = this.field_70122_E ? f5 * 0.91F : 0.91F;
|
||||
this.func_213309_a(this.func_213335_r(f5), p_213352_1_);
|
||||
this.func_213317_d(this.func_213362_f(this.func_213322_ci()));
|
||||
@@ -1848,6 +1876,7 @@
|
||||
@@ -1848,6 +1884,7 @@
|
||||
f = 0.96F;
|
||||
}
|
||||
|
||||
@@ -290,7 +321,7 @@
|
||||
this.func_213309_a(f1, p_213352_1_);
|
||||
this.func_213315_a(MoverType.SELF, this.func_213322_ci());
|
||||
Vec3d vec3d1 = this.func_213322_ci();
|
||||
@@ -1923,6 +1952,7 @@
|
||||
@@ -1923,6 +1960,7 @@
|
||||
}
|
||||
|
||||
public void func_70071_h_() {
|
||||
@@ -298,7 +329,7 @@
|
||||
super.func_70071_h_();
|
||||
this.func_184608_ct();
|
||||
this.func_205014_p();
|
||||
@@ -1954,7 +1984,9 @@
|
||||
@@ -1954,7 +1992,9 @@
|
||||
|
||||
ItemStack itemstack1 = this.func_184582_a(equipmentslottype);
|
||||
if (!ItemStack.func_77989_b(itemstack1, itemstack)) {
|
||||
@@ -308,7 +339,7 @@
|
||||
if (!itemstack.func_190926_b()) {
|
||||
this.func_110140_aT().func_111148_a(itemstack.func_111283_C(equipmentslottype));
|
||||
}
|
||||
@@ -2403,13 +2435,22 @@
|
||||
@@ -2403,13 +2443,22 @@
|
||||
|
||||
private void func_184608_ct() {
|
||||
if (this.func_184587_cr()) {
|
||||
@@ -333,7 +364,7 @@
|
||||
this.func_71036_o();
|
||||
}
|
||||
} else {
|
||||
@@ -2443,8 +2484,10 @@
|
||||
@@ -2443,8 +2492,10 @@
|
||||
public void func_184598_c(Hand p_184598_1_) {
|
||||
ItemStack itemstack = this.func_184586_b(p_184598_1_);
|
||||
if (!itemstack.func_190926_b() && !this.func_184587_cr()) {
|
||||
@@ -345,7 +376,7 @@
|
||||
if (!this.field_70170_p.field_72995_K) {
|
||||
this.func_204802_c(1, true);
|
||||
this.func_204802_c(2, p_184598_1_ == Hand.OFF_HAND);
|
||||
@@ -2504,6 +2547,9 @@
|
||||
@@ -2504,6 +2555,9 @@
|
||||
vec3d1 = vec3d1.func_178789_a(-this.field_70125_A * ((float)Math.PI / 180F));
|
||||
vec3d1 = vec3d1.func_178785_b(-this.field_70177_z * ((float)Math.PI / 180F));
|
||||
vec3d1 = vec3d1.func_72441_c(this.field_70165_t, this.field_70163_u + (double)this.func_70047_e(), this.field_70161_v);
|
||||
@@ -355,7 +386,7 @@
|
||||
this.field_70170_p.func_195594_a(new ItemParticleData(ParticleTypes.field_197591_B, p_195062_1_), vec3d1.field_72450_a, vec3d1.field_72448_b, vec3d1.field_72449_c, vec3d.field_72450_a, vec3d.field_72448_b + 0.05D, vec3d.field_72449_c);
|
||||
}
|
||||
|
||||
@@ -2512,7 +2558,9 @@
|
||||
@@ -2512,7 +2566,9 @@
|
||||
protected void func_71036_o() {
|
||||
if (!this.field_184627_bm.func_190926_b() && this.func_184587_cr()) {
|
||||
this.func_184584_a(this.field_184627_bm, 16);
|
||||
@@ -366,15 +397,19 @@
|
||||
this.func_184602_cy();
|
||||
}
|
||||
|
||||
@@ -2532,6 +2580,7 @@
|
||||
@@ -2532,7 +2588,11 @@
|
||||
|
||||
public void func_184597_cx() {
|
||||
if (!this.field_184627_bm.func_190926_b()) {
|
||||
+ if (!net.minecraftforge.event.ForgeEventFactory.onUseItemStop(this, field_184627_bm, this.func_184605_cv()))
|
||||
+ if (!net.minecraftforge.event.ForgeEventFactory.onUseItemStop(this, field_184627_bm, this.func_184605_cv())) {
|
||||
+ ItemStack copy = this instanceof PlayerEntity ? field_184627_bm.func_77946_l() : null;
|
||||
this.field_184627_bm.func_77974_b(this.field_70170_p, this, this.func_184605_cv());
|
||||
+ if (copy != null && field_184627_bm.func_190926_b()) net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem((PlayerEntity)this, copy, func_184600_cs());
|
||||
+ }
|
||||
if (this.field_184627_bm.func_222122_m()) {
|
||||
this.func_184608_ct();
|
||||
@@ -2687,16 +2736,16 @@
|
||||
}
|
||||
@@ -2687,16 +2747,16 @@
|
||||
|
||||
private boolean func_213359_p() {
|
||||
return this.func_213374_dv().map((p_213347_1_) -> {
|
||||
@@ -395,7 +430,7 @@
|
||||
BlockPos blockpos = p_213368_1_.func_177984_a();
|
||||
return new Vec3d((double)blockpos.func_177958_n() + 0.5D, (double)blockpos.func_177956_o() + 0.1D, (double)blockpos.func_177952_p() + 0.5D);
|
||||
});
|
||||
@@ -2711,8 +2760,13 @@
|
||||
@@ -2711,8 +2771,13 @@
|
||||
@Nullable
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public Direction func_213376_dz() {
|
||||
@@ -410,7 +445,7 @@
|
||||
}
|
||||
|
||||
public boolean func_70094_T() {
|
||||
@@ -2779,4 +2833,58 @@
|
||||
@@ -2779,4 +2844,58 @@
|
||||
public void func_213334_d(Hand p_213334_1_) {
|
||||
this.func_213361_c(p_213334_1_ == Hand.MAIN_HAND ? EquipmentSlotType.MAINHAND : EquipmentSlotType.OFFHAND);
|
||||
}
|
||||
|
||||
@@ -8,15 +8,7 @@
|
||||
}
|
||||
|
||||
public boolean func_213358_a(EntityType<?> p_213358_1_) {
|
||||
@@ -259,7 +260,6 @@
|
||||
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public void func_70103_a(byte p_70103_1_) {
|
||||
if (p_70103_1_ == 20) {
|
||||
this.func_70656_aK();
|
||||
@@ -458,7 +458,7 @@
|
||||
@@ -458,7 +459,7 @@
|
||||
public void func_70636_d() {
|
||||
super.func_70636_d();
|
||||
this.field_70170_p.func_217381_Z().func_76320_a("looting");
|
||||
@@ -25,7 +17,7 @@
|
||||
for(ItemEntity itementity : this.field_70170_p.func_217357_a(ItemEntity.class, this.func_174813_aQ().func_72314_b(1.0D, 0.0D, 1.0D))) {
|
||||
if (!itementity.field_70128_L && !itementity.func_92059_d().func_190926_b() && !itementity.func_174874_s()) {
|
||||
this.func_175445_a(itementity);
|
||||
@@ -548,6 +548,14 @@
|
||||
@@ -548,6 +549,14 @@
|
||||
protected void func_70623_bb() {
|
||||
if (!this.func_104002_bU() && !this.func_213392_I()) {
|
||||
Entity entity = this.field_70170_p.func_217362_a(this, -1.0D);
|
||||
@@ -40,7 +32,7 @@
|
||||
if (entity != null) {
|
||||
double d0 = entity.func_70068_e(this);
|
||||
if (d0 > 16384.0D && this.func_213397_c(d0)) {
|
||||
@@ -786,6 +794,8 @@
|
||||
@@ -786,6 +795,8 @@
|
||||
}
|
||||
|
||||
public static EquipmentSlotType func_184640_d(ItemStack p_184640_0_) {
|
||||
@@ -49,7 +41,7 @@
|
||||
Item item = p_184640_0_.func_77973_b();
|
||||
if (item != Blocks.field_196625_cS.func_199767_j() && (!(item instanceof BlockItem) || !(((BlockItem)item).func_179223_d() instanceof AbstractSkullBlock))) {
|
||||
if (item instanceof ArmorItem) {
|
||||
@@ -793,7 +803,7 @@
|
||||
@@ -793,7 +804,7 @@
|
||||
} else if (item == Items.field_185160_cR) {
|
||||
return EquipmentSlotType.CHEST;
|
||||
} else {
|
||||
@@ -58,7 +50,7 @@
|
||||
}
|
||||
} else {
|
||||
return EquipmentSlotType.HEAD;
|
||||
@@ -1173,10 +1183,10 @@
|
||||
@@ -1173,10 +1184,10 @@
|
||||
PlayerEntity playerentity = (PlayerEntity)p_70652_1_;
|
||||
ItemStack itemstack = this.func_184614_ca();
|
||||
ItemStack itemstack1 = playerentity.func_184587_cr() ? playerentity.func_184607_cu() : ItemStack.field_190927_a;
|
||||
|
||||
+14
-5
@@ -31,15 +31,18 @@
|
||||
}
|
||||
|
||||
public double func_70042_X() {
|
||||
@@ -214,7 +216,7 @@
|
||||
@@ -214,9 +216,9 @@
|
||||
|
||||
BlockPos blockpos = new BlockPos(i, j, k);
|
||||
BlockState blockstate = this.field_70170_p.func_180495_p(blockpos);
|
||||
- if (blockstate.func_203425_a(BlockTags.field_203437_y)) {
|
||||
+ if (canUseRail() && blockstate.func_203425_a(BlockTags.field_203437_y)) {
|
||||
this.func_180460_a(blockpos, blockstate);
|
||||
if (blockstate.func_177230_c() == Blocks.field_150408_cc) {
|
||||
- if (blockstate.func_177230_c() == Blocks.field_150408_cc) {
|
||||
+ if (blockstate.func_177230_c() instanceof PoweredRailBlock && ((PoweredRailBlock)blockstate.func_177230_c()).isActivatorRail()) {
|
||||
this.func_96095_a(i, j, k, blockstate.func_177229_b(PoweredRailBlock.field_176569_M));
|
||||
}
|
||||
} else {
|
||||
@@ -241,8 +243,11 @@
|
||||
}
|
||||
|
||||
@@ -98,7 +101,13 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -299,24 +313,24 @@
|
||||
@@ -294,29 +308,29 @@
|
||||
boolean flag = false;
|
||||
boolean flag1 = false;
|
||||
AbstractRailBlock abstractrailblock = (AbstractRailBlock)p_180460_2_.func_177230_c();
|
||||
- if (abstractrailblock == Blocks.field_196552_aC) {
|
||||
+ if (abstractrailblock instanceof PoweredRailBlock && !((PoweredRailBlock)abstractrailblock).isActivatorRail()) {
|
||||
flag = p_180460_2_.func_177229_b(PoweredRailBlock.field_176569_M);
|
||||
flag1 = !flag;
|
||||
}
|
||||
|
||||
@@ -226,7 +235,7 @@
|
||||
+ @Override public double getDragAir() { return dragAir; }
|
||||
+ @Override public void setDragAir(double value) { dragAir = value; }
|
||||
+ @Override
|
||||
+ public double getMaxSpeed() { //Non-default because getMaximumSpeed is protected
|
||||
+ public double getMaxSpeedWithRail() { //Non-default because getMaximumSpeed is protected
|
||||
+ if (!canUseRail()) return func_174898_m();
|
||||
+ BlockPos pos = this.getCurrentRailPosition();
|
||||
+ BlockState state = getMinecart().field_70170_p.func_180495_p(pos);
|
||||
@@ -239,7 +248,7 @@
|
||||
+ public void moveMinecartOnRail(BlockPos pos) { //Non-default because getMaximumSpeed is protected
|
||||
+ AbstractMinecartEntity mc = getMinecart();
|
||||
+ double d21 = mc.func_184207_aI() ? 0.75D : 1.0D;
|
||||
+ double d22 = mc.func_174898_m();
|
||||
+ double d22 = mc.getMaxSpeedWithRail();
|
||||
+ Vec3d vec3d1 = mc.func_213322_ci();
|
||||
+ mc.func_213315_a(MoverType.SELF, new Vec3d(MathHelper.func_151237_a(d21 * vec3d1.field_72450_a, -d22, d22), 0.0D, MathHelper.func_151237_a(d21 * vec3d1.field_72449_c, -d22, d22)));
|
||||
+ }
|
||||
|
||||
+6
-8
@@ -1,12 +1,10 @@
|
||||
--- a/net/minecraft/entity/item/minecart/ContainerMinecartEntity.java
|
||||
+++ b/net/minecraft/entity/item/minecart/ContainerMinecartEntity.java
|
||||
@@ -116,11 +116,17 @@
|
||||
@@ -115,12 +115,14 @@
|
||||
return super.func_212321_a(p_212321_1_);
|
||||
}
|
||||
|
||||
public void func_70106_y() {
|
||||
+ super.func_70106_y();
|
||||
+ }
|
||||
+
|
||||
- public void func_70106_y() {
|
||||
+ @Override
|
||||
+ public void remove(boolean keepData) {
|
||||
if (!this.field_70170_p.field_72995_K && this.field_94112_b) {
|
||||
@@ -19,7 +17,7 @@
|
||||
}
|
||||
|
||||
protected void func_213281_b(CompoundNBT p_213281_1_) {
|
||||
@@ -149,6 +155,7 @@
|
||||
@@ -149,6 +151,7 @@
|
||||
}
|
||||
|
||||
public boolean func_184230_a(PlayerEntity p_184230_1_, Hand p_184230_2_) {
|
||||
@@ -27,7 +25,7 @@
|
||||
p_184230_1_.func_213829_a(this);
|
||||
return true;
|
||||
}
|
||||
@@ -168,6 +175,8 @@
|
||||
@@ -168,6 +171,8 @@
|
||||
LootTable loottable = this.field_70170_p.func_73046_m().func_200249_aQ().func_186521_a(this.field_184290_c);
|
||||
this.field_184290_c = null;
|
||||
LootContext.Builder lootcontext$builder = (new LootContext.Builder((ServerWorld)this.field_70170_p)).func_216015_a(LootParameters.field_216286_f, new BlockPos(this)).func_216016_a(this.field_184291_d);
|
||||
@@ -36,7 +34,7 @@
|
||||
if (p_184288_1_ != null) {
|
||||
lootcontext$builder.func_186469_a(p_184288_1_.func_184817_da()).func_216015_a(LootParameters.field_216281_a, p_184288_1_);
|
||||
}
|
||||
@@ -198,4 +207,17 @@
|
||||
@@ -198,4 +203,17 @@
|
||||
}
|
||||
|
||||
protected abstract Container func_213968_a(int p_213968_1_, PlayerInventory p_213968_2_);
|
||||
|
||||
@@ -9,3 +9,12 @@
|
||||
if (this.func_70631_g_()) {
|
||||
this.func_213756_es();
|
||||
return super.func_184645_a(p_184645_1_, p_184645_2_);
|
||||
@@ -611,7 +611,7 @@
|
||||
});
|
||||
} else {
|
||||
VillagerProfession villagerprofession = this.func_213700_eh().func_221130_b();
|
||||
- ITextComponent itextcomponent1 = (new TranslationTextComponent(this.func_200600_R().func_210760_d() + '.' + Registry.field_218370_L.func_177774_c(villagerprofession).func_110623_a())).func_211710_a((p_213773_1_) -> {
|
||||
+ ITextComponent itextcomponent1 = (new TranslationTextComponent(this.func_200600_R().func_210760_d() + '.' + (!"minecraft".equals(villagerprofession.getRegistryName().func_110624_b()) ? villagerprofession.getRegistryName().func_110624_b() + '.' : "") + villagerprofession.getRegistryName().func_110623_a())).func_211710_a((p_213773_1_) -> {
|
||||
p_213773_1_.func_150209_a(this.func_174823_aP()).func_179989_a(this.func_189512_bd());
|
||||
});
|
||||
if (team != null) {
|
||||
@@ -17,7 +17,29 @@
|
||||
for(int j = 0; j < i * 8; ++j) {
|
||||
float f = this.field_70146_Z.nextFloat() * ((float)Math.PI * 2F);
|
||||
float f1 = this.field_70146_Z.nextFloat() * 0.5F + 0.5F;
|
||||
@@ -251,7 +252,7 @@
|
||||
@@ -170,9 +171,10 @@
|
||||
return (EntityType<? extends SlimeEntity>) super.func_200600_R();
|
||||
}
|
||||
|
||||
- public void func_70106_y() {
|
||||
+ @Override
|
||||
+ public void remove(boolean keepData) {
|
||||
int i = this.func_70809_q();
|
||||
- if (!this.field_70170_p.field_72995_K && i > 1 && this.func_110143_aJ() <= 0.0F) {
|
||||
+ if (!this.field_70170_p.field_72995_K && i > 1 && this.func_110143_aJ() <= 0.0F && !this.field_70128_L) {
|
||||
int j = 2 + this.field_70146_Z.nextInt(3);
|
||||
|
||||
for(int k = 0; k < j; ++k) {
|
||||
@@ -193,7 +195,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- super.func_70106_y();
|
||||
+ super.remove(keepData);
|
||||
}
|
||||
|
||||
public void func_70108_f(Entity p_70108_1_) {
|
||||
@@ -251,7 +253,7 @@
|
||||
}
|
||||
|
||||
public static boolean func_223366_c(EntityType<SlimeEntity> p_223366_0_, IWorld p_223366_1_, SpawnReason p_223366_2_, BlockPos p_223366_3_, Random p_223366_4_) {
|
||||
@@ -26,7 +48,7 @@
|
||||
return false;
|
||||
} else {
|
||||
if (p_223366_1_.func_175659_aa() != Difficulty.PEACEFUL) {
|
||||
@@ -309,6 +310,12 @@
|
||||
@@ -309,6 +311,12 @@
|
||||
return super.func_213305_a(p_213305_1_).func_220313_a(0.255F * (float)this.func_70809_q());
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,19 @@
|
||||
--- a/net/minecraft/entity/passive/FoxEntity.java
|
||||
+++ b/net/minecraft/entity/passive/FoxEntity.java
|
||||
@@ -767,7 +767,7 @@
|
||||
@@ -573,9 +573,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
- BlockState blockstate = this.field_70170_p.func_180495_p(new BlockPos(this.field_70165_t, this.field_70163_u - 0.2D - (double)this.field_70126_B, this.field_70161_v));
|
||||
+ BlockPos pos = new BlockPos(this.field_70165_t, this.field_70163_u - 0.2D - (double)this.field_70126_B, this.field_70161_v);
|
||||
+ BlockState blockstate = this.field_70170_p.func_180495_p(pos);
|
||||
if (!blockstate.func_196958_f() && !this.func_174814_R()) {
|
||||
- SoundType soundtype = blockstate.func_215695_r();
|
||||
+ SoundType soundtype = blockstate.getSoundType(field_70170_p, pos, this);
|
||||
this.field_70170_p.func_184148_a((PlayerEntity)null, this.field_70165_t, this.field_70163_u, this.field_70161_v, soundtype.func_185844_d(), this.func_184176_by(), soundtype.func_185843_a() * 0.5F, soundtype.func_185847_b() * 0.75F);
|
||||
}
|
||||
|
||||
@@ -767,7 +768,7 @@
|
||||
}
|
||||
|
||||
protected void func_220730_m() {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/net/minecraft/entity/passive/IronGolemEntity.java
|
||||
+++ b/net/minecraft/entity/passive/IronGolemEntity.java
|
||||
@@ -106,7 +106,7 @@
|
||||
int k = MathHelper.func_76128_c(this.field_70161_v);
|
||||
BlockState blockstate = this.field_70170_p.func_180495_p(new BlockPos(i, j, k));
|
||||
if (!blockstate.func_196958_f()) {
|
||||
- this.field_70170_p.func_195594_a(new BlockParticleData(ParticleTypes.field_197611_d, blockstate), this.field_70165_t + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.func_213311_cf(), this.func_174813_aQ().field_72338_b + 0.1D, this.field_70161_v + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.func_213311_cf(), 4.0D * ((double)this.field_70146_Z.nextFloat() - 0.5D), 0.5D, ((double)this.field_70146_Z.nextFloat() - 0.5D) * 4.0D);
|
||||
+ this.field_70170_p.func_195594_a(new BlockParticleData(ParticleTypes.field_197611_d, blockstate).setPos(new BlockPos(i, j, k)), this.field_70165_t + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.func_213311_cf(), this.func_174813_aQ().field_72338_b + 0.1D, this.field_70161_v + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.func_213311_cf(), 4.0D * ((double)this.field_70146_Z.nextFloat() - 0.5D), 0.5D, ((double)this.field_70146_Z.nextFloat() - 0.5D) * 4.0D);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
+ }
|
||||
+ this.field_70170_p.func_217376_c(entitycow);
|
||||
+ for(int i = 0; i < 5; ++i) {
|
||||
+ ret.add(new ItemStack(Blocks.field_150337_Q));
|
||||
+ ret.add(new ItemStack(this.func_213444_dV().field_221099_d.func_177230_c()));
|
||||
+ }
|
||||
+ this.func_184185_a(SoundEvents.field_187784_dt, 1.0F, 1.0F);
|
||||
+ }
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
public void func_213612_dV() {
|
||||
if (!this.field_70170_p.field_72995_K) {
|
||||
this.func_70893_e(true);
|
||||
@@ -353,4 +354,23 @@
|
||||
@@ -353,4 +354,24 @@
|
||||
protected float func_213348_b(Pose p_213348_1_, EntitySize p_213348_2_) {
|
||||
return 0.95F * p_213348_2_.field_220316_b;
|
||||
}
|
||||
@@ -47,6 +47,7 @@
|
||||
+ ret.add(new ItemStack(field_200206_bz.get(this.func_175509_cj())));
|
||||
+ }
|
||||
+ }
|
||||
+ this.func_184185_a(SoundEvents.field_187763_eJ, 1.0F, 1.0F);
|
||||
+ return ret;
|
||||
+ }
|
||||
}
|
||||
+27
-2
@@ -1,6 +1,19 @@
|
||||
--- a/net/minecraft/entity/passive/horse/AbstractHorseEntity.java
|
||||
+++ b/net/minecraft/entity/passive/horse/AbstractHorseEntity.java
|
||||
@@ -260,6 +260,7 @@
|
||||
@@ -230,9 +230,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
- BlockState blockstate = this.field_70170_p.func_180495_p(new BlockPos(this.field_70165_t, this.field_70163_u - 0.2D - (double)this.field_70126_B, this.field_70161_v));
|
||||
+ BlockPos pos = new BlockPos(this.field_70165_t, this.field_70163_u - 0.2D - (double) this.field_70126_B, this.field_70161_v);
|
||||
+ BlockState blockstate = this.field_70170_p.func_180495_p(pos);
|
||||
if (!blockstate.func_196958_f() && !this.func_174814_R()) {
|
||||
- SoundType soundtype = blockstate.func_215695_r();
|
||||
+ SoundType soundtype = blockstate.getSoundType(field_70170_p, pos, this);
|
||||
this.field_70170_p.func_184148_a((PlayerEntity)null, this.field_70165_t, this.field_70163_u, this.field_70161_v, soundtype.func_185844_d(), this.func_184176_by(), soundtype.func_185843_a() * 0.5F, soundtype.func_185847_b() * 0.75F);
|
||||
}
|
||||
|
||||
@@ -260,6 +261,7 @@
|
||||
|
||||
this.field_110296_bG.func_110134_a(this);
|
||||
this.func_110232_cE();
|
||||
@@ -8,7 +21,19 @@
|
||||
}
|
||||
|
||||
protected void func_110232_cE() {
|
||||
@@ -944,4 +945,22 @@
|
||||
@@ -321,9 +323,9 @@
|
||||
protected void func_180429_a(BlockPos p_180429_1_, BlockState p_180429_2_) {
|
||||
if (!p_180429_2_.func_185904_a().func_76224_d()) {
|
||||
BlockState blockstate = this.field_70170_p.func_180495_p(p_180429_1_.func_177984_a());
|
||||
- SoundType soundtype = p_180429_2_.func_215695_r();
|
||||
+ SoundType soundtype = p_180429_2_.getSoundType(field_70170_p, p_180429_1_, this);
|
||||
if (blockstate.func_177230_c() == Blocks.field_150433_aE) {
|
||||
- soundtype = blockstate.func_215695_r();
|
||||
+ soundtype = blockstate.getSoundType(field_70170_p, p_180429_1_, this);
|
||||
}
|
||||
|
||||
if (this.func_184207_aI() && this.field_190688_bE) {
|
||||
@@ -944,4 +946,22 @@
|
||||
|
||||
return p_213386_4_;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
--- a/net/minecraft/entity/passive/horse/LlamaEntity.java
|
||||
+++ b/net/minecraft/entity/passive/horse/LlamaEntity.java
|
||||
@@ -364,9 +364,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
- BlockState blockstate = this.field_70170_p.func_180495_p(new BlockPos(this.field_70165_t, this.field_70163_u - 0.2D - (double)this.field_70126_B, this.field_70161_v));
|
||||
+ BlockPos pos = new BlockPos(this.field_70165_t, this.field_70163_u - 0.2D - (double)this.field_70126_B, this.field_70161_v);
|
||||
+ BlockState blockstate = this.field_70170_p.func_180495_p(pos);
|
||||
if (!blockstate.func_196958_f() && !this.func_174814_R()) {
|
||||
- SoundType soundtype = blockstate.func_215695_r();
|
||||
+ SoundType soundtype = blockstate.getSoundType(field_70170_p, pos, this);
|
||||
this.field_70170_p.func_184148_a((PlayerEntity)null, this.field_70165_t, this.field_70163_u, this.field_70161_v, soundtype.func_185844_d(), this.func_184176_by(), soundtype.func_185843_a() * 0.5F, soundtype.func_185847_b() * 0.75F);
|
||||
}
|
||||
|
||||
@@ -173,24 +173,21 @@
|
||||
this.func_190777_m(true);
|
||||
}
|
||||
|
||||
@@ -820,13 +867,15 @@
|
||||
@@ -820,11 +867,12 @@
|
||||
}
|
||||
|
||||
protected void func_184590_k(float p_184590_1_) {
|
||||
- if (p_184590_1_ >= 3.0F && this.field_184627_bm.func_77973_b() == Items.field_185159_cQ) {
|
||||
+ if (p_184590_1_ >= 3.0F && this.field_184627_bm.isShield(this)) {
|
||||
+ ItemStack copy = this.field_184627_bm.func_77946_l();
|
||||
int i = 1 + MathHelper.func_76141_d(p_184590_1_);
|
||||
Hand hand = this.func_184600_cs();
|
||||
this.field_184627_bm.func_222118_a(i, this, (p_213833_1_) -> {
|
||||
p_213833_1_.func_213334_d(hand);
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(this, this.field_184627_bm, hand);
|
||||
});
|
||||
if (this.field_184627_bm.func_190926_b()) {
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(this, copy, hand);
|
||||
if (hand == Hand.MAIN_HAND) {
|
||||
this.func_184201_a(EquipmentSlotType.MAINHAND, ItemStack.field_190927_a);
|
||||
} else {
|
||||
@@ -842,11 +891,14 @@
|
||||
@@ -842,11 +890,14 @@
|
||||
|
||||
protected void func_70665_d(DamageSource p_70665_1_, float p_70665_2_) {
|
||||
if (!this.func_180431_b(p_70665_1_)) {
|
||||
@@ -205,7 +202,7 @@
|
||||
float f1 = f - p_70665_2_;
|
||||
if (f1 > 0.0F && f1 < 3.4028235E37F) {
|
||||
this.func_195067_a(Stats.field_212738_J, Math.round(f1 * 10.0F));
|
||||
@@ -901,6 +953,8 @@
|
||||
@@ -901,6 +952,8 @@
|
||||
|
||||
return ActionResultType.PASS;
|
||||
} else {
|
||||
@@ -214,7 +211,7 @@
|
||||
ItemStack itemstack = this.func_184586_b(p_190775_2_);
|
||||
ItemStack itemstack1 = itemstack.func_190926_b() ? ItemStack.field_190927_a : itemstack.func_77946_l();
|
||||
if (p_190775_1_.func_184230_a(this, p_190775_2_)) {
|
||||
@@ -908,6 +962,9 @@
|
||||
@@ -908,6 +961,9 @@
|
||||
itemstack.func_190920_e(itemstack1.func_190916_E());
|
||||
}
|
||||
|
||||
@@ -224,7 +221,7 @@
|
||||
return ActionResultType.SUCCESS;
|
||||
} else {
|
||||
if (!itemstack.func_190926_b() && p_190775_1_ instanceof LivingEntity) {
|
||||
@@ -917,6 +974,7 @@
|
||||
@@ -917,6 +973,7 @@
|
||||
|
||||
if (itemstack.func_111282_a(this, (LivingEntity)p_190775_1_, p_190775_2_)) {
|
||||
if (itemstack.func_190926_b() && !this.field_71075_bZ.field_75098_d) {
|
||||
@@ -232,7 +229,7 @@
|
||||
this.func_184611_a(p_190775_2_, ItemStack.field_190927_a);
|
||||
}
|
||||
|
||||
@@ -943,6 +1001,7 @@
|
||||
@@ -943,6 +1000,7 @@
|
||||
}
|
||||
|
||||
public void func_71059_n(Entity p_71059_1_) {
|
||||
@@ -240,7 +237,7 @@
|
||||
if (p_71059_1_.func_70075_an()) {
|
||||
if (!p_71059_1_.func_85031_j(this)) {
|
||||
float f = (float)this.func_110148_a(SharedMonsterAttributes.field_111264_e).func_111126_e();
|
||||
@@ -970,8 +1029,10 @@
|
||||
@@ -970,8 +1028,10 @@
|
||||
|
||||
boolean flag2 = flag && this.field_70143_R > 0.0F && !this.field_70122_E && !this.func_70617_f_() && !this.func_70090_H() && !this.func_70644_a(Effects.field_76440_q) && !this.func_184218_aH() && p_71059_1_ instanceof LivingEntity;
|
||||
flag2 = flag2 && !this.func_70051_ag();
|
||||
@@ -252,7 +249,7 @@
|
||||
}
|
||||
|
||||
f = f + f1;
|
||||
@@ -1059,8 +1120,10 @@
|
||||
@@ -1059,8 +1119,10 @@
|
||||
}
|
||||
|
||||
if (!this.field_70170_p.field_72995_K && !itemstack1.func_190926_b() && entity instanceof LivingEntity) {
|
||||
@@ -263,7 +260,7 @@
|
||||
this.func_184611_a(Hand.MAIN_HAND, ItemStack.field_190927_a);
|
||||
}
|
||||
}
|
||||
@@ -1102,7 +1165,7 @@
|
||||
@@ -1102,7 +1164,7 @@
|
||||
}
|
||||
|
||||
if (this.field_70146_Z.nextFloat() < f) {
|
||||
@@ -272,6 +269,18 @@
|
||||
this.func_184602_cy();
|
||||
this.field_70170_p.func_72960_a(this, (byte)30);
|
||||
}
|
||||
@@ -1128,8 +1190,9 @@
|
||||
public void func_71004_bE() {
|
||||
}
|
||||
|
||||
- public void func_70106_y() {
|
||||
- super.func_70106_y();
|
||||
+ @Override
|
||||
+ public void remove(boolean keepData) {
|
||||
+ super.remove(keepData);
|
||||
this.field_71069_bz.func_75134_a(this);
|
||||
if (this.field_71070_bA != null) {
|
||||
this.field_71070_bA.func_75134_a(this);
|
||||
@@ -1146,6 +1209,9 @@
|
||||
}
|
||||
|
||||
@@ -416,7 +425,29 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1703,7 +1818,10 @@
|
||||
@@ -1462,6 +1577,10 @@
|
||||
}
|
||||
|
||||
public void func_195068_e(int p_195068_1_) {
|
||||
+ net.minecraftforge.event.entity.player.PlayerXpEvent.XpChange event = new net.minecraftforge.event.entity.player.PlayerXpEvent.XpChange(this, p_195068_1_);
|
||||
+ if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) return;
|
||||
+ p_195068_1_ = event.getAmount();
|
||||
+
|
||||
this.func_85039_t(p_195068_1_);
|
||||
this.field_71106_cc += (float)p_195068_1_ / (float)this.func_71050_bK();
|
||||
this.field_71067_cb = MathHelper.func_76125_a(this.field_71067_cb + p_195068_1_, 0, Integer.MAX_VALUE);
|
||||
@@ -1501,6 +1620,10 @@
|
||||
}
|
||||
|
||||
public void func_82242_a(int p_82242_1_) {
|
||||
+ net.minecraftforge.event.entity.player.PlayerXpEvent.LevelChange event = new net.minecraftforge.event.entity.player.PlayerXpEvent.LevelChange(this, p_82242_1_);
|
||||
+ if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event)) return;
|
||||
+ p_82242_1_ = event.getLevels();
|
||||
+
|
||||
this.field_71068_ca += p_82242_1_;
|
||||
if (this.field_71068_ca < 0) {
|
||||
this.field_71068_ca = 0;
|
||||
@@ -1703,7 +1826,10 @@
|
||||
}
|
||||
|
||||
public ITextComponent func_145748_c_() {
|
||||
@@ -428,7 +459,7 @@
|
||||
return this.func_208016_c(itextcomponent);
|
||||
}
|
||||
|
||||
@@ -1939,4 +2057,44 @@
|
||||
@@ -1939,4 +2065,44 @@
|
||||
return this.field_221260_g;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
BlockPos blockpos = new BlockPos(this.field_70165_t, this.field_70163_u, this.field_70161_v);
|
||||
BlockState blockstate = Blocks.field_222388_bz.func_176223_P();
|
||||
if (this.field_70170_p.func_180495_p(blockpos).func_196958_f() && blockstate.func_196955_c(this.field_70170_p, blockpos)) {
|
||||
@@ -568,8 +569,10 @@
|
||||
@@ -568,13 +569,15 @@
|
||||
return this.field_71133_b.func_71219_W();
|
||||
}
|
||||
|
||||
@@ -28,7 +28,18 @@
|
||||
this.field_184851_cj = true;
|
||||
DimensionType dimensiontype = this.field_71093_bK;
|
||||
if (dimensiontype == DimensionType.field_223229_c_ && p_212321_1_ == DimensionType.field_223227_a_) {
|
||||
@@ -591,8 +594,8 @@
|
||||
this.func_213319_R();
|
||||
- this.func_71121_q().func_217434_e(this);
|
||||
+ this.func_71121_q().removePlayer(this, true); //Forge: The player entity is cloned so keep the data until after cloning calls copyFrom
|
||||
if (!this.field_71136_j) {
|
||||
this.field_71136_j = true;
|
||||
this.field_71135_a.func_147359_a(new SChangeGameStatePacket(4, this.field_192040_cp ? 0.0F : 1.0F));
|
||||
@@ -587,12 +590,13 @@
|
||||
this.field_71093_bK = p_212321_1_;
|
||||
ServerWorld serverworld1 = this.field_71133_b.func_71218_a(p_212321_1_);
|
||||
WorldInfo worldinfo = this.field_70170_p.func_72912_H();
|
||||
+ net.minecraftforge.fml.network.NetworkHooks.sendDimensionDataPacket(this.field_71135_a.field_147371_a, this);
|
||||
this.field_71135_a.func_147359_a(new SRespawnPacket(p_212321_1_, worldinfo.func_76067_t(), this.field_71134_c.func_73081_b()));
|
||||
this.field_71135_a.func_147359_a(new SServerDifficultyPacket(worldinfo.func_176130_y(), worldinfo.func_176123_z()));
|
||||
PlayerList playerlist = this.field_71133_b.func_184103_al();
|
||||
playerlist.func_187243_f(this);
|
||||
@@ -39,7 +50,7 @@
|
||||
double d0 = this.field_70165_t;
|
||||
double d1 = this.field_70163_u;
|
||||
double d2 = this.field_70161_v;
|
||||
@@ -601,13 +604,11 @@
|
||||
@@ -601,13 +605,11 @@
|
||||
double d3 = 8.0D;
|
||||
float f2 = f1;
|
||||
serverworld.func_217381_Z().func_76320_a("moving");
|
||||
@@ -56,7 +67,7 @@
|
||||
} else if (dimensiontype == DimensionType.field_223227_a_ && p_212321_1_ == DimensionType.field_223229_c_) {
|
||||
BlockPos blockpos = serverworld1.func_180504_m();
|
||||
d0 = (double)blockpos.func_177958_n();
|
||||
@@ -671,6 +672,7 @@
|
||||
@@ -671,6 +673,7 @@
|
||||
this.field_71144_ck = -1;
|
||||
this.field_71149_ch = -1.0F;
|
||||
this.field_71146_ci = -1;
|
||||
@@ -64,7 +75,7 @@
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -776,7 +778,7 @@
|
||||
@@ -776,11 +779,11 @@
|
||||
BlockPos blockpos = new BlockPos(i, j, k);
|
||||
if (this.field_70170_p.func_175667_e(blockpos)) {
|
||||
BlockState blockstate = this.field_70170_p.func_180495_p(blockpos);
|
||||
@@ -73,7 +84,12 @@
|
||||
BlockPos blockpos1 = blockpos.func_177977_b();
|
||||
BlockState blockstate1 = this.field_70170_p.func_180495_p(blockpos1);
|
||||
Block block = blockstate1.func_177230_c();
|
||||
@@ -819,6 +821,7 @@
|
||||
- if (block.func_203417_a(BlockTags.field_219748_G) || block.func_203417_a(BlockTags.field_219757_z) || block instanceof FenceGateBlock) {
|
||||
+ if (blockstate.collisionExtendsVertically(this.field_70170_p, blockpos, this)) {
|
||||
blockpos = blockpos1;
|
||||
blockstate = blockstate1;
|
||||
}
|
||||
@@ -819,6 +822,7 @@
|
||||
this.field_71135_a.func_147359_a(new SOpenWindowPacket(container.field_75152_c, container.func_216957_a(), p_213829_1_.func_145748_c_()));
|
||||
container.func_75132_a(this);
|
||||
this.field_71070_bA = container;
|
||||
@@ -81,7 +97,7 @@
|
||||
return OptionalInt.of(this.field_71139_cq);
|
||||
}
|
||||
}
|
||||
@@ -837,6 +840,7 @@
|
||||
@@ -837,6 +841,7 @@
|
||||
this.field_71135_a.func_147359_a(new SOpenHorseWindowPacket(this.field_71139_cq, p_184826_2_.func_70302_i_(), p_184826_1_.func_145782_y()));
|
||||
this.field_71070_bA = new HorseInventoryContainer(this.field_71139_cq, this.field_71071_by, p_184826_2_, p_184826_1_);
|
||||
this.field_71070_bA.func_75132_a(this);
|
||||
@@ -89,7 +105,7 @@
|
||||
}
|
||||
|
||||
public void func_184814_a(ItemStack p_184814_1_, Hand p_184814_2_) {
|
||||
@@ -894,6 +898,7 @@
|
||||
@@ -894,6 +899,7 @@
|
||||
|
||||
public void func_71128_l() {
|
||||
this.field_71070_bA.func_75134_a(this);
|
||||
@@ -97,7 +113,7 @@
|
||||
this.field_71070_bA = this.field_71069_bz;
|
||||
}
|
||||
|
||||
@@ -1020,6 +1025,20 @@
|
||||
@@ -1020,6 +1026,20 @@
|
||||
this.field_193110_cw = p_193104_1_.field_193110_cw;
|
||||
this.func_192029_h(p_193104_1_.func_192023_dk());
|
||||
this.func_192031_i(p_193104_1_.func_192025_dl());
|
||||
@@ -111,14 +127,14 @@
|
||||
+
|
||||
+ //Copy over a section of the Entity Data from the old player.
|
||||
+ //Allows mods to specify data that persists after players respawn.
|
||||
+ CompoundNBT old = p_193104_1_.getEntityData();
|
||||
+ CompoundNBT old = p_193104_1_.getPersistentData();
|
||||
+ if (old.func_74764_b(PERSISTED_NBT_TAG))
|
||||
+ getEntityData().func_218657_a(PERSISTED_NBT_TAG, old.func_74781_a(PERSISTED_NBT_TAG));
|
||||
+ getPersistentData().func_218657_a(PERSISTED_NBT_TAG, old.func_74781_a(PERSISTED_NBT_TAG));
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onPlayerClone(this, p_193104_1_, !p_193104_2_);
|
||||
}
|
||||
|
||||
protected void func_70670_a(EffectInstance p_70670_1_) {
|
||||
@@ -1242,15 +1261,15 @@
|
||||
@@ -1242,15 +1262,16 @@
|
||||
this.func_184210_p();
|
||||
if (p_200619_1_ == this.field_70170_p) {
|
||||
this.field_71135_a.func_147364_a(p_200619_2_, p_200619_4_, p_200619_6_, p_200619_8_, p_200619_9_);
|
||||
@@ -127,6 +143,7 @@
|
||||
ServerWorld serverworld = this.func_71121_q();
|
||||
this.field_71093_bK = p_200619_1_.field_73011_w.func_186058_p();
|
||||
WorldInfo worldinfo = p_200619_1_.func_72912_H();
|
||||
+ net.minecraftforge.fml.network.NetworkHooks.sendDimensionDataPacket(this.field_71135_a.field_147371_a, this);
|
||||
this.field_71135_a.func_147359_a(new SRespawnPacket(this.field_71093_bK, worldinfo.func_76067_t(), this.field_71134_c.func_73081_b()));
|
||||
this.field_71135_a.func_147359_a(new SServerDifficultyPacket(worldinfo.func_176130_y(), worldinfo.func_176123_z()));
|
||||
this.field_71133_b.func_184103_al().func_187243_f(this);
|
||||
@@ -137,7 +154,7 @@
|
||||
this.func_70012_b(p_200619_2_, p_200619_4_, p_200619_6_, p_200619_8_, p_200619_9_);
|
||||
this.func_70029_a(p_200619_1_);
|
||||
p_200619_1_.func_217446_a(this);
|
||||
@@ -1259,6 +1278,7 @@
|
||||
@@ -1259,6 +1280,7 @@
|
||||
this.field_71134_c.func_73080_a(p_200619_1_);
|
||||
this.field_71133_b.func_184103_al().func_72354_b(this, p_200619_1_);
|
||||
this.field_71133_b.func_184103_al().func_72385_f(this);
|
||||
@@ -145,7 +162,7 @@
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1293,6 +1313,8 @@
|
||||
@@ -1293,6 +1315,8 @@
|
||||
if (itementity == null) {
|
||||
return null;
|
||||
} else {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
}
|
||||
|
||||
- if (raytraceresult != null && !flag) {
|
||||
+ if (raytraceresult != null && !flag && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, raytraceresult)) {
|
||||
+ if (raytraceresult != null && raytraceresult.func_216346_c() != RayTraceResult.Type.MISS && !flag && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, raytraceresult)) {
|
||||
this.func_184549_a(raytraceresult);
|
||||
this.field_70160_al = true;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/net/minecraft/entity/projectile/ArrowEntity.java
|
||||
+++ b/net/minecraft/entity/projectile/ArrowEntity.java
|
||||
@@ -59,7 +59,7 @@
|
||||
} else if (p_184555_1_.func_77973_b() == Items.field_151032_g) {
|
||||
this.field_184560_g = Potions.field_185229_a;
|
||||
this.field_184561_h.clear();
|
||||
- this.field_70180_af.func_187227_b(field_184559_f, -1);
|
||||
+ this.func_191507_d(-1); // Forge: fix MC-107941
|
||||
}
|
||||
|
||||
}
|
||||
@@ -62,3 +62,15 @@
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
@@ -416,8 +424,9 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
- public void func_70106_y() {
|
||||
- super.func_70106_y();
|
||||
+ @Override
|
||||
+ public void remove(boolean keepData) {
|
||||
+ super.remove(keepData);
|
||||
if (this.field_146042_b != null) {
|
||||
this.field_146042_b.field_71104_cf = null;
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
return !p_213879_1_.func_175149_v() && p_213879_1_ != this.field_190539_a;
|
||||
}, RayTraceContext.BlockMode.OUTLINE, true);
|
||||
- if (raytraceresult != null) {
|
||||
+ if (raytraceresult != null && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, raytraceresult)) {
|
||||
+ if (raytraceresult != null && raytraceresult.func_216346_c() != RayTraceResult.Type.MISS && !net.minecraftforge.event.ForgeEventFactory.onProjectileImpact(this, raytraceresult)) {
|
||||
this.func_190536_a(raytraceresult);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/net/minecraft/entity/projectile/ProjectileHelper.java
|
||||
+++ b/net/minecraft/entity/projectile/ProjectileHelper.java
|
||||
@@ -89,7 +89,7 @@
|
||||
Vec3d vec3d1 = optional.get();
|
||||
double d1 = p_221273_1_.func_72436_e(vec3d1);
|
||||
if (d1 < d0 || d0 == 0.0D) {
|
||||
- if (entity1.func_184208_bv() == p_221273_0_.func_184208_bv()) {
|
||||
+ if (entity1.func_184208_bv() == p_221273_0_.func_184208_bv() && !entity1.canRiderInteract()) {
|
||||
if (d0 == 0.0D) {
|
||||
entity = entity1;
|
||||
vec3d = vec3d1;
|
||||
@@ -9,7 +9,7 @@
|
||||
public static final ObjectIntIdentityMap<IFluidState> field_207201_d = new ObjectIntIdentityMap<>();
|
||||
protected final StateContainer<Fluid, IFluidState> field_207202_e;
|
||||
private IFluidState field_207200_b;
|
||||
@@ -102,4 +102,10 @@
|
||||
@@ -102,4 +102,26 @@
|
||||
}
|
||||
|
||||
public abstract VoxelShape func_215664_b(IFluidState p_215664_1_, IBlockReader p_215664_2_, BlockPos p_215664_3_);
|
||||
@@ -18,5 +18,21 @@
|
||||
+ @Override
|
||||
+ public java.util.Set<net.minecraft.util.ResourceLocation> getTags() {
|
||||
+ return reverseTags.getTagNames();
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Creates the fluid attributes object, which will contain all the extended values for the fluid that aren't part of the vanilla system.
|
||||
+ * Do not call this from outside. To retrieve the values use {@link Fluid#getAttributes()}
|
||||
+ */
|
||||
+ protected net.minecraftforge.fluids.FluidAttributes createAttributes()
|
||||
+ {
|
||||
+ return net.minecraftforge.common.ForgeHooks.createVanillaFluidAttributes(this);
|
||||
+ }
|
||||
+
|
||||
+ private net.minecraftforge.fluids.FluidAttributes forgeFluidAttributes;
|
||||
+ public final net.minecraftforge.fluids.FluidAttributes getAttributes() {
|
||||
+ if (forgeFluidAttributes == null)
|
||||
+ forgeFluidAttributes = createAttributes();
|
||||
+ return forgeFluidAttributes;
|
||||
+ }
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
--- a/net/minecraft/fluid/LavaFluid.java
|
||||
+++ b/net/minecraft/fluid/LavaFluid.java
|
||||
@@ -76,7 +76,7 @@
|
||||
BlockState blockstate = p_207186_1_.func_180495_p(blockpos);
|
||||
if (blockstate.func_196958_f()) {
|
||||
if (this.func_176369_e(p_207186_1_, blockpos)) {
|
||||
- p_207186_1_.func_175656_a(blockpos, Blocks.field_150480_ab.func_176223_P());
|
||||
+ p_207186_1_.func_175656_a(blockpos, net.minecraftforge.event.ForgeEventFactory.fireFluidPlaceBlockEvent(p_207186_1_, blockpos, p_207186_2_, Blocks.field_150480_ab.func_176223_P()));
|
||||
return;
|
||||
}
|
||||
} else if (blockstate.func_185904_a().func_76230_c()) {
|
||||
@@ -91,7 +91,7 @@
|
||||
}
|
||||
|
||||
if (p_207186_1_.func_175623_d(blockpos1.func_177984_a()) && this.func_176368_m(p_207186_1_, blockpos1)) {
|
||||
- p_207186_1_.func_175656_a(blockpos1.func_177984_a(), Blocks.field_150480_ab.func_176223_P());
|
||||
+ p_207186_1_.func_175656_a(blockpos1.func_177984_a(), net.minecraftforge.event.ForgeEventFactory.fireFluidPlaceBlockEvent(p_207186_1_, blockpos1.func_177984_a(), p_207186_2_, Blocks.field_150480_ab.func_176223_P()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -169,7 +169,7 @@
|
||||
IFluidState ifluidstate = p_205574_1_.func_204610_c(p_205574_2_);
|
||||
if (this.func_207185_a(FluidTags.field_206960_b) && ifluidstate.func_206884_a(FluidTags.field_206959_a)) {
|
||||
if (p_205574_3_.func_177230_c() instanceof FlowingFluidBlock) {
|
||||
- p_205574_1_.func_180501_a(p_205574_2_, Blocks.field_150348_b.func_176223_P(), 3);
|
||||
+ p_205574_1_.func_180501_a(p_205574_2_, net.minecraftforge.event.ForgeEventFactory.fireFluidPlaceBlockEvent(p_205574_1_, p_205574_2_, p_205574_2_, Blocks.field_150348_b.func_176223_P()), 3);
|
||||
}
|
||||
|
||||
this.func_205581_a(p_205574_1_, p_205574_2_);
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/net/minecraft/inventory/container/StonecutterContainer.java
|
||||
+++ b/net/minecraft/inventory/container/StonecutterContainer.java
|
||||
@@ -183,7 +183,7 @@
|
||||
if (!this.func_75135_a(itemstack1, 2, 38, false)) {
|
||||
return ItemStack.field_190927_a;
|
||||
}
|
||||
- } else if (field_217084_c.contains(item)) {
|
||||
+ } else if (!this.field_217090_i.func_199532_z().func_215370_b(IRecipeType.field_222154_f, new Inventory(itemstack1), this.field_217090_i).isEmpty()) {
|
||||
if (!this.func_75135_a(itemstack1, 0, 1, false)) {
|
||||
return ItemStack.field_190927_a;
|
||||
}
|
||||
@@ -1,15 +1,34 @@
|
||||
--- a/net/minecraft/item/BlockItem.java
|
||||
+++ b/net/minecraft/item/BlockItem.java
|
||||
@@ -69,7 +69,7 @@
|
||||
@@ -69,8 +69,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
- SoundType soundtype = blockstate1.func_215695_r();
|
||||
- world.func_184133_a(playerentity, blockpos, this.func_219983_a(blockstate1), SoundCategory.BLOCKS, (soundtype.func_185843_a() + 1.0F) / 2.0F, soundtype.func_185847_b() * 0.8F);
|
||||
+ SoundType soundtype = blockstate1.getSoundType(world, blockpos, p_195942_1_.func_195999_j());
|
||||
world.func_184133_a(playerentity, blockpos, this.func_219983_a(blockstate1), SoundCategory.BLOCKS, (soundtype.func_185843_a() + 1.0F) / 2.0F, soundtype.func_185847_b() * 0.8F);
|
||||
+ world.func_184133_a(playerentity, blockpos, this.getPlaceSound(blockstate1, world, blockpos, p_195942_1_.func_195999_j()), SoundCategory.BLOCKS, (soundtype.func_185843_a() + 1.0F) / 2.0F, soundtype.func_185847_b() * 0.8F);
|
||||
itemstack.func_190918_g(1);
|
||||
return ActionResultType.SUCCESS;
|
||||
@@ -189,6 +189,10 @@
|
||||
}
|
||||
@@ -78,10 +78,16 @@
|
||||
}
|
||||
}
|
||||
|
||||
+ @Deprecated //Forge: Use more sensitive version {@link BlockItem#getPlaceSound(BlockState, IBlockReader, BlockPos, Entity) }
|
||||
protected SoundEvent func_219983_a(BlockState p_219983_1_) {
|
||||
return p_219983_1_.func_215695_r().func_185841_e();
|
||||
}
|
||||
|
||||
+ //Forge: Sensitive version of BlockItem#getPlaceSound
|
||||
+ protected SoundEvent getPlaceSound(BlockState state, World world, BlockPos pos, PlayerEntity entity) {
|
||||
+ return state.getSoundType(world, pos, entity).func_185841_e();
|
||||
+ }
|
||||
+
|
||||
@Nullable
|
||||
public BlockItemUseContext func_219984_b(BlockItemUseContext p_219984_1_) {
|
||||
return p_219984_1_;
|
||||
@@ -189,10 +195,18 @@
|
||||
}
|
||||
|
||||
public Block func_179223_d() {
|
||||
@@ -20,3 +39,11 @@
|
||||
return this.field_150939_a;
|
||||
}
|
||||
|
||||
public void func_195946_a(Map<Block, Item> p_195946_1_, Item p_195946_2_) {
|
||||
p_195946_1_.put(this.func_179223_d(), p_195946_2_);
|
||||
}
|
||||
+
|
||||
+ public void removeFromBlockToItemMap(Map<Block, Item> blockToItemMap, Item itemIn) {
|
||||
+ blockToItemMap.remove(this.func_179223_d());
|
||||
+ }
|
||||
}
|
||||
@@ -27,7 +27,18 @@
|
||||
if (blockstate.func_177230_c() instanceof IGrowable) {
|
||||
IGrowable igrowable = (IGrowable)blockstate.func_177230_c();
|
||||
if (igrowable.func_176473_a(p_195966_1_, p_195966_2_, blockstate, p_195966_1_.field_72995_K)) {
|
||||
@@ -124,7 +133,7 @@
|
||||
@@ -84,7 +93,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if (biome == Biomes.field_203614_T || biome == Biomes.field_203617_W) {
|
||||
+ // FORGE: Use BiomeDictionary here to allow modded warm ocean biomes to spawn coral from bonemeal
|
||||
+ if (net.minecraftforge.common.BiomeDictionary.hasType(biome, net.minecraftforge.common.BiomeDictionary.Type.OCEAN)
|
||||
+ && net.minecraftforge.common.BiomeDictionary.hasType(biome, net.minecraftforge.common.BiomeDictionary.Type.HOT)) {
|
||||
if (i == 0 && p_203173_3_ != null && p_203173_3_.func_176740_k().func_176722_c()) {
|
||||
blockstate = BlockTags.field_211922_B.func_205596_a(p_203173_1_.field_73012_v).func_176223_P().func_206870_a(DeadCoralWallFanBlock.field_211884_b, p_203173_3_);
|
||||
} else if (field_77697_d.nextInt(4) == 0) {
|
||||
@@ -124,7 +135,7 @@
|
||||
}
|
||||
|
||||
BlockState blockstate = p_195965_0_.func_180495_p(p_195965_1_);
|
||||
|
||||
@@ -1,6 +1,26 @@
|
||||
--- a/net/minecraft/item/BucketItem.java
|
||||
+++ b/net/minecraft/item/BucketItem.java
|
||||
@@ -38,6 +38,8 @@
|
||||
@@ -30,14 +30,28 @@
|
||||
public class BucketItem extends Item {
|
||||
private final Fluid field_77876_a;
|
||||
|
||||
+ // Forge: Use the other constructor that takes a Supplier
|
||||
+ @Deprecated
|
||||
public BucketItem(Fluid p_i49025_1_, Item.Properties p_i49025_2_) {
|
||||
super(p_i49025_2_);
|
||||
this.field_77876_a = p_i49025_1_;
|
||||
+ this.fluidSupplier = p_i49025_1_.delegate;
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * @param supplier A fluid supplier such as {@link net.minecraftforge.fml.RegistryObject<Fluid>}
|
||||
+ */
|
||||
+ public BucketItem(java.util.function.Supplier<? extends Fluid> supplier, Item.Properties builder) {
|
||||
+ super(builder);
|
||||
+ this.field_77876_a = null;
|
||||
+ this.fluidSupplier = supplier;
|
||||
+ }
|
||||
+
|
||||
public ActionResult<ItemStack> func_77659_a(World p_77659_1_, PlayerEntity p_77659_2_, Hand p_77659_3_) {
|
||||
ItemStack itemstack = p_77659_2_.func_184586_b(p_77659_3_);
|
||||
RayTraceResult raytraceresult = func_219968_a(p_77659_1_, p_77659_2_, this.field_77876_a == Fluids.field_204541_a ? RayTraceContext.FluidMode.SOURCE_ONLY : RayTraceContext.FluidMode.NONE);
|
||||
@@ -9,8 +29,25 @@
|
||||
if (raytraceresult.func_216346_c() == RayTraceResult.Type.MISS) {
|
||||
return new ActionResult<>(ActionResultType.PASS, itemstack);
|
||||
} else if (raytraceresult.func_216346_c() != RayTraceResult.Type.BLOCK) {
|
||||
@@ -150,4 +152,12 @@
|
||||
SoundEvent soundevent = this.field_77876_a.func_207185_a(FluidTags.field_206960_b) ? SoundEvents.field_187627_L : SoundEvents.field_187624_K;
|
||||
@@ -52,7 +66,10 @@
|
||||
Fluid fluid = ((IBucketPickupHandler)blockstate1.func_177230_c()).func_204508_a(p_77659_1_, blockpos, blockstate1);
|
||||
if (fluid != Fluids.field_204541_a) {
|
||||
p_77659_2_.func_71029_a(Stats.field_75929_E.func_199076_b(this));
|
||||
- p_77659_2_.func_184185_a(fluid.func_207185_a(FluidTags.field_206960_b) ? SoundEvents.field_187633_N : SoundEvents.field_187630_M, 1.0F, 1.0F);
|
||||
+
|
||||
+ SoundEvent soundevent = this.field_77876_a.getAttributes().getEmptySound();
|
||||
+ if(soundevent == null) soundevent = fluid.func_207185_a(FluidTags.field_206960_b) ? SoundEvents.field_187633_N : SoundEvents.field_187630_M;
|
||||
+ p_77659_2_.func_184185_a(soundevent, 1.0F, 1.0F);
|
||||
ItemStack itemstack1 = this.func_150910_a(itemstack, p_77659_2_, fluid.func_204524_b());
|
||||
if (!p_77659_1_.field_72995_K) {
|
||||
CriteriaTriggers.field_204813_j.func_204817_a((ServerPlayerEntity)p_77659_2_, new ItemStack(fluid.func_204524_b()));
|
||||
@@ -147,7 +164,19 @@
|
||||
}
|
||||
|
||||
protected void func_203791_b(@Nullable PlayerEntity p_203791_1_, IWorld p_203791_2_, BlockPos p_203791_3_) {
|
||||
- SoundEvent soundevent = this.field_77876_a.func_207185_a(FluidTags.field_206960_b) ? SoundEvents.field_187627_L : SoundEvents.field_187624_K;
|
||||
+ SoundEvent soundevent = this.field_77876_a.getAttributes().getEmptySound();
|
||||
+ if(soundevent == null) soundevent = this.field_77876_a.func_207185_a(FluidTags.field_206960_b) ? SoundEvents.field_187627_L : SoundEvents.field_187624_K;
|
||||
p_203791_2_.func_184133_a(p_203791_1_, p_203791_3_, soundevent, SoundCategory.BLOCKS, 1.0F, 1.0F);
|
||||
}
|
||||
+
|
||||
@@ -21,4 +58,7 @@
|
||||
+ else
|
||||
+ return super.initCapabilities(stack, nbt);
|
||||
+ }
|
||||
+
|
||||
+ private final java.util.function.Supplier<? extends Fluid> fluidSupplier;
|
||||
+ public Fluid getFluid() { return fluidSupplier.get(); }
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/item/DyeColor.java
|
||||
+++ b/net/minecraft/item/DyeColor.java
|
||||
@@ -43,6 +43,7 @@
|
||||
@@ -41,6 +41,7 @@
|
||||
private final int field_196066_w;
|
||||
private final float[] field_193352_x;
|
||||
private final int field_196067_y;
|
||||
@@ -8,19 +8,23 @@
|
||||
private final int field_218390_z;
|
||||
|
||||
private DyeColor(int p_i50049_3_, String p_i50049_4_, int p_i50049_5_, MaterialColor p_i50049_6_, int p_i50049_7_, int p_i50049_8_) {
|
||||
@@ -55,6 +56,7 @@
|
||||
@@ -53,6 +54,7 @@
|
||||
int j = (p_i50049_5_ & '\uff00') >> 8;
|
||||
int k = (p_i50049_5_ & 255) >> 0;
|
||||
this.field_196066_w = k << 16 | j << 8 | i << 0;
|
||||
+ this.tag = new net.minecraft.tags.ItemTags.Wrapper(new net.minecraft.util.ResourceLocation("minecraft", "dyes_" + p_i50049_4_));
|
||||
+ this.tag = new net.minecraft.tags.ItemTags.Wrapper(new net.minecraft.util.ResourceLocation("forge", "dyes/" + p_i50049_4_));
|
||||
this.field_193352_x = new float[]{(float)i / 255.0F, (float)j / 255.0F, (float)k / 255.0F};
|
||||
this.field_196067_y = p_i50049_7_;
|
||||
}
|
||||
@@ -120,4 +122,21 @@
|
||||
@@ -115,4 +117,25 @@
|
||||
public String func_176610_l() {
|
||||
return this.field_176785_v;
|
||||
}
|
||||
+
|
||||
+ public int getColorValue() {
|
||||
+ return field_193351_w;
|
||||
+ }
|
||||
+
|
||||
+ public net.minecraft.tags.Tag<Item> getTag() {
|
||||
+ return tag;
|
||||
+ }
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
--- a/net/minecraft/item/FishBucketItem.java
|
||||
+++ b/net/minecraft/item/FishBucketItem.java
|
||||
@@ -25,11 +25,19 @@
|
||||
public class FishBucketItem extends BucketItem {
|
||||
private final EntityType<?> field_203794_a;
|
||||
|
||||
+ @Deprecated
|
||||
public FishBucketItem(EntityType<?> p_i49022_1_, Fluid p_i49022_2_, Item.Properties p_i49022_3_) {
|
||||
super(p_i49022_2_, p_i49022_3_);
|
||||
this.field_203794_a = p_i49022_1_;
|
||||
+ this.fishTypeSupplier = () -> p_i49022_1_;
|
||||
}
|
||||
|
||||
+ public FishBucketItem(java.util.function.Supplier<? extends EntityType<?>> fishTypeIn, java.util.function.Supplier<? extends Fluid> p_i49022_2_, Item.Properties builder) {
|
||||
+ super(p_i49022_2_, builder);
|
||||
+ this.field_203794_a = null;
|
||||
+ this.fishTypeSupplier = fishTypeIn;
|
||||
+ }
|
||||
+
|
||||
public void func_203792_a(World p_203792_1_, ItemStack p_203792_2_, BlockPos p_203792_3_) {
|
||||
if (!p_203792_1_.field_72995_K) {
|
||||
this.func_205357_b(p_203792_1_, p_203792_2_, p_203792_3_);
|
||||
@@ -78,4 +86,9 @@
|
||||
}
|
||||
|
||||
}
|
||||
+
|
||||
+ private final java.util.function.Supplier<? extends EntityType<?>> fishTypeSupplier;
|
||||
+ protected EntityType<?> getFishType() {
|
||||
+ return fishTypeSupplier.get();
|
||||
+ }
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
--- a/net/minecraft/item/FlintAndSteelItem.java
|
||||
+++ b/net/minecraft/item/FlintAndSteelItem.java
|
||||
@@ -65,7 +65,8 @@
|
||||
boolean flag = false;
|
||||
|
||||
for(Direction direction : Direction.Plane.HORIZONTAL) {
|
||||
- if (p_219996_1_.func_180495_p(p_219996_2_.func_177972_a(direction)).func_177230_c() == Blocks.field_150343_Z && ((NetherPortalBlock)Blocks.field_150427_aO).func_201816_b(p_219996_1_, p_219996_2_) != null) {
|
||||
+ BlockPos framePos = p_219996_2_.func_177972_a(direction);
|
||||
+ if (p_219996_1_.func_180495_p(framePos).isPortalFrame(p_219996_1_, framePos) && ((NetherPortalBlock)Blocks.field_150427_aO).func_201816_b(p_219996_1_, p_219996_2_) != null) {
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
--- a/net/minecraft/item/WallOrFloorItem.java
|
||||
+++ b/net/minecraft/item/WallOrFloorItem.java
|
||||
@@ -41,4 +41,9 @@
|
||||
super.func_195946_a(p_195946_1_, p_195946_2_);
|
||||
p_195946_1_.put(this.field_195947_b, p_195946_2_);
|
||||
}
|
||||
+
|
||||
+ public void removeFromBlockToItemMap(Map<Block, Item> blockToItemMap, Item itemIn) {
|
||||
+ super.removeFromBlockToItemMap(blockToItemMap, itemIn);
|
||||
+ blockToItemMap.remove(this.field_195947_b);
|
||||
+ }
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
--- a/net/minecraft/item/crafting/AbstractCookingRecipe.java
|
||||
+++ b/net/minecraft/item/crafting/AbstractCookingRecipe.java
|
||||
@@ -35,7 +35,6 @@
|
||||
return this.field_222143_e.func_77946_l();
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public boolean func_194133_a(int p_194133_1_, int p_194133_2_) {
|
||||
return true;
|
||||
}
|
||||
@@ -54,7 +53,6 @@
|
||||
return this.field_222143_e;
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public String func_193358_e() {
|
||||
return this.field_222141_c;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
--- a/net/minecraft/item/crafting/ArmorDyeRecipe.java
|
||||
+++ b/net/minecraft/item/crafting/ArmorDyeRecipe.java
|
||||
@@ -74,7 +74,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public boolean func_194133_a(int p_194133_1_, int p_194133_2_) {
|
||||
return p_194133_1_ * p_194133_2_ >= 2;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/item/crafting/BannerDuplicateRecipe.java
|
||||
+++ b/net/minecraft/item/crafting/BannerDuplicateRecipe.java
|
||||
@@ -79,8 +79,8 @@
|
||||
@@ -77,8 +77,8 @@
|
||||
for(int i = 0; i < nonnulllist.size(); ++i) {
|
||||
ItemStack itemstack = p_179532_1_.func_70301_a(i);
|
||||
if (!itemstack.func_190926_b()) {
|
||||
@@ -11,11 +11,3 @@
|
||||
} else if (itemstack.func_77942_o() && BannerTileEntity.func_175113_c(itemstack) > 0) {
|
||||
ItemStack itemstack1 = itemstack.func_77946_l();
|
||||
itemstack1.func_190920_e(1);
|
||||
@@ -96,7 +96,6 @@
|
||||
return IRecipeSerializer.field_222167_k;
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public boolean func_194133_a(int p_194133_1_, int p_194133_2_) {
|
||||
return p_194133_1_ * p_194133_2_ >= 2;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
--- a/net/minecraft/item/crafting/BlastingRecipe.java
|
||||
+++ b/net/minecraft/item/crafting/BlastingRecipe.java
|
||||
@@ -11,7 +11,6 @@
|
||||
super(IRecipeType.field_222151_c, p_i50031_1_, p_i50031_2_, p_i50031_3_, p_i50031_4_, p_i50031_5_, p_i50031_6_);
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public ItemStack func_222128_h() {
|
||||
return new ItemStack(Blocks.field_222424_lM);
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/minecraft/item/crafting/BookCloningRecipe.java
|
||||
+++ b/net/minecraft/item/crafting/BookCloningRecipe.java
|
||||
@@ -81,8 +81,8 @@
|
||||
@@ -79,8 +79,8 @@
|
||||
|
||||
for(int i = 0; i < nonnulllist.size(); ++i) {
|
||||
ItemStack itemstack = p_179532_1_.func_70301_a(i);
|
||||
@@ -11,11 +11,3 @@
|
||||
} else if (itemstack.func_77973_b() instanceof WrittenBookItem) {
|
||||
ItemStack itemstack1 = itemstack.func_77946_l();
|
||||
itemstack1.func_190920_e(1);
|
||||
@@ -98,7 +98,6 @@
|
||||
return IRecipeSerializer.field_222160_d;
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public boolean func_194133_a(int p_194133_1_, int p_194133_2_) {
|
||||
return p_194133_1_ >= 3 && p_194133_2_ >= 3;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
--- a/net/minecraft/item/crafting/CampfireCookingRecipe.java
|
||||
+++ b/net/minecraft/item/crafting/CampfireCookingRecipe.java
|
||||
@@ -11,7 +11,6 @@
|
||||
super(IRecipeType.field_222153_e, p_i50030_1_, p_i50030_2_, p_i50030_3_, p_i50030_4_, p_i50030_5_, p_i50030_6_);
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public ItemStack func_222128_h() {
|
||||
return new ItemStack(Blocks.field_222433_lV);
|
||||
}
|
||||
@@ -9,3 +9,22 @@
|
||||
private final int field_222178_t;
|
||||
private final CookingRecipeSerializer.IFactory<T> field_222179_u;
|
||||
|
||||
@@ -21,11 +21,17 @@
|
||||
String s = JSONUtils.func_151219_a(p_199425_2_, "group", "");
|
||||
JsonElement jsonelement = (JsonElement)(JSONUtils.func_151202_d(p_199425_2_, "ingredient") ? JSONUtils.func_151214_t(p_199425_2_, "ingredient") : JSONUtils.func_152754_s(p_199425_2_, "ingredient"));
|
||||
Ingredient ingredient = Ingredient.func_199802_a(jsonelement);
|
||||
+ //Forge: Check if primitive string to keep vanilla or a object which can contain a count field.
|
||||
+ if (!p_199425_2_.has("result")) throw new com.google.gson.JsonSyntaxException("Missing result, expected to find a string or object");
|
||||
+ ItemStack itemstack;
|
||||
+ if (p_199425_2_.get("result").isJsonObject()) itemstack = ShapedRecipe.func_199798_a(JSONUtils.func_152754_s(p_199425_2_, "result"));
|
||||
+ else {
|
||||
String s1 = JSONUtils.func_151200_h(p_199425_2_, "result");
|
||||
ResourceLocation resourcelocation = new ResourceLocation(s1);
|
||||
- ItemStack itemstack = new ItemStack(Registry.field_212630_s.func_218349_b(resourcelocation).orElseThrow(() -> {
|
||||
+ itemstack = new ItemStack(Registry.field_212630_s.func_218349_b(resourcelocation).orElseThrow(() -> {
|
||||
return new IllegalStateException("Item: " + s1 + " does not exist");
|
||||
}));
|
||||
+ }
|
||||
float f = JSONUtils.func_151221_a(p_199425_2_, "experience", 0.0F);
|
||||
int i = JSONUtils.func_151208_a(p_199425_2_, "cookingtime", this.field_222178_t);
|
||||
return this.field_222179_u.create(p_199425_1_, s, ingredient, itemstack, f, i);
|
||||
@@ -1,10 +0,0 @@
|
||||
--- a/net/minecraft/item/crafting/FireworkRocketRecipe.java
|
||||
+++ b/net/minecraft/item/crafting/FireworkRocketRecipe.java
|
||||
@@ -74,7 +74,6 @@
|
||||
return itemstack;
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public boolean func_194133_a(int p_194133_1_, int p_194133_2_) {
|
||||
return p_194133_1_ * p_194133_2_ >= 2;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
--- a/net/minecraft/item/crafting/FireworkStarFadeRecipe.java
|
||||
+++ b/net/minecraft/item/crafting/FireworkStarFadeRecipe.java
|
||||
@@ -68,7 +68,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public boolean func_194133_a(int p_194133_1_, int p_194133_2_) {
|
||||
return p_194133_1_ * p_194133_2_ >= 2;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
--- a/net/minecraft/item/crafting/FireworkStarRecipe.java
|
||||
+++ b/net/minecraft/item/crafting/FireworkStarRecipe.java
|
||||
@@ -111,7 +111,6 @@
|
||||
return itemstack;
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public boolean func_194133_a(int p_194133_1_, int p_194133_2_) {
|
||||
return p_194133_1_ * p_194133_2_ >= 2;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
--- a/net/minecraft/item/crafting/FurnaceRecipe.java
|
||||
+++ b/net/minecraft/item/crafting/FurnaceRecipe.java
|
||||
@@ -11,7 +11,6 @@
|
||||
super(IRecipeType.field_222150_b, p_i48715_1_, p_i48715_2_, p_i48715_3_, p_i48715_4_, p_i48715_5_, p_i48715_6_);
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public ItemStack func_222128_h() {
|
||||
return new ItemStack(Blocks.field_150460_al);
|
||||
}
|
||||
@@ -1,16 +1,6 @@
|
||||
--- a/net/minecraft/item/crafting/IRecipe.java
|
||||
+++ b/net/minecraft/item/crafting/IRecipe.java
|
||||
@@ -15,8 +15,7 @@
|
||||
|
||||
ItemStack func_77572_b(C p_77572_1_);
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
- boolean func_194133_a(int p_194133_1_, int p_194133_2_);
|
||||
+ default boolean func_194133_a(int p_194133_1_, int p_194133_2_) { return true; }
|
||||
|
||||
ItemStack func_77571_b();
|
||||
|
||||
@@ -24,9 +23,9 @@
|
||||
@@ -21,9 +21,9 @@
|
||||
NonNullList<ItemStack> nonnulllist = NonNullList.func_191197_a(p_179532_1_.func_70302_i_(), ItemStack.field_190927_a);
|
||||
|
||||
for(int i = 0; i < nonnulllist.size(); ++i) {
|
||||
@@ -23,16 +13,3 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,12 +40,10 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
default String func_193358_e() {
|
||||
return "";
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
default ItemStack func_222128_h() {
|
||||
return new ItemStack(Blocks.field_150462_ai);
|
||||
}
|
||||
@@ -9,3 +9,11 @@
|
||||
IRecipeSerializer<ShapedRecipe> field_222157_a = func_222156_a("crafting_shaped", new ShapedRecipe.Serializer());
|
||||
IRecipeSerializer<ShapelessRecipe> field_222158_b = func_222156_a("crafting_shapeless", new ShapelessRecipe.Serializer());
|
||||
SpecialRecipeSerializer<ArmorDyeRecipe> field_222159_c = func_222156_a("crafting_special_armordye", new SpecialRecipeSerializer<>(ArmorDyeRecipe::new));
|
||||
@@ -29,6 +29,7 @@
|
||||
|
||||
T func_199425_a_(ResourceLocation p_199425_1_, JsonObject p_199425_2_);
|
||||
|
||||
+ @javax.annotation.Nullable
|
||||
T func_199426_a_(ResourceLocation p_199426_1_, PacketBuffer p_199426_2_);
|
||||
|
||||
void func_199427_a_(PacketBuffer p_199427_1_, T p_199427_2_);
|
||||
@@ -1,7 +1,7 @@
|
||||
--- a/net/minecraft/item/crafting/Ingredient.java
|
||||
+++ b/net/minecraft/item/crafting/Ingredient.java
|
||||
@@ -30,6 +30,12 @@
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
@@ -28,6 +28,12 @@
|
||||
import net.minecraft.util.registry.Registry;
|
||||
|
||||
public class Ingredient implements Predicate<ItemStack> {
|
||||
+ //Because Mojang caches things... we need to invalidate them.. so... here we go..
|
||||
@@ -13,7 +13,7 @@
|
||||
private static final Predicate<? super Ingredient.IItemList> field_209362_b = (p_209361_0_) -> {
|
||||
return !p_209361_0_.func_199799_a().stream().allMatch(ItemStack::func_190926_b);
|
||||
};
|
||||
@@ -37,14 +43,16 @@
|
||||
@@ -35,11 +41,14 @@
|
||||
private final Ingredient.IItemList[] field_199807_b;
|
||||
private ItemStack[] field_193371_b;
|
||||
private IntList field_194140_c;
|
||||
@@ -27,11 +27,8 @@
|
||||
+ Ingredient.INSTANCES.add(this);
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public ItemStack[] func_193365_a() {
|
||||
this.func_199806_d();
|
||||
return this.field_193371_b;
|
||||
@@ -96,6 +104,10 @@
|
||||
@@ -93,6 +102,10 @@
|
||||
|
||||
public final void func_199564_a(PacketBuffer p_199564_1_) {
|
||||
this.func_199806_d();
|
||||
@@ -42,7 +39,7 @@
|
||||
p_199564_1_.func_150787_b(this.field_193371_b.length);
|
||||
|
||||
for(int i = 0; i < this.field_193371_b.length; ++i) {
|
||||
@@ -122,6 +134,25 @@
|
||||
@@ -119,6 +132,25 @@
|
||||
return this.field_199807_b.length == 0 && (this.field_193371_b == null || this.field_193371_b.length == 0) && (this.field_194140_c == null || this.field_194140_c.isEmpty());
|
||||
}
|
||||
|
||||
@@ -62,21 +59,13 @@
|
||||
+
|
||||
+ public net.minecraftforge.common.crafting.IIngredientSerializer<? extends Ingredient> getSerializer() {
|
||||
+ if (!isVanilla()) throw new IllegalStateException("Modderrs must implement Ingredient.getSerializer in their custom Ingredients: " + this);
|
||||
+ return net.minecraftforge.common.crafting.CraftingHelper.INGREDIENT_VANILLA;
|
||||
+ return net.minecraftforge.common.crafting.VanillaIngredientSerializer.INSTANCE;
|
||||
+ }
|
||||
+
|
||||
public static Ingredient func_209357_a(Stream<? extends Ingredient.IItemList> p_209357_0_) {
|
||||
Ingredient ingredient = new Ingredient(p_209357_0_);
|
||||
return ingredient.field_199807_b.length == 0 ? field_193370_a : ingredient;
|
||||
@@ -133,7 +164,6 @@
|
||||
}));
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public static Ingredient func_193369_a(ItemStack... p_193369_0_) {
|
||||
return func_209357_a(Arrays.stream(p_193369_0_).map((p_209356_0_) -> {
|
||||
return new Ingredient.SingleItemList(p_209356_0_);
|
||||
@@ -146,6 +176,9 @@
|
||||
@@ -142,6 +174,9 @@
|
||||
|
||||
public static Ingredient func_199566_b(PacketBuffer p_199566_0_) {
|
||||
int i = p_199566_0_.func_150792_a();
|
||||
@@ -86,7 +75,7 @@
|
||||
return func_209357_a(Stream.generate(() -> {
|
||||
return new Ingredient.SingleItemList(p_199566_0_.func_150791_c());
|
||||
}).limit((long)i));
|
||||
@@ -153,6 +186,8 @@
|
||||
@@ -149,6 +184,8 @@
|
||||
|
||||
public static Ingredient func_199802_a(@Nullable JsonElement p_199802_0_) {
|
||||
if (p_199802_0_ != null && !p_199802_0_.isJsonNull()) {
|
||||
@@ -95,19 +84,7 @@
|
||||
if (p_199802_0_.isJsonObject()) {
|
||||
return func_209357_a(Stream.of(func_199803_a(p_199802_0_.getAsJsonObject())));
|
||||
} else if (p_199802_0_.isJsonArray()) {
|
||||
@@ -173,6 +208,11 @@
|
||||
}
|
||||
|
||||
public static Ingredient.IItemList func_199803_a(JsonObject p_199803_0_) {
|
||||
+ if (p_199803_0_.has("constant")) {
|
||||
+ Ingredient.IItemList ret = net.minecraftforge.common.crafting.CraftingHelper.getConstant(new ResourceLocation(JSONUtils.func_151200_h(p_199803_0_, "constant")));
|
||||
+ if (ret == null) throw new JsonSyntaxException("Ingredient referenced invalid constant: " + JSONUtils.func_151200_h(p_199803_0_, "constant"));
|
||||
+ return ret;
|
||||
+ }
|
||||
if (p_199803_0_.has("item") && p_199803_0_.has("tag")) {
|
||||
throw new JsonParseException("An ingredient entry is either a tag or an item, not both");
|
||||
} else if (p_199803_0_.has("item")) {
|
||||
@@ -194,6 +234,12 @@
|
||||
@@ -190,6 +227,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,3 +97,13 @@
|
||||
public interface IItemList {
|
||||
Collection<ItemStack> func_199799_a();
|
||||
|
||||
@@ -228,6 +271,9 @@
|
||||
list.add(new ItemStack(item));
|
||||
}
|
||||
|
||||
+ if (list.size() == 0 && !net.minecraftforge.common.ForgeConfig.SERVER.treatEmptyTagsAsAir.get()) {
|
||||
+ list.add(new ItemStack(net.minecraft.block.Blocks.field_180401_cv).func_200302_a(new net.minecraft.util.text.StringTextComponent("Empty Tag: " + field_199800_a.func_199886_b().toString())));
|
||||
+ }
|
||||
return list;
|
||||
}
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
--- a/net/minecraft/item/crafting/MapCloningRecipe.java
|
||||
+++ b/net/minecraft/item/crafting/MapCloningRecipe.java
|
||||
@@ -71,7 +71,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
- @OnlyIn(Dist.CLIENT)
|
||||
public boolean func_194133_a(int p_194133_1_, int p_194133_2_) {
|
||||
return p_194133_1_ >= 3 && p_194133_2_ >= 3;
|
||||
}
|
||||
Loaded 100 of 760 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user