mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-14 17:14:44 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3effde4f1f | ||
|
|
4d0705370f | ||
|
|
25c661a7f0 | ||
|
|
dbd6c296f2 | ||
|
|
d3f01843f7 | ||
|
|
8cc1e13a28 | ||
|
|
adb7f0d836 | ||
|
|
d9986ac035 | ||
|
|
2169e9d0d7 | ||
|
|
a8b9abcb17 | ||
|
|
87a63bc5e0 | ||
|
|
0683971741 | ||
|
|
49bdd556b5 | ||
|
|
24c659dfa1 | ||
|
|
54f9ca540e | ||
|
|
db6ab2a19e | ||
|
|
863ab2ca18 | ||
|
|
45da4f6910 | ||
|
|
c2630d2a79 | ||
|
|
05f4f5ec77 | ||
|
|
a5d0a86760 | ||
|
|
7b4a01703b | ||
|
|
3b99c80636 | ||
|
|
20efd7150a | ||
|
|
c56377e4ee | ||
|
|
3e98e16f39 | ||
|
|
d41cb552a1 | ||
|
|
ae2cb06d2c | ||
|
|
9de9193062 | ||
|
|
f8d32a8525 | ||
|
|
dac053415b | ||
|
|
7a52116665 | ||
|
|
9ba67cedf1 | ||
|
|
5aac0beba9 | ||
|
|
7849aebab0 | ||
|
|
ea26df0174 | ||
|
|
3a62514e60 | ||
|
|
9a636e3c76 | ||
|
|
fa35f30e86 | ||
|
|
633fd9bd2e | ||
|
|
3c426a2e66 | ||
|
|
25375f63cc | ||
|
|
45cadab7c5 | ||
|
|
75788f63ee | ||
|
|
3e7b8809b6 | ||
|
|
6162f438f1 | ||
|
|
1752e57ea0 | ||
|
|
e91ef7f56b | ||
|
|
24f7be2f37 | ||
|
|
208ed997d4 | ||
|
|
1f12642a05 | ||
|
|
e7beed4875 | ||
|
|
69a44e6414 | ||
|
|
3870951a37 | ||
|
|
af4fcd73a4 | ||
|
|
04a6b6c2d0 | ||
|
|
1b15c127a6 | ||
|
|
8670abca57 | ||
|
|
f3d364397d | ||
|
|
cc95c40b5b | ||
|
|
e6fbf39591 | ||
|
|
8cbac6af97 | ||
|
|
87cbf735a2 | ||
|
|
bcbf184915 | ||
|
|
965d872856 | ||
|
|
41a098e2f7 | ||
|
|
41d07e7aae | ||
|
|
d1adf00158 | ||
|
|
ed67b6fd31 | ||
|
|
d5ff207fab | ||
|
|
da7c299f7e | ||
|
|
204ebdc6dd | ||
|
|
be565d2ddc | ||
|
|
21f7c31f62 | ||
|
|
4e11c95d0e | ||
|
|
d1478ca529 | ||
|
|
359d4fe2d5 | ||
|
|
d3f27cf6fb | ||
|
|
3dd8c8ae6f | ||
|
|
54882f2564 | ||
|
|
c5402d50fa | ||
|
|
a5f29570a3 | ||
|
|
dd27209565 | ||
|
|
f1d1e8853b | ||
|
|
5ef199f6d7 | ||
|
|
2a5268c699 | ||
|
|
32c24be6b4 | ||
|
|
5f56b7cd09 | ||
|
|
7f337cf230 | ||
|
|
7731e1cd75 | ||
|
|
f8879b1316 | ||
|
|
3dfe47944d | ||
|
|
c11a712e2f | ||
|
|
5771c8ffea | ||
|
|
9587f08ece | ||
|
|
73b6d10e5a | ||
|
|
90c244acb4 | ||
|
|
3cf97f43fe | ||
|
|
0b47ccc015 | ||
|
|
8d372f95f2 | ||
|
|
d16472d0ba | ||
|
|
896db6398f | ||
|
|
e406137b19 | ||
|
|
16f4903285 | ||
|
|
84d322da34 | ||
|
|
3a64cb8985 | ||
|
|
2fef75c1de | ||
|
|
c040a8865f | ||
|
|
4931fc1907 | ||
|
|
607da1bd9b | ||
|
|
ebc4eaddac | ||
|
|
10dbbf9c19 | ||
|
|
f9c2f715fd | ||
|
|
4e1f7138ee | ||
|
|
5ae5d81609 | ||
|
|
947a004138 | ||
|
|
e4ca526d5b | ||
|
|
1ba084f131 | ||
|
|
857573f10f | ||
|
|
76c138c400 | ||
|
|
55a7c6d64b | ||
|
|
0fb8844623 | ||
|
|
6337466735 | ||
|
|
214275baba | ||
|
|
82262e462e | ||
|
|
ee0d43bbde | ||
|
|
93b704b459 | ||
|
|
10036aa764 | ||
|
|
fcd00bd4af | ||
|
|
c20a5e8805 |
No files matched your search
+3
-5
@@ -6,15 +6,15 @@ staleLabel: Stale
|
||||
unmarkComment: false
|
||||
# Limit the number of actions per hour, from 1-30. Default is 30
|
||||
limitPerRun: 1
|
||||
# Issues with these labels will never be considered stale. Set to `[]` to disable
|
||||
exemptLabels:
|
||||
- Assigned
|
||||
|
||||
pulls:
|
||||
# Number of days of inactivity before a Pull Request becomes stale
|
||||
daysUntilStale: 60
|
||||
# Number of days of inactivity before a stale Pull Request is closed
|
||||
daysUntilClose: 14
|
||||
# Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
||||
exemptLabels:
|
||||
- Assigned
|
||||
# Comment to post when marking as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This pull request has been automatically marked as stale because it has not had recent
|
||||
@@ -30,8 +30,6 @@ issues:
|
||||
daysUntilStale: 180
|
||||
# Number of days of inactivity before a stale Issue is closed
|
||||
daysUntilClose: 14
|
||||
# Issues with these labels will never be considered stale. Set to `[]` to disable
|
||||
exemptLabels: []
|
||||
# Comment to post when marking as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had activity
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
name: Publish
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ '1.12.x' ]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build:
|
||||
uses: MinecraftForge/SharedActions/.github/workflows/gradle.yml@main
|
||||
with:
|
||||
java: 8
|
||||
gradle_tasks: 'ciWriteBuildNumber setup build publish'
|
||||
legacy_prefix: 14
|
||||
legacy_build_number: 2848
|
||||
artifact_name: 'forge'
|
||||
secrets:
|
||||
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
|
||||
PROMOTE_ARTIFACT_WEBHOOK: ${{ secrets.PROMOTE_ARTIFACT_WEBHOOK }}
|
||||
PROMOTE_ARTIFACT_USERNAME: ${{ secrets.PROMOTE_ARTIFACT_USERNAME }}
|
||||
PROMOTE_ARTIFACT_PASSWORD: ${{ secrets.PROMOTE_ARTIFACT_PASSWORD }}
|
||||
MAVEN_USER: ${{ secrets.MAVEN_USER }}
|
||||
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
|
||||
# Unused for now until we upgrade gradle
|
||||
# SIGN_KEY_ALIAS: ${{ secrets.SIGN_KEY_ALIAS }}
|
||||
# SIGN_KEY_PASSWORD: ${{ secrets.SIGN_KEY_PASSWORD }}
|
||||
# SIGN_KEYSTORE_PASSWORD: ${{ secrets.SIGN_KEYSTORE_PASSWORD }}
|
||||
# SIGN_KEYSTORE_DATA: ${{ secrets.SIGN_KEYSTORE_DATA }}
|
||||
+11
@@ -30,3 +30,14 @@ changelog.txt
|
||||
/patches_old_bak/
|
||||
*.py
|
||||
*.7z
|
||||
.project
|
||||
/mdk/.gradle/
|
||||
/mdk/.settings/
|
||||
/mdk/bin/
|
||||
/mdk/build/
|
||||
/mdk/crash-reports/
|
||||
/mdk/logs/
|
||||
/mdk/resourcepacks/
|
||||
/mdk/run/
|
||||
*.launch
|
||||
*.classpath
|
||||
-30
@@ -1,30 +0,0 @@
|
||||
sudo: required
|
||||
dist: trusty
|
||||
|
||||
language: java
|
||||
jdk: oraclejdk8
|
||||
|
||||
env:
|
||||
- BUILD_NUMBER=9999
|
||||
|
||||
before_cache:
|
||||
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
|
||||
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
|
||||
- rm -f $HOME/.gradle/caches/minecraft/deobfedDeps/providedDummy.jar
|
||||
- rm -f $HOME/.gradle/caches/minecraft/deobfedDeps/compileDummy.jar
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.gradle/caches/
|
||||
- $HOME/.gradle/wrapper/
|
||||
- $TRAVIS_BUILD_DIR/build/localCache/Forge/
|
||||
|
||||
before_install: chmod +x gradlew
|
||||
install:
|
||||
- ./gradlew --refresh-dependencies
|
||||
- ./gradlew ciWriteBuildNumber
|
||||
script:
|
||||
- travis_wait ./gradlew build -x createExe -S
|
||||
- ./gradlew -p projects/Forge test -S -i
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
Minecraft Forge
|
||||
Copyright (c) 2016-2018.
|
||||
Copyright (c) 2016-2020.
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
@@ -13,4 +13,4 @@ Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
+992
-457
File diff suppressed because it is too large.
Load diff
Vendored
BIN
Binary file not shown.
+1
-2
@@ -1,6 +1,5 @@
|
||||
#Mon Sep 14 12:28:28 PDT 2015
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14-bin.zip
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
#!/usr/bin/env sh
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
@@ -6,47 +6,6 @@
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn ( ) {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die ( ) {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# For Cygwin, ensure paths are in UNIX format before anything is touched.
|
||||
if $cygwin ; then
|
||||
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||
fi
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
@@ -61,9 +20,49 @@ while [ -h "$PRG" ] ; do
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >&-
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >&-
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
warn () {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
@@ -90,7 +89,7 @@ location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
@@ -114,6 +113,7 @@ fi
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
@@ -154,11 +154,19 @@ if $cygwin ; then
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
# Escape application args
|
||||
save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
APP_ARGS=$(save "$@")
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
cd "$(dirname "$0")"
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
Vendored
+4
-10
@@ -8,14 +8,14 @@
|
||||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
@@ -46,10 +46,9 @@ echo location of your Java installation.
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
@@ -60,11 +59,6 @@ set _SKIP=2
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
@@ -0,0 +1,430 @@
|
||||
|
||||
Build 2838:
|
||||
bs2609: Fix vanilla handling of options file (MC-117449, MC-151173) (#5725)
|
||||
|
||||
Build 2837:
|
||||
clienthax: Update EnumHelper to be compatible with Eclipse's OpenJ9 JVM. (#5712)
|
||||
|
||||
Build 2836:
|
||||
tterrag:
|
||||
Revert "Invalidate tile entities that are queued for removal (#5512)"
|
||||
This reverts commit 75788f63eea6c33ccef7e5cbcab27ad9ad2c2a04.
|
||||
This solution is invalid as TEs are free to modify the world
|
||||
tileEntities list, usually indirectly via chunkloading, from inside
|
||||
invalidate().
|
||||
This happens in vanilla, in TileEntityChest#invalidate, where it calls
|
||||
checkForAdjacentChests(), which has the potential to load neighboring
|
||||
chunks and cause a CME.
|
||||
A more sophisticated solution is needed.
|
||||
|
||||
Build 2835:
|
||||
bs2609: Fix some vertex format changes not being handled correctly (#5368)
|
||||
|
||||
Build 2834:
|
||||
bs2609:
|
||||
Transform vertex normals as well as positions when generating quads
|
||||
(#5242)
|
||||
|
||||
Build 2833:
|
||||
rseifert.phone: Fix for SidedInvWrapper isItemValid using wrong slot (#5642)
|
||||
|
||||
Build 2832:
|
||||
bs2609: Invalidate tile entities that are queued for removal (#5512)
|
||||
|
||||
Build 2831:
|
||||
lclc98: Added Wool to OreDictionary (#5414)
|
||||
|
||||
Build 2830:
|
||||
CreativeMD: Fixed boat not taking care of block-liquid hooks (#5086)
|
||||
|
||||
Build 2829:
|
||||
bs2609: Add Forge dimension-changing hooks to spectator handling code (#5212)
|
||||
|
||||
Build 2828:
|
||||
ichttt:
|
||||
Minor performace improvement when building chunks and rendering blocks
|
||||
(#5286)
|
||||
|
||||
Build 2827:
|
||||
bs2609: Catch json parsing errors from constants/factories files (#5258)
|
||||
|
||||
Build 2826:
|
||||
bs2609: Allow custom DataSerializers to be registered safely (#5245)
|
||||
|
||||
Build 2825:
|
||||
cpw:
|
||||
Try and make 1.13 mods more obviously wrong in 1.12..
|
||||
Signed-off-by: cpw <[email protected]>
|
||||
|
||||
Build 2824:
|
||||
tterrag: Fix #5651 Re-add canPlaceBlockOnSide check in World#mayPlace
|
||||
|
||||
Build 2823:
|
||||
Pokechu022:
|
||||
Fail fast when null is used with setTag instead of crashing in
|
||||
writeEntry (#5257)
|
||||
|
||||
Build 2822:
|
||||
tterrag: Fix block placement not checking for player collision
|
||||
|
||||
Build 2821:
|
||||
wynprice999: Added more Constants (#5323)
|
||||
|
||||
Build 2820:
|
||||
python0429: [1.12.2] Add a few events pertaining to villages (#5302)
|
||||
|
||||
Build 2819:
|
||||
Tyler Hancock: [1.12] Fix special spawn event not firing in many cases. (#5389)
|
||||
|
||||
Build 2818:
|
||||
bs2609: Only prompt for missing registries on local worlds (#5348)
|
||||
|
||||
Build 2817:
|
||||
ckrier.3000: Add EntityPlaceEvent (#5057)
|
||||
|
||||
Build 2816:
|
||||
bs2609: Generalise EnumRarity to an interface (#5182)
|
||||
|
||||
Build 2815:
|
||||
bs2609: Apply access-level changes to inner class attributes (#5468)
|
||||
|
||||
Build 2814:
|
||||
bs2609: Fix small logic error in ItemTextureQuadConverter (#5463)
|
||||
|
||||
Build 2813:
|
||||
bs2609: Better support for custom bows (#5209)
|
||||
|
||||
Build 2812:
|
||||
CovertJaguar: Remove FluidStack amount from hashcode calculation (#5272)
|
||||
molecularphylo:
|
||||
Fixed incorrect string representation of string list config property
|
||||
default values in their comments.
|
||||
bs2609:
|
||||
Improve tracking of used dimension IDs (#5249)
|
||||
Closes #5378 Large dimension IDs bloat level.data
|
||||
|
||||
Build 2811:
|
||||
bs2609:
|
||||
Fix up torch placement logic to handle more vanilla special-casing
|
||||
(#5426)
|
||||
|
||||
Build 2810:
|
||||
LexManos: Written size does not include int bytes.
|
||||
|
||||
Build 2809:
|
||||
LexManos:
|
||||
Extend Region files to support >1MB per chunk. If the 'sector count' is
|
||||
255, ask the compressed data header for the proper length.
|
||||
|
||||
Build 2808:
|
||||
tterrag1098: Add default impl to IConfigElement#getValidValuesDisplay
|
||||
|
||||
Build 2807:
|
||||
tterrag: Simplify custom item rendering by removing GL emissivity hacks
|
||||
|
||||
Build 2806:
|
||||
tterrag: Support diffuse lighting flag in item rendering
|
||||
|
||||
Build 2805:
|
||||
bs2609:
|
||||
Add a hook to allow continuously using items through stack changes
|
||||
(#4834)
|
||||
* Add a hook to allow continuously using items through stack changes
|
||||
|
||||
* Update licences
|
||||
|
||||
Build 2804:
|
||||
oOMitchOo:
|
||||
Added an additional constructor to every implementation of IFluidBlock.
|
||||
It is now possible to create a fluid block with a Fluid, Material and
|
||||
MapColor, so that the Material's MapColor isn't used for the blocks
|
||||
MapColor. (#5293)
|
||||
|
||||
Build 2803:
|
||||
bs2609: Add redirects to PotionEffect to respect registry replacement (#5213)
|
||||
|
||||
Build 2802:
|
||||
alexiy.ov:
|
||||
Add an annotation for @Config elements which will automatically create a
|
||||
slider control (#5026)
|
||||
|
||||
Build 2801:
|
||||
bs2609: Fix small logic error in emissive item rendering code (#5320)
|
||||
|
||||
Build 2800:
|
||||
molecularphylo:
|
||||
Allow config GUI cycling button elements generated from enums to display
|
||||
toString return values, rather than actual values. (#5125)
|
||||
|
||||
Build 2799:
|
||||
bs2609: Fix incorrect indexing in mipmap generation code (#5201)
|
||||
|
||||
Build 2798:
|
||||
bs2609:
|
||||
Ensure slave maps are cleaned up when handling registry overrides
|
||||
(#5250)
|
||||
|
||||
Build 2797:
|
||||
d_scalzi: Fix issue with --modListFile. (#5316)
|
||||
|
||||
Build 2796:
|
||||
LexManos:
|
||||
Fix potential issues with the Minecraft FakePlayer lingering around
|
||||
after world unloads.
|
||||
|
||||
Build 2795:
|
||||
tterrag: Fix potion remove event not always firing, add expiry event
|
||||
|
||||
Build 2794:
|
||||
tterrag: Clean up CraftingHelper constants loading API
|
||||
|
||||
Build 2793:
|
||||
tterrag: Fix crash from CraftingHelper due to FileSystem being closed early
|
||||
|
||||
Build 2792:
|
||||
tterrag:
|
||||
added PotionHooks, closes #3867, #4375 (#4614)
|
||||
* solved merge confilct
|
||||
|
||||
* improved var names & removed tabs
|
||||
|
||||
* Added spaces around !=
|
||||
|
||||
* fixed typo
|
||||
|
||||
Build 2791:
|
||||
tterrag:
|
||||
Add a hook for farmland watering (#4891)
|
||||
* Add a FarmlandWaterCheckEvent to allow mods to override when Farmland
|
||||
is watered or not
|
||||
|
||||
* revert 1.12.2 json
|
||||
|
||||
* Move the farmland patch to a ticket based instead of a event based
|
||||
system
|
||||
|
||||
* Minor changes
|
||||
|
||||
* Faster isValid checks, faster validation/invalidation if the state did
|
||||
not change, expand test mod to include a test for the validation system
|
||||
|
||||
* remove isValid boolean flag, we can express it with the tick counter
|
||||
|
||||
* Fix test mod resource warnings
|
||||
|
||||
* Remove tick timeout, add a javadoc note to invalidate on chunk unload,
|
||||
cleaned up test mod
|
||||
|
||||
* Allow mods to provide custom handling to determine if a pos is valid
|
||||
or not
|
||||
|
||||
* Make SimpleTicket more simple, make register public so custom tickets
|
||||
can be registered
|
||||
|
||||
* Fixes for review
|
||||
|
||||
* Add missing license headers
|
||||
|
||||
* Use a weak hash set
|
||||
|
||||
* Split up the map into smaller chunk based maps
|
||||
|
||||
* Add missing license headers
|
||||
|
||||
* Make MultiTicketManager more universal for custom implementations,
|
||||
cleanup imports
|
||||
|
||||
Build 2790:
|
||||
tterrag:
|
||||
Add methods to allow loading json constants outside of _constants
|
||||
(#4975)
|
||||
* add interface methods for loading json constants from an arbitary file
|
||||
|
||||
|
||||
* use try-with-resources
|
||||
|
||||
* don't make modders create jsoncontext, clean up resource use
|
||||
|
||||
* very minor cleanup
|
||||
|
||||
Build 2789:
|
||||
tterrag:
|
||||
Compute ASMDataTable submaps parallel, speeds up contructing mods
|
||||
(#5246)
|
||||
* Compute submaps parallel, speeds up contructing mods by a lot
|
||||
|
||||
* Use stream API better
|
||||
|
||||
Build 2788:
|
||||
mezz: Add logging for data manager key registration errors (#5129)
|
||||
|
||||
Build 2787:
|
||||
mezz: Improve support for custom block path types (#5203)
|
||||
|
||||
Build 2786:
|
||||
mezz: Fix missing comments in configs created with annotations (#5189)
|
||||
|
||||
Build 2785:
|
||||
mezz: Allow items to control the rate of repair from mending (#5102)
|
||||
|
||||
Build 2784:
|
||||
mezz: Improve exception handling from server starting events (#5226)
|
||||
|
||||
Build 2783:
|
||||
mezz: Improve context provided by potion icon rendering hooks (#5111)
|
||||
|
||||
Build 2782:
|
||||
mezz: Fix an ObjectHolderRef internal error message (#5214)
|
||||
|
||||
Build 2781:
|
||||
mezz: Implement rendering for item models with emissive quads (#5047)
|
||||
|
||||
Build 2780:
|
||||
mezz: Clean up logged mod states (#5227)
|
||||
mezz: Fix minor issue in getFilledPercentage for Fluid rendering (#5206)
|
||||
|
||||
Build 2779:
|
||||
mezz: Improve reflection helper methods (#4853)
|
||||
mezz: Fix inaccurate main thread name shown in client log (#5078)
|
||||
|
||||
Build 2778:
|
||||
mezz: Fix Baked Item models with transformations (#5241)
|
||||
|
||||
Build 2777:
|
||||
mezz:
|
||||
Re-add some missing villager profession patches (#5200)
|
||||
* Fix zombie villagers only spawning with vanilla professions
|
||||
* Fix spawning modded villagers that do not have their own building
|
||||
mezz: Fix missing string parameters in some log messages (#5210)
|
||||
mezz: Stop firing LivingSetAttackTargetEvent for setRevengeTarget (#5217)
|
||||
mezz: Prevent RecipeBook from crashing on empty modded ingredients (#5234)
|
||||
|
||||
Build 2776:
|
||||
mezz: Fix the bed position given to the SleepingTimeCheck event (#5107)
|
||||
|
||||
Build 2775:
|
||||
LexManos: Fix some null returns from defaulted registries (#5235)
|
||||
|
||||
Build 2774:
|
||||
LexManos:
|
||||
Only remove synthetic lambda methods referenced in body of SideOnly
|
||||
methods (#5127)
|
||||
|
||||
Build 2773:
|
||||
LexManos:
|
||||
A different approach to my changes in
|
||||
https://github.com/MinecraftForge/MinecraftForge/commit/8ace535995522bec0557d4217e0d98b3dc76cf1e
|
||||
to fix #5207
|
||||
LexManos: Fix patches from #5160 setting rotation as well as position (#5233)
|
||||
LexManos: Use HTTPS for files website.
|
||||
|
||||
Build 2772:
|
||||
tterrag: Make Forge-provided default transforms accessible to custom models
|
||||
tterrag:
|
||||
Make Forge blockstate variants correctly inherit AO setting from vanilla
|
||||
models (#5190)
|
||||
* Make Forge blockstate variants correctly inherit AO setting
|
||||
|
||||
* Move variant format checks into variant, check for added properties
|
||||
|
||||
* Small code cleanup
|
||||
tterrag: fixed visual bug with guislider
|
||||
tterrag:
|
||||
Allow IModel to express itself as a vanilla parent (#5195)
|
||||
* Fix errors caused by fancy missing model being non-vanilla parent
|
||||
|
||||
* Switch instanceof checks to a default IModel method
|
||||
|
||||
* Small code tweaks
|
||||
|
||||
Build 2771:
|
||||
tterrag: Add CreativeTabs#getLabelColor
|
||||
|
||||
Build 2770:
|
||||
tterrag:
|
||||
Allow providing a BufferedImage for banner render generation (#5041)
|
||||
* Adds an Event to allow providing a BufferedImage for the banner render
|
||||
generation (cached)
|
||||
textures, since banners don't use an atlas.
|
||||
implementation.
|
||||
|
||||
* Missed some copyright; might as well absolut text match, I guess
|
||||
|
||||
* Remove unneeded patch change
|
||||
|
||||
* Fix event variable access convention
|
||||
|
||||
* Formatting fix
|
||||
|
||||
* Improve event handling registration
|
||||
|
||||
* Import cleanup
|
||||
|
||||
* Replace event approach with Supplier approach
|
||||
|
||||
* Better name for test mod (now that it's no longer an event); adds
|
||||
ENABLE flag
|
||||
|
||||
* Moves MC code into
|
||||
net.minecraftforge.client.MinecraftForgeClient.getImageLayer to simplify
|
||||
patch
|
||||
|
||||
* Generalize naming
|
||||
|
||||
Build 2769:
|
||||
mezz: Fix Mesa biome entry tags in the BiomeDictionary (#5177)
|
||||
|
||||
Build 2768:
|
||||
LexManos: Bump version number for RB.
|
||||
|
||||
Build 2767:
|
||||
LexManos:
|
||||
Change biome spawn list entries to use factory method where possible
|
||||
(#5075)
|
||||
LexManos: Prevent some texture loading errors from crashing the game (#5121)
|
||||
LexManos: Patch PotionHelper to use registry delegates (#5142)
|
||||
LexManos: Add a notification event for handling game rule changes (#5152)
|
||||
|
||||
Build 2766:
|
||||
LexManos:
|
||||
Change universal bucket support to use fluid names instead of instances
|
||||
(#5031)
|
||||
|
||||
Build 2765:
|
||||
LexManos: Fix NPE on clientside entities constructed with null world (#5170)
|
||||
|
||||
Build 2764:
|
||||
tterrag: Fix patches from #5160 running on the client and causing stutter
|
||||
|
||||
Build 2763:
|
||||
LexManos:
|
||||
Class transformer optimizations (#5159)
|
||||
* Filter packages for deobf transformation
|
||||
* Only serialize transformed class with TerminalTransformer if bytecode
|
||||
changed
|
||||
|
||||
Build 2762:
|
||||
github: Update github stale so issues can be Assigned
|
||||
|
||||
Build 2761:
|
||||
LexManos:
|
||||
Fix MC-136995 - Chunk loading and unloading issue with entities placed
|
||||
in exact positions. (#5160)
|
||||
Scatter gun patches to improve entity tracking and position tracking.
|
||||
Provided by Aikar through the Paper project, this commit of patches
|
||||
combines the following patches:
|
||||
|
||||
https://github.com/PaperMC/Paper/blob/fd1bd5223a461b6d98280bb8f2d67280a30dd24a/Spigot-Server-Patches/0306-Mark-chunk-dirty-anytime-entities-change-to-guarante.patch
|
||||
|
||||
https://github.com/PaperMC/Paper/blob/fd1bd5223a461b6d98280bb8f2d67280a30dd24a/Spigot-Server-Patches/0315-Always-process-chunk-registration-after-moving.patch
|
||||
|
||||
https://github.com/PaperMC/Paper/blob/fd1bd5223a461b6d98280bb8f2d67280a30dd24a/Spigot-Server-Patches/0335-Ensure-chunks-are-always-loaded-on-hard-position-set.patch
|
||||
|
||||
https://github.com/PaperMC/Paper/blob/fd1bd5223a461b6d98280bb8f2d67280a30dd24a/Spigot-Server-Patches/0378-Sync-Player-Position-to-Vehicles.patch
|
||||
|
||||
Build 2760:
|
||||
LexManos: Fix --mods and --modListFile arguments not making it past LaunchWrapper.
|
||||
|
||||
Build 2759:
|
||||
LexManos: Remove BlamingTransformer (#5115)
|
||||
|
||||
+12
-21
@@ -19,35 +19,26 @@ http://mcforge.readthedocs.io/en/latest/gettingstarted/
|
||||
|
||||
Step 1: Open your command-line and browse to the folder where you extracted the zip file.
|
||||
|
||||
Step 2: Once you have a command window up in the folder that the downloaded material was placed, type:
|
||||
Step 2: You're left with a choice.
|
||||
If you prefer to use Eclipse:
|
||||
1. Run the following command: "gradlew genEclipseRuns" (./gradlew genEclipseRuns if you are on Mac/Linux)
|
||||
2. Open Eclipse, Import > Existing Gradle Project > Select Folder
|
||||
or run "gradlew eclipse" to generate the project.
|
||||
(Current Issue)
|
||||
4. Open Project > Run/Debug Settings > Edit runClient and runServer > Environment
|
||||
5. Edit MOD_CLASSES to show [modid]%%[Path]; 2 times rather then the generated 4.
|
||||
|
||||
Windows: "gradlew setupDecompWorkspace"
|
||||
Linux/Mac OS: "./gradlew setupDecompWorkspace"
|
||||
|
||||
Step 3: After all that finished, you're left with a choice.
|
||||
For eclipse, run "gradlew eclipse" (./gradlew eclipse if you are on Mac/Linux)
|
||||
|
||||
If you prefer to use IntelliJ, steps are a little different.
|
||||
If you prefer to use IntelliJ:
|
||||
1. Open IDEA, and import project.
|
||||
2. Select your build.gradle file and have it import.
|
||||
3. Once it's finished you must close IntelliJ and run the following command:
|
||||
|
||||
"gradlew genIntellijRuns" (./gradlew genIntellijRuns if you are on Mac/Linux)
|
||||
|
||||
Step 4: The final step is to open Eclipse and switch your workspace to /eclipse/ (if you use IDEA, it should automatically start on your project)
|
||||
3. Run the following command: "gradlew genIntellijRuns" (./gradlew genIntellijRuns if you are on Mac/Linux)
|
||||
4. Refresh the Gradle Project in IDEA if required.
|
||||
|
||||
If at any point you are missing libraries in your IDE, or you've run into problems you can run "gradlew --refresh-dependencies" to refresh the local cache. "gradlew clean" to reset everything {this does not affect your code} and then start the processs again.
|
||||
|
||||
Should it still not work,
|
||||
Refer to #ForgeGradle on EsperNet for more information about the gradle environment.
|
||||
|
||||
Tip:
|
||||
If you do not care about seeing Minecraft's source code you can replace "setupDecompWorkspace" with one of the following:
|
||||
"setupDevWorkspace": Will patch, deobfuscate, and gather required assets to run minecraft, but will not generate human readable source code.
|
||||
"setupCIWorkspace": Same as Dev but will not download any assets. This is useful in build servers as it is the fastest because it does the least work.
|
||||
|
||||
Tip:
|
||||
When using Decomp workspace, the Minecraft source code is NOT added to your workspace in a editable way. Minecraft is treated like a normal Library. Sources are there for documentation and research purposes and usually can be accessed under the 'referenced libraries' section of your IDE.
|
||||
or the Forge Project Discord discord.gg/UvedJ9m
|
||||
|
||||
Forge source installation
|
||||
=========================
|
||||
|
||||
+101
-52
@@ -1,77 +1,126 @@
|
||||
buildscript {
|
||||
repositories {
|
||||
jcenter()
|
||||
maven { url = "http://files.minecraftforge.net/maven" }
|
||||
maven { url = 'https://maven.minecraftforge.net/' }
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:2.3-SNAPSHOT'
|
||||
classpath 'net.minecraftforge.gradle:ForgeGradle:3.+'
|
||||
}
|
||||
}
|
||||
apply plugin: 'net.minecraftforge.gradle.forge'
|
||||
//Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
|
||||
|
||||
apply plugin: 'net.minecraftforge.gradle'
|
||||
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
|
||||
apply plugin: 'eclipse'
|
||||
apply plugin: 'maven-publish'
|
||||
|
||||
version = '1.0'
|
||||
group = 'com.yourname.modid' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
archivesBaseName = 'modid'
|
||||
|
||||
version = "1.0"
|
||||
group = "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
archivesBaseName = "modid"
|
||||
|
||||
sourceCompatibility = targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
|
||||
compileJava {
|
||||
sourceCompatibility = targetCompatibility = '1.8'
|
||||
}
|
||||
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly.
|
||||
|
||||
minecraft {
|
||||
version = "@VERSION@"
|
||||
runDir = "run"
|
||||
|
||||
// the mappings can be changed at any time, and must be in the following format.
|
||||
// snapshot_YYYYMMDD snapshot are built nightly.
|
||||
// stable_# stables are built at the discretion of the MCP team.
|
||||
// The mappings can be changed at any time, and must be in the following format.
|
||||
// snapshot_YYYYMMDD Snapshot are built nightly.
|
||||
// stable_# Stables are built at the discretion of the MCP team.
|
||||
// Use non-default mappings at your own risk. they may not always work.
|
||||
// simply re-run your setup task after changing the mappings to update your workspace.
|
||||
mappings = "@MAPPINGS@"
|
||||
// Simply re-run your setup task after changing the mappings to update your workspace.
|
||||
//mappings channel: '@MAPPING_CHANNEL@', version: '@MAPPING_VERSION@'
|
||||
mappings channel: 'snapshot', version: '20171003-1.12'
|
||||
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
|
||||
|
||||
// accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
||||
|
||||
// Default run configurations.
|
||||
// These can be tweaked, removed, or duplicated as needed.
|
||||
runs {
|
||||
client {
|
||||
workingDirectory project.file('run')
|
||||
|
||||
// Recommended logging data for a userdev environment
|
||||
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
|
||||
|
||||
// Recommended logging level for the console
|
||||
property 'forge.logging.console.level', 'debug'
|
||||
}
|
||||
|
||||
server {
|
||||
|
||||
// Recommended logging data for a userdev environment
|
||||
property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
|
||||
|
||||
// Recommended logging level for the console
|
||||
property 'forge.logging.console.level', 'debug'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// you may put jars on which you depend on in ./libs
|
||||
// or you may define them like so..
|
||||
//compile "some.group:artifact:version:classifier"
|
||||
//compile "some.group:artifact:version"
|
||||
|
||||
// real examples
|
||||
//compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env
|
||||
//compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
|
||||
// Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed
|
||||
// that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied.
|
||||
// The userdev artifact is a special name and will get all sorts of transformations applied to it.
|
||||
minecraft '@FORGE_GROUP@:@FORGE_NAME@:@FORGE_VERSION@'
|
||||
|
||||
// the 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime.
|
||||
//provided 'com.mod-buildcraft:buildcraft:6.0.8:dev'
|
||||
// You may put jars on which you depend on in ./libs or you may define them like so..
|
||||
// compile "some.group:artifact:version:classifier"
|
||||
// compile "some.group:artifact:version"
|
||||
|
||||
// the deobf configurations: 'deobfCompile' and 'deobfProvided' are the same as the normal compile and provided,
|
||||
// except that these dependencies get remapped to your current MCP mappings
|
||||
//deobfCompile 'com.mod-buildcraft:buildcraft:6.0.8:dev'
|
||||
//deobfProvided 'com.mod-buildcraft:buildcraft:6.0.8:dev'
|
||||
// Real examples
|
||||
// compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env
|
||||
// compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
|
||||
|
||||
// for more info...
|
||||
// The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime.
|
||||
// provided 'com.mod-buildcraft:buildcraft:6.0.8:dev'
|
||||
|
||||
// These dependencies get remapped to your current MCP mappings
|
||||
// deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev'
|
||||
|
||||
// For more info...
|
||||
// http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
|
||||
// http://www.gradle.org/docs/current/userguide/dependency_management.html
|
||||
|
||||
}
|
||||
|
||||
processResources {
|
||||
// this will ensure that this task is redone when the versions change.
|
||||
inputs.property "version", project.version
|
||||
inputs.property "mcversion", project.minecraft.version
|
||||
|
||||
// replace stuff in mcmod.info, nothing else
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
include 'mcmod.info'
|
||||
|
||||
// replace version and mcversion
|
||||
expand 'version':project.version, 'mcversion':project.minecraft.version
|
||||
}
|
||||
|
||||
// copy everything else except the mcmod.info
|
||||
from(sourceSets.main.resources.srcDirs) {
|
||||
exclude 'mcmod.info'
|
||||
// Example for how to get properties into the manifest for reading by the runtime..
|
||||
jar {
|
||||
manifest {
|
||||
attributes([
|
||||
"Specification-Title": "examplemod",
|
||||
"Specification-Vendor": "examplemodsareus",
|
||||
"Specification-Version": "1", // We are version 1 of ourselves
|
||||
"Implementation-Title": project.name,
|
||||
"Implementation-Version": "${version}",
|
||||
"Implementation-Vendor" :"examplemodsareus",
|
||||
"Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ")
|
||||
])
|
||||
}
|
||||
}
|
||||
|
||||
// Example configuration to allow publishing using the maven-publish task
|
||||
// This is the preferred method to reobfuscate your jar file
|
||||
jar.finalizedBy('reobfJar')
|
||||
// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing
|
||||
//publish.dependsOn('reobfJar')
|
||||
|
||||
publishing {
|
||||
publications {
|
||||
mavenJava(MavenPublication) {
|
||||
artifact jar
|
||||
}
|
||||
}
|
||||
repositories {
|
||||
maven {
|
||||
url "file:///${project.projectDir}/mcmodsrepo"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// FML does not support loading exploded directories as mods.
|
||||
// Eclipse works fine because it merges classes and resources when debugging
|
||||
// IntelliJ used to work because FG2 forced the files to be jared during debugging.
|
||||
// Since FG3+ doesn't do that, we need to merge the sourcesets from gradle's side.
|
||||
sourceSets.each {
|
||||
def dir = layout.buildDirectory.file("sourcesSets/$it.name").get().asFile
|
||||
it.output.resourcesDir = dir
|
||||
it.java.outputDir = dir
|
||||
}
|
||||
Whitespace-only changes.
Binary file not shown.
-4
@@ -1,4 +0,0 @@
|
||||
#Sun Jun 05 18:58:07 CEST 2011
|
||||
version=1
|
||||
eclipse.preferences.version=1
|
||||
refresh.enabled=true
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
#Sun Jun 05 19:03:53 CEST 2011
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.debug.ui.UseContextualLaunch=false
|
||||
Console.highWaterMark=88000
|
||||
org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<launchPerspectives/>\r\n
|
||||
org.eclipse.debug.ui.user_view_bindings=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?>\r\n<viewBindings>\r\n<view id\="org.eclipse.ui.console.ConsoleView">\r\n<perspective id\="org.eclipse.jdt.ui.JavaPerspective" userAction\="opened"/>\r\n</view>\r\n</viewBindings>\r\n
|
||||
StringVariablePreferencePage=130,107,107,86,
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
#Sun Jun 05 18:58:07 CEST 2011
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.epp.usagedata.gathering.enabled=false
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
#Sun Sep 18 16:44:39 NZST 2011
|
||||
org.eclipse.jdt.core.compiler.compliance=1.6
|
||||
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.deprecation=ignore
|
||||
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
|
||||
org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedImport=ignore
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore
|
||||
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
|
||||
org.eclipse.jdt.core.compiler.source=1.6
|
||||
-4
@@ -1,4 +0,0 @@
|
||||
#Sun Jun 05 18:58:05 CEST 2011
|
||||
spacesForTabs=true
|
||||
eclipse.preferences.version=1
|
||||
overviewRuler_migration=migrated_3.1
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
#Sun Jun 05 18:58:07 CEST 2011
|
||||
IMPORT_FILES_AND_FOLDERS_MODE=prompt
|
||||
IMPORT_FILES_AND_FOLDERS_VIRTUAL_FOLDER_MODE=prompt
|
||||
SAVE_ALL_BEFORE_BUILD=true
|
||||
eclipse.preferences.version=1
|
||||
tipsAndTricks=true
|
||||
platformState=1287081747687
|
||||
quickStart=false
|
||||
PROBLEMS_FILTERS_MIGRATE=true
|
||||
@@ -1,3 +0,0 @@
|
||||
#Sun Jun 05 18:50:08 CEST 2011
|
||||
eclipse.preferences.version=1
|
||||
showIntro=false
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/MDKExample"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="4"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="GradleStart"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="MDKExample"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xincgc -Xmx1024M -Xms1024M"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc}/run"/>
|
||||
</launchConfiguration>
|
||||
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/MDKExample"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="4"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="GradleStartServer"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="MDKExample"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xincgc -Xmx1024M -Xms1024M"/>
|
||||
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${project_loc}/run"/>
|
||||
</launchConfiguration>
|
||||
@@ -1,25 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchHistory>
|
||||
<launchGroup id="org.eclipse.ui.externaltools.launchGroup">
|
||||
<mruHistory/>
|
||||
<favorites/>
|
||||
</launchGroup>
|
||||
<launchGroup id="org.eclipse.debug.ui.launchGroup.profile">
|
||||
<mruHistory/>
|
||||
<favorites/>
|
||||
</launchGroup>
|
||||
<launchGroup id="org.eclipse.debug.ui.launchGroup.debug">
|
||||
<mruHistory>
|
||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="Client"/> "/>
|
||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="Server"/> "/>
|
||||
</mruHistory>
|
||||
<favorites/>
|
||||
</launchGroup>
|
||||
<launchGroup id="org.eclipse.debug.ui.launchGroup.run">
|
||||
<mruHistory>
|
||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="Client"/> "/>
|
||||
<launch memento="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <launchConfiguration local="true" path="Server"/> "/>
|
||||
</mruHistory>
|
||||
<favorites/>
|
||||
</launchGroup>
|
||||
</launchHistory>
|
||||
@@ -20,3 +20,6 @@ build
|
||||
# other
|
||||
eclipse
|
||||
run
|
||||
|
||||
# Files from Forge MDK
|
||||
forge*changelog.txt
|
||||
@@ -1,3 +1,4 @@
|
||||
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
|
||||
# This is required to provide enough memory for the Minecraft decompilation process.
|
||||
org.gradle.jvmargs=-Xmx3G
|
||||
org.gradle.daemon=false
|
||||
@@ -221,7 +221,7 @@
|
||||
public SoundType func_185467_w()
|
||||
{
|
||||
return this.field_149762_H;
|
||||
@@ -934,6 +952,1361 @@
|
||||
@@ -934,6 +952,1388 @@
|
||||
{
|
||||
}
|
||||
|
||||
@@ -837,13 +837,18 @@
|
||||
+ */
|
||||
+ public boolean canPlaceTorchOnTop(IBlockState state, IBlockAccess world, BlockPos pos)
|
||||
+ {
|
||||
+ if (state.func_185896_q() || state.func_193401_d(world, pos, EnumFacing.UP) == BlockFaceShape.SOLID)
|
||||
+ if (this == Blocks.field_185775_db || this == Blocks.field_150428_aP)
|
||||
+ {
|
||||
+ return this != Blocks.field_185775_db && this != Blocks.field_150428_aP;
|
||||
+ return false;
|
||||
+ }
|
||||
+ else if (state.func_185896_q() || this instanceof BlockFence || this == Blocks.field_150359_w || this == Blocks.field_150463_bK || this == Blocks.field_150399_cn)
|
||||
+ {
|
||||
+ return true;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ return this instanceof BlockFence || this == Blocks.field_150359_w || this == Blocks.field_150463_bK || this == Blocks.field_150399_cn;
|
||||
+ BlockFaceShape shape = state.func_193401_d(world, pos, EnumFacing.UP);
|
||||
+ return (shape == BlockFaceShape.SOLID || shape == BlockFaceShape.CENTER || shape == BlockFaceShape.CENTER_BIG) && !func_193384_b(this);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
@@ -1403,6 +1408,20 @@
|
||||
+ {
|
||||
+ return null;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called when entities are swimming in the given liquid and returns the relative height (used by {@link net.minecraft.entity.item.EntityBoat})
|
||||
+ *
|
||||
+ * @param world world that is being tested.
|
||||
+ * @param pos block thats being tested.
|
||||
+ * @param state state at world/pos
|
||||
+ * @param material liquid thats being tested.
|
||||
+ * @return relative height of the given liquid (material), a value between 0 and 1
|
||||
+ */
|
||||
+ public float getBlockLiquidHeight(World world, BlockPos pos, IBlockState state, Material material)
|
||||
+ {
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Queries if this block should render in a given layer.
|
||||
@@ -1540,15 +1559,23 @@
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
+ /** @deprecated use {@link #getAiPathNodeType(IBlockState, IBlockAccess, BlockPos, net.minecraft.entity.EntityLiving)} */
|
||||
+ @Nullable
|
||||
+ @Deprecated // TODO: remove
|
||||
+ public net.minecraft.pathfinding.PathNodeType getAiPathNodeType(IBlockState state, IBlockAccess world, BlockPos pos)
|
||||
+ {
|
||||
+ return isBurning(world, pos) ? net.minecraft.pathfinding.PathNodeType.DAMAGE_FIRE : null;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get the {@code PathNodeType} for this block. Return {@code null} for vanilla behavior.
|
||||
+ *
|
||||
+ * @return the PathNodeType
|
||||
+ */
|
||||
+ @Nullable
|
||||
+ public net.minecraft.pathfinding.PathNodeType getAiPathNodeType(IBlockState state, IBlockAccess world, BlockPos pos)
|
||||
+ public net.minecraft.pathfinding.PathNodeType getAiPathNodeType(IBlockState state, IBlockAccess world, BlockPos pos, @Nullable net.minecraft.entity.EntityLiving entity)
|
||||
+ {
|
||||
+ return isBurning(world, pos) ? net.minecraft.pathfinding.PathNodeType.DAMAGE_FIRE : null;
|
||||
+ return getAiPathNodeType(state, world, pos);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
@@ -1583,7 +1610,7 @@
|
||||
public static void func_149671_p()
|
||||
{
|
||||
func_176215_a(0, field_176230_a, (new BlockAir()).func_149663_c("air"));
|
||||
@@ -1105,7 +2478,7 @@
|
||||
@@ -1105,7 +2505,7 @@
|
||||
Block block11 = (new BlockQuartz()).func_149672_a(SoundType.field_185851_d).func_149711_c(0.8F).func_149663_c("quartzBlock");
|
||||
func_176219_a(155, "quartz_block", block11);
|
||||
func_176219_a(156, "quartz_stairs", (new BlockStairs(block11.func_176223_P().func_177226_a(BlockQuartz.field_176335_a, BlockQuartz.EnumType.DEFAULT))).func_149663_c("stairsQuartz"));
|
||||
@@ -1592,7 +1619,7 @@
|
||||
func_176219_a(158, "dropper", (new BlockDropper()).func_149711_c(3.5F).func_149672_a(SoundType.field_185851_d).func_149663_c("dropper"));
|
||||
func_176219_a(159, "stained_hardened_clay", (new BlockStainedHardenedClay()).func_149711_c(1.25F).func_149752_b(7.0F).func_149672_a(SoundType.field_185851_d).func_149663_c("clayHardenedStained"));
|
||||
func_176219_a(160, "stained_glass_pane", (new BlockStainedGlassPane()).func_149711_c(0.3F).func_149672_a(SoundType.field_185853_f).func_149663_c("thinStainedGlass"));
|
||||
@@ -1230,31 +2603,6 @@
|
||||
@@ -1230,31 +2630,6 @@
|
||||
block15.field_149783_u = flag;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,3 +18,12 @@
|
||||
}
|
||||
|
||||
private boolean func_176530_e(World p_176530_1_, BlockPos p_176530_2_)
|
||||
@@ -108,7 +108,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
- return false;
|
||||
+ return net.minecraftforge.common.FarmlandWaterManager.hasBlockWaterTicket(p_176530_1_, p_176530_2_);
|
||||
}
|
||||
|
||||
public void func_189540_a(IBlockState p_189540_1_, World p_189540_2_, BlockPos p_189540_3_, Block p_189540_4_, BlockPos p_189540_5_)
|
||||
@@ -17,7 +17,17 @@
|
||||
this.func_180688_d(p_176365_1_, p_176365_2_);
|
||||
return true;
|
||||
}
|
||||
@@ -452,4 +452,29 @@
|
||||
@@ -448,8 +448,39 @@
|
||||
return (float)p_190972_2_.func_177956_o() + func_190973_f(p_190972_0_, p_190972_1_, p_190972_2_);
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ public float getBlockLiquidHeight(World world, BlockPos pos, IBlockState state, Material material)
|
||||
+ {
|
||||
+ return BlockLiquid.func_190973_f(state, world, pos);
|
||||
+ }
|
||||
+
|
||||
public BlockFaceShape func_193383_a(IBlockAccess p_193383_1_, IBlockState p_193383_2_, BlockPos p_193383_3_, EnumFacing p_193383_4_)
|
||||
{
|
||||
return BlockFaceShape.UNDEFINED;
|
||||
}
|
||||
|
||||
@@ -27,12 +27,13 @@
|
||||
}
|
||||
|
||||
public void func_176213_c(World p_176213_1_, BlockPos p_176213_2_, IBlockState p_176213_3_)
|
||||
@@ -93,27 +93,27 @@
|
||||
@@ -93,32 +93,33 @@
|
||||
{
|
||||
if (!p_189540_2_.field_72995_K)
|
||||
{
|
||||
- BlockRailBase.EnumRailDirection blockrailbase$enumraildirection = (BlockRailBase.EnumRailDirection)p_189540_1_.func_177229_b(this.func_176560_l());
|
||||
+ BlockRailBase.EnumRailDirection blockrailbase$enumraildirection = getRailDirection(p_189540_2_, p_189540_3_, p_189540_2_.func_180495_p(p_189540_3_), null);
|
||||
+ final IBlockState currentState = p_189540_2_.func_180495_p(p_189540_3_);
|
||||
+ BlockRailBase.EnumRailDirection blockrailbase$enumraildirection = getRailDirection(p_189540_2_, p_189540_3_, currentState.func_177230_c() == this ? currentState : p_189540_1_, null);
|
||||
boolean flag = false;
|
||||
|
||||
- if (!p_189540_2_.func_180495_p(p_189540_3_.func_177977_b()).func_185896_q())
|
||||
@@ -61,7 +62,13 @@
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
@@ -154,7 +154,7 @@
|
||||
|
||||
- if (flag && !p_189540_2_.func_175623_d(p_189540_3_))
|
||||
+ if (flag && !currentState.func_177230_c().isAir(currentState, p_189540_2_, p_189540_3_))
|
||||
{
|
||||
this.func_176226_b(p_189540_2_, p_189540_3_, p_189540_1_, 0);
|
||||
p_189540_2_.func_175698_g(p_189540_3_);
|
||||
@@ -154,7 +155,7 @@
|
||||
{
|
||||
super.func_180663_b(p_180663_1_, p_180663_2_, p_180663_3_);
|
||||
|
||||
@@ -70,7 +77,7 @@
|
||||
{
|
||||
p_180663_1_.func_175685_c(p_180663_2_.func_177984_a(), this, false);
|
||||
}
|
||||
@@ -166,8 +166,101 @@
|
||||
@@ -166,8 +167,101 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,7 +179,7 @@
|
||||
public static enum EnumRailDirection implements IStringSerializable
|
||||
{
|
||||
NORTH_SOUTH(0, "north_south"),
|
||||
@@ -238,6 +331,7 @@
|
||||
@@ -238,6 +332,7 @@
|
||||
private IBlockState field_180366_e;
|
||||
private final boolean field_150656_f;
|
||||
private final List<BlockPos> field_150657_g = Lists.<BlockPos>newArrayList();
|
||||
@@ -180,7 +187,7 @@
|
||||
|
||||
public Rail(World p_i45739_2_, BlockPos p_i45739_3_, IBlockState p_i45739_4_)
|
||||
{
|
||||
@@ -245,8 +339,9 @@
|
||||
@@ -245,8 +340,9 @@
|
||||
this.field_180367_c = p_i45739_3_;
|
||||
this.field_180366_e = p_i45739_4_;
|
||||
this.field_180365_d = (BlockRailBase)p_i45739_4_.func_177230_c();
|
||||
@@ -192,7 +199,7 @@
|
||||
this.func_180360_a(blockrailbase$enumraildirection);
|
||||
}
|
||||
|
||||
@@ -438,7 +533,7 @@
|
||||
@@ -438,7 +534,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,7 +208,7 @@
|
||||
{
|
||||
if (BlockRailBase.func_176562_d(this.field_150660_b, blockpos.func_177984_a()))
|
||||
{
|
||||
@@ -451,7 +546,7 @@
|
||||
@@ -451,7 +547,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,7 +217,7 @@
|
||||
{
|
||||
if (BlockRailBase.func_176562_d(this.field_150660_b, blockpos3.func_177984_a()))
|
||||
{
|
||||
@@ -594,7 +689,7 @@
|
||||
@@ -594,7 +690,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,7 +226,7 @@
|
||||
{
|
||||
if (BlockRailBase.func_176562_d(this.field_150660_b, blockpos.func_177984_a()))
|
||||
{
|
||||
@@ -607,7 +702,7 @@
|
||||
@@ -607,7 +703,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/Minecraft.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/Minecraft.java
|
||||
@@ -344,7 +344,6 @@
|
||||
@@ -332,6 +332,7 @@
|
||||
public Minecraft(GameConfiguration p_i45547_1_)
|
||||
{
|
||||
field_71432_P = this;
|
||||
+ net.minecraftforge.client.ForgeHooksClient.invalidateLog4jThreadCache();
|
||||
this.field_71412_D = p_i45547_1_.field_178744_c.field_178760_a;
|
||||
this.field_110446_Y = p_i45547_1_.field_178744_c.field_178759_c;
|
||||
this.field_130070_K = p_i45547_1_.field_178744_c.field_178758_b;
|
||||
@@ -344,7 +345,6 @@
|
||||
this.field_152355_az = (new YggdrasilAuthenticationService(this.field_110453_aa, UUID.randomUUID().toString())).createMinecraftSessionService();
|
||||
this.field_71449_j = p_i45547_1_.field_178745_a.field_178752_a;
|
||||
field_147123_G.info("Setting user: {}", (Object)this.field_71449_j.func_111285_a());
|
||||
@@ -8,7 +16,7 @@
|
||||
this.field_71459_aj = p_i45547_1_.field_178741_d.field_178756_a;
|
||||
this.field_71443_c = p_i45547_1_.field_178743_b.field_178764_a > 0 ? p_i45547_1_.field_178743_b.field_178764_a : 1;
|
||||
this.field_71440_d = p_i45547_1_.field_178743_b.field_178762_b > 0 ? p_i45547_1_.field_178743_b.field_178762_b : 1;
|
||||
@@ -464,10 +463,10 @@
|
||||
@@ -464,10 +464,10 @@
|
||||
this.field_110451_am = new SimpleReloadableResourceManager(this.field_110452_an);
|
||||
this.field_135017_as = new LanguageManager(this.field_110452_an, this.field_71474_y.field_74363_ab);
|
||||
this.field_110451_am.func_110542_a(this.field_135017_as);
|
||||
@@ -21,7 +29,7 @@
|
||||
this.field_152350_aA = new SkinManager(this.field_71446_o, new File(this.field_110446_Y, "skins"), this.field_152355_az);
|
||||
this.field_71469_aa = new AnvilSaveConverter(new File(this.field_71412_D, "saves"), this.field_184131_U);
|
||||
this.field_147127_av = new SoundHandler(this.field_110451_am, this.field_71474_y);
|
||||
@@ -487,6 +486,8 @@
|
||||
@@ -487,6 +487,8 @@
|
||||
this.field_110451_am.func_110542_a(new GrassColorReloadListener());
|
||||
this.field_110451_am.func_110542_a(new FoliageColorReloadListener());
|
||||
this.field_71417_B = new MouseHelper();
|
||||
@@ -30,7 +38,7 @@
|
||||
this.func_71361_d("Pre startup");
|
||||
GlStateManager.func_179098_w();
|
||||
GlStateManager.func_179103_j(7425);
|
||||
@@ -500,19 +501,24 @@
|
||||
@@ -500,19 +502,24 @@
|
||||
GlStateManager.func_179096_D();
|
||||
GlStateManager.func_179128_n(5888);
|
||||
this.func_71361_d("Startup");
|
||||
@@ -55,7 +63,7 @@
|
||||
this.field_71460_t = new EntityRenderer(this, this.field_110451_am);
|
||||
this.field_110451_am.func_110542_a(this.field_71460_t);
|
||||
this.field_175618_aM = new BlockRendererDispatcher(this.field_175617_aL.func_174954_c(), this.field_184127_aH);
|
||||
@@ -523,23 +529,27 @@
|
||||
@@ -523,23 +530,27 @@
|
||||
this.field_110451_am.func_110542_a(this.field_193995_ae);
|
||||
GlStateManager.func_179083_b(0, 0, this.field_71443_c, this.field_71440_d);
|
||||
this.field_71452_i = new ParticleManager(this.field_71441_e, this.field_71446_o);
|
||||
@@ -86,7 +94,7 @@
|
||||
if (this.field_71474_y.field_74353_u && !this.field_71431_Q)
|
||||
{
|
||||
this.func_71352_k();
|
||||
@@ -748,21 +758,23 @@
|
||||
@@ -748,21 +759,23 @@
|
||||
File file2 = new File(file1, "crash-" + (new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss")).format(new Date()) + "-client.txt");
|
||||
Bootstrap.func_179870_a(p_71377_1_.func_71502_e());
|
||||
|
||||
@@ -113,7 +121,7 @@
|
||||
}
|
||||
|
||||
public boolean func_152349_b()
|
||||
@@ -770,6 +782,7 @@
|
||||
@@ -770,6 +783,7 @@
|
||||
return this.field_135017_as.func_135042_a() || this.field_71474_y.field_151455_aw;
|
||||
}
|
||||
|
||||
@@ -121,7 +129,7 @@
|
||||
public void func_110436_a()
|
||||
{
|
||||
List<IResourcePack> list = Lists.newArrayList(this.field_110449_ao);
|
||||
@@ -955,11 +968,6 @@
|
||||
@@ -955,11 +969,6 @@
|
||||
|
||||
public void func_147108_a(@Nullable GuiScreen p_147108_1_)
|
||||
{
|
||||
@@ -133,7 +141,7 @@
|
||||
if (p_147108_1_ == null && this.field_71441_e == null)
|
||||
{
|
||||
p_147108_1_ = new GuiMainMenu();
|
||||
@@ -969,6 +977,17 @@
|
||||
@@ -969,6 +978,17 @@
|
||||
p_147108_1_ = new GuiGameOver((ITextComponent)null);
|
||||
}
|
||||
|
||||
@@ -151,7 +159,7 @@
|
||||
if (p_147108_1_ instanceof GuiMainMenu || p_147108_1_ instanceof GuiMultiplayer)
|
||||
{
|
||||
this.field_71474_y.field_74330_P = false;
|
||||
@@ -1082,7 +1101,7 @@
|
||||
@@ -1082,7 +1102,7 @@
|
||||
long i1 = System.nanoTime() - l;
|
||||
this.func_71361_d("Pre render");
|
||||
this.field_71424_I.func_76318_c("sound");
|
||||
@@ -160,7 +168,7 @@
|
||||
this.field_71424_I.func_76319_b();
|
||||
this.field_71424_I.func_76320_a("render");
|
||||
GlStateManager.func_179094_E();
|
||||
@@ -1094,11 +1113,13 @@
|
||||
@@ -1094,11 +1114,13 @@
|
||||
|
||||
if (!this.field_71454_w)
|
||||
{
|
||||
@@ -174,7 +182,7 @@
|
||||
}
|
||||
|
||||
this.field_71424_I.func_76319_b();
|
||||
@@ -1455,9 +1476,9 @@
|
||||
@@ -1455,9 +1477,9 @@
|
||||
{
|
||||
BlockPos blockpos = this.field_71476_x.func_178782_a();
|
||||
|
||||
@@ -186,7 +194,7 @@
|
||||
this.field_71439_g.func_184609_a(EnumHand.MAIN_HAND);
|
||||
}
|
||||
}
|
||||
@@ -1491,7 +1512,7 @@
|
||||
@@ -1491,7 +1513,7 @@
|
||||
case BLOCK:
|
||||
BlockPos blockpos = this.field_71476_x.func_178782_a();
|
||||
|
||||
@@ -195,7 +203,7 @@
|
||||
{
|
||||
this.field_71442_b.func_180511_b(blockpos, this.field_71476_x.field_178784_b);
|
||||
break;
|
||||
@@ -1505,6 +1526,7 @@
|
||||
@@ -1505,6 +1527,7 @@
|
||||
}
|
||||
|
||||
this.field_71439_g.func_184821_cY();
|
||||
@@ -203,7 +211,7 @@
|
||||
}
|
||||
|
||||
this.field_71439_g.func_184609_a(EnumHand.MAIN_HAND);
|
||||
@@ -1570,6 +1592,7 @@
|
||||
@@ -1570,6 +1593,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -211,11 +219,11 @@
|
||||
if (!itemstack.func_190926_b() && this.field_71442_b.func_187101_a(this.field_71439_g, this.field_71441_e, enumhand) == EnumActionResult.SUCCESS)
|
||||
{
|
||||
this.field_71460_t.field_78516_c.func_187460_a(enumhand);
|
||||
@@ -1630,6 +1653,11 @@
|
||||
@@ -1630,6 +1654,11 @@
|
||||
}
|
||||
|
||||
Display.setFullscreen(this.field_71431_Q);
|
||||
+ if (!this.field_71431_Q) //Forge: Fix MC-68754, Screen is not resizeable after exiting fullscreen due to LWJGL bug https://github.com/LWJGL/lwjgl/issues/142 which is fixed, but not in the version MC ships
|
||||
+ if (!this.field_71431_Q && (Util.func_110647_a() == Util.EnumOS.WINDOWS)) //Forge: Fix MC-68754, Screen is not resizeable after exiting fullscreen due to LWJGL bug https://github.com/LWJGL/lwjgl/issues/142 which is fixed, but not in the version MC ships
|
||||
+ {
|
||||
+ Display.setResizable(false);
|
||||
+ Display.setResizable(true);
|
||||
@@ -223,7 +231,7 @@
|
||||
Display.setVSyncEnabled(this.field_71474_y.field_74352_v);
|
||||
this.func_175601_h();
|
||||
}
|
||||
@@ -1676,6 +1704,8 @@
|
||||
@@ -1676,6 +1705,8 @@
|
||||
--this.field_71467_ac;
|
||||
}
|
||||
|
||||
@@ -232,7 +240,7 @@
|
||||
this.field_71424_I.func_76320_a("gui");
|
||||
|
||||
if (!this.field_71445_n)
|
||||
@@ -1877,6 +1907,7 @@
|
||||
@@ -1877,6 +1908,7 @@
|
||||
}
|
||||
|
||||
this.field_71424_I.func_76319_b();
|
||||
@@ -240,7 +248,7 @@
|
||||
this.field_71423_H = func_71386_F();
|
||||
}
|
||||
|
||||
@@ -1982,6 +2013,7 @@
|
||||
@@ -1982,6 +2014,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -248,7 +256,7 @@
|
||||
}
|
||||
|
||||
this.func_184117_aA();
|
||||
@@ -2239,6 +2271,8 @@
|
||||
@@ -2239,6 +2272,8 @@
|
||||
{
|
||||
while (Mouse.next())
|
||||
{
|
||||
@@ -257,7 +265,7 @@
|
||||
int i = Mouse.getEventButton();
|
||||
KeyBinding.func_74510_a(i - 100, Mouse.getEventButtonState());
|
||||
|
||||
@@ -2294,6 +2328,7 @@
|
||||
@@ -2294,6 +2329,7 @@
|
||||
this.field_71462_r.func_146274_d();
|
||||
}
|
||||
}
|
||||
@@ -265,7 +273,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2304,6 +2339,7 @@
|
||||
@@ -2304,6 +2340,7 @@
|
||||
|
||||
public void func_71371_a(String p_71371_1_, String p_71371_2_, @Nullable WorldSettings p_71371_3_)
|
||||
{
|
||||
@@ -273,14 +281,11 @@
|
||||
this.func_71403_a((WorldClient)null);
|
||||
System.gc();
|
||||
ISaveHandler isavehandler = this.field_71469_aa.func_75804_a(p_71371_1_, false);
|
||||
@@ -2344,8 +2380,14 @@
|
||||
@@ -2346,6 +2383,12 @@
|
||||
|
||||
this.field_71461_s.func_73720_a(I18n.func_135052_a("menu.loadingLevel"));
|
||||
|
||||
- while (!this.field_71437_Z.func_71200_ad())
|
||||
+ while (!this.field_71437_Z.func_71200_ad() && !this.field_71437_Z.func_71241_aa())
|
||||
while (!this.field_71437_Z.func_71200_ad())
|
||||
{
|
||||
+ if (!net.minecraftforge.fml.common.StartupQuery.check())
|
||||
+ if (!net.minecraftforge.fml.common.StartupQuery.check() || this.field_71437_Z.func_71241_aa())
|
||||
+ {
|
||||
+ func_71403_a(null);
|
||||
+ func_147108_a(null);
|
||||
@@ -289,7 +294,7 @@
|
||||
String s = this.field_71437_Z.func_71195_b_();
|
||||
|
||||
if (s != null)
|
||||
@@ -2371,8 +2413,14 @@
|
||||
@@ -2371,8 +2414,14 @@
|
||||
SocketAddress socketaddress = this.field_71437_Z.func_147137_ag().func_151270_a();
|
||||
NetworkManager networkmanager = NetworkManager.func_150722_a(socketaddress);
|
||||
networkmanager.func_150719_a(new NetHandlerLoginClient(networkmanager, this, (GuiScreen)null));
|
||||
@@ -306,7 +311,7 @@
|
||||
this.field_71453_ak = networkmanager;
|
||||
}
|
||||
|
||||
@@ -2383,6 +2431,8 @@
|
||||
@@ -2383,6 +2432,8 @@
|
||||
|
||||
public void func_71353_a(@Nullable WorldClient p_71353_1_, String p_71353_2_)
|
||||
{
|
||||
@@ -315,7 +320,7 @@
|
||||
if (p_71353_1_ == null)
|
||||
{
|
||||
NetHandlerPlayClient nethandlerplayclient = this.func_147114_u();
|
||||
@@ -2395,6 +2445,18 @@
|
||||
@@ -2395,6 +2446,18 @@
|
||||
if (this.field_71437_Z != null && this.field_71437_Z.func_175578_N())
|
||||
{
|
||||
this.field_71437_Z.func_71263_m();
|
||||
@@ -334,7 +339,7 @@
|
||||
}
|
||||
|
||||
this.field_71437_Z = null;
|
||||
@@ -2418,6 +2480,7 @@
|
||||
@@ -2418,6 +2481,7 @@
|
||||
this.field_71456_v.func_181029_i();
|
||||
this.func_71351_a((ServerData)null);
|
||||
this.field_71455_al = false;
|
||||
@@ -342,7 +347,7 @@
|
||||
}
|
||||
|
||||
this.field_147127_av.func_147690_c();
|
||||
@@ -2434,6 +2497,7 @@
|
||||
@@ -2434,6 +2498,7 @@
|
||||
}
|
||||
|
||||
TileEntityRendererDispatcher.field_147556_a.func_147543_a(p_71353_1_);
|
||||
@@ -350,7 +355,7 @@
|
||||
|
||||
if (p_71353_1_ != null)
|
||||
{
|
||||
@@ -2488,6 +2552,7 @@
|
||||
@@ -2488,6 +2553,7 @@
|
||||
EntityPlayerSP entityplayersp = this.field_71439_g;
|
||||
this.field_71439_g = this.field_71442_b.func_192830_a(this.field_71441_e, this.field_71439_g == null ? new StatisticsManager() : this.field_71439_g.func_146107_m(), this.field_71439_g == null ? new RecipeBook() : this.field_71439_g.func_192035_E());
|
||||
this.field_71439_g.func_184212_Q().func_187218_a(entityplayersp.func_184212_Q().func_187231_c());
|
||||
@@ -358,7 +363,7 @@
|
||||
this.field_71439_g.field_71093_bK = p_71354_1_;
|
||||
this.field_175622_Z = this.field_71439_g;
|
||||
this.field_71439_g.func_70065_x();
|
||||
@@ -2535,159 +2600,8 @@
|
||||
@@ -2535,159 +2601,8 @@
|
||||
{
|
||||
if (this.field_71476_x != null && this.field_71476_x.field_72313_a != RayTraceResult.Type.MISS)
|
||||
{
|
||||
@@ -520,7 +525,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2834,6 +2748,7 @@
|
||||
@@ -2834,6 +2749,7 @@
|
||||
return field_71432_P;
|
||||
}
|
||||
|
||||
@@ -528,7 +533,7 @@
|
||||
public ListenableFuture<Object> func_175603_A()
|
||||
{
|
||||
return this.func_152344_a(new Runnable()
|
||||
@@ -3009,18 +2924,8 @@
|
||||
@@ -3009,18 +2925,8 @@
|
||||
|
||||
public static int func_71369_N()
|
||||
{
|
||||
@@ -549,7 +554,7 @@
|
||||
}
|
||||
|
||||
public boolean func_70002_Q()
|
||||
@@ -3152,6 +3057,9 @@
|
||||
@@ -3152,6 +3058,9 @@
|
||||
}
|
||||
else if (this.field_71439_g != null)
|
||||
{
|
||||
@@ -559,7 +564,7 @@
|
||||
if (this.field_71439_g.field_70170_p.field_73011_w instanceof WorldProviderHell)
|
||||
{
|
||||
return MusicTicker.MusicType.NETHER;
|
||||
@@ -3181,11 +3089,11 @@
|
||||
@@ -3181,11 +3090,11 @@
|
||||
{
|
||||
if (Keyboard.getEventKeyState())
|
||||
{
|
||||
@@ -573,7 +578,7 @@
|
||||
{
|
||||
this.field_71456_v.func_146158_b().func_146227_a(ScreenShotHelper.func_148260_a(this.field_71412_D, this.field_71443_c, this.field_71440_d, this.field_147124_at));
|
||||
}
|
||||
@@ -3199,6 +3107,7 @@
|
||||
@@ -3199,6 +3108,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -581,7 +586,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3328,6 +3237,12 @@
|
||||
@@ -3328,6 +3238,12 @@
|
||||
return this.field_184127_aH;
|
||||
}
|
||||
|
||||
@@ -594,7 +599,7 @@
|
||||
public boolean func_189648_am()
|
||||
{
|
||||
return this.field_71439_g != null && this.field_71439_g.func_175140_cp() || this.field_71474_y.field_178879_v;
|
||||
@@ -3342,4 +3257,9 @@
|
||||
@@ -3342,4 +3258,9 @@
|
||||
{
|
||||
return this.field_193035_aW;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/entity/AbstractClientPlayer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/entity/AbstractClientPlayer.java
|
||||
@@ -135,7 +135,7 @@
|
||||
f = 1.0F;
|
||||
}
|
||||
|
||||
- if (this.func_184587_cr() && this.func_184607_cu().func_77973_b() == Items.field_151031_f)
|
||||
+ if (this.func_184587_cr() && this.func_184607_cu().func_77973_b() instanceof net.minecraft.item.ItemBow)
|
||||
{
|
||||
int i = this.func_184612_cw();
|
||||
float f1 = (float)i / 20.0F;
|
||||
@@ -152,6 +152,6 @@
|
||||
f *= 1.0F - f1 * 0.15F;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
+ // FORGE - Move status icon check down from above so renderHUDEffect will still be called without a status icon
|
||||
+ if (potion.func_76400_d())
|
||||
this.func_73729_b(k + 3, l + 3, i1 % 8 * 18, 198 + i1 / 8 * 18, 18, 18);
|
||||
+ potion.renderHUDEffect(k, l, potioneffect, field_73839_d, f);
|
||||
+ potion.renderHUDEffect(potioneffect, this, k, l, this.field_73735_i, f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,15 @@
|
||||
}
|
||||
|
||||
public List<String> func_191927_a(ItemStack p_191927_1_)
|
||||
@@ -142,7 +146,7 @@
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
- list.set(i, p_191927_1_.func_77953_t().field_77937_e + (String)list.get(i));
|
||||
+ list.set(i, p_191927_1_.func_77973_b().getForgeRarity(p_191927_1_).getColor() + (String)list.get(i));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -170,7 +174,13 @@
|
||||
|
||||
public void func_146283_a(List<String> p_146283_1_, int p_146283_2_, int p_146283_3_)
|
||||
|
||||
+15
-2
@@ -67,7 +67,7 @@
|
||||
if (this.field_147062_A.func_146179_b().isEmpty())
|
||||
{
|
||||
for (Item item : Item.field_150901_e)
|
||||
@@ -366,7 +403,7 @@
|
||||
@@ -366,10 +403,10 @@
|
||||
{
|
||||
CreativeTabs creativetabs = CreativeTabs.field_78032_a[field_147058_w];
|
||||
|
||||
@@ -75,7 +75,11 @@
|
||||
+ if (creativetabs != null && creativetabs.func_78019_g())
|
||||
{
|
||||
GlStateManager.func_179084_k();
|
||||
this.field_146289_q.func_78276_b(I18n.func_135052_a(creativetabs.func_78024_c()), 8, 6, 4210752);
|
||||
- this.field_146289_q.func_78276_b(I18n.func_135052_a(creativetabs.func_78024_c()), 8, 6, 4210752);
|
||||
+ this.field_146289_q.func_78276_b(I18n.func_135052_a(creativetabs.func_78024_c()), 8, 6, creativetabs.getLabelColor());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -401,7 +438,7 @@
|
||||
|
||||
for (CreativeTabs creativetabs : CreativeTabs.field_78032_a)
|
||||
@@ -160,6 +164,15 @@
|
||||
GlStateManager.func_179131_c(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.func_179140_f();
|
||||
this.func_191948_b(p_73863_1_, p_73863_2_);
|
||||
@@ -654,7 +719,7 @@
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
- list.set(i, p_146285_1_.func_77953_t().field_77937_e + (String)list.get(i));
|
||||
+ list.set(i, p_146285_1_.func_77973_b().getForgeRarity(p_146285_1_).getColor() + (String)list.get(i));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -662,7 +727,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,3 +18,12 @@
|
||||
int l = 1;
|
||||
Iterator<Ingredient> iterator = p_193951_1_.func_192400_c().iterator();
|
||||
|
||||
@@ -500,7 +500,7 @@
|
||||
|
||||
Ingredient ingredient = iterator.next();
|
||||
|
||||
- if (ingredient != Ingredient.field_193370_a)
|
||||
+ if (ingredient.func_193365_a().length > 0)
|
||||
{
|
||||
Slot slot = p_193951_2_.get(l);
|
||||
this.field_191915_z.func_194187_a(ingredient, slot.field_75223_e, slot.field_75221_f);
|
||||
@@ -0,0 +1,20 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/model/ModelSkeleton.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/model/ModelSkeleton.java
|
||||
@@ -48,7 +48,7 @@
|
||||
this.field_187075_l = ModelBiped.ArmPose.EMPTY;
|
||||
ItemStack itemstack = p_78086_1_.func_184586_b(EnumHand.MAIN_HAND);
|
||||
|
||||
- if (itemstack.func_77973_b() == Items.field_151031_f && ((AbstractSkeleton)p_78086_1_).func_184725_db())
|
||||
+ if (itemstack.func_77973_b() instanceof net.minecraft.item.ItemBow && ((AbstractSkeleton)p_78086_1_).func_184725_db())
|
||||
{
|
||||
if (p_78086_1_.func_184591_cq() == EnumHandSide.RIGHT)
|
||||
{
|
||||
@@ -69,7 +69,7 @@
|
||||
ItemStack itemstack = ((EntityLivingBase)p_78087_7_).func_184614_ca();
|
||||
AbstractSkeleton abstractskeleton = (AbstractSkeleton)p_78087_7_;
|
||||
|
||||
- if (abstractskeleton.func_184725_db() && (itemstack.func_190926_b() || itemstack.func_77973_b() != Items.field_151031_f))
|
||||
+ if (abstractskeleton.func_184725_db() && (itemstack.func_190926_b() || !(itemstack.func_77973_b() instanceof net.minecraft.item.ItemBow)))
|
||||
{
|
||||
float f = MathHelper.func_76126_a(this.field_78095_p * (float)Math.PI);
|
||||
float f1 = MathHelper.func_76126_a((1.0F - (1.0F - this.field_78095_p) * (1.0F - this.field_78095_p)) * (float)Math.PI);
|
||||
@@ -99,3 +99,12 @@
|
||||
packetbuffer.release();
|
||||
}
|
||||
}
|
||||
@@ -2087,7 +2099,7 @@
|
||||
|
||||
if (iattributeinstance == null)
|
||||
{
|
||||
- iattributeinstance = abstractattributemap.func_111150_b(new RangedAttribute((IAttribute)null, spacketentityproperties$snapshot.func_151409_a(), 0.0D, 2.2250738585072014E-308D, Double.MAX_VALUE));
|
||||
+ iattributeinstance = abstractattributemap.func_111150_b(new RangedAttribute((IAttribute)null, spacketentityproperties$snapshot.func_151409_a(), 0.0D, -Double.MAX_VALUE, Double.MAX_VALUE)); // Forge: fix invalid value range (MC-150405)
|
||||
}
|
||||
|
||||
iattributeinstance.func_111128_a(spacketentityproperties$snapshot.func_151410_b());
|
||||
@@ -33,7 +33,7 @@
|
||||
this.func_73729_b(i + 6, j + 7, 0 + i1 % 8 * 18, 198 + i1 / 8 * 18, 18, 18);
|
||||
}
|
||||
|
||||
+ potion.renderInventoryEffect(i, j, potioneffect, field_146297_k);
|
||||
+ potion.renderInventoryEffect(potioneffect, this, i, j, this.field_73735_i);
|
||||
+ if (!potion.shouldRenderInvText(potioneffect)) { j += l; continue; }
|
||||
String s1 = I18n.func_135052_a(potion.func_76393_a());
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
ItemStack itemstack = abstractclientplayer.func_184607_cu();
|
||||
|
||||
- if (itemstack.func_77973_b() == Items.field_151031_f)
|
||||
+ if (!itemstack.func_190926_b() && itemstack.func_77973_b() == Items.field_151031_f) //Forge: Data watcher can desync and cause this to NPE...
|
||||
+ if (itemstack.func_77973_b() instanceof net.minecraft.item.ItemBow)
|
||||
{
|
||||
EnumHand enumhand1 = abstractclientplayer.func_184600_cs();
|
||||
flag = enumhand1 == EnumHand.MAIN_HAND;
|
||||
|
||||
@@ -9,7 +9,19 @@
|
||||
this.func_175041_b();
|
||||
this.field_184395_f = p_i46552_3_;
|
||||
}
|
||||
@@ -137,7 +137,7 @@
|
||||
@@ -113,6 +113,11 @@
|
||||
|
||||
private void func_191967_a(IBakedModel p_191967_1_, int p_191967_2_, ItemStack p_191967_3_)
|
||||
{
|
||||
+ if (net.minecraftforge.common.ForgeModContainer.allowEmissiveItems)
|
||||
+ {
|
||||
+ net.minecraftforge.client.ForgeHooksClient.renderLitItem(this, p_191967_1_, p_191967_2_, p_191967_3_);
|
||||
+ return;
|
||||
+ }
|
||||
Tessellator tessellator = Tessellator.func_178181_a();
|
||||
BufferBuilder bufferbuilder = tessellator.func_178180_c();
|
||||
bufferbuilder.func_181668_a(7, DefaultVertexFormats.field_176599_b);
|
||||
@@ -137,7 +142,7 @@
|
||||
{
|
||||
GlStateManager.func_179131_c(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GlStateManager.func_179091_B();
|
||||
@@ -18,7 +30,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -218,7 +218,7 @@
|
||||
@@ -218,7 +223,7 @@
|
||||
k = k | -16777216;
|
||||
}
|
||||
|
||||
@@ -27,7 +39,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -240,17 +240,7 @@
|
||||
@@ -240,17 +245,7 @@
|
||||
public IBakedModel func_184393_a(ItemStack p_184393_1_, @Nullable World p_184393_2_, @Nullable EntityLivingBase p_184393_3_)
|
||||
{
|
||||
IBakedModel ibakedmodel = this.field_175059_m.func_178089_a(p_184393_1_);
|
||||
@@ -46,7 +58,7 @@
|
||||
}
|
||||
|
||||
public void func_184392_a(ItemStack p_184392_1_, EntityLivingBase p_184392_2_, ItemCameraTransforms.TransformType p_184392_3_, boolean p_184392_4_)
|
||||
@@ -274,14 +264,9 @@
|
||||
@@ -274,14 +269,9 @@
|
||||
GlStateManager.func_179147_l();
|
||||
GlStateManager.func_187428_a(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
|
||||
GlStateManager.func_179094_E();
|
||||
@@ -63,7 +75,7 @@
|
||||
this.func_180454_a(p_184394_1_, p_184394_2_);
|
||||
GlStateManager.func_187407_a(GlStateManager.CullFace.BACK);
|
||||
GlStateManager.func_179121_F();
|
||||
@@ -314,7 +299,7 @@
|
||||
@@ -314,7 +304,7 @@
|
||||
GlStateManager.func_187401_a(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
|
||||
GlStateManager.func_179131_c(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
this.func_180452_a(p_191962_2_, p_191962_3_, p_191962_4_.func_177556_c());
|
||||
@@ -72,7 +84,7 @@
|
||||
this.func_180454_a(p_191962_1_, p_191962_4_);
|
||||
GlStateManager.func_179118_c();
|
||||
GlStateManager.func_179101_C();
|
||||
@@ -367,6 +352,7 @@
|
||||
@@ -367,6 +357,7 @@
|
||||
return String.valueOf((Object)p_184391_2_.func_77973_b());
|
||||
}
|
||||
});
|
||||
@@ -80,7 +92,7 @@
|
||||
crashreportcategory.func_189529_a("Item Aux", new ICrashReportDetail<String>()
|
||||
{
|
||||
public String call() throws Exception
|
||||
@@ -413,9 +399,12 @@
|
||||
@@ -413,9 +404,12 @@
|
||||
p_180453_1_.func_175063_a(s, (float)(p_180453_3_ + 19 - 2 - p_180453_1_.func_78256_a(s)), (float)(p_180453_4_ + 6 + 3), 16777215);
|
||||
GlStateManager.func_179145_e();
|
||||
GlStateManager.func_179126_j();
|
||||
@@ -94,7 +106,7 @@
|
||||
{
|
||||
GlStateManager.func_179140_f();
|
||||
GlStateManager.func_179097_i();
|
||||
@@ -424,11 +413,10 @@
|
||||
@@ -424,11 +418,10 @@
|
||||
GlStateManager.func_179084_k();
|
||||
Tessellator tessellator = Tessellator.func_178181_a();
|
||||
BufferBuilder bufferbuilder = tessellator.func_178180_c();
|
||||
@@ -110,7 +122,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.func_179147_l();
|
||||
@@ -1099,6 +1087,7 @@
|
||||
@@ -1099,6 +1092,7 @@
|
||||
this.func_175029_a(Blocks.field_185779_df, TileEntityStructure.Mode.LOAD.func_185110_a(), "structure_block");
|
||||
this.func_175029_a(Blocks.field_185779_df, TileEntityStructure.Mode.CORNER.func_185110_a(), "structure_block");
|
||||
this.func_175029_a(Blocks.field_185779_df, TileEntityStructure.Mode.DATA.func_185110_a(), "structure_block");
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/renderer/entity/layers/LayerHeldItemWitch.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/renderer/entity/layers/LayerHeldItemWitch.java
|
||||
@@ -53,7 +53,7 @@
|
||||
float f1 = 0.375F;
|
||||
GlStateManager.func_179152_a(0.375F, -0.375F, 0.375F);
|
||||
}
|
||||
- else if (item == Items.field_151031_f)
|
||||
+ else if (item instanceof net.minecraft.item.ItemBow)
|
||||
{
|
||||
GlStateManager.func_179109_b(0.0F, 0.125F, -0.125F);
|
||||
GlStateManager.func_179114_b(-45.0F, 0.0F, 1.0F, 0.0F);
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/renderer/texture/LayeredColorMaskTexture.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/renderer/texture/LayeredColorMaskTexture.java
|
||||
@@ -71,9 +71,7 @@
|
||||
|
||||
if (s != null)
|
||||
{
|
||||
- iresource1 = p_110551_1_.func_110536_a(new ResourceLocation(s));
|
||||
- BufferedImage bufferedimage2 = TextureUtil.func_177053_a(iresource1.func_110527_b());
|
||||
-
|
||||
+ BufferedImage bufferedimage2 = net.minecraftforge.client.MinecraftForgeClient.getImageLayer(new ResourceLocation(s), p_110551_1_);
|
||||
if (bufferedimage2.getWidth() == bufferedimage.getWidth() && bufferedimage2.getHeight() == bufferedimage.getHeight() && bufferedimage2.getType() == 6)
|
||||
{
|
||||
for (int l = 0; l < bufferedimage2.getHeight(); ++l)
|
||||
@@ -25,7 +25,7 @@
|
||||
p_174943_2_.func_177059_a(this);
|
||||
this.func_110569_e();
|
||||
this.func_147631_c();
|
||||
@@ -88,13 +99,55 @@
|
||||
@@ -88,29 +99,74 @@
|
||||
this.field_94258_i.clear();
|
||||
int j = Integer.MAX_VALUE;
|
||||
int k = 1 << this.field_147636_j;
|
||||
@@ -58,8 +58,9 @@
|
||||
+ {
|
||||
+ if(location.equals(loading))
|
||||
+ {
|
||||
+ final String error = "circular model dependencies, stack: [" + com.google.common.base.Joiner.on(", ").join(loadingSprites) + "]";
|
||||
+ final String error = "circular texture dependencies, stack: [" + com.google.common.base.Joiner.on(", ").join(loadingSprites) + "]";
|
||||
+ net.minecraftforge.fml.client.FMLClientHandler.instance().trackBrokenTexture(resourcelocation, error);
|
||||
+ return j;
|
||||
+ }
|
||||
+ }
|
||||
+ loadingSprites.addLast(location);
|
||||
@@ -74,6 +75,8 @@
|
||||
+ TextureAtlasSprite depSprite = field_110574_e.get(dependency.toString());
|
||||
+ j = loadTexture(stitcher, p_110571_1_, dependency, depSprite, bar, j, k);
|
||||
+ }
|
||||
try
|
||||
{
|
||||
+ if (textureatlassprite.hasCustomLoader(p_110571_1_, resourcelocation))
|
||||
+ {
|
||||
+ if (textureatlassprite.load(p_110571_1_, resourcelocation, l -> field_110574_e.get(l.toString())))
|
||||
@@ -82,11 +85,13 @@
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
try
|
||||
{
|
||||
+ {
|
||||
PngSizeInfo pngsizeinfo = PngSizeInfo.func_188532_a(p_110571_1_.func_110536_a(resourcelocation));
|
||||
@@ -104,13 +157,13 @@
|
||||
iresource = p_110571_1_.func_110536_a(resourcelocation);
|
||||
boolean flag = iresource.func_110526_a("animation") != null;
|
||||
textureatlassprite.func_188538_a(pngsizeinfo, flag);
|
||||
}
|
||||
+ }
|
||||
catch (RuntimeException runtimeexception)
|
||||
{
|
||||
- field_147635_d.error("Unable to parse metadata from {}", resourcelocation, runtimeexception);
|
||||
@@ -103,7 +108,7 @@
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -122,16 +175,28 @@
|
||||
@@ -122,16 +178,28 @@
|
||||
|
||||
if (j1 < k)
|
||||
{
|
||||
@@ -134,7 +139,7 @@
|
||||
if (i1 < this.field_147636_j)
|
||||
{
|
||||
field_147635_d.warn("{}: dropping miplevel from {} to {}, because of minimum power of two: {}", this.field_94254_c, Integer.valueOf(this.field_147636_j), Integer.valueOf(i1), Integer.valueOf(l));
|
||||
@@ -140,9 +205,11 @@
|
||||
@@ -140,9 +208,11 @@
|
||||
|
||||
this.field_94249_f.func_147963_d(this.field_147636_j);
|
||||
stitcher.func_110934_a(this.field_94249_f);
|
||||
@@ -146,7 +151,7 @@
|
||||
stitcher.func_94305_f();
|
||||
}
|
||||
catch (StitcherException stitcherexception)
|
||||
@@ -151,12 +218,16 @@
|
||||
@@ -151,12 +221,16 @@
|
||||
}
|
||||
|
||||
field_147635_d.info("Created: {}x{} {}-atlas", Integer.valueOf(stitcher.func_110935_a()), Integer.valueOf(stitcher.func_110936_b()), this.field_94254_c);
|
||||
@@ -164,7 +169,7 @@
|
||||
{
|
||||
String s = textureatlassprite1.func_94215_i();
|
||||
map.remove(s);
|
||||
@@ -186,6 +257,8 @@
|
||||
@@ -186,6 +260,8 @@
|
||||
{
|
||||
textureatlassprite2.func_94217_a(this.field_94249_f);
|
||||
}
|
||||
@@ -173,7 +178,7 @@
|
||||
}
|
||||
|
||||
private boolean func_184397_a(IResourceManager p_184397_1_, final TextureAtlasSprite p_184397_2_)
|
||||
@@ -195,7 +268,7 @@
|
||||
@@ -195,7 +271,7 @@
|
||||
label62:
|
||||
{
|
||||
boolean flag;
|
||||
@@ -182,7 +187,7 @@
|
||||
try
|
||||
{
|
||||
iresource = p_184397_1_.func_110536_a(resourcelocation);
|
||||
@@ -292,7 +365,7 @@
|
||||
@@ -292,7 +368,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -191,7 +196,7 @@
|
||||
|
||||
if (textureatlassprite == null)
|
||||
{
|
||||
@@ -318,4 +391,52 @@
|
||||
@@ -318,4 +394,52 @@
|
||||
{
|
||||
return this.field_94249_f;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/renderer/texture/TextureUtil.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/renderer/texture/TextureUtil.java
|
||||
@@ -63,7 +63,7 @@
|
||||
{
|
||||
boolean flag = false;
|
||||
|
||||
- for (int i = 0; i < p_147949_2_.length; ++i)
|
||||
+ for (int i = 0; i < p_147949_2_[0].length; ++i)
|
||||
{
|
||||
if (p_147949_2_[0][i] >> 24 == 0)
|
||||
{
|
||||
@@ -83,6 +83,7 @@
|
||||
int[] aint1 = aint[l1 - 1];
|
||||
int[] aint2 = new int[aint1.length >> 2];
|
||||
|
||||
+5
-3
@@ -9,7 +9,7 @@
|
||||
}
|
||||
|
||||
public void func_190056_a(World p_190056_1_, TextureManager p_190056_2_, FontRenderer p_190056_3_, Entity p_190056_4_, RayTraceResult p_190056_5_, float p_190056_6_)
|
||||
@@ -117,12 +117,15 @@
|
||||
@@ -117,13 +117,17 @@
|
||||
{
|
||||
if (p_180546_1_.func_145835_a(this.field_147560_j, this.field_147561_k, this.field_147558_l) < p_180546_1_.func_145833_n())
|
||||
{
|
||||
@@ -23,9 +23,11 @@
|
||||
GlStateManager.func_179131_c(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
+ }
|
||||
BlockPos blockpos = p_180546_1_.func_174877_v();
|
||||
+ if (this.field_147550_f.func_175668_a(blockpos, false)) // Forge: fix MC-123363
|
||||
this.func_192854_a(p_180546_1_, (double)blockpos.func_177958_n() - field_147554_b, (double)blockpos.func_177956_o() - field_147555_c, (double)blockpos.func_177952_p() - field_147552_d, p_180546_2_, p_180546_3_, 1.0F);
|
||||
}
|
||||
@@ -146,6 +149,9 @@
|
||||
}
|
||||
@@ -146,6 +150,9 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -35,7 +37,7 @@
|
||||
tileentityspecialrenderer.func_192841_a(p_192854_1_, p_192854_2_, p_192854_4_, p_192854_6_, p_192854_8_, p_192854_9_, p_192854_10_);
|
||||
}
|
||||
catch (Throwable throwable)
|
||||
@@ -172,4 +178,53 @@
|
||||
@@ -172,4 +179,53 @@
|
||||
{
|
||||
return this.field_147557_n;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
--- ../src-base/minecraft/net/minecraft/client/resources/ResourcePackRepository.java
|
||||
+++ ../src-work/minecraft/net/minecraft/client/resources/ResourcePackRepository.java
|
||||
@@ -310,9 +310,10 @@
|
||||
|
||||
private boolean func_190113_a(String p_190113_1_, File p_190113_2_)
|
||||
{
|
||||
+ InputStream is = null;
|
||||
try
|
||||
{
|
||||
- String s = DigestUtils.sha1Hex((InputStream)(new FileInputStream(p_190113_2_)));
|
||||
+ String s = DigestUtils.sha1Hex(is = (InputStream)(new FileInputStream(p_190113_2_)));
|
||||
|
||||
if (p_190113_1_.isEmpty())
|
||||
{
|
||||
@@ -332,6 +333,7 @@
|
||||
{
|
||||
field_177320_c.warn("File {} couldn't be hashed.", p_190113_2_, ioexception);
|
||||
}
|
||||
+ finally { IOUtils.closeQuietly(is); } // Forge: close stream after use
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -34,7 +34,24 @@
|
||||
}
|
||||
|
||||
if (p_74306_1_ == GameSettings.Options.GRAPHICS)
|
||||
@@ -1068,7 +1070,12 @@
|
||||
@@ -724,6 +726,7 @@
|
||||
|
||||
public void func_74300_a()
|
||||
{
|
||||
+ FileInputStream fileInputStream = null; // Forge: fix MC-151173
|
||||
try
|
||||
{
|
||||
if (!this.field_74354_ai.exists())
|
||||
@@ -732,7 +735,7 @@
|
||||
}
|
||||
|
||||
this.field_186714_aM.clear();
|
||||
- List<String> list = IOUtils.readLines(new FileInputStream(this.field_74354_ai));
|
||||
+ List<String> list = IOUtils.readLines(fileInputStream = new FileInputStream(this.field_74354_ai), StandardCharsets.UTF_8); // Forge: fix MC-117449, MC-151173
|
||||
NBTTagCompound nbttagcompound = new NBTTagCompound();
|
||||
|
||||
for (String s : list)
|
||||
@@ -1068,7 +1071,12 @@
|
||||
{
|
||||
if (s1.equals("key_" + keybinding.func_151464_g()))
|
||||
{
|
||||
@@ -48,7 +65,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1132,6 +1139,7 @@
|
||||
@@ -1100,6 +1108,7 @@
|
||||
{
|
||||
field_151454_ax.error("Failed to load options", (Throwable)exception);
|
||||
}
|
||||
+ finally { IOUtils.closeQuietly(fileInputStream); } // Forge: fix MC-151173
|
||||
}
|
||||
|
||||
private NBTTagCompound func_189988_a(NBTTagCompound p_189988_1_)
|
||||
@@ -1132,6 +1141,7 @@
|
||||
|
||||
public void func_74303_b()
|
||||
{
|
||||
@@ -56,7 +81,7 @@
|
||||
PrintWriter printwriter = null;
|
||||
|
||||
try
|
||||
@@ -1206,7 +1214,8 @@
|
||||
@@ -1206,7 +1216,8 @@
|
||||
|
||||
for (KeyBinding keybinding : this.field_74324_K)
|
||||
{
|
||||
@@ -66,7 +91,7 @@
|
||||
}
|
||||
|
||||
for (SoundCategory soundcategory : SoundCategory.values())
|
||||
@@ -1440,4 +1449,35 @@
|
||||
@@ -1440,4 +1451,35 @@
|
||||
return p_148264_1_;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
--- ../src-base/minecraft/net/minecraft/command/CommandGameRule.java
|
||||
+++ ../src-work/minecraft/net/minecraft/command/CommandGameRule.java
|
||||
@@ -73,6 +73,7 @@
|
||||
entityplayermp.field_71135_a.func_147359_a(new SPacketEntityStatus(entityplayermp, b0));
|
||||
}
|
||||
}
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onGameRuleChange(p_184898_0_, p_184898_1_, p_184898_2_);
|
||||
}
|
||||
|
||||
public List<String> func_184883_a(MinecraftServer p_184883_1_, ICommandSender p_184883_2_, String[] p_184883_3_, @Nullable BlockPos p_184883_4_)
|
||||
@@ -44,7 +44,7 @@
|
||||
return this.field_78033_n < 6;
|
||||
}
|
||||
|
||||
@@ -260,4 +282,45 @@
|
||||
@@ -260,4 +282,50 @@
|
||||
item.func_150895_a(this, p_78018_1_);
|
||||
}
|
||||
}
|
||||
@@ -88,5 +88,10 @@
|
||||
+ public net.minecraft.util.ResourceLocation getBackgroundImage()
|
||||
+ {
|
||||
+ return new net.minecraft.util.ResourceLocation("textures/gui/container/creative_inventory/tab_" + this.func_78015_f());
|
||||
+ }
|
||||
+
|
||||
+ public int getLabelColor()
|
||||
+ {
|
||||
+ return 4210752;
|
||||
+ }
|
||||
}
|
||||
@@ -46,7 +46,23 @@
|
||||
public int func_145782_y()
|
||||
{
|
||||
return this.field_145783_c;
|
||||
@@ -1053,7 +1065,7 @@
|
||||
@@ -344,6 +356,7 @@
|
||||
this.field_70165_t = p_70107_1_;
|
||||
this.field_70163_u = p_70107_3_;
|
||||
this.field_70161_v = p_70107_5_;
|
||||
+ if (this.isAddedToWorld() && !this.field_70170_p.field_72995_K) this.field_70170_p.func_72866_a(this, false); // Forge - Process chunk registration after moving.
|
||||
float f = this.field_70130_N / 2.0F;
|
||||
float f1 = this.field_70131_O;
|
||||
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));
|
||||
@@ -995,6 +1008,7 @@
|
||||
this.field_70165_t = (axisalignedbb.field_72340_a + axisalignedbb.field_72336_d) / 2.0D;
|
||||
this.field_70163_u = axisalignedbb.field_72338_b;
|
||||
this.field_70161_v = (axisalignedbb.field_72339_c + axisalignedbb.field_72334_f) / 2.0D;
|
||||
+ if (this.isAddedToWorld() && !this.field_70170_p.field_72995_K) this.field_70170_p.func_72866_a(this, false); // Forge - Process chunk registration after moving.
|
||||
}
|
||||
|
||||
protected SoundEvent func_184184_Z()
|
||||
@@ -1053,7 +1067,7 @@
|
||||
|
||||
protected void func_180429_a(BlockPos p_180429_1_, Block p_180429_2_)
|
||||
{
|
||||
@@ -55,7 +71,7 @@
|
||||
|
||||
if (this.field_70170_p.func_180495_p(p_180429_1_.func_177984_a()).func_177230_c() == Blocks.field_150431_aC)
|
||||
{
|
||||
@@ -1259,6 +1271,7 @@
|
||||
@@ -1259,6 +1273,7 @@
|
||||
BlockPos blockpos = new BlockPos(i, j, k);
|
||||
IBlockState iblockstate = this.field_70170_p.func_180495_p(blockpos);
|
||||
|
||||
@@ -63,7 +79,7 @@
|
||||
if (iblockstate.func_185901_i() != EnumBlockRenderType.INVISIBLE)
|
||||
{
|
||||
this.field_70170_p.func_175688_a(EnumParticleTypes.BLOCK_CRACK, this.field_70165_t + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.field_70130_N, this.func_174813_aQ().field_72338_b + 0.1D, this.field_70161_v + ((double)this.field_70146_Z.nextFloat() - 0.5D) * (double)this.field_70130_N, -this.field_70159_w * 4.0D, 1.5D, -this.field_70179_y * 4.0D, Block.func_176210_f(iblockstate));
|
||||
@@ -1277,12 +1290,12 @@
|
||||
@@ -1277,12 +1292,12 @@
|
||||
BlockPos blockpos = new BlockPos(this.field_70165_t, d0, this.field_70161_v);
|
||||
IBlockState iblockstate = this.field_70170_p.func_180495_p(blockpos);
|
||||
|
||||
@@ -80,7 +96,15 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1707,6 +1720,7 @@
|
||||
@@ -1382,6 +1397,7 @@
|
||||
this.field_70126_B -= 360.0F;
|
||||
}
|
||||
|
||||
+ if (!this.field_70170_p.field_72995_K) this.field_70170_p.func_72964_e((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_);
|
||||
}
|
||||
@@ -1707,6 +1723,7 @@
|
||||
{
|
||||
p_189511_1_.func_74757_a("Glowing", this.field_184238_ar);
|
||||
}
|
||||
@@ -88,7 +112,7 @@
|
||||
|
||||
if (!this.field_184236_aF.isEmpty())
|
||||
{
|
||||
@@ -1720,6 +1734,9 @@
|
||||
@@ -1720,6 +1737,9 @@
|
||||
p_189511_1_.func_74782_a("Tags", nbttaglist);
|
||||
}
|
||||
|
||||
@@ -98,7 +122,7 @@
|
||||
this.func_70014_b(p_189511_1_);
|
||||
|
||||
if (this.func_184207_aI())
|
||||
@@ -1826,7 +1843,11 @@
|
||||
@@ -1826,7 +1846,11 @@
|
||||
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"));
|
||||
@@ -110,7 +134,7 @@
|
||||
if (p_70020_1_.func_150297_b("Tags", 9))
|
||||
{
|
||||
this.field_184236_aF.clear();
|
||||
@@ -1918,7 +1939,10 @@
|
||||
@@ -1918,7 +1942,10 @@
|
||||
{
|
||||
EntityItem entityitem = new EntityItem(this.field_70170_p, this.field_70165_t, this.field_70163_u + (double)p_70099_2_, this.field_70161_v, p_70099_1_);
|
||||
entityitem.func_174869_p();
|
||||
@@ -122,7 +146,7 @@
|
||||
return entityitem;
|
||||
}
|
||||
}
|
||||
@@ -1985,6 +2009,7 @@
|
||||
@@ -1985,6 +2012,7 @@
|
||||
this.field_70159_w = 0.0D;
|
||||
this.field_70181_x = 0.0D;
|
||||
this.field_70179_y = 0.0D;
|
||||
@@ -130,7 +154,7 @@
|
||||
this.func_70071_h_();
|
||||
|
||||
if (this.func_184218_aH())
|
||||
@@ -2032,6 +2057,7 @@
|
||||
@@ -2032,6 +2060,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -138,7 +162,7 @@
|
||||
if (p_184205_2_ || this.func_184228_n(p_184205_1_) && p_184205_1_.func_184219_q(this))
|
||||
{
|
||||
if (this.func_184218_aH())
|
||||
@@ -2067,6 +2093,7 @@
|
||||
@@ -2067,6 +2096,7 @@
|
||||
if (this.field_184239_as != null)
|
||||
{
|
||||
Entity entity = this.field_184239_as;
|
||||
@@ -146,7 +170,7 @@
|
||||
this.field_184239_as = null;
|
||||
entity.func_184225_p(this);
|
||||
}
|
||||
@@ -2509,8 +2536,16 @@
|
||||
@@ -2509,8 +2539,16 @@
|
||||
@Nullable
|
||||
public Entity func_184204_a(int p_184204_1_)
|
||||
{
|
||||
@@ -163,7 +187,7 @@
|
||||
this.field_70170_p.field_72984_F.func_76320_a("changeDimension");
|
||||
MinecraftServer minecraftserver = this.func_184102_h();
|
||||
int i = this.field_71093_bK;
|
||||
@@ -2518,7 +2553,7 @@
|
||||
@@ -2518,7 +2556,7 @@
|
||||
WorldServer worldserver1 = minecraftserver.func_71218_a(p_184204_1_);
|
||||
this.field_71093_bK = p_184204_1_;
|
||||
|
||||
@@ -172,7 +196,7 @@
|
||||
{
|
||||
worldserver1 = minecraftserver.func_71218_a(0);
|
||||
this.field_71093_bK = 0;
|
||||
@@ -2529,22 +2564,23 @@
|
||||
@@ -2529,22 +2567,23 @@
|
||||
this.field_70170_p.field_72984_F.func_76320_a("reposition");
|
||||
BlockPos blockpos;
|
||||
|
||||
@@ -201,7 +225,7 @@
|
||||
{
|
||||
d0 = MathHelper.func_151237_a(d0 * 8.0D, worldserver1.func_175723_af().func_177726_b() + 16.0D, worldserver1.func_175723_af().func_177728_d() - 16.0D);
|
||||
d1 = MathHelper.func_151237_a(d1 * 8.0D, worldserver1.func_175723_af().func_177736_c() + 16.0D, worldserver1.func_175723_af().func_177733_e() - 16.0D);
|
||||
@@ -2554,8 +2590,7 @@
|
||||
@@ -2554,8 +2593,7 @@
|
||||
d1 = (double)MathHelper.func_76125_a((int)d1, -29999872, 29999872);
|
||||
float f = this.field_70177_z;
|
||||
this.func_70012_b(d0, this.field_70163_u, d1, 90.0F, 0.0F);
|
||||
@@ -211,7 +235,7 @@
|
||||
blockpos = new BlockPos(this);
|
||||
}
|
||||
|
||||
@@ -2567,7 +2602,7 @@
|
||||
@@ -2567,7 +2605,7 @@
|
||||
{
|
||||
entity.func_180432_n(this);
|
||||
|
||||
@@ -220,7 +244,7 @@
|
||||
{
|
||||
BlockPos blockpos1 = worldserver1.func_175672_r(worldserver1.func_175694_M());
|
||||
entity.func_174828_a(blockpos1, entity.field_70177_z, entity.field_70125_A);
|
||||
@@ -2604,7 +2639,7 @@
|
||||
@@ -2604,7 +2642,7 @@
|
||||
|
||||
public float func_180428_a(Explosion p_180428_1_, World p_180428_2_, BlockPos p_180428_3_, IBlockState p_180428_4_)
|
||||
{
|
||||
@@ -229,12 +253,47 @@
|
||||
}
|
||||
|
||||
public boolean func_174816_a(Explosion p_174816_1_, World p_174816_2_, BlockPos p_174816_3_, IBlockState p_174816_4_, float p_174816_5_)
|
||||
@@ -2901,6 +2936,183 @@
|
||||
@@ -2901,6 +2939,218 @@
|
||||
EnchantmentHelper.func_151385_b(p_174815_1_, p_174815_2_);
|
||||
}
|
||||
|
||||
+ /* ================================== Forge Start =====================================*/
|
||||
+ /**
|
||||
+ * Internal use for keeping track of entities that are tracked by a world, to
|
||||
+ * allow guarantees that entity position changes will force a chunk load, avoiding
|
||||
+ * potential issues with entity desyncing and bad chunk data.
|
||||
+ */
|
||||
+ private boolean isAddedToWorld;
|
||||
+
|
||||
+ /**
|
||||
+ * Gets whether this entity has been added to a world (for tracking). Specifically
|
||||
+ * between the times when an entity is added to a world and the entity being removed
|
||||
+ * from the world's tracked lists. See {@link World#onEntityAdded(Entity)} and
|
||||
+ * {@link World#onEntityRemoved(Entity)}.
|
||||
+ *
|
||||
+ * @return True if this entity is being tracked by a world
|
||||
+ */
|
||||
+ public final boolean isAddedToWorld() { return this.isAddedToWorld; }
|
||||
+
|
||||
+ /**
|
||||
+ * Called after the entity has been added to the world's
|
||||
+ * ticking list. Can be overriden, but needs to call super
|
||||
+ * to prevent MC-136995.
|
||||
+ */
|
||||
+ public void onAddedToWorld() {
|
||||
+ this.isAddedToWorld = true;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called after the entity has been removed to the world's
|
||||
+ * ticking list. Can be overriden, but needs to call super
|
||||
+ * to prevent MC-136995.
|
||||
+ */
|
||||
+ public void onRemovedFromWorld() {
|
||||
+ this.isAddedToWorld = false;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Returns a NBTTagCompound that can be used to store custom data for this entity.
|
||||
+ * It will be written, and read from disc, so it persists over world saves.
|
||||
+ * @return A NBTTagCompound
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/EntityLeashKnot.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/EntityLeashKnot.java
|
||||
@@ -43,6 +43,7 @@
|
||||
this.field_70165_t = (double)this.field_174861_a.func_177958_n() + 0.5D;
|
||||
this.field_70163_u = (double)this.field_174861_a.func_177956_o() + 0.5D;
|
||||
this.field_70161_v = (double)this.field_174861_a.func_177952_p() + 0.5D;
|
||||
+ if (this.isAddedToWorld() && !this.field_70170_p.field_72995_K) this.field_70170_p.func_72866_a(this, false); // Forge - Process chunk registration after moving.
|
||||
}
|
||||
|
||||
public void func_174859_a(EnumFacing p_174859_1_)
|
||||
@@ -47,15 +47,16 @@
|
||||
while (i > 0)
|
||||
{
|
||||
int j = EntityXPOrb.func_70527_a(i);
|
||||
@@ -442,6 +445,7 @@
|
||||
{
|
||||
this.field_70755_b = p_70604_1_;
|
||||
this.field_70756_c = this.field_70173_aa;
|
||||
+ net.minecraftforge.common.ForgeHooks.onLivingSetAttackTarget(this, p_70604_1_);
|
||||
}
|
||||
@@ -602,7 +605,7 @@
|
||||
|
||||
public EntityLivingBase func_110144_aD()
|
||||
@@ -670,8 +674,10 @@
|
||||
if (!potioneffect.func_76455_a(this))
|
||||
{
|
||||
- if (!this.field_70170_p.field_72995_K)
|
||||
+ if (!this.field_70170_p.field_72995_K && !net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.PotionEvent.PotionExpiryEvent(this, potioneffect)))
|
||||
{
|
||||
iterator.remove();
|
||||
this.func_70688_c(potioneffect);
|
||||
@@ -670,8 +673,10 @@
|
||||
else
|
||||
{
|
||||
Collection<PotionEffect> collection = this.field_70713_bf.values();
|
||||
@@ -68,7 +69,45 @@
|
||||
this.func_82142_c(this.func_70644_a(MobEffects.field_76441_p));
|
||||
}
|
||||
}
|
||||
@@ -819,6 +825,8 @@
|
||||
@@ -703,7 +708,10 @@
|
||||
|
||||
while (iterator.hasNext())
|
||||
{
|
||||
- this.func_70688_c(iterator.next());
|
||||
+ PotionEffect effect = iterator.next();
|
||||
+ if(net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.PotionEvent.PotionRemoveEvent(this, effect))) continue;
|
||||
+
|
||||
+ this.func_70688_c(effect);
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
@@ -736,6 +744,7 @@
|
||||
{
|
||||
PotionEffect potioneffect = this.field_70713_bf.get(p_70690_1_.func_188419_a());
|
||||
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.PotionEvent.PotionAddedEvent(this, potioneffect, p_70690_1_));
|
||||
if (potioneffect == null)
|
||||
{
|
||||
this.field_70713_bf.put(p_70690_1_.func_188419_a(), p_70690_1_);
|
||||
@@ -751,6 +760,9 @@
|
||||
|
||||
public boolean func_70687_e(PotionEffect p_70687_1_)
|
||||
{
|
||||
+ net.minecraftforge.event.entity.living.PotionEvent.PotionApplicableEvent event = new net.minecraftforge.event.entity.living.PotionEvent.PotionApplicableEvent(this, p_70687_1_);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event);
|
||||
+ if (event.getResult() != net.minecraftforge.fml.common.eventhandler.Event.Result.DEFAULT) return event.getResult() == net.minecraftforge.fml.common.eventhandler.Event.Result.ALLOW;
|
||||
if (this.func_70668_bt() == EnumCreatureAttribute.UNDEAD)
|
||||
{
|
||||
Potion potion = p_70687_1_.func_188419_a();
|
||||
@@ -777,6 +789,7 @@
|
||||
|
||||
public void func_184589_d(Potion p_184589_1_)
|
||||
{
|
||||
+ if(net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.PotionEvent.PotionRemoveEvent(this, p_184589_1_))) return;
|
||||
PotionEffect potioneffect = this.func_184596_c(p_184589_1_);
|
||||
|
||||
if (potioneffect != null)
|
||||
@@ -819,6 +832,8 @@
|
||||
|
||||
public void func_70691_i(float p_70691_1_)
|
||||
{
|
||||
@@ -77,7 +116,7 @@
|
||||
float f = this.func_110143_aJ();
|
||||
|
||||
if (f > 0.0F)
|
||||
@@ -839,6 +847,7 @@
|
||||
@@ -839,6 +854,7 @@
|
||||
|
||||
public boolean func_70097_a(DamageSource p_70097_1_, float p_70097_2_)
|
||||
{
|
||||
@@ -85,7 +124,7 @@
|
||||
if (this.func_180431_b(p_70097_1_))
|
||||
{
|
||||
return false;
|
||||
@@ -927,9 +936,9 @@
|
||||
@@ -927,9 +943,9 @@
|
||||
this.field_70718_bc = 100;
|
||||
this.field_70717_bb = (EntityPlayer)entity1;
|
||||
}
|
||||
@@ -97,7 +136,7 @@
|
||||
|
||||
if (entitywolf.func_70909_n())
|
||||
{
|
||||
@@ -1127,7 +1136,7 @@
|
||||
@@ -1127,7 +1143,7 @@
|
||||
|
||||
public void func_70669_a(ItemStack p_70669_1_)
|
||||
{
|
||||
@@ -106,7 +145,7 @@
|
||||
|
||||
for (int i = 0; i < 5; ++i)
|
||||
{
|
||||
@@ -1139,12 +1148,17 @@
|
||||
@@ -1139,12 +1155,17 @@
|
||||
vec3d1 = vec3d1.func_178789_a(-this.field_70125_A * 0.017453292F);
|
||||
vec3d1 = vec3d1.func_178785_b(-this.field_70177_z * 0.017453292F);
|
||||
vec3d1 = vec3d1.func_72441_c(this.field_70165_t, this.field_70163_u + (double)this.func_70047_e(), this.field_70161_v);
|
||||
@@ -125,7 +164,7 @@
|
||||
if (!this.field_70729_aU)
|
||||
{
|
||||
Entity entity = p_70645_1_.func_76346_g();
|
||||
@@ -1165,18 +1179,26 @@
|
||||
@@ -1165,18 +1186,26 @@
|
||||
|
||||
if (!this.field_70170_p.field_72995_K)
|
||||
{
|
||||
@@ -157,7 +196,7 @@
|
||||
}
|
||||
|
||||
this.field_70170_p.func_72960_a(this, (byte)3);
|
||||
@@ -1195,6 +1217,9 @@
|
||||
@@ -1195,6 +1224,9 @@
|
||||
|
||||
public void func_70653_a(Entity p_70653_1_, float p_70653_2_, double p_70653_3_, double p_70653_5_)
|
||||
{
|
||||
@@ -167,7 +206,7 @@
|
||||
if (this.field_70146_Z.nextDouble() >= this.func_110148_a(SharedMonsterAttributes.field_111266_c).func_111126_e())
|
||||
{
|
||||
this.field_70160_al = true;
|
||||
@@ -1253,15 +1278,7 @@
|
||||
@@ -1253,15 +1285,7 @@
|
||||
BlockPos blockpos = new BlockPos(i, j, k);
|
||||
IBlockState iblockstate = this.field_70170_p.func_180495_p(blockpos);
|
||||
Block block = iblockstate.func_177230_c();
|
||||
@@ -184,7 +223,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1287,6 +1304,9 @@
|
||||
@@ -1287,6 +1311,9 @@
|
||||
|
||||
public void func_180430_e(float p_180430_1_, float p_180430_2_)
|
||||
{
|
||||
@@ -194,7 +233,7 @@
|
||||
super.func_180430_e(p_180430_1_, p_180430_2_);
|
||||
PotionEffect potioneffect = this.func_70660_b(MobEffects.field_76430_j);
|
||||
float f = potioneffect == null ? 0.0F : (float)(potioneffect.func_76458_c() + 1);
|
||||
@@ -1303,7 +1323,7 @@
|
||||
@@ -1303,7 +1330,7 @@
|
||||
|
||||
if (iblockstate.func_185904_a() != Material.field_151579_a)
|
||||
{
|
||||
@@ -203,7 +242,7 @@
|
||||
this.func_184185_a(soundtype.func_185842_g(), soundtype.func_185843_a() * 0.5F, soundtype.func_185847_b() * 0.75F);
|
||||
}
|
||||
}
|
||||
@@ -1380,17 +1400,20 @@
|
||||
@@ -1380,17 +1407,20 @@
|
||||
{
|
||||
if (!this.func_180431_b(p_70665_1_))
|
||||
{
|
||||
@@ -225,7 +264,7 @@
|
||||
this.func_110149_m(this.func_110139_bj() - p_70665_2_);
|
||||
}
|
||||
}
|
||||
@@ -1447,6 +1470,11 @@
|
||||
@@ -1447,6 +1477,11 @@
|
||||
|
||||
public void func_184609_a(EnumHand p_184609_1_)
|
||||
{
|
||||
@@ -237,7 +276,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;
|
||||
@@ -1694,7 +1722,7 @@
|
||||
@@ -1694,7 +1729,7 @@
|
||||
|
||||
if (!this.field_70170_p.func_184143_b(axisalignedbb1))
|
||||
{
|
||||
@@ -246,7 +285,7 @@
|
||||
{
|
||||
this.func_70634_a(d11, this.field_70163_u + 1.0D, d12);
|
||||
return;
|
||||
@@ -1702,14 +1730,14 @@
|
||||
@@ -1702,14 +1737,14 @@
|
||||
|
||||
BlockPos blockpos = new BlockPos(d11, this.field_70163_u - 1.0D, d12);
|
||||
|
||||
@@ -263,7 +302,7 @@
|
||||
{
|
||||
d1 = d11;
|
||||
d13 = this.field_70163_u + 2.0D;
|
||||
@@ -1781,16 +1809,17 @@
|
||||
@@ -1781,16 +1816,17 @@
|
||||
}
|
||||
|
||||
this.field_70160_al = true;
|
||||
@@ -283,7 +322,7 @@
|
||||
}
|
||||
|
||||
protected float func_189749_co()
|
||||
@@ -1874,7 +1903,8 @@
|
||||
@@ -1874,7 +1910,8 @@
|
||||
|
||||
if (this.field_70122_E)
|
||||
{
|
||||
@@ -293,7 +332,7 @@
|
||||
}
|
||||
|
||||
float f7 = 0.16277136F / (f6 * f6 * f6);
|
||||
@@ -1894,7 +1924,8 @@
|
||||
@@ -1894,7 +1931,8 @@
|
||||
|
||||
if (this.field_70122_E)
|
||||
{
|
||||
@@ -303,7 +342,7 @@
|
||||
}
|
||||
|
||||
if (this.func_70617_f_())
|
||||
@@ -2054,6 +2085,7 @@
|
||||
@@ -2054,6 +2092,7 @@
|
||||
|
||||
public void func_70071_h_()
|
||||
{
|
||||
@@ -311,7 +350,7 @@
|
||||
super.func_70071_h_();
|
||||
this.func_184608_ct();
|
||||
|
||||
@@ -2096,7 +2128,9 @@
|
||||
@@ -2096,7 +2135,9 @@
|
||||
|
||||
if (!ItemStack.func_77989_b(itemstack1, itemstack))
|
||||
{
|
||||
@@ -321,7 +360,7 @@
|
||||
|
||||
if (!itemstack.func_190926_b())
|
||||
{
|
||||
@@ -2575,6 +2609,40 @@
|
||||
@@ -2575,6 +2616,40 @@
|
||||
this.field_70752_e = true;
|
||||
}
|
||||
|
||||
@@ -338,7 +377,7 @@
|
||||
+ {
|
||||
+ PotionEffect effect = iterator.next();
|
||||
+
|
||||
+ if (effect.isCurativeItem(curativeItem))
|
||||
+ if (effect.isCurativeItem(curativeItem) && !net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.living.PotionEvent.PotionRemoveEvent(this, effect)))
|
||||
+ {
|
||||
+ func_70688_c(effect);
|
||||
+ iterator.remove();
|
||||
@@ -362,7 +401,11 @@
|
||||
public abstract EnumHandSide func_184591_cq();
|
||||
|
||||
public boolean func_184587_cr()
|
||||
@@ -2595,12 +2663,19 @@
|
||||
@@ -2592,15 +2667,23 @@
|
||||
if (this.func_184587_cr())
|
||||
{
|
||||
ItemStack itemstack = this.func_184586_b(this.func_184600_cs());
|
||||
+ if (net.minecraftforge.common.ForgeHooks.canContinueUsing(this.field_184627_bm, itemstack)) this.field_184627_bm = itemstack;
|
||||
|
||||
if (itemstack == this.field_184627_bm)
|
||||
{
|
||||
@@ -383,7 +426,7 @@
|
||||
{
|
||||
this.func_71036_o();
|
||||
}
|
||||
@@ -2618,8 +2693,10 @@
|
||||
@@ -2618,8 +2701,10 @@
|
||||
|
||||
if (!itemstack.func_190926_b() && !this.func_184587_cr())
|
||||
{
|
||||
@@ -395,7 +438,7 @@
|
||||
|
||||
if (!this.field_70170_p.field_72995_K)
|
||||
{
|
||||
@@ -2700,7 +2777,10 @@
|
||||
@@ -2700,7 +2785,10 @@
|
||||
if (!this.field_184627_bm.func_190926_b() && this.func_184587_cr())
|
||||
{
|
||||
this.func_184584_a(this.field_184627_bm, 16);
|
||||
@@ -407,7 +450,7 @@
|
||||
this.func_184602_cy();
|
||||
}
|
||||
}
|
||||
@@ -2724,7 +2804,8 @@
|
||||
@@ -2724,7 +2812,8 @@
|
||||
{
|
||||
if (!this.field_184627_bm.func_190926_b())
|
||||
{
|
||||
@@ -417,7 +460,7 @@
|
||||
}
|
||||
|
||||
this.func_184602_cy();
|
||||
@@ -2852,6 +2933,31 @@
|
||||
@@ -2852,6 +2941,31 @@
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -449,7 +492,7 @@
|
||||
public boolean func_190631_cK()
|
||||
{
|
||||
return true;
|
||||
@@ -2861,4 +2967,30 @@
|
||||
@@ -2861,4 +2975,30 @@
|
||||
public void func_191987_a(BlockPos p_191987_1_, boolean p_191987_2_)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/NpcMerchant.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/NpcMerchant.java
|
||||
@@ -41,7 +41,7 @@
|
||||
@Nullable
|
||||
public MerchantRecipeList func_70934_b(EntityPlayer p_70934_1_)
|
||||
{
|
||||
- return this.field_70936_c;
|
||||
+ return net.minecraftforge.event.ForgeEventFactory.listTradeOffers(this, p_70934_1_, this.field_70936_c);
|
||||
}
|
||||
|
||||
public void func_70930_a(@Nullable MerchantRecipeList p_70930_1_)
|
||||
@@ -0,0 +1,11 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/ai/EntityAIAttackRangedBow.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/ai/EntityAIAttackRangedBow.java
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
protected boolean func_188498_f()
|
||||
{
|
||||
- return !this.field_188499_a.func_184614_ca().func_190926_b() && this.field_188499_a.func_184614_ca().func_77973_b() == Items.field_151031_f;
|
||||
+ return !this.field_188499_a.func_184614_ca().func_190926_b() && this.field_188499_a.func_184614_ca().func_77973_b() instanceof ItemBow;
|
||||
}
|
||||
|
||||
public boolean func_75253_b()
|
||||
@@ -1,6 +1,19 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/item/EntityBoat.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/item/EntityBoat.java
|
||||
@@ -508,7 +508,7 @@
|
||||
@@ -449,6 +449,12 @@
|
||||
blockpos$pooledmutableblockpos.func_181079_c(l1, k1, i2);
|
||||
IBlockState iblockstate = this.field_70170_p.func_180495_p(blockpos$pooledmutableblockpos);
|
||||
|
||||
+ Boolean result = iblockstate.func_177230_c().isAABBInsideMaterial(field_70170_p, blockpos$pooledmutableblockpos, new AxisAlignedBB(blockpos$pooledmutableblockpos), Material.field_151586_h);
|
||||
+ if (result != null) {
|
||||
+ if (!result) continue;
|
||||
+ f = Math.max(f, iblockstate.func_177230_c().getBlockLiquidHeight(field_70170_p, blockpos$pooledmutableblockpos, iblockstate, Material.field_151586_h) + blockpos$pooledmutableblockpos.func_177956_o());
|
||||
+ }
|
||||
+
|
||||
if (iblockstate.func_185904_a() == Material.field_151586_h)
|
||||
{
|
||||
f = Math.max(f, BlockLiquid.func_190973_f(iblockstate, this.field_70170_p, blockpos$pooledmutableblockpos));
|
||||
@@ -508,7 +514,7 @@
|
||||
|
||||
if (!list.isEmpty())
|
||||
{
|
||||
@@ -9,7 +22,42 @@
|
||||
++k1;
|
||||
}
|
||||
|
||||
@@ -980,4 +980,20 @@
|
||||
@@ -551,6 +557,15 @@
|
||||
blockpos$pooledmutableblockpos.func_181079_c(k1, l1, i2);
|
||||
IBlockState iblockstate = this.field_70170_p.func_180495_p(blockpos$pooledmutableblockpos);
|
||||
|
||||
+ Boolean result = iblockstate.func_177230_c().isAABBInsideMaterial(field_70170_p, blockpos$pooledmutableblockpos, axisalignedbb, Material.field_151586_h);
|
||||
+ if (result != null) {
|
||||
+ if (!result) continue;
|
||||
+
|
||||
+ float f = iblockstate.func_177230_c().getBlockLiquidHeight(field_70170_p, blockpos$pooledmutableblockpos, iblockstate, Material.field_151586_h) + blockpos$pooledmutableblockpos.func_177956_o();
|
||||
+ this.field_184465_aD = Math.max((double)f, this.field_184465_aD);
|
||||
+ flag |= axisalignedbb.field_72338_b < (double)f;
|
||||
+ }
|
||||
+
|
||||
if (iblockstate.func_185904_a() == Material.field_151586_h)
|
||||
{
|
||||
float f = BlockLiquid.func_190972_g(iblockstate, this.field_70170_p, blockpos$pooledmutableblockpos);
|
||||
@@ -594,6 +609,18 @@
|
||||
blockpos$pooledmutableblockpos.func_181079_c(k1, l1, i2);
|
||||
IBlockState iblockstate = this.field_70170_p.func_180495_p(blockpos$pooledmutableblockpos);
|
||||
|
||||
+ Boolean result = iblockstate.func_177230_c().isAABBInsideMaterial(field_70170_p, blockpos$pooledmutableblockpos, axisalignedbb, Material.field_151586_h);
|
||||
+ if (result != null) {
|
||||
+ if (!result) continue;
|
||||
+
|
||||
+ if(iblockstate.func_177230_c().getBlockLiquidHeight(field_70170_p, blockpos$pooledmutableblockpos, iblockstate, Material.field_151586_h) > 0)
|
||||
+ {
|
||||
+ blockpos$pooledmutableblockpos.func_185344_t();
|
||||
+ return EntityBoat.Status.UNDER_FLOWING_WATER;
|
||||
+ } else
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
if (iblockstate.func_185904_a() == Material.field_151586_h && d0 < (double)BlockLiquid.func_190972_g(iblockstate, this.field_70170_p, blockpos$pooledmutableblockpos))
|
||||
{
|
||||
if (((Integer)iblockstate.func_177229_b(BlockLiquid.field_176367_b)).intValue() != 0)
|
||||
@@ -980,4 +1007,20 @@
|
||||
return values()[0];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,15 @@
|
||||
if (!flag1 && BlockFalling.func_185759_i(this.field_70170_p.func_180495_p(new BlockPos(this.field_70165_t, this.field_70163_u - 0.009999999776482582D, this.field_70161_v))))
|
||||
{
|
||||
this.field_70122_E = false;
|
||||
@@ -189,7 +190,7 @@
|
||||
@@ -182,14 +183,14 @@
|
||||
|
||||
if (!this.field_145808_f)
|
||||
{
|
||||
- if (this.field_70170_p.func_190527_a(block, blockpos1, true, EnumFacing.UP, (Entity)null) && (flag1 || !BlockFalling.func_185759_i(this.field_70170_p.func_180495_p(blockpos1.func_177977_b()))) && this.field_70170_p.func_180501_a(blockpos1, this.field_175132_d, 3))
|
||||
+ if (this.field_70170_p.func_190527_a(block, blockpos1, true, EnumFacing.UP, this) && (flag1 || !BlockFalling.func_185759_i(this.field_70170_p.func_180495_p(blockpos1.func_177977_b()))) && this.field_70170_p.func_180501_a(blockpos1, this.field_175132_d, 3))
|
||||
{
|
||||
if (block instanceof BlockFalling)
|
||||
{
|
||||
((BlockFalling)block).func_176502_a_(this.field_70170_p, blockpos1, this.field_175132_d, iblockstate);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
if (this.func_180431_b(p_70097_1_))
|
||||
{
|
||||
return false;
|
||||
@@ -208,6 +211,7 @@
|
||||
@@ -208,14 +211,16 @@
|
||||
{
|
||||
if (this.field_70532_c == 0 && p_70100_1_.field_71090_bL == 0)
|
||||
{
|
||||
@@ -27,3 +27,25 @@
|
||||
p_70100_1_.field_71090_bL = 2;
|
||||
p_70100_1_.func_71001_a(this, 1);
|
||||
ItemStack itemstack = EnchantmentHelper.func_92099_a(Enchantments.field_185296_A, p_70100_1_);
|
||||
|
||||
if (!itemstack.func_190926_b() && itemstack.func_77951_h())
|
||||
{
|
||||
- int i = Math.min(this.func_184514_c(this.field_70530_e), itemstack.func_77952_i());
|
||||
- this.field_70530_e -= this.func_184515_b(i);
|
||||
+ float ratio = itemstack.func_77973_b().getXpRepairRatio(itemstack);
|
||||
+ int i = Math.min(roundAverage(this.field_70530_e * ratio), itemstack.func_77952_i());
|
||||
+ this.field_70530_e -= roundAverage(i / ratio);
|
||||
itemstack.func_77964_b(itemstack.func_77952_i() - i);
|
||||
}
|
||||
|
||||
@@ -337,4 +342,10 @@
|
||||
{
|
||||
return false;
|
||||
}
|
||||
+
|
||||
+ private static int roundAverage(float value)
|
||||
+ {
|
||||
+ double floor = Math.floor(value);
|
||||
+ return (int) floor + (Math.random() < value - floor ? 1 : 0);
|
||||
+ }
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/monster/AbstractSkeleton.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/monster/AbstractSkeleton.java
|
||||
@@ -192,7 +192,7 @@
|
||||
this.field_70714_bg.func_85156_a(this.field_85037_d);
|
||||
ItemStack itemstack = this.func_184614_ca();
|
||||
|
||||
- if (itemstack.func_77973_b() == Items.field_151031_f)
|
||||
+ if (itemstack.func_77973_b() instanceof net.minecraft.item.ItemBow)
|
||||
{
|
||||
int i = 20;
|
||||
|
||||
@@ -214,6 +214,8 @@
|
||||
public void func_82196_d(EntityLivingBase p_82196_1_, float p_82196_2_)
|
||||
{
|
||||
EntityArrow entityarrow = this.func_190726_a(p_82196_2_);
|
||||
+ if (this.func_184614_ca().func_77973_b() instanceof net.minecraft.item.ItemBow)
|
||||
+ entityarrow = ((net.minecraft.item.ItemBow) this.func_184614_ca().func_77973_b()).customizeArrow(entityarrow);
|
||||
double d0 = p_82196_1_.field_70165_t - this.field_70165_t;
|
||||
double d1 = p_82196_1_.func_174813_aQ().field_72338_b + (double)(p_82196_1_.field_70131_O / 3.0F) - entityarrow.field_70163_u;
|
||||
double d2 = p_82196_1_.field_70161_v - this.field_70161_v;
|
||||
@@ -39,6 +39,15 @@
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -508,7 +522,7 @@
|
||||
IBlockState iblockstate1 = world.func_180495_p(blockpos.func_177977_b());
|
||||
IBlockState iblockstate2 = this.field_179475_a.func_175489_ck();
|
||||
|
||||
- if (iblockstate2 != null && this.func_188518_a(world, blockpos, iblockstate2.func_177230_c(), iblockstate, iblockstate1))
|
||||
+ if (iblockstate2 != null && this.func_188518_a(world, blockpos, iblockstate2.func_177230_c(), iblockstate, iblockstate1) && net.minecraftforge.event.ForgeEventFactory.onBlockPlace(field_179475_a, new net.minecraftforge.common.util.BlockSnapshot(world, blockpos, iblockstate2), net.minecraft.util.EnumFacing.UP).isCanceled())
|
||||
{
|
||||
world.func_180501_a(blockpos, iblockstate2, 3);
|
||||
this.field_179475_a.func_175490_a((IBlockState)null);
|
||||
@@ -551,7 +565,7 @@
|
||||
{
|
||||
return false;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/monster/EntityEvoker.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/monster/EntityEvoker.java
|
||||
@@ -369,7 +369,7 @@
|
||||
@@ -365,7 +365,7 @@
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/monster/EntityIllusionIllager.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/monster/EntityIllusionIllager.java
|
||||
@@ -214,6 +214,8 @@
|
||||
public void func_82196_d(EntityLivingBase p_82196_1_, float p_82196_2_)
|
||||
{
|
||||
EntityArrow entityarrow = this.func_193097_t(p_82196_2_);
|
||||
+ if (this.func_184614_ca().func_77973_b() instanceof net.minecraft.item.ItemBow)
|
||||
+ entityarrow = ((net.minecraft.item.ItemBow) this.func_184614_ca().func_77973_b()).customizeArrow(entityarrow);
|
||||
double d0 = p_82196_1_.field_70165_t - this.field_70165_t;
|
||||
double d1 = p_82196_1_.func_174813_aQ().field_72338_b + (double)(p_82196_1_.field_70131_O / 3.0F) - entityarrow.field_70163_u;
|
||||
double d2 = p_82196_1_.field_70161_v - this.field_70161_v;
|
||||
@@ -1,6 +1,14 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/monster/EntityShulker.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/monster/EntityShulker.java
|
||||
@@ -426,6 +426,13 @@
|
||||
@@ -311,6 +311,7 @@
|
||||
this.field_70165_t = (double)blockpos.func_177958_n() + 0.5D;
|
||||
this.field_70163_u = (double)blockpos.func_177956_o();
|
||||
this.field_70161_v = (double)blockpos.func_177952_p() + 0.5D;
|
||||
+ if (this.isAddedToWorld() && !this.field_70170_p.field_72995_K) this.field_70170_p.func_72866_a(this, false); // Forge - Process chunk registration after moving.
|
||||
this.field_70169_q = this.field_70165_t;
|
||||
this.field_70167_r = this.field_70163_u;
|
||||
this.field_70166_s = this.field_70161_v;
|
||||
@@ -426,6 +427,13 @@
|
||||
|
||||
if (flag)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
--- ../src-base/minecraft/net/minecraft/entity/monster/EntitySpider.java
|
||||
+++ ../src-work/minecraft/net/minecraft/entity/monster/EntitySpider.java
|
||||
@@ -139,7 +139,13 @@
|
||||
|
||||
public boolean func_70687_e(PotionEffect p_70687_1_)
|
||||
{
|
||||
- return p_70687_1_.func_188419_a() == MobEffects.field_76436_u ? false : super.func_70687_e(p_70687_1_);
|
||||
+ if(p_70687_1_.func_188419_a() == MobEffects.field_76436_u)
|
||||
+ {
|
||||
+ net.minecraftforge.event.entity.living.PotionEvent.PotionApplicableEvent event = new net.minecraftforge.event.entity.living.PotionEvent.PotionApplicableEvent(this, p_70687_1_);
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(event);
|
||||
+ return event.getResult() == net.minecraftforge.fml.common.eventhandler.Event.Result.ALLOW;
|
||||
+ }
|
||||
+ return super.func_70687_e(p_70687_1_);
|
||||
}
|
||||
|
||||
public boolean func_70841_p()
|
||||
@@ -37,6 +37,15 @@
|
||||
|
||||
if (p_70037_1_.func_150297_b("ConversionTime", 99) && p_70037_1_.func_74762_e("ConversionTime") > -1)
|
||||
{
|
||||
@@ -91,7 +101,7 @@
|
||||
@Nullable
|
||||
public IEntityLivingData func_180482_a(DifficultyInstance p_180482_1_, @Nullable IEntityLivingData p_180482_2_)
|
||||
{
|
||||
- this.func_190733_a(this.field_70170_p.field_73012_v.nextInt(6));
|
||||
+ net.minecraftforge.fml.common.registry.VillagerRegistry.setRandomProfession(this, this.field_70170_p.field_73012_v);
|
||||
return super.func_180482_a(p_180482_1_, p_180482_2_);
|
||||
}
|
||||
|
||||
@@ -175,7 +185,7 @@
|
||||
{
|
||||
EntityVillager entityvillager = new EntityVillager(this.field_70170_p);
|
||||
|
||||
@@ -122,7 +122,13 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -617,15 +656,13 @@
|
||||
@@ -612,20 +651,18 @@
|
||||
this.func_175554_cu();
|
||||
}
|
||||
|
||||
- return this.field_70963_i;
|
||||
+ return net.minecraftforge.event.ForgeEventFactory.listTradeOffers(this, p_70934_1_, field_70963_i);
|
||||
}
|
||||
|
||||
private void func_175554_cu()
|
||||
{
|
||||
|
||||
@@ -349,7 +349,7 @@
|
||||
}
|
||||
|
||||
- if (this.field_70170_p.func_72935_r())
|
||||
+ if (!net.minecraftforge.event.ForgeEventFactory.fireSleepingTimeCheck(this, this.field_71081_bT))
|
||||
+ if (!net.minecraftforge.event.ForgeEventFactory.fireSleepingTimeCheck(this, p_180469_1_))
|
||||
{
|
||||
return EntityPlayer.SleepResult.NOT_POSSIBLE_NOW;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
--- ../src-base/minecraft/net/minecraft/item/EnumRarity.java
|
||||
+++ ../src-work/minecraft/net/minecraft/item/EnumRarity.java
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
|
||||
-public enum EnumRarity
|
||||
+public enum EnumRarity implements net.minecraftforge.common.IRarity
|
||||
{
|
||||
COMMON(TextFormatting.WHITE, "Common"),
|
||||
UNCOMMON(TextFormatting.YELLOW, "Uncommon"),
|
||||
@@ -17,4 +17,16 @@
|
||||
this.field_77937_e = p_i45349_3_;
|
||||
this.field_77934_f = p_i45349_4_;
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public TextFormatting getColor()
|
||||
+ {
|
||||
+ return this.field_77937_e;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public String getName()
|
||||
+ {
|
||||
+ return this.field_77934_f;
|
||||
+ }
|
||||
}
|
||||
@@ -38,7 +38,15 @@
|
||||
public boolean func_77634_r()
|
||||
{
|
||||
return this.field_77700_c != null;
|
||||
@@ -372,7 +375,7 @@
|
||||
@@ -365,6 +368,7 @@
|
||||
return p_77636_1_.func_77948_v();
|
||||
}
|
||||
|
||||
+ @Deprecated // use Forge version
|
||||
public EnumRarity func_77613_e(ItemStack p_77613_1_)
|
||||
{
|
||||
return p_77613_1_.func_77948_v() ? EnumRarity.RARE : EnumRarity.COMMON;
|
||||
@@ -372,7 +376,7 @@
|
||||
|
||||
public boolean func_77616_k(ItemStack p_77616_1_)
|
||||
{
|
||||
@@ -47,7 +55,7 @@
|
||||
}
|
||||
|
||||
protected RayTraceResult func_77621_a(World p_77621_1_, EntityPlayer p_77621_2_, boolean p_77621_3_)
|
||||
@@ -389,8 +392,8 @@
|
||||
@@ -389,8 +393,8 @@
|
||||
float f5 = MathHelper.func_76126_a(-f * 0.017453292F);
|
||||
float f6 = f3 * f4;
|
||||
float f7 = f2 * f4;
|
||||
@@ -58,7 +66,7 @@
|
||||
return p_77621_1_.func_147447_a(vec3d, vec3d1, p_77621_3_, !p_77621_3_, false);
|
||||
}
|
||||
|
||||
@@ -409,6 +412,9 @@
|
||||
@@ -409,6 +413,9 @@
|
||||
|
||||
protected boolean func_194125_a(CreativeTabs p_194125_1_)
|
||||
{
|
||||
@@ -68,7 +76,7 @@
|
||||
CreativeTabs creativetabs = this.func_77640_w();
|
||||
return creativetabs != null && (p_194125_1_ == CreativeTabs.field_78027_g || p_194125_1_ == creativetabs);
|
||||
}
|
||||
@@ -435,11 +441,757 @@
|
||||
@@ -435,11 +442,784 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -150,6 +158,15 @@
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Determines the amount of durability the mending enchantment
|
||||
+ * will repair, on average, per point of experience.
|
||||
+ */
|
||||
+ public float getXpRepairRatio(ItemStack stack)
|
||||
+ {
|
||||
+ return 2f;
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Override this method to change the NBT data being sent to the client.
|
||||
+ * You should ONLY override this when you have no other choice, as this might change behavior client side!
|
||||
+ *
|
||||
@@ -689,6 +706,19 @@
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called while an item is in 'active' use to determine if usage should continue.
|
||||
+ * Allows items to continue being used while sustaining damage, for example.
|
||||
+ *
|
||||
+ * @param oldStack the previous 'active' stack
|
||||
+ * @param newStack the stack currently in the active hand
|
||||
+ * @return true to set the new stack to active and continue using it
|
||||
+ */
|
||||
+ public boolean canContinueUsing(ItemStack oldStack, ItemStack newStack)
|
||||
+ {
|
||||
+ return oldStack.equals(newStack);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called to get the Mod ID of the mod that *created* the ItemStack,
|
||||
+ * instead of the real Mod ID that *registered* it.
|
||||
+ *
|
||||
@@ -819,14 +849,19 @@
|
||||
+ public void setTileEntityItemStackRenderer(@Nullable net.minecraft.client.renderer.tileentity.TileEntityItemStackRenderer teisr)
|
||||
+ {
|
||||
+ this.teisr = teisr;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public net.minecraftforge.common.IRarity getForgeRarity(ItemStack stack)
|
||||
+ {
|
||||
+ return this.func_77613_e(stack);
|
||||
+ }
|
||||
+
|
||||
+ /* ======================================== FORGE END =====================================*/
|
||||
+
|
||||
public static void func_150900_l()
|
||||
{
|
||||
func_179214_a(Blocks.field_150350_a, new ItemAir(Blocks.field_150350_a));
|
||||
@@ -999,6 +1751,8 @@
|
||||
@@ -999,6 +1779,8 @@
|
||||
private final float field_78010_h;
|
||||
private final float field_78011_i;
|
||||
private final int field_78008_j;
|
||||
@@ -835,7 +870,7 @@
|
||||
|
||||
private ToolMaterial(int p_i1874_3_, int p_i1874_4_, float p_i1874_5_, float p_i1874_6_, int p_i1874_7_)
|
||||
{
|
||||
@@ -1034,6 +1788,7 @@
|
||||
@@ -1034,6 +1816,7 @@
|
||||
return this.field_78008_j;
|
||||
}
|
||||
|
||||
@@ -843,7 +878,7 @@
|
||||
public Item func_150995_f()
|
||||
{
|
||||
if (this == WOOD)
|
||||
@@ -1057,5 +1812,21 @@
|
||||
@@ -1057,5 +1840,21 @@
|
||||
return this == DIAMOND ? Items.field_151045_i : null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
--- ../src-base/minecraft/net/minecraft/item/ItemBlock.java
|
||||
+++ ../src-work/minecraft/net/minecraft/item/ItemBlock.java
|
||||
@@ -49,24 +49,12 @@
|
||||
if (!itemstack.func_190926_b() && p_180614_1_.func_175151_a(p_180614_3_, p_180614_5_, itemstack) && p_180614_2_.func_190527_a(this.field_150939_a, p_180614_3_, false, p_180614_5_, (Entity)null))
|
||||
@@ -46,27 +46,15 @@
|
||||
|
||||
ItemStack itemstack = p_180614_1_.func_184586_b(p_180614_4_);
|
||||
|
||||
- if (!itemstack.func_190926_b() && p_180614_1_.func_175151_a(p_180614_3_, p_180614_5_, itemstack) && p_180614_2_.func_190527_a(this.field_150939_a, p_180614_3_, false, p_180614_5_, (Entity)null))
|
||||
+ if (!itemstack.func_190926_b() && p_180614_1_.func_175151_a(p_180614_3_, p_180614_5_, itemstack) && p_180614_2_.func_190527_a(this.field_150939_a, p_180614_3_, false, p_180614_5_, p_180614_1_))
|
||||
{
|
||||
int i = this.func_77647_b(itemstack.func_77960_j());
|
||||
- IBlockState iblockstate1 = this.field_150939_a.func_180642_a(p_180614_2_, p_180614_3_, p_180614_5_, p_180614_6_, p_180614_7_, p_180614_8_, i, p_180614_1_);
|
||||
@@ -37,6 +41,15 @@
|
||||
{
|
||||
p_179222_3_ = EnumFacing.UP;
|
||||
}
|
||||
@@ -136,7 +124,7 @@
|
||||
p_179222_2_ = p_179222_2_.func_177972_a(p_179222_3_);
|
||||
}
|
||||
|
||||
- return p_179222_1_.func_190527_a(this.field_150939_a, p_179222_2_, false, p_179222_3_, (Entity)null);
|
||||
+ return p_179222_1_.func_190527_a(this.field_150939_a, p_179222_2_, false, p_179222_3_, p_179222_4_);
|
||||
}
|
||||
|
||||
public String func_77667_c(ItemStack p_77667_1_)
|
||||
@@ -171,6 +159,36 @@
|
||||
|
||||
public Block func_179223_d()
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
--- ../src-base/minecraft/net/minecraft/item/ItemBlockSpecial.java
|
||||
+++ ../src-work/minecraft/net/minecraft/item/ItemBlockSpecial.java
|
||||
@@ -43,7 +43,7 @@
|
||||
@@ -41,9 +41,9 @@
|
||||
|
||||
if (!itemstack.func_190926_b() && p_180614_1_.func_175151_a(p_180614_3_, p_180614_5_, itemstack) && p_180614_2_.func_190527_a(this.field_150935_a, p_180614_3_, false, p_180614_5_, (Entity)null))
|
||||
ItemStack itemstack = p_180614_1_.func_184586_b(p_180614_4_);
|
||||
|
||||
- if (!itemstack.func_190926_b() && p_180614_1_.func_175151_a(p_180614_3_, p_180614_5_, itemstack) && p_180614_2_.func_190527_a(this.field_150935_a, p_180614_3_, false, p_180614_5_, (Entity)null))
|
||||
+ if (!itemstack.func_190926_b() && p_180614_1_.func_175151_a(p_180614_3_, p_180614_5_, itemstack) && p_180614_2_.func_190527_a(this.field_150935_a, p_180614_3_, false, p_180614_5_, p_180614_1_))
|
||||
{
|
||||
- IBlockState iblockstate1 = this.field_150935_a.func_180642_a(p_180614_2_, p_180614_3_, p_180614_5_, p_180614_6_, p_180614_7_, p_180614_8_, 0, p_180614_1_);
|
||||
+ IBlockState iblockstate1 = this.field_150935_a.getStateForPlacement(p_180614_2_, p_180614_3_, p_180614_5_, p_180614_6_, p_180614_7_, p_180614_8_, 0, p_180614_1_, p_180614_4_);
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
--- ../src-base/minecraft/net/minecraft/item/ItemBow.java
|
||||
+++ ../src-work/minecraft/net/minecraft/item/ItemBow.java
|
||||
@@ -37,7 +37,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
- return p_185085_3_.func_184607_cu().func_77973_b() != Items.field_151031_f ? 0.0F : (float)(p_185085_1_.func_77988_m() - p_185085_3_.func_184605_cv()) / 20.0F;
|
||||
+ return !(p_185085_3_.func_184607_cu().func_77973_b() instanceof ItemBow) ? 0.0F : (float)(p_185085_1_.func_77988_m() - p_185085_3_.func_184605_cv()) / 20.0F;
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -90,6 +90,10 @@
|
||||
boolean flag = entityplayer.field_71075_bZ.field_75098_d || EnchantmentHelper.func_77506_a(Enchantments.field_185312_x, p_77615_1_) > 0;
|
||||
ItemStack itemstack = this.func_185060_a(entityplayer);
|
||||
@@ -11,7 +20,7 @@
|
||||
if (!itemstack.func_190926_b() || flag)
|
||||
{
|
||||
if (itemstack.func_190926_b())
|
||||
@@ -97,12 +101,11 @@
|
||||
@@ -97,17 +101,17 @@
|
||||
itemstack = new ItemStack(Items.field_151032_g);
|
||||
}
|
||||
|
||||
@@ -25,7 +34,13 @@
|
||||
|
||||
if (!p_77615_2_.field_72995_K)
|
||||
{
|
||||
@@ -190,6 +193,9 @@
|
||||
ItemArrow itemarrow = (ItemArrow)(itemstack.func_77973_b() instanceof ItemArrow ? itemstack.func_77973_b() : Items.field_151032_g);
|
||||
EntityArrow entityarrow = itemarrow.func_185052_a(p_77615_2_, itemstack, entityplayer);
|
||||
+ entityarrow = this.customizeArrow(entityarrow);
|
||||
entityarrow.func_184547_a(entityplayer, entityplayer.field_70125_A, entityplayer.field_70177_z, 0.0F, f * 3.0F, 1.0F);
|
||||
|
||||
if (f == 1.0F)
|
||||
@@ -190,6 +194,9 @@
|
||||
ItemStack itemstack = p_77659_2_.func_184586_b(p_77659_3_);
|
||||
boolean flag = !this.func_185060_a(p_77659_2_).func_190926_b();
|
||||
|
||||
@@ -35,3 +50,13 @@
|
||||
if (!p_77659_2_.field_71075_bZ.field_75098_d && !flag)
|
||||
{
|
||||
return flag ? new ActionResult(EnumActionResult.PASS, itemstack) : new ActionResult(EnumActionResult.FAIL, itemstack);
|
||||
@@ -205,4 +212,9 @@
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
+
|
||||
+ public EntityArrow customizeArrow(EntityArrow arrow)
|
||||
+ {
|
||||
+ return arrow;
|
||||
+ }
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
--- ../src-base/minecraft/net/minecraft/item/ItemMonsterPlacer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/item/ItemMonsterPlacer.java
|
||||
@@ -234,6 +234,7 @@
|
||||
entity.func_70012_b(p_77840_2_, p_77840_4_, p_77840_6_, MathHelper.func_76142_g(p_77840_0_.field_73012_v.nextFloat() * 360.0F), 0.0F);
|
||||
entityliving.field_70759_as = entityliving.field_70177_z;
|
||||
entityliving.field_70761_aq = entityliving.field_70177_z;
|
||||
+ if (net.minecraftforge.event.ForgeEventFactory.doSpecialSpawn(entityliving, p_77840_0_, (float) p_77840_2_, (float) p_77840_4_, (float) p_77840_6_, null)) return null;
|
||||
entityliving.func_180482_a(p_77840_0_.func_175649_E(new BlockPos(entityliving)), (IEntityLivingData)null);
|
||||
p_77840_0_.func_72838_d(entity);
|
||||
entityliving.func_70642_aH();
|
||||
@@ -0,0 +1,11 @@
|
||||
--- ../src-base/minecraft/net/minecraft/item/ItemRedstone.java
|
||||
+++ ../src-work/minecraft/net/minecraft/item/ItemRedstone.java
|
||||
@@ -25,7 +25,7 @@
|
||||
BlockPos blockpos = flag ? p_180614_3_ : p_180614_3_.func_177972_a(p_180614_5_);
|
||||
ItemStack itemstack = p_180614_1_.func_184586_b(p_180614_4_);
|
||||
|
||||
- if (p_180614_1_.func_175151_a(blockpos, p_180614_5_, itemstack) && p_180614_2_.func_190527_a(p_180614_2_.func_180495_p(blockpos).func_177230_c(), blockpos, false, p_180614_5_, (Entity)null) && Blocks.field_150488_af.func_176196_c(p_180614_2_, blockpos))
|
||||
+ if (p_180614_1_.func_175151_a(blockpos, p_180614_5_, itemstack) && p_180614_2_.func_190527_a(p_180614_2_.func_180495_p(blockpos).func_177230_c(), blockpos, false, p_180614_5_, p_180614_1_) && Blocks.field_150488_af.func_176196_c(p_180614_2_, blockpos))
|
||||
{
|
||||
p_180614_2_.func_175656_a(blockpos, Blocks.field_150488_af.func_176223_P());
|
||||
|
||||
@@ -223,7 +223,15 @@
|
||||
return list;
|
||||
}
|
||||
|
||||
@@ -987,7 +1012,7 @@
|
||||
@@ -871,6 +896,7 @@
|
||||
return this.func_77973_b().func_77636_d(this);
|
||||
}
|
||||
|
||||
+ @Deprecated // use Forge version on item
|
||||
public EnumRarity func_77953_t()
|
||||
{
|
||||
return this.func_77973_b().func_77613_e(this);
|
||||
@@ -987,7 +1013,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -232,7 +240,16 @@
|
||||
}
|
||||
|
||||
return multimap;
|
||||
@@ -1130,4 +1155,128 @@
|
||||
@@ -1032,7 +1058,7 @@
|
||||
{
|
||||
NBTTagCompound nbttagcompound = this.func_77955_b(new NBTTagCompound());
|
||||
itextcomponent.func_150256_b().func_150209_a(new HoverEvent(HoverEvent.Action.SHOW_ITEM, new TextComponentString(nbttagcompound.toString())));
|
||||
- itextcomponent.func_150256_b().func_150238_a(this.func_77953_t().field_77937_e);
|
||||
+ itextcomponent.func_150256_b().func_150238_a(this.func_77973_b().getForgeRarity(this).getColor());
|
||||
}
|
||||
|
||||
return itextcomponent;
|
||||
@@ -1130,4 +1156,128 @@
|
||||
{
|
||||
this.func_190917_f(-p_190918_1_);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
--- ../src-base/minecraft/net/minecraft/nbt/NBTTagCompound.java
|
||||
+++ ../src-work/minecraft/net/minecraft/nbt/NBTTagCompound.java
|
||||
@@ -477,6 +477,7 @@
|
||||
@@ -82,6 +82,7 @@
|
||||
|
||||
public void func_74782_a(String p_74782_1_, NBTBase p_74782_2_)
|
||||
{
|
||||
+ if (p_74782_2_ == null) throw new IllegalArgumentException("Invalid null NBT value with key " + p_74782_1_);
|
||||
this.field_74784_a.put(p_74782_1_, p_74782_2_);
|
||||
}
|
||||
|
||||
@@ -477,6 +478,7 @@
|
||||
|
||||
private static byte func_152447_a(DataInput p_152447_0_, NBTSizeTracker p_152447_1_) throws IOException
|
||||
{
|
||||
@@ -8,7 +16,7 @@
|
||||
return p_152447_0_.readByte();
|
||||
}
|
||||
|
||||
@@ -487,6 +488,7 @@
|
||||
@@ -487,6 +489,7 @@
|
||||
|
||||
static NBTBase func_152449_a(byte p_152449_0_, String p_152449_1_, DataInput p_152449_2_, int p_152449_3_, NBTSizeTracker p_152449_4_) throws IOException
|
||||
{
|
||||
|
||||
@@ -1,6 +1,20 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/NetHandlerPlayServer.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/NetHandlerPlayServer.java
|
||||
@@ -671,7 +671,10 @@
|
||||
@@ -377,11 +377,13 @@
|
||||
}
|
||||
|
||||
entity.func_70080_a(d3, d4, d5, f, f1);
|
||||
+ this.field_147369_b.func_70080_a(d3, d4, d5, this.field_147369_b.field_70177_z, this.field_147369_b.field_70125_A); // Forge - Resync player position on vehicle moving
|
||||
boolean flag2 = worldserver.func_184144_a(entity, entity.func_174813_aQ().func_186664_h(0.0625D)).isEmpty();
|
||||
|
||||
if (flag && (flag1 || !flag2))
|
||||
{
|
||||
entity.func_70080_a(d0, d1, d2, f, f1);
|
||||
+ this.field_147369_b.func_70080_a(d0, d1, d2, this.field_147369_b.field_70177_z, this.field_147369_b.field_70125_A); // Forge - Resync player position on vehicle moving
|
||||
this.field_147371_a.func_179290_a(new SPacketMoveVehicle(entity));
|
||||
return;
|
||||
}
|
||||
@@ -671,7 +673,10 @@
|
||||
double d2 = this.field_147369_b.field_70161_v - ((double)blockpos.func_177952_p() + 0.5D);
|
||||
double d3 = d0 * d0 + d1 * d1 + d2 * d2;
|
||||
|
||||
@@ -12,7 +26,7 @@
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -729,7 +732,9 @@
|
||||
@@ -729,7 +734,9 @@
|
||||
|
||||
if (blockpos.func_177956_o() < this.field_147367_d.func_71207_Z() - 1 || enumfacing != EnumFacing.UP && blockpos.func_177956_o() < this.field_147367_d.func_71207_Z())
|
||||
{
|
||||
@@ -23,7 +37,31 @@
|
||||
{
|
||||
this.field_147369_b.field_71134_c.func_187251_a(this.field_147369_b, worldserver, itemstack, enumhand, blockpos, enumfacing, p_184337_1_.func_187026_d(), p_184337_1_.func_187025_e(), p_184337_1_.func_187020_f());
|
||||
}
|
||||
@@ -933,7 +938,9 @@
|
||||
@@ -789,12 +796,13 @@
|
||||
{
|
||||
this.field_147369_b.func_70634_a(entity.field_70165_t, entity.field_70163_u, entity.field_70161_v);
|
||||
}
|
||||
- else
|
||||
+ else if (net.minecraftforge.common.ForgeHooks.onTravelToDimension(this.field_147369_b, entity.field_71093_bK))
|
||||
{
|
||||
+ int prevDimension = this.field_147369_b.field_71093_bK;
|
||||
WorldServer worldserver1 = this.field_147369_b.func_71121_q();
|
||||
WorldServer worldserver2 = (WorldServer)entity.field_70170_p;
|
||||
this.field_147369_b.field_71093_bK = entity.field_71093_bK;
|
||||
- this.func_147359_a(new SPacketRespawn(this.field_147369_b.field_71093_bK, worldserver1.func_175659_aa(), worldserver1.func_72912_H().func_76067_t(), this.field_147369_b.field_71134_c.func_73081_b()));
|
||||
+ this.func_147359_a(new SPacketRespawn(this.field_147369_b.field_71093_bK, worldserver2.func_175659_aa(), worldserver2.func_72912_H().func_76067_t(), this.field_147369_b.field_71134_c.func_73081_b())); // Forge: Use new dimensions information
|
||||
this.field_147367_d.func_184103_al().func_187243_f(this.field_147369_b);
|
||||
worldserver1.func_72973_f(this.field_147369_b);
|
||||
this.field_147369_b.field_70128_L = false;
|
||||
@@ -813,6 +821,7 @@
|
||||
this.field_147369_b.field_71134_c.func_73080_a(worldserver2);
|
||||
this.field_147367_d.func_184103_al().func_72354_b(this.field_147369_b, worldserver2);
|
||||
this.field_147367_d.func_184103_al().func_72385_f(this.field_147369_b);
|
||||
+ net.minecraftforge.fml.common.FMLCommonHandler.instance().firePlayerChangedDimensionEvent(this.field_147369_b, prevDimension, this.field_147369_b.field_71093_bK);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -933,7 +942,9 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -34,7 +72,7 @@
|
||||
this.field_147367_d.func_184103_al().func_148544_a(itextcomponent, false);
|
||||
}
|
||||
|
||||
@@ -1066,6 +1073,7 @@
|
||||
@@ -1066,6 +1077,7 @@
|
||||
else if (p_147340_1_.func_149565_c() == CPacketUseEntity.Action.INTERACT_AT)
|
||||
{
|
||||
EnumHand enumhand1 = p_147340_1_.func_186994_b();
|
||||
@@ -42,7 +80,7 @@
|
||||
entity.func_184199_a(this.field_147369_b, p_147340_1_.func_179712_b(), enumhand1);
|
||||
}
|
||||
else if (p_147340_1_.func_149565_c() == CPacketUseEntity.Action.ATTACK)
|
||||
@@ -1106,7 +1114,7 @@
|
||||
@@ -1106,7 +1118,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -51,7 +89,7 @@
|
||||
|
||||
if (this.field_147367_d.func_71199_h())
|
||||
{
|
||||
@@ -1149,7 +1157,7 @@
|
||||
@@ -1149,7 +1161,7 @@
|
||||
{
|
||||
ItemStack itemstack2 = this.field_147369_b.field_71070_bA.func_184996_a(p_147351_1_.func_149544_d(), p_147351_1_.func_149543_e(), p_147351_1_.func_186993_f(), this.field_147369_b);
|
||||
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/datasync/DataSerializers.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/datasync/DataSerializers.java
|
||||
@@ -305,20 +305,21 @@
|
||||
}
|
||||
};
|
||||
|
||||
+ @Deprecated // Forge: ONLY FOR VANILLA - mods should use the Forge registry
|
||||
public static void func_187189_a(DataSerializer<?> p_187189_0_)
|
||||
{
|
||||
- field_187204_n.func_186808_c(p_187189_0_);
|
||||
+ if (field_187204_n.func_186808_c(p_187189_0_) >= 256) throw new RuntimeException("Vanilla DataSerializer ID limit exceeded");
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static DataSerializer<?> func_187190_a(int p_187190_0_)
|
||||
{
|
||||
- return (DataSerializer)field_187204_n.func_186813_a(p_187190_0_);
|
||||
+ return net.minecraftforge.common.ForgeHooks.getSerializer(p_187190_0_, field_187204_n);
|
||||
}
|
||||
|
||||
public static int func_187188_b(DataSerializer<?> p_187188_0_)
|
||||
{
|
||||
- return field_187204_n.func_186815_a(p_187188_0_);
|
||||
+ return net.minecraftforge.common.ForgeHooks.getSerializerId(p_187188_0_, field_187204_n);
|
||||
}
|
||||
|
||||
static
|
||||
@@ -0,0 +1,22 @@
|
||||
--- ../src-base/minecraft/net/minecraft/network/datasync/EntityDataManager.java
|
||||
+++ ../src-work/minecraft/net/minecraft/network/datasync/EntityDataManager.java
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
public static <T> DataParameter<T> func_187226_a(Class <? extends Entity > p_187226_0_, DataSerializer<T> p_187226_1_)
|
||||
{
|
||||
- if (field_190303_a.isDebugEnabled())
|
||||
+ if (true || field_190303_a.isDebugEnabled()) //Forge: This is very useful for mods that register keys on classes that are not their own
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -46,7 +46,9 @@
|
||||
|
||||
if (!oclass.equals(p_187226_0_))
|
||||
{
|
||||
- field_190303_a.debug("defineId called for: {} from {}", p_187226_0_, oclass, new RuntimeException());
|
||||
+ //Forge: log at warn, mods should not add to classes that they don't own, and only add stacktrace when in debug is enabled as it is mostly not needed and consumes time
|
||||
+ if (field_190303_a.isDebugEnabled()) field_190303_a.warn("defineId called for: {} from {}", p_187226_0_, oclass, new RuntimeException());
|
||||
+ else field_190303_a.warn("defineId called for: {} from {}", p_187226_0_, oclass);
|
||||
}
|
||||
}
|
||||
catch (ClassNotFoundException var5)
|
||||
@@ -0,0 +1,20 @@
|
||||
--- ../src-base/minecraft/net/minecraft/pathfinding/FlyingNodeProcessor.java
|
||||
+++ ../src-work/minecraft/net/minecraft/pathfinding/FlyingNodeProcessor.java
|
||||
@@ -272,7 +272,9 @@
|
||||
EnumSet<PathNodeType> enumset = EnumSet.<PathNodeType>noneOf(PathNodeType.class);
|
||||
PathNodeType pathnodetype = PathNodeType.BLOCKED;
|
||||
BlockPos blockpos = new BlockPos(p_186319_5_);
|
||||
+ this.currentEntity = p_186319_5_;
|
||||
pathnodetype = this.func_193577_a(p_186319_1_, p_186319_2_, p_186319_3_, p_186319_4_, p_186319_6_, p_186319_7_, p_186319_8_, p_186319_9_, p_186319_10_, enumset, pathnodetype, blockpos);
|
||||
+ this.currentEntity = null;
|
||||
|
||||
if (enumset.contains(PathNodeType.FENCE))
|
||||
{
|
||||
@@ -321,6 +323,7 @@
|
||||
{
|
||||
pathnodetype = PathNodeType.DAMAGE_CACTUS;
|
||||
}
|
||||
+ else if (pathnodetype1 == PathNodeType.DAMAGE_OTHER) pathnodetype = PathNodeType.DAMAGE_OTHER;
|
||||
else
|
||||
{
|
||||
pathnodetype = pathnodetype1 != PathNodeType.WALKABLE && pathnodetype1 != PathNodeType.OPEN && pathnodetype1 != PathNodeType.WATER ? PathNodeType.WALKABLE : PathNodeType.OPEN;
|
||||
@@ -1,18 +1,60 @@
|
||||
--- ../src-base/minecraft/net/minecraft/pathfinding/WalkNodeProcessor.java
|
||||
+++ ../src-work/minecraft/net/minecraft/pathfinding/WalkNodeProcessor.java
|
||||
@@ -427,6 +427,7 @@
|
||||
@@ -23,6 +23,7 @@
|
||||
public class WalkNodeProcessor extends NodeProcessor
|
||||
{
|
||||
protected float field_176183_h;
|
||||
+ protected EntityLiving currentEntity;
|
||||
|
||||
public void func_186315_a(IBlockAccess p_186315_1_, EntityLiving p_186315_2_)
|
||||
{
|
||||
@@ -295,7 +296,9 @@
|
||||
PathNodeType pathnodetype = PathNodeType.BLOCKED;
|
||||
double d0 = (double)p_186319_5_.field_70130_N / 2.0D;
|
||||
BlockPos blockpos = new BlockPos(p_186319_5_);
|
||||
+ this.currentEntity = p_186319_5_;
|
||||
pathnodetype = this.func_193577_a(p_186319_1_, p_186319_2_, p_186319_3_, p_186319_4_, p_186319_6_, p_186319_7_, p_186319_8_, p_186319_9_, p_186319_10_, enumset, pathnodetype, blockpos);
|
||||
+ this.currentEntity = null;
|
||||
|
||||
if (enumset.contains(PathNodeType.FENCE))
|
||||
{
|
||||
@@ -399,6 +402,8 @@
|
||||
{
|
||||
pathnodetype = PathNodeType.DAMAGE_CACTUS;
|
||||
}
|
||||
+
|
||||
+ if (pathnodetype1 == PathNodeType.DAMAGE_OTHER) pathnodetype = PathNodeType.DAMAGE_OTHER;
|
||||
}
|
||||
|
||||
pathnodetype = this.func_193578_a(p_186330_1_, p_186330_2_, p_186330_3_, p_186330_4_, pathnodetype);
|
||||
@@ -417,16 +422,19 @@
|
||||
{
|
||||
if (i != 0 || j != 0)
|
||||
{
|
||||
- Block block = p_193578_1_.func_180495_p(blockpos$pooledmutableblockpos.func_181079_c(i + p_193578_2_, p_193578_3_, j + p_193578_4_)).func_177230_c();
|
||||
+ IBlockState state = p_193578_1_.func_180495_p(blockpos$pooledmutableblockpos.func_181079_c(i + p_193578_2_, p_193578_3_, j + p_193578_4_));
|
||||
+ Block block = state.func_177230_c();
|
||||
+ PathNodeType type = block.getAiPathNodeType(state, p_193578_1_, blockpos$pooledmutableblockpos, this.currentEntity);
|
||||
|
||||
- if (block == Blocks.field_150434_aF)
|
||||
+ if (block == Blocks.field_150434_aF || type == PathNodeType.DAMAGE_CACTUS)
|
||||
{
|
||||
p_193578_5_ = PathNodeType.DANGER_CACTUS;
|
||||
}
|
||||
- else if (block == Blocks.field_150480_ab)
|
||||
+ else if (block == Blocks.field_150480_ab || type == PathNodeType.DAMAGE_FIRE)
|
||||
{
|
||||
p_193578_5_ = PathNodeType.DANGER_FIRE;
|
||||
}
|
||||
+ else if(block.isBurning(p_193578_1_,blockpos$pooledmutableblockpos)) p_193578_5_ = PathNodeType.DAMAGE_FIRE;
|
||||
+ else if (type == PathNodeType.DAMAGE_OTHER) p_193578_5_ = PathNodeType.DANGER_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -443,6 +444,9 @@
|
||||
@@ -443,6 +451,9 @@
|
||||
Block block = iblockstate.func_177230_c();
|
||||
Material material = iblockstate.func_185904_a();
|
||||
|
||||
+ PathNodeType type = block.getAiPathNodeType(iblockstate, p_189553_1_, blockpos);
|
||||
+ PathNodeType type = block.getAiPathNodeType(iblockstate, p_189553_1_, blockpos, this.currentEntity);
|
||||
+ if (type != null) return type;
|
||||
+
|
||||
if (material == Material.field_151579_a)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
public boolean func_76398_f()
|
||||
{
|
||||
return this.field_76418_K;
|
||||
@@ -293,7 +292,85 @@
|
||||
@@ -293,7 +292,122 @@
|
||||
return p_111183_2_.func_111164_d() * (double)(p_111183_1_ + 1);
|
||||
}
|
||||
|
||||
@@ -60,11 +60,29 @@
|
||||
+ * @param y the y coordinate
|
||||
+ * @param effect the active PotionEffect
|
||||
+ * @param mc the Minecraft instance, for convenience
|
||||
+ * @deprecated use {@link #renderInventoryEffect(PotionEffect, net.minecraft.client.gui.Gui, int, int, float)}
|
||||
+ */
|
||||
@SideOnly(Side.CLIENT)
|
||||
+ @Deprecated // TODO: remove
|
||||
+ public void renderInventoryEffect(int x, int y, PotionEffect effect, net.minecraft.client.Minecraft mc) { }
|
||||
+
|
||||
+ /**
|
||||
+ * Called to draw the this Potion onto the player's inventory when it's active.
|
||||
+ * This can be used to e.g. render Potion icons from your own texture.
|
||||
+ *
|
||||
+ * @param effect the active PotionEffect
|
||||
+ * @param gui the gui instance
|
||||
+ * @param x the x coordinate
|
||||
+ * @param y the y coordinate
|
||||
+ * @param z the z level
|
||||
+ */
|
||||
+ @SideOnly(Side.CLIENT)
|
||||
+ public void renderInventoryEffect(PotionEffect effect, net.minecraft.client.gui.Gui gui, int x, int y, float z)
|
||||
+ {
|
||||
+ renderInventoryEffect(x, y, effect, net.minecraft.client.Minecraft.func_71410_x());
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Called to draw the this Potion onto the player's ingame HUD when it's active.
|
||||
+ * This can be used to e.g. render Potion icons from your own texture.
|
||||
+ * @param x the x coordinate
|
||||
@@ -72,11 +90,30 @@
|
||||
+ * @param effect the active PotionEffect
|
||||
+ * @param mc the Minecraft instance, for convenience
|
||||
+ * @param alpha the alpha value, blinks when the potion is about to run out
|
||||
+ * @deprecated use {@link #renderHUDEffect(PotionEffect, net.minecraft.client.gui.Gui, int, int, float, float)}
|
||||
+ */
|
||||
+ @SideOnly(Side.CLIENT)
|
||||
+ @Deprecated // TODO: remove
|
||||
+ public void renderHUDEffect(int x, int y, PotionEffect effect, net.minecraft.client.Minecraft mc, float alpha) { }
|
||||
+
|
||||
+ /**
|
||||
+ * Called to draw the this Potion onto the player's ingame HUD when it's active.
|
||||
+ * This can be used to e.g. render Potion icons from your own texture.
|
||||
+ *
|
||||
+ * @param effect the active PotionEffect
|
||||
+ * @param gui the gui instance
|
||||
+ * @param x the x coordinate
|
||||
+ * @param y the y coordinate
|
||||
+ * @param z the z level
|
||||
+ * @param alpha the alpha value, blinks when the potion is about to run out
|
||||
+ */
|
||||
+ @SideOnly(Side.CLIENT)
|
||||
+ public void renderHUDEffect(PotionEffect effect, net.minecraft.client.gui.Gui gui, int x, int y, float z, float alpha)
|
||||
+ {
|
||||
+ renderHUDEffect(x, y, effect, net.minecraft.client.Minecraft.func_71410_x(), alpha);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Get a fresh list of items that can cure this Potion.
|
||||
+ * All new PotionEffects created from this Potion will call this to initialize the default curative items
|
||||
+ * @see PotionEffect#getCurativeItems
|
||||
|
||||
@@ -17,7 +17,19 @@
|
||||
}
|
||||
|
||||
public void func_76452_a(PotionEffect p_76452_1_)
|
||||
@@ -195,12 +198,13 @@
|
||||
@@ -79,6 +82,11 @@
|
||||
|
||||
public Potion func_188419_a()
|
||||
{
|
||||
+ return this.getPotionRaw() == null ? null : this.getPotionRaw().delegate.get();
|
||||
+ }
|
||||
+
|
||||
+ private Potion getPotionRaw()
|
||||
+ {
|
||||
return this.field_188420_b;
|
||||
}
|
||||
|
||||
@@ -195,12 +203,13 @@
|
||||
p_82719_1_.func_74768_a("Duration", this.func_76459_b());
|
||||
p_82719_1_.func_74757_a("Ambient", this.func_82720_e());
|
||||
p_82719_1_.func_74757_a("ShowParticles", this.func_188418_e());
|
||||
@@ -32,7 +44,7 @@
|
||||
Potion potion = Potion.func_188412_a(i);
|
||||
|
||||
if (potion == null)
|
||||
@@ -219,7 +223,7 @@
|
||||
@@ -219,7 +228,7 @@
|
||||
flag1 = p_82722_0_.func_74767_n("ShowParticles");
|
||||
}
|
||||
|
||||
@@ -41,7 +53,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,7 +236,7 @@
|
||||
@@ -232,7 +241,7 @@
|
||||
public int compareTo(PotionEffect p_compareTo_1_)
|
||||
{
|
||||
int i = 32147;
|
||||
@@ -50,7 +62,7 @@
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@@ -240,4 +244,85 @@
|
||||
@@ -240,4 +249,85 @@
|
||||
{
|
||||
return this.field_100013_f;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
--- ../src-base/minecraft/net/minecraft/potion/PotionHelper.java
|
||||
+++ ../src-work/minecraft/net/minecraft/potion/PotionHelper.java
|
||||
@@ -88,7 +88,7 @@
|
||||
{
|
||||
PotionHelper.MixPredicate<Item> mixpredicate = (PotionHelper.MixPredicate)field_185214_b.get(i);
|
||||
|
||||
- if (mixpredicate.field_185198_a == item && mixpredicate.field_185199_b.apply(p_185206_1_))
|
||||
+ if (mixpredicate.field_185198_a.get() == item && mixpredicate.field_185199_b.apply(p_185206_1_))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -106,7 +106,7 @@
|
||||
{
|
||||
PotionHelper.MixPredicate<PotionType> mixpredicate = (PotionHelper.MixPredicate)field_185213_a.get(i);
|
||||
|
||||
- if (mixpredicate.field_185198_a == potiontype && mixpredicate.field_185199_b.apply(p_185209_1_))
|
||||
+ if (mixpredicate.field_185198_a.get() == potiontype && mixpredicate.field_185199_b.apply(p_185209_1_))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -127,9 +127,9 @@
|
||||
{
|
||||
PotionHelper.MixPredicate<Item> mixpredicate = (PotionHelper.MixPredicate)field_185214_b.get(i);
|
||||
|
||||
- if (mixpredicate.field_185198_a == item && mixpredicate.field_185199_b.apply(p_185212_0_))
|
||||
+ if (mixpredicate.field_185198_a.get() == item && mixpredicate.field_185199_b.apply(p_185212_0_))
|
||||
{
|
||||
- return PotionUtils.func_185188_a(new ItemStack((Item)mixpredicate.field_185200_c), potiontype);
|
||||
+ return PotionUtils.func_185188_a(new ItemStack((Item)mixpredicate.field_185200_c.get()), potiontype);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,9 +139,9 @@
|
||||
{
|
||||
PotionHelper.MixPredicate<PotionType> mixpredicate1 = (PotionHelper.MixPredicate)field_185213_a.get(i);
|
||||
|
||||
- if (mixpredicate1.field_185198_a == potiontype && mixpredicate1.field_185199_b.apply(p_185212_0_))
|
||||
+ if (mixpredicate1.field_185198_a.get() == potiontype && mixpredicate1.field_185199_b.apply(p_185212_0_))
|
||||
{
|
||||
- return PotionUtils.func_185188_a(new ItemStack(item), (PotionType)mixpredicate1.field_185200_c);
|
||||
+ return PotionUtils.func_185188_a(new ItemStack(item), (PotionType)mixpredicate1.field_185200_c.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -227,17 +227,17 @@
|
||||
field_185213_a.add(new PotionHelper.MixPredicate(p_193356_0_, p_193356_1_, p_193356_2_));
|
||||
}
|
||||
|
||||
- static class MixPredicate<T>
|
||||
+ static class MixPredicate<T extends net.minecraftforge.registries.IForgeRegistryEntry.Impl<T>>
|
||||
{
|
||||
- final T field_185198_a;
|
||||
+ final net.minecraftforge.registries.IRegistryDelegate<T> field_185198_a;
|
||||
final Ingredient field_185199_b;
|
||||
- final T field_185200_c;
|
||||
+ final net.minecraftforge.registries.IRegistryDelegate<T> field_185200_c;
|
||||
|
||||
public MixPredicate(T p_i47570_1_, Ingredient p_i47570_2_, T p_i47570_3_)
|
||||
{
|
||||
- this.field_185198_a = p_i47570_1_;
|
||||
+ this.field_185198_a = p_i47570_1_.delegate;
|
||||
this.field_185199_b = p_i47570_2_;
|
||||
- this.field_185200_c = p_i47570_3_;
|
||||
+ this.field_185200_c = p_i47570_3_.delegate;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -167,7 +167,7 @@
|
||||
p_187242_1_.field_71093_bK = p_187242_2_;
|
||||
WorldServer worldserver1 = this.field_72400_f.func_71218_a(p_187242_1_.field_71093_bK);
|
||||
- p_187242_1_.field_71135_a.func_147359_a(new SPacketRespawn(p_187242_1_.field_71093_bK, p_187242_1_.field_70170_p.func_175659_aa(), p_187242_1_.field_70170_p.func_72912_H().func_76067_t(), p_187242_1_.field_71134_c.func_73081_b()));
|
||||
+ p_187242_1_.field_71135_a.func_147359_a(new SPacketRespawn(p_187242_1_.field_71093_bK, worldserver1.func_175659_aa(), worldserver1.func_72912_H().func_76067_t(), p_187242_1_.field_71134_c.func_73081_b()));
|
||||
+ p_187242_1_.field_71135_a.func_147359_a(new SPacketRespawn(p_187242_1_.field_71093_bK, worldserver1.func_175659_aa(), worldserver1.func_72912_H().func_76067_t(), p_187242_1_.field_71134_c.func_73081_b())); // Forge: Use new dimensions information
|
||||
this.func_187243_f(p_187242_1_);
|
||||
worldserver.func_72973_f(p_187242_1_);
|
||||
p_187242_1_.field_70128_L = false;
|
||||
|
||||
@@ -1,13 +1,21 @@
|
||||
--- ../src-base/minecraft/net/minecraft/util/text/translation/LanguageMap.java
|
||||
+++ ../src-work/minecraft/net/minecraft/util/text/translation/LanguageMap.java
|
||||
@@ -23,9 +23,29 @@
|
||||
@@ -23,10 +23,37 @@
|
||||
|
||||
public LanguageMap()
|
||||
{
|
||||
+ InputStream inputstream = LanguageMap.class.getResourceAsStream("/assets/minecraft/lang/en_us.lang");
|
||||
+ inject(this, inputstream);
|
||||
try
|
||||
{
|
||||
- InputStream inputstream = LanguageMap.class.getResourceAsStream("/assets/minecraft/lang/en_us.lang");
|
||||
+ inject(this, inputstream);
|
||||
+ }
|
||||
+ finally
|
||||
+ {
|
||||
+ IOUtils.closeQuietly(inputstream); // Forge: close stream after use (MC-153470)
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
|
||||
+ public static void inject(InputStream inputstream)
|
||||
+ {
|
||||
+ inject(field_74817_a, inputstream);
|
||||
@@ -23,15 +31,15 @@
|
||||
+ public static Map<String, String> parseLangFile(InputStream inputstream)
|
||||
+ {
|
||||
+ Map<String, String> table = Maps.newHashMap();
|
||||
try
|
||||
{
|
||||
- InputStream inputstream = LanguageMap.class.getResourceAsStream("/assets/minecraft/lang/en_us.lang");
|
||||
+ try
|
||||
+ {
|
||||
+ inputstream = net.minecraftforge.fml.common.FMLCommonHandler.instance().loadLanguage(table, inputstream);
|
||||
+ if (inputstream == null) return table;
|
||||
|
||||
+
|
||||
for (String s : IOUtils.readLines(inputstream, StandardCharsets.UTF_8))
|
||||
{
|
||||
@@ -37,17 +57,18 @@
|
||||
if (!s.isEmpty() && s.charAt(0) != '#')
|
||||
@@ -37,17 +64,18 @@
|
||||
{
|
||||
String s1 = astring[0];
|
||||
String s2 = field_111053_a.matcher(astring[1]).replaceAll("%$1s");
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
--- ../src-base/minecraft/net/minecraft/village/VillageSiege.java
|
||||
+++ ../src-work/minecraft/net/minecraft/village/VillageSiege.java
|
||||
@@ -146,6 +146,7 @@
|
||||
|
||||
if (vec3d != null)
|
||||
{
|
||||
+ if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.village.VillageSiegeEvent(this, field_75537_a, entityplayer, field_75531_f, vec3d))) return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,14 @@
|
||||
--- ../src-base/minecraft/net/minecraft/world/World.java
|
||||
+++ ../src-work/minecraft/net/minecraft/world/World.java
|
||||
@@ -63,8 +63,15 @@
|
||||
@@ -11,6 +11,7 @@
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Supplier;
|
||||
+
|
||||
import javax.annotation.Nullable;
|
||||
import net.minecraft.advancements.AdvancementManager;
|
||||
import net.minecraft.advancements.FunctionManager;
|
||||
@@ -63,8 +64,15 @@
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
@@ -17,7 +25,7 @@
|
||||
private int field_181546_a = 63;
|
||||
protected boolean field_72999_e;
|
||||
public final List<Entity> field_72996_f = Lists.<Entity>newArrayList();
|
||||
@@ -108,6 +115,12 @@
|
||||
@@ -108,6 +116,12 @@
|
||||
private final WorldBorder field_175728_M;
|
||||
int[] field_72994_J;
|
||||
|
||||
@@ -30,7 +38,7 @@
|
||||
protected World(ISaveHandler p_i45749_1_, WorldInfo p_i45749_2_, WorldProvider p_i45749_3_, Profiler p_i45749_4_, boolean p_i45749_5_)
|
||||
{
|
||||
this.field_73021_x = Lists.newArrayList(this.field_184152_t);
|
||||
@@ -122,6 +135,7 @@
|
||||
@@ -122,6 +136,7 @@
|
||||
this.field_73011_w = p_i45749_3_;
|
||||
this.field_72995_K = p_i45749_5_;
|
||||
this.field_175728_M = p_i45749_3_.func_177501_r();
|
||||
@@ -38,7 +46,7 @@
|
||||
}
|
||||
|
||||
public World func_175643_b()
|
||||
@@ -131,6 +145,11 @@
|
||||
@@ -131,6 +146,11 @@
|
||||
|
||||
public Biome func_180494_b(final BlockPos p_180494_1_)
|
||||
{
|
||||
@@ -50,7 +58,7 @@
|
||||
if (this.func_175667_e(p_180494_1_))
|
||||
{
|
||||
Chunk chunk = this.func_175726_f(p_180494_1_);
|
||||
@@ -207,7 +226,7 @@
|
||||
@@ -207,7 +227,7 @@
|
||||
|
||||
public boolean func_175623_d(BlockPos p_175623_1_)
|
||||
{
|
||||
@@ -59,7 +67,7 @@
|
||||
}
|
||||
|
||||
public boolean func_175667_e(BlockPos p_175667_1_)
|
||||
@@ -308,24 +327,51 @@
|
||||
@@ -308,24 +328,51 @@
|
||||
else
|
||||
{
|
||||
Chunk chunk = this.func_175726_f(p_180501_1_);
|
||||
@@ -114,7 +122,7 @@
|
||||
this.func_184138_a(p_180501_1_, iblockstate, p_180501_2_, p_180501_3_);
|
||||
}
|
||||
|
||||
@@ -342,8 +388,6 @@
|
||||
@@ -342,8 +389,6 @@
|
||||
{
|
||||
this.func_190522_c(p_180501_1_, block);
|
||||
}
|
||||
@@ -123,7 +131,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -358,7 +402,7 @@
|
||||
@@ -358,7 +403,7 @@
|
||||
IBlockState iblockstate = this.func_180495_p(p_175655_1_);
|
||||
Block block = iblockstate.func_177230_c();
|
||||
|
||||
@@ -132,7 +140,7 @@
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -441,6 +485,9 @@
|
||||
@@ -441,6 +486,9 @@
|
||||
|
||||
public void func_175685_c(BlockPos p_175685_1_, Block p_175685_2_, boolean p_175685_3_)
|
||||
{
|
||||
@@ -142,7 +150,7 @@
|
||||
this.func_190524_a(p_175685_1_.func_177976_e(), p_175685_2_, p_175685_1_);
|
||||
this.func_190524_a(p_175685_1_.func_177974_f(), p_175685_2_, p_175685_1_);
|
||||
this.func_190524_a(p_175685_1_.func_177977_b(), p_175685_2_, p_175685_1_);
|
||||
@@ -456,6 +503,11 @@
|
||||
@@ -456,6 +504,11 @@
|
||||
|
||||
public void func_175695_a(BlockPos p_175695_1_, Block p_175695_2_, EnumFacing p_175695_3_)
|
||||
{
|
||||
@@ -154,7 +162,7 @@
|
||||
if (p_175695_3_ != EnumFacing.WEST)
|
||||
{
|
||||
this.func_190524_a(p_175695_1_.func_177976_e(), p_175695_2_, p_175695_1_);
|
||||
@@ -507,7 +559,7 @@
|
||||
@@ -507,7 +560,7 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -163,7 +171,7 @@
|
||||
}
|
||||
catch (Throwable var2)
|
||||
{
|
||||
@@ -527,11 +579,11 @@
|
||||
@@ -527,11 +580,11 @@
|
||||
{
|
||||
IBlockState iblockstate = this.func_180495_p(p_190529_1_);
|
||||
|
||||
@@ -177,7 +185,7 @@
|
||||
}
|
||||
catch (Throwable throwable)
|
||||
{
|
||||
@@ -543,7 +595,7 @@
|
||||
@@ -543,7 +596,7 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -186,7 +194,7 @@
|
||||
}
|
||||
catch (Throwable var2)
|
||||
{
|
||||
@@ -588,7 +640,7 @@
|
||||
@@ -588,7 +641,7 @@
|
||||
{
|
||||
IBlockState iblockstate = this.func_180495_p(blockpos1);
|
||||
|
||||
@@ -195,7 +203,7 @@
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -862,7 +914,7 @@
|
||||
@@ -862,7 +915,7 @@
|
||||
|
||||
public boolean func_72935_r()
|
||||
{
|
||||
@@ -204,7 +212,7 @@
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -1065,6 +1117,13 @@
|
||||
@@ -1065,6 +1118,13 @@
|
||||
|
||||
public void func_184148_a(@Nullable EntityPlayer p_184148_1_, double p_184148_2_, double p_184148_4_, double p_184148_6_, SoundEvent p_184148_8_, SoundCategory p_184148_9_, float p_184148_10_, float p_184148_11_)
|
||||
{
|
||||
@@ -218,7 +226,16 @@
|
||||
for (int i = 0; i < this.field_73021_x.size(); ++i)
|
||||
{
|
||||
((IWorldEventListener)this.field_73021_x.get(i)).func_184375_a(p_184148_1_, p_184148_8_, p_184148_9_, p_184148_2_, p_184148_4_, p_184148_6_, p_184148_10_, p_184148_11_);
|
||||
@@ -1118,6 +1177,9 @@
|
||||
@@ -1112,12 +1172,18 @@
|
||||
|
||||
public boolean func_72942_c(Entity p_72942_1_)
|
||||
{
|
||||
+ if(net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.entity.EntityJoinWorldEvent(p_72942_1_, this)))
|
||||
+ return false;
|
||||
+
|
||||
this.field_73007_j.add(p_72942_1_);
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean func_72838_d(Entity p_72838_1_)
|
||||
{
|
||||
@@ -228,7 +245,7 @@
|
||||
int i = MathHelper.func_76128_c(p_72838_1_.field_70165_t / 16.0D);
|
||||
int j = MathHelper.func_76128_c(p_72838_1_.field_70161_v / 16.0D);
|
||||
boolean flag = p_72838_1_.field_98038_p;
|
||||
@@ -1140,6 +1202,8 @@
|
||||
@@ -1140,6 +1206,8 @@
|
||||
this.func_72854_c();
|
||||
}
|
||||
|
||||
@@ -237,7 +254,23 @@
|
||||
this.func_72964_e(i, j).func_76612_a(p_72838_1_);
|
||||
this.field_72996_f.add(p_72838_1_);
|
||||
this.func_72923_a(p_72838_1_);
|
||||
@@ -1227,6 +1291,7 @@
|
||||
@@ -1153,6 +1221,7 @@
|
||||
{
|
||||
((IWorldEventListener)this.field_73021_x.get(i)).func_72703_a(p_72923_1_);
|
||||
}
|
||||
+ p_72923_1_.onAddedToWorld();
|
||||
}
|
||||
|
||||
public void func_72847_b(Entity p_72847_1_)
|
||||
@@ -1161,6 +1230,7 @@
|
||||
{
|
||||
((IWorldEventListener)this.field_73021_x.get(i)).func_72709_b(p_72847_1_);
|
||||
}
|
||||
+ p_72847_1_.onRemovedFromWorld();
|
||||
}
|
||||
|
||||
public void func_72900_e(Entity p_72900_1_)
|
||||
@@ -1227,6 +1297,7 @@
|
||||
IBlockState iblockstate = Blocks.field_150348_b.func_176223_P();
|
||||
BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.func_185346_s();
|
||||
|
||||
@@ -245,7 +278,7 @@
|
||||
try
|
||||
{
|
||||
for (int k1 = i; k1 < j; ++k1)
|
||||
@@ -1269,7 +1334,7 @@
|
||||
@@ -1269,7 +1340,7 @@
|
||||
|
||||
iblockstate1.func_185908_a(this, blockpos$pooledmutableblockpos, p_191504_2_, p_191504_4_, p_191504_1_, false);
|
||||
|
||||
@@ -254,7 +287,7 @@
|
||||
{
|
||||
boolean flag5 = true;
|
||||
return flag5;
|
||||
@@ -1319,11 +1384,10 @@
|
||||
@@ -1319,11 +1390,10 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -267,7 +300,7 @@
|
||||
public void func_72848_b(IWorldEventListener p_72848_1_)
|
||||
{
|
||||
this.field_73021_x.remove(p_72848_1_);
|
||||
@@ -1361,19 +1425,38 @@
|
||||
@@ -1361,19 +1431,38 @@
|
||||
|
||||
public int func_72967_a(float p_72967_1_)
|
||||
{
|
||||
@@ -308,7 +341,7 @@
|
||||
float f = this.func_72826_c(p_72971_1_);
|
||||
float f1 = 1.0F - (MathHelper.func_76134_b(f * ((float)Math.PI * 2F)) * 2.0F + 0.2F);
|
||||
f1 = MathHelper.func_76131_a(f1, 0.0F, 1.0F);
|
||||
@@ -1386,6 +1469,12 @@
|
||||
@@ -1386,6 +1475,12 @@
|
||||
@SideOnly(Side.CLIENT)
|
||||
public Vec3d func_72833_a(Entity p_72833_1_, float p_72833_2_)
|
||||
{
|
||||
@@ -321,7 +354,7 @@
|
||||
float f = this.func_72826_c(p_72833_2_);
|
||||
float f1 = MathHelper.func_76134_b(f * ((float)Math.PI * 2F)) * 2.0F + 0.5F;
|
||||
f1 = MathHelper.func_76131_a(f1, 0.0F, 1.0F);
|
||||
@@ -1393,9 +1482,7 @@
|
||||
@@ -1393,9 +1488,7 @@
|
||||
int j = MathHelper.func_76128_c(p_72833_1_.field_70163_u);
|
||||
int k = MathHelper.func_76128_c(p_72833_1_.field_70161_v);
|
||||
BlockPos blockpos = new BlockPos(i, j, k);
|
||||
@@ -332,7 +365,7 @@
|
||||
float f3 = (float)(l >> 16 & 255) / 255.0F;
|
||||
float f4 = (float)(l >> 8 & 255) / 255.0F;
|
||||
float f5 = (float)(l & 255) / 255.0F;
|
||||
@@ -1444,20 +1531,25 @@
|
||||
@@ -1444,20 +1537,25 @@
|
||||
|
||||
public float func_72826_c(float p_72826_1_)
|
||||
{
|
||||
@@ -361,7 +394,7 @@
|
||||
public float func_72929_e(float p_72929_1_)
|
||||
{
|
||||
float f = this.func_72826_c(p_72929_1_);
|
||||
@@ -1467,6 +1559,12 @@
|
||||
@@ -1467,6 +1565,12 @@
|
||||
@SideOnly(Side.CLIENT)
|
||||
public Vec3d func_72824_f(float p_72824_1_)
|
||||
{
|
||||
@@ -374,7 +407,7 @@
|
||||
float f = this.func_72826_c(p_72824_1_);
|
||||
float f1 = MathHelper.func_76134_b(f * ((float)Math.PI * 2F)) * 2.0F + 0.5F;
|
||||
f1 = MathHelper.func_76131_a(f1, 0.0F, 1.0F);
|
||||
@@ -1522,9 +1620,9 @@
|
||||
@@ -1522,9 +1626,9 @@
|
||||
for (blockpos = new BlockPos(p_175672_1_.func_177958_n(), chunk.func_76625_h() + 16, p_175672_1_.func_177952_p()); blockpos.func_177956_o() >= 0; blockpos = blockpos1)
|
||||
{
|
||||
blockpos1 = blockpos.func_177977_b();
|
||||
@@ -386,7 +419,7 @@
|
||||
{
|
||||
break;
|
||||
}
|
||||
@@ -1536,6 +1634,12 @@
|
||||
@@ -1536,6 +1640,12 @@
|
||||
@SideOnly(Side.CLIENT)
|
||||
public float func_72880_h(float p_72880_1_)
|
||||
{
|
||||
@@ -399,7 +432,7 @@
|
||||
float f = this.func_72826_c(p_72880_1_);
|
||||
float f1 = 1.0F - (MathHelper.func_76134_b(f * ((float)Math.PI * 2F)) * 2.0F + 0.25F);
|
||||
f1 = MathHelper.func_76131_a(f1, 0.0F, 1.0F);
|
||||
@@ -1570,6 +1674,7 @@
|
||||
@@ -1570,6 +1680,7 @@
|
||||
|
||||
try
|
||||
{
|
||||
@@ -407,7 +440,7 @@
|
||||
++entity.field_70173_aa;
|
||||
entity.func_70071_h_();
|
||||
}
|
||||
@@ -1587,6 +1692,12 @@
|
||||
@@ -1587,6 +1698,12 @@
|
||||
entity.func_85029_a(crashreportcategory);
|
||||
}
|
||||
|
||||
@@ -420,7 +453,7 @@
|
||||
throw new ReportedException(crashreport);
|
||||
}
|
||||
|
||||
@@ -1641,13 +1752,21 @@
|
||||
@@ -1641,13 +1758,21 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -442,7 +475,7 @@
|
||||
throw new ReportedException(crashreport1);
|
||||
}
|
||||
}
|
||||
@@ -1674,14 +1793,23 @@
|
||||
@@ -1674,14 +1799,23 @@
|
||||
|
||||
this.field_72984_F.func_76318_c("blockEntities");
|
||||
|
||||
@@ -469,7 +502,7 @@
|
||||
Iterator<TileEntity> iterator = this.field_175730_i.iterator();
|
||||
|
||||
while (iterator.hasNext())
|
||||
@@ -1692,7 +1820,7 @@
|
||||
@@ -1692,7 +1826,7 @@
|
||||
{
|
||||
BlockPos blockpos = tileentity.func_174877_v();
|
||||
|
||||
@@ -478,7 +511,7 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -1700,7 +1828,9 @@
|
||||
@@ -1700,7 +1834,9 @@
|
||||
{
|
||||
return String.valueOf((Object)TileEntity.func_190559_a(tileentity.getClass()));
|
||||
});
|
||||
@@ -488,7 +521,7 @@
|
||||
this.field_72984_F.func_76319_b();
|
||||
}
|
||||
catch (Throwable throwable)
|
||||
@@ -1708,6 +1838,13 @@
|
||||
@@ -1708,6 +1844,13 @@
|
||||
CrashReport crashreport2 = CrashReport.func_85055_a(throwable, "Ticking block entity");
|
||||
CrashReportCategory crashreportcategory2 = crashreport2.func_85058_a("Block entity being ticked");
|
||||
tileentity.func_145828_a(crashreportcategory2);
|
||||
@@ -502,7 +535,7 @@
|
||||
throw new ReportedException(crashreport2);
|
||||
}
|
||||
}
|
||||
@@ -1720,7 +1857,10 @@
|
||||
@@ -1720,7 +1863,10 @@
|
||||
|
||||
if (this.func_175667_e(tileentity.func_174877_v()))
|
||||
{
|
||||
@@ -514,7 +547,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1764,12 +1904,18 @@
|
||||
@@ -1764,12 +1910,18 @@
|
||||
|
||||
public boolean func_175700_a(TileEntity p_175700_1_)
|
||||
{
|
||||
@@ -533,7 +566,7 @@
|
||||
|
||||
if (this.field_72995_K)
|
||||
{
|
||||
@@ -1785,6 +1931,11 @@
|
||||
@@ -1785,6 +1937,11 @@
|
||||
{
|
||||
if (this.field_147481_N)
|
||||
{
|
||||
@@ -545,14 +578,14 @@
|
||||
this.field_147484_a.addAll(p_147448_1_);
|
||||
}
|
||||
else
|
||||
@@ -1807,9 +1958,13 @@
|
||||
@@ -1807,9 +1964,13 @@
|
||||
{
|
||||
int j2 = MathHelper.func_76128_c(p_72866_1_.field_70165_t);
|
||||
int k2 = MathHelper.func_76128_c(p_72866_1_.field_70161_v);
|
||||
- int l2 = 32;
|
||||
|
||||
- if (p_72866_2_ && !this.func_175663_a(j2 - 32, 0, k2 - 32, j2 + 32, 0, k2 + 32, true))
|
||||
+ boolean isForced = getPersistentChunks().containsKey(new net.minecraft.util.math.ChunkPos(j2 >> 4, k2 >> 4));
|
||||
+ boolean isForced = !this.field_72995_K && getPersistentChunks().containsKey(new net.minecraft.util.math.ChunkPos(j2 >> 4, k2 >> 4));
|
||||
+ int range = isForced ? 0 : 32;
|
||||
+ boolean canUpdate = !p_72866_2_ || this.func_175663_a(j2 - range, 0, k2 - range, j2 + range, 0, k2 + range, true);
|
||||
+ if (!canUpdate) canUpdate = net.minecraftforge.event.ForgeEventFactory.canEntityUpdate(p_72866_1_);
|
||||
@@ -561,7 +594,7 @@
|
||||
{
|
||||
return;
|
||||
}
|
||||
@@ -1831,6 +1986,7 @@
|
||||
@@ -1831,6 +1992,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -569,7 +602,7 @@
|
||||
p_72866_1_.func_70071_h_();
|
||||
}
|
||||
}
|
||||
@@ -1914,7 +2070,7 @@
|
||||
@@ -1914,7 +2076,7 @@
|
||||
{
|
||||
Entity entity4 = list.get(j2);
|
||||
|
||||
@@ -578,7 +611,7 @@
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -1972,6 +2128,12 @@
|
||||
@@ -1972,6 +2134,12 @@
|
||||
{
|
||||
IBlockState iblockstate1 = this.func_180495_p(blockpos$pooledmutableblockpos.func_181079_c(l3, i4, j4));
|
||||
|
||||
@@ -591,7 +624,7 @@
|
||||
if (iblockstate1.func_185904_a().func_76224_d())
|
||||
{
|
||||
blockpos$pooledmutableblockpos.func_185344_t();
|
||||
@@ -2011,6 +2173,11 @@
|
||||
@@ -2011,6 +2179,11 @@
|
||||
blockpos$pooledmutableblockpos.func_185344_t();
|
||||
return true;
|
||||
}
|
||||
@@ -603,7 +636,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2050,6 +2217,16 @@
|
||||
@@ -2050,6 +2223,16 @@
|
||||
IBlockState iblockstate1 = this.func_180495_p(blockpos$pooledmutableblockpos);
|
||||
Block block = iblockstate1.func_177230_c();
|
||||
|
||||
@@ -620,7 +653,7 @@
|
||||
if (iblockstate1.func_185904_a() == p_72918_2_)
|
||||
{
|
||||
double d0 = (double)((float)(i4 + 1) - BlockLiquid.func_149801_b(((Integer)iblockstate1.func_177229_b(BlockLiquid.field_176367_b)).intValue()));
|
||||
@@ -2095,7 +2272,14 @@
|
||||
@@ -2095,7 +2278,14 @@
|
||||
{
|
||||
for (int j4 = j3; j4 < k3; ++j4)
|
||||
{
|
||||
@@ -636,7 +669,7 @@
|
||||
{
|
||||
blockpos$pooledmutableblockpos.func_185344_t();
|
||||
return true;
|
||||
@@ -2116,6 +2300,7 @@
|
||||
@@ -2116,6 +2306,7 @@
|
||||
public Explosion func_72885_a(@Nullable Entity p_72885_1_, double p_72885_2_, double p_72885_4_, double p_72885_6_, float p_72885_8_, boolean p_72885_9_, boolean p_72885_10_)
|
||||
{
|
||||
Explosion explosion = new Explosion(this, p_72885_1_, p_72885_2_, p_72885_4_, p_72885_6_, p_72885_8_, p_72885_9_, p_72885_10_);
|
||||
@@ -644,7 +677,7 @@
|
||||
explosion.func_77278_a();
|
||||
explosion.func_77279_a(true);
|
||||
return explosion;
|
||||
@@ -2238,6 +2423,7 @@
|
||||
@@ -2238,6 +2429,7 @@
|
||||
|
||||
public void func_175690_a(BlockPos p_175690_1_, @Nullable TileEntity p_175690_2_)
|
||||
{
|
||||
@@ -652,16 +685,29 @@
|
||||
if (!this.func_189509_E(p_175690_1_))
|
||||
{
|
||||
if (p_175690_2_ != null && !p_175690_2_.func_145837_r())
|
||||
@@ -2245,6 +2431,8 @@
|
||||
@@ -2245,7 +2437,10 @@
|
||||
if (this.field_147481_N)
|
||||
{
|
||||
p_175690_2_.func_174878_a(p_175690_1_);
|
||||
+ if (p_175690_2_.func_145831_w() != this)
|
||||
+ p_175690_2_.func_145834_a(this); // Forge - set the world early as vanilla doesn't set it until next tick
|
||||
Iterator<TileEntity> iterator1 = this.field_147484_a.iterator();
|
||||
+ List<TileEntity> toInvalidate = Lists.newArrayList();
|
||||
|
||||
while (iterator1.hasNext())
|
||||
@@ -2262,7 +2450,8 @@
|
||||
{
|
||||
@@ -2253,16 +2448,18 @@
|
||||
|
||||
if (tileentity2.func_174877_v().equals(p_175690_1_))
|
||||
{
|
||||
- tileentity2.func_145843_s();
|
||||
+ toInvalidate.add(tileentity2); // Forge - don't call invalidate while iterating
|
||||
iterator1.remove();
|
||||
}
|
||||
}
|
||||
|
||||
+ toInvalidate.forEach(TileEntity::func_145843_s);
|
||||
this.field_147484_a.add(p_175690_2_);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -671,7 +717,7 @@
|
||||
this.func_175700_a(p_175690_2_);
|
||||
}
|
||||
}
|
||||
@@ -2277,6 +2466,8 @@
|
||||
@@ -2277,6 +2474,8 @@
|
||||
{
|
||||
tileentity2.func_145843_s();
|
||||
this.field_147484_a.remove(tileentity2);
|
||||
@@ -680,7 +726,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2289,6 +2480,7 @@
|
||||
@@ -2289,6 +2488,7 @@
|
||||
|
||||
this.func_175726_f(p_175713_1_).func_177425_e(p_175713_1_);
|
||||
}
|
||||
@@ -688,7 +734,7 @@
|
||||
}
|
||||
|
||||
public void func_147457_a(TileEntity p_147457_1_)
|
||||
@@ -2315,7 +2507,7 @@
|
||||
@@ -2315,7 +2515,7 @@
|
||||
if (chunk1 != null && !chunk1.func_76621_g())
|
||||
{
|
||||
IBlockState iblockstate1 = this.func_180495_p(p_175677_1_);
|
||||
@@ -697,7 +743,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2338,6 +2530,7 @@
|
||||
@@ -2338,6 +2538,7 @@
|
||||
{
|
||||
this.field_72985_G = p_72891_1_;
|
||||
this.field_72992_H = p_72891_2_;
|
||||
@@ -705,7 +751,7 @@
|
||||
}
|
||||
|
||||
public void func_72835_b()
|
||||
@@ -2347,6 +2540,11 @@
|
||||
@@ -2347,6 +2548,11 @@
|
||||
|
||||
protected void func_72947_a()
|
||||
{
|
||||
@@ -717,7 +763,7 @@
|
||||
if (this.field_72986_A.func_76059_o())
|
||||
{
|
||||
this.field_73004_o = 1.0F;
|
||||
@@ -2360,6 +2558,11 @@
|
||||
@@ -2360,6 +2566,11 @@
|
||||
|
||||
protected void func_72979_l()
|
||||
{
|
||||
@@ -729,7 +775,7 @@
|
||||
if (this.field_73011_w.func_191066_m())
|
||||
{
|
||||
if (!this.field_72995_K)
|
||||
@@ -2484,6 +2687,11 @@
|
||||
@@ -2484,6 +2695,11 @@
|
||||
|
||||
public boolean func_175670_e(BlockPos p_175670_1_, boolean p_175670_2_)
|
||||
{
|
||||
@@ -741,7 +787,7 @@
|
||||
Biome biome = this.func_180494_b(p_175670_1_);
|
||||
float f = biome.func_180626_a(p_175670_1_);
|
||||
|
||||
@@ -2525,6 +2733,11 @@
|
||||
@@ -2525,6 +2741,11 @@
|
||||
|
||||
public boolean func_175708_f(BlockPos p_175708_1_, boolean p_175708_2_)
|
||||
{
|
||||
@@ -753,7 +799,7 @@
|
||||
Biome biome = this.func_180494_b(p_175708_1_);
|
||||
float f = biome.func_180626_a(p_175708_1_);
|
||||
|
||||
@@ -2542,7 +2755,7 @@
|
||||
@@ -2542,7 +2763,7 @@
|
||||
{
|
||||
IBlockState iblockstate1 = this.func_180495_p(p_175708_1_);
|
||||
|
||||
@@ -762,7 +808,7 @@
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -2574,10 +2787,10 @@
|
||||
@@ -2574,10 +2795,10 @@
|
||||
else
|
||||
{
|
||||
IBlockState iblockstate1 = this.func_180495_p(p_175638_1_);
|
||||
@@ -776,7 +822,7 @@
|
||||
{
|
||||
k2 = 1;
|
||||
}
|
||||
@@ -2589,7 +2802,7 @@
|
||||
@@ -2589,7 +2810,7 @@
|
||||
|
||||
if (k2 >= 15)
|
||||
{
|
||||
@@ -785,7 +831,7 @@
|
||||
}
|
||||
else if (j2 >= 14)
|
||||
{
|
||||
@@ -2630,12 +2843,13 @@
|
||||
@@ -2630,12 +2851,13 @@
|
||||
|
||||
public boolean func_180500_c(EnumSkyBlock p_180500_1_, BlockPos p_180500_2_)
|
||||
{
|
||||
@@ -800,7 +846,7 @@
|
||||
int j2 = 0;
|
||||
int k2 = 0;
|
||||
this.field_72984_F.func_76320_a("getBrightness");
|
||||
@@ -2673,7 +2887,7 @@
|
||||
@@ -2673,7 +2895,7 @@
|
||||
int l5 = MathHelper.func_76130_a(k4 - k3);
|
||||
int i6 = MathHelper.func_76130_a(l4 - l3);
|
||||
|
||||
@@ -809,7 +855,7 @@
|
||||
{
|
||||
BlockPos.PooledMutableBlockPos blockpos$pooledmutableblockpos = BlockPos.PooledMutableBlockPos.func_185346_s();
|
||||
|
||||
@@ -2683,7 +2897,8 @@
|
||||
@@ -2683,7 +2905,8 @@
|
||||
int k6 = k4 + enumfacing.func_96559_d();
|
||||
int l6 = l4 + enumfacing.func_82599_e();
|
||||
blockpos$pooledmutableblockpos.func_181079_c(j6, k6, l6);
|
||||
@@ -819,7 +865,7 @@
|
||||
j5 = this.func_175642_b(p_180500_1_, blockpos$pooledmutableblockpos);
|
||||
|
||||
if (j5 == i5 - i7 && k2 < this.field_72994_J.length)
|
||||
@@ -2725,7 +2940,7 @@
|
||||
@@ -2725,7 +2948,7 @@
|
||||
int j9 = Math.abs(i8 - l3);
|
||||
boolean flag = k2 < this.field_72994_J.length - 6;
|
||||
|
||||
@@ -828,7 +874,7 @@
|
||||
{
|
||||
if (this.func_175642_b(p_180500_1_, blockpos2.func_177976_e()) < k8)
|
||||
{
|
||||
@@ -2791,10 +3006,10 @@
|
||||
@@ -2791,10 +3014,10 @@
|
||||
public List<Entity> func_175674_a(@Nullable Entity p_175674_1_, AxisAlignedBB p_175674_2_, @Nullable Predicate <? super Entity > p_175674_3_)
|
||||
{
|
||||
List<Entity> list = Lists.<Entity>newArrayList();
|
||||
@@ -843,7 +889,7 @@
|
||||
|
||||
for (int j3 = j2; j3 <= k2; ++j3)
|
||||
{
|
||||
@@ -2847,10 +3062,10 @@
|
||||
@@ -2847,10 +3070,10 @@
|
||||
|
||||
public <T extends Entity> List<T> func_175647_a(Class <? extends T > p_175647_1_, AxisAlignedBB p_175647_2_, @Nullable Predicate <? super T > p_175647_3_)
|
||||
{
|
||||
@@ -858,7 +904,7 @@
|
||||
List<T> list = Lists.<T>newArrayList();
|
||||
|
||||
for (int j3 = j2; j3 < k2; ++j3)
|
||||
@@ -2930,11 +3145,13 @@
|
||||
@@ -2930,11 +3153,13 @@
|
||||
|
||||
public void func_175650_b(Collection<Entity> p_175650_1_)
|
||||
{
|
||||
@@ -875,7 +921,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2958,7 +3175,7 @@
|
||||
@@ -2948,7 +3173,8 @@
|
||||
IBlockState iblockstate1 = this.func_180495_p(p_190527_2_);
|
||||
AxisAlignedBB axisalignedbb = p_190527_3_ ? null : p_190527_1_.func_176223_P().func_185890_d(this, p_190527_2_);
|
||||
|
||||
- if (axisalignedbb != Block.field_185506_k && !this.func_72917_a(axisalignedbb.func_186670_a(p_190527_2_), p_190527_5_))
|
||||
+ if (!((p_190527_5_ instanceof EntityPlayer) || !net.minecraftforge.event.ForgeEventFactory.onBlockPlace(p_190527_5_, new net.minecraftforge.common.util.BlockSnapshot(this, p_190527_2_, p_190527_1_.func_176223_P()), p_190527_4_).isCanceled())) return false;
|
||||
+ if (axisalignedbb != Block.field_185506_k && !this.func_72855_b(axisalignedbb.func_186670_a(p_190527_2_))) // Forge: Remove second parameter, we patch placer to be non-null, passing it here skips collision checks for the placer
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -2958,7 +3184,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -884,7 +940,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3042,7 +3259,7 @@
|
||||
@@ -3042,7 +3268,7 @@
|
||||
public int func_175651_c(BlockPos p_175651_1_, EnumFacing p_175651_2_)
|
||||
{
|
||||
IBlockState iblockstate1 = this.func_180495_p(p_175651_1_);
|
||||
@@ -893,7 +949,7 @@
|
||||
}
|
||||
|
||||
public boolean func_175640_z(BlockPos p_175640_1_)
|
||||
@@ -3208,6 +3425,8 @@
|
||||
@@ -3208,6 +3434,8 @@
|
||||
d2 *= ((Double)MoreObjects.firstNonNull(p_184150_11_.apply(entityplayer1), Double.valueOf(1.0D))).doubleValue();
|
||||
}
|
||||
|
||||
@@ -902,7 +958,7 @@
|
||||
if ((p_184150_9_ < 0.0D || Math.abs(entityplayer1.field_70163_u - p_184150_3_) < p_184150_9_ * p_184150_9_) && (p_184150_7_ < 0.0D || d1 < d2 * d2) && (d0 == -1.0D || d1 < d0))
|
||||
{
|
||||
d0 = d1;
|
||||
@@ -3269,7 +3488,7 @@
|
||||
@@ -3269,7 +3497,7 @@
|
||||
|
||||
public long func_72905_C()
|
||||
{
|
||||
@@ -911,7 +967,7 @@
|
||||
}
|
||||
|
||||
public long func_82737_E()
|
||||
@@ -3279,17 +3498,17 @@
|
||||
@@ -3279,17 +3507,17 @@
|
||||
|
||||
public long func_72820_D()
|
||||
{
|
||||
@@ -932,7 +988,7 @@
|
||||
|
||||
if (!this.func_175723_af().func_177746_a(blockpos1))
|
||||
{
|
||||
@@ -3301,7 +3520,7 @@
|
||||
@@ -3301,7 +3529,7 @@
|
||||
|
||||
public void func_175652_B(BlockPos p_175652_1_)
|
||||
{
|
||||
@@ -941,7 +997,7 @@
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@@ -3321,12 +3540,18 @@
|
||||
@@ -3321,12 +3549,18 @@
|
||||
|
||||
if (!this.field_72996_f.contains(p_72897_1_))
|
||||
{
|
||||
@@ -960,7 +1016,7 @@
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3428,8 +3653,7 @@
|
||||
@@ -3428,8 +3662,7 @@
|
||||
|
||||
public boolean func_180502_D(BlockPos p_180502_1_)
|
||||
{
|
||||
@@ -970,7 +1026,7 @@
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -3490,12 +3714,12 @@
|
||||
@@ -3490,12 +3723,12 @@
|
||||
|
||||
public int func_72800_K()
|
||||
{
|
||||
@@ -985,7 +1041,7 @@
|
||||
}
|
||||
|
||||
public Random func_72843_D(int p_72843_1_, int p_72843_2_, int p_72843_3_)
|
||||
@@ -3539,7 +3763,7 @@
|
||||
@@ -3539,7 +3772,7 @@
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double func_72919_O()
|
||||
{
|
||||
@@ -994,7 +1050,7 @@
|
||||
}
|
||||
|
||||
public void func_175715_c(int p_175715_1_, BlockPos p_175715_2_, int p_175715_3_)
|
||||
@@ -3573,7 +3797,7 @@
|
||||
@@ -3573,7 +3806,7 @@
|
||||
|
||||
public void func_175666_e(BlockPos p_175666_1_, Block p_175666_2_)
|
||||
{
|
||||
@@ -1003,7 +1059,7 @@
|
||||
{
|
||||
BlockPos blockpos1 = p_175666_1_.func_177972_a(enumfacing);
|
||||
|
||||
@@ -3581,18 +3805,15 @@
|
||||
@@ -3581,18 +3814,15 @@
|
||||
{
|
||||
IBlockState iblockstate1 = this.func_180495_p(blockpos1);
|
||||
|
||||
@@ -1026,7 +1082,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3658,6 +3879,124 @@
|
||||
@@ -3658,6 +3888,124 @@
|
||||
return j2 >= -128 && j2 <= 128 && k2 >= -128 && k2 <= 128;
|
||||
}
|
||||
|
||||
|
||||
@@ -164,37 +164,16 @@
|
||||
public static void func_185358_q()
|
||||
{
|
||||
func_185354_a(0, "ocean", new BiomeOcean((new Biome.BiomeProperties("Ocean")).func_185398_c(-1.0F).func_185400_d(0.1F)));
|
||||
@@ -552,6 +635,7 @@
|
||||
public Class <? extends EntityLiving > field_76300_b;
|
||||
public int field_76301_c;
|
||||
public int field_76299_d;
|
||||
+ private final java.lang.reflect.Constructor<? extends EntityLiving> ctr;
|
||||
|
||||
public SpawnListEntry(Class <? extends EntityLiving > p_i1970_1_, int p_i1970_2_, int p_i1970_3_, int p_i1970_4_)
|
||||
{
|
||||
@@ -559,12 +643,26 @@
|
||||
this.field_76300_b = p_i1970_1_;
|
||||
this.field_76301_c = p_i1970_3_;
|
||||
this.field_76299_d = p_i1970_4_;
|
||||
+
|
||||
+ try
|
||||
+ {
|
||||
+ ctr = p_i1970_1_.getConstructor(World.class);
|
||||
+ }
|
||||
+ catch (NoSuchMethodException e)
|
||||
+ {
|
||||
+ throw new RuntimeException(e);
|
||||
+ }
|
||||
}
|
||||
|
||||
public String toString()
|
||||
@@ -565,6 +648,13 @@
|
||||
{
|
||||
return this.field_76300_b.getSimpleName() + "*(" + this.field_76301_c + "-" + this.field_76299_d + "):" + this.field_76292_a;
|
||||
}
|
||||
+
|
||||
+ public EntityLiving newInstance(World world) throws Exception
|
||||
+ {
|
||||
+ return ctr.newInstance(world);
|
||||
+ net.minecraftforge.fml.common.registry.EntityEntry entry = net.minecraftforge.fml.common.registry.EntityRegistry.getEntry(this.field_76300_b);
|
||||
+ if (entry != null) return (EntityLiving) entry.newInstance(world);
|
||||
+ return this.field_76300_b.getConstructor(World.class).newInstance(world);
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
this.field_76637_e.func_175690_a(p_177436_1_, tileentity1);
|
||||
}
|
||||
|
||||
@@ -738,6 +736,7 @@
|
||||
@@ -738,11 +736,13 @@
|
||||
k = this.field_76645_j.length - 1;
|
||||
}
|
||||
|
||||
@@ -123,7 +123,21 @@
|
||||
p_76612_1_.field_70175_ag = true;
|
||||
p_76612_1_.field_70176_ah = this.field_76635_g;
|
||||
p_76612_1_.field_70162_ai = k;
|
||||
@@ -778,7 +777,7 @@
|
||||
p_76612_1_.field_70164_aj = this.field_76647_h;
|
||||
this.field_76645_j[k].add(p_76612_1_);
|
||||
+ this.func_76630_e(); // Forge - ensure chunks are marked to save after an entity add
|
||||
}
|
||||
|
||||
public void func_76622_b(Entity p_76622_1_)
|
||||
@@ -763,6 +763,7 @@
|
||||
}
|
||||
|
||||
this.field_76645_j[p_76608_2_].remove(p_76608_1_);
|
||||
+ this.func_76630_e(); // Forge - ensure chunks are marked to save after entity removals
|
||||
}
|
||||
|
||||
public boolean func_177444_d(BlockPos p_177444_1_)
|
||||
@@ -778,7 +779,7 @@
|
||||
{
|
||||
IBlockState iblockstate = this.func_177435_g(p_177422_1_);
|
||||
Block block = iblockstate.func_177230_c();
|
||||
@@ -132,7 +146,7 @@
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -786,6 +785,12 @@
|
||||
@@ -786,6 +787,12 @@
|
||||
{
|
||||
TileEntity tileentity = this.field_150816_i.get(p_177424_1_);
|
||||
|
||||
@@ -145,7 +159,7 @@
|
||||
if (tileentity == null)
|
||||
{
|
||||
if (p_177424_2_ == Chunk.EnumCreateEntityType.IMMEDIATE)
|
||||
@@ -795,14 +800,9 @@
|
||||
@@ -795,14 +802,9 @@
|
||||
}
|
||||
else if (p_177424_2_ == Chunk.EnumCreateEntityType.QUEUED)
|
||||
{
|
||||
@@ -161,7 +175,7 @@
|
||||
|
||||
return tileentity;
|
||||
}
|
||||
@@ -819,10 +819,11 @@
|
||||
@@ -819,10 +821,11 @@
|
||||
|
||||
public void func_177426_a(BlockPos p_177426_1_, TileEntity p_177426_2_)
|
||||
{
|
||||
@@ -174,7 +188,7 @@
|
||||
{
|
||||
if (this.field_150816_i.containsKey(p_177426_1_))
|
||||
{
|
||||
@@ -854,12 +855,14 @@
|
||||
@@ -854,12 +857,14 @@
|
||||
|
||||
for (ClassInheritanceMultiMap<Entity> classinheritancemultimap : this.field_76645_j)
|
||||
{
|
||||
@@ -190,7 +204,7 @@
|
||||
this.field_76636_d = false;
|
||||
|
||||
for (TileEntity tileentity : this.field_150816_i.values())
|
||||
@@ -871,6 +874,7 @@
|
||||
@@ -871,6 +876,7 @@
|
||||
{
|
||||
this.field_76637_e.func_175681_c(classinheritancemultimap);
|
||||
}
|
||||
@@ -198,7 +212,7 @@
|
||||
}
|
||||
|
||||
public void func_76630_e()
|
||||
@@ -880,8 +884,8 @@
|
||||
@@ -880,8 +886,8 @@
|
||||
|
||||
public void func_177414_a(@Nullable Entity p_177414_1_, AxisAlignedBB p_177414_2_, List<Entity> p_177414_3_, Predicate <? super Entity > p_177414_4_)
|
||||
{
|
||||
@@ -209,7 +223,7 @@
|
||||
i = MathHelper.func_76125_a(i, 0, this.field_76645_j.length - 1);
|
||||
j = MathHelper.func_76125_a(j, 0, this.field_76645_j.length - 1);
|
||||
|
||||
@@ -918,8 +922,8 @@
|
||||
@@ -918,8 +924,8 @@
|
||||
|
||||
public <T extends Entity> void func_177430_a(Class <? extends T > p_177430_1_, AxisAlignedBB p_177430_2_, List<T> p_177430_3_, Predicate <? super T > p_177430_4_)
|
||||
{
|
||||
@@ -220,7 +234,7 @@
|
||||
i = MathHelper.func_76125_a(i, 0, this.field_76645_j.length - 1);
|
||||
j = MathHelper.func_76125_a(j, 0, this.field_76645_j.length - 1);
|
||||
|
||||
@@ -997,6 +1001,9 @@
|
||||
@@ -997,6 +1003,9 @@
|
||||
|
||||
protected void func_186034_a(IChunkGenerator p_186034_1_)
|
||||
{
|
||||
@@ -230,7 +244,7 @@
|
||||
if (this.func_177419_t())
|
||||
{
|
||||
if (p_186034_1_.func_185933_a(this, this.field_76635_g, this.field_76647_h))
|
||||
@@ -1008,8 +1015,10 @@
|
||||
@@ -1008,8 +1017,10 @@
|
||||
{
|
||||
this.func_150809_p();
|
||||
p_186034_1_.func_185931_b(this.field_76635_g, this.field_76647_h);
|
||||
@@ -241,7 +255,7 @@
|
||||
}
|
||||
|
||||
public BlockPos func_177440_h(BlockPos p_177440_1_)
|
||||
@@ -1064,7 +1073,7 @@
|
||||
@@ -1064,7 +1075,7 @@
|
||||
{
|
||||
BlockPos blockpos = this.field_177447_w.poll();
|
||||
|
||||
@@ -250,7 +264,7 @@
|
||||
{
|
||||
TileEntity tileentity = this.func_177422_i(blockpos);
|
||||
this.field_76637_e.func_175690_a(blockpos, tileentity);
|
||||
@@ -1128,6 +1137,13 @@
|
||||
@@ -1128,6 +1139,13 @@
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void func_186033_a(PacketBuffer p_186033_1_, int p_186033_2_, boolean p_186033_3_)
|
||||
{
|
||||
@@ -264,7 +278,7 @@
|
||||
boolean flag = this.field_76637_e.field_73011_w.func_191066_m();
|
||||
|
||||
for (int i = 0; i < this.field_76652_q.length; ++i)
|
||||
@@ -1176,10 +1192,16 @@
|
||||
@@ -1176,10 +1194,16 @@
|
||||
this.field_76646_k = true;
|
||||
this.func_76590_a();
|
||||
|
||||
@@ -281,7 +295,21 @@
|
||||
}
|
||||
|
||||
public Biome func_177411_a(BlockPos p_177411_1_, BiomeProvider p_177411_2_)
|
||||
@@ -1244,13 +1266,13 @@
|
||||
@@ -1190,7 +1214,12 @@
|
||||
|
||||
if (k == 255)
|
||||
{
|
||||
- Biome biome = p_177411_2_.func_180300_a(p_177411_1_, Biomes.field_76772_c);
|
||||
+ // Forge: checking for client ensures that biomes are only generated on integrated server
|
||||
+ // in singleplayer. Generating biomes on the client may corrupt the biome ID arrays on
|
||||
+ // the server while they are being generated because IntCache can't be thread safe,
|
||||
+ // so client and server may end up filling the same array.
|
||||
+ // This is not necessary in 1.13 and newer versions.
|
||||
+ Biome biome = field_76637_e.field_72995_K ? Biomes.field_76772_c : p_177411_2_.func_180300_a(p_177411_1_, Biomes.field_76772_c);
|
||||
k = Biome.func_185362_a(biome);
|
||||
this.field_76651_r[j << 4 | i] = (byte)(k & 255);
|
||||
}
|
||||
@@ -1244,13 +1273,13 @@
|
||||
BlockPos blockpos1 = blockpos.func_177982_a(k, (j << 4) + i1, l);
|
||||
boolean flag = i1 == 0 || i1 == 15 || k == 0 || k == 15 || l == 0 || l == 15;
|
||||
|
||||
@@ -297,7 +325,7 @@
|
||||
{
|
||||
this.field_76637_e.func_175664_x(blockpos2);
|
||||
}
|
||||
@@ -1381,7 +1403,7 @@
|
||||
@@ -1381,7 +1410,7 @@
|
||||
{
|
||||
blockpos$mutableblockpos.func_181079_c(blockpos$mutableblockpos.func_177958_n(), l, blockpos$mutableblockpos.func_177952_p());
|
||||
|
||||
@@ -306,7 +334,7 @@
|
||||
{
|
||||
this.field_76637_e.func_175664_x(blockpos$mutableblockpos);
|
||||
}
|
||||
@@ -1420,6 +1442,7 @@
|
||||
@@ -1420,6 +1449,7 @@
|
||||
else
|
||||
{
|
||||
System.arraycopy(p_177420_1_, 0, this.field_76634_f, 0, this.field_76634_f.length);
|
||||
@@ -314,7 +342,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1489,4 +1512,55 @@
|
||||
@@ -1489,4 +1519,55 @@
|
||||
QUEUED,
|
||||
CHECK;
|
||||
}
|
||||
|
||||
@@ -32,8 +32,11 @@
|
||||
ChunkPos chunkpos = new ChunkPos(p_75815_2_, p_75815_3_);
|
||||
NBTTagCompound nbttagcompound = this.field_75828_a.get(chunkpos);
|
||||
|
||||
@@ -67,7 +89,7 @@
|
||||
@@ -65,9 +87,10 @@
|
||||
}
|
||||
|
||||
nbttagcompound = this.field_193416_e.func_188257_a(FixTypes.CHUNK, CompressedStreamTools.func_74794_a(datainputstream));
|
||||
+ datainputstream.close(); // Forge: close stream after use
|
||||
}
|
||||
|
||||
- return this.func_75822_a(p_75815_1_, p_75815_2_, p_75815_3_, nbttagcompound);
|
||||
@@ -41,7 +44,7 @@
|
||||
}
|
||||
|
||||
public boolean func_191063_a(int p_191063_1_, int p_191063_2_)
|
||||
@@ -80,6 +102,13 @@
|
||||
@@ -80,6 +103,13 @@
|
||||
@Nullable
|
||||
protected Chunk func_75822_a(World p_75822_1_, int p_75822_2_, int p_75822_3_, NBTTagCompound p_75822_4_)
|
||||
{
|
||||
@@ -55,7 +58,7 @@
|
||||
if (!p_75822_4_.func_150297_b("Level", 10))
|
||||
{
|
||||
field_151505_a.error("Chunk file at {},{} is missing level data, skipping", Integer.valueOf(p_75822_2_), Integer.valueOf(p_75822_3_));
|
||||
@@ -103,10 +132,29 @@
|
||||
@@ -103,10 +133,29 @@
|
||||
field_151505_a.error("Chunk file at {},{} is in the wrong location; relocating. (Expected {}, {}, got {}, {})", Integer.valueOf(p_75822_2_), Integer.valueOf(p_75822_3_), Integer.valueOf(p_75822_2_), Integer.valueOf(p_75822_3_), Integer.valueOf(chunk.field_76635_g), Integer.valueOf(chunk.field_76647_h));
|
||||
nbttagcompound.func_74768_a("xPos", p_75822_2_);
|
||||
nbttagcompound.func_74768_a("zPos", p_75822_3_);
|
||||
@@ -86,7 +89,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -121,7 +169,10 @@
|
||||
@@ -121,7 +170,10 @@
|
||||
NBTTagCompound nbttagcompound1 = new NBTTagCompound();
|
||||
nbttagcompound.func_74782_a("Level", nbttagcompound1);
|
||||
nbttagcompound.func_74768_a("DataVersion", 1343);
|
||||
@@ -97,7 +100,7 @@
|
||||
this.func_75824_a(p_75816_2_.func_76632_l(), nbttagcompound);
|
||||
}
|
||||
catch (Exception exception)
|
||||
@@ -305,11 +356,19 @@
|
||||
@@ -305,11 +357,19 @@
|
||||
{
|
||||
NBTTagCompound nbttagcompound2 = new NBTTagCompound();
|
||||
|
||||
@@ -117,7 +120,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -318,8 +377,16 @@
|
||||
@@ -318,8 +378,16 @@
|
||||
|
||||
for (TileEntity tileentity : p_75820_1_.func_177434_r().values())
|
||||
{
|
||||
@@ -134,7 +137,7 @@
|
||||
}
|
||||
|
||||
p_75820_3_.func_74782_a("TileEntities", nbttaglist2);
|
||||
@@ -345,6 +412,18 @@
|
||||
@@ -345,6 +413,18 @@
|
||||
|
||||
p_75820_3_.func_74782_a("TileTicks", nbttaglist3);
|
||||
}
|
||||
@@ -153,7 +156,7 @@
|
||||
}
|
||||
|
||||
private Chunk func_75823_a(World p_75823_1_, NBTTagCompound p_75823_2_)
|
||||
@@ -388,6 +467,16 @@
|
||||
@@ -388,6 +468,16 @@
|
||||
chunk.func_76616_a(p_75823_2_.func_74770_j("Biomes"));
|
||||
}
|
||||
|
||||
@@ -170,7 +173,7 @@
|
||||
NBTTagList nbttaglist1 = p_75823_2_.func_150295_c("Entities", 10);
|
||||
|
||||
for (int j1 = 0; j1 < nbttaglist1.func_74745_c(); ++j1)
|
||||
@@ -431,8 +520,6 @@
|
||||
@@ -431,8 +521,6 @@
|
||||
p_75823_1_.func_180497_b(new BlockPos(nbttagcompound3.func_74762_e("x"), nbttagcompound3.func_74762_e("y"), nbttagcompound3.func_74762_e("z")), block, nbttagcompound3.func_74762_e("t"), nbttagcompound3.func_74762_e("p"));
|
||||
}
|
||||
}
|
||||
@@ -179,7 +182,7 @@
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -563,4 +650,9 @@
|
||||
@@ -563,4 +651,9 @@
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,44 @@
|
||||
--- ../src-base/minecraft/net/minecraft/world/chunk/storage/RegionFile.java
|
||||
+++ ../src-work/minecraft/net/minecraft/world/chunk/storage/RegionFile.java
|
||||
@@ -95,6 +95,12 @@
|
||||
@@ -19,6 +19,9 @@
|
||||
|
||||
public class RegionFile
|
||||
{
|
||||
+ // Minecraft is limited to 256 sections per chunk. So 1MB. This can easily be override.
|
||||
+ // So we extend this to use the REAL size when the count is maxed by seeking to that section and reading the length.
|
||||
+ private static final boolean FORGE_ENABLE_EXTENDED_SAVE = Boolean.parseBoolean(System.getProperty("forge.enableExtendedSave", "true"));
|
||||
private static final byte[] field_76720_a = new byte[4096];
|
||||
private final File field_76718_b;
|
||||
private RandomAccessFile field_76719_c;
|
||||
@@ -74,13 +77,25 @@
|
||||
int k = this.field_76719_c.readInt();
|
||||
this.field_76716_d[j1] = k;
|
||||
|
||||
- if (k != 0 && (k >> 8) + (k & 255) <= this.field_76714_f.size())
|
||||
+ int length = k & 255;
|
||||
+ if (length == 255)
|
||||
{
|
||||
- for (int l = 0; l < (k & 255); ++l)
|
||||
+ if ((k >> 8) <= this.field_76714_f.size())
|
||||
+ { // We're maxed out, so we need to read the proper length from the section
|
||||
+ this.field_76719_c.seek((k >> 8) * 4096);
|
||||
+ length = (this.field_76719_c.readInt() + 4)/ 4096 + 1;
|
||||
+ this.field_76719_c.seek(j1 * 4 + 4); //Go back to where we were
|
||||
+ }
|
||||
+ }
|
||||
+ if (k != 0 && (k >> 8) + length <= this.field_76714_f.size())
|
||||
+ {
|
||||
+ for (int l = 0; l < length; ++l)
|
||||
{
|
||||
this.field_76714_f.set((k >> 8) + l, Boolean.valueOf(false));
|
||||
}
|
||||
}
|
||||
+ else if (length > 0)
|
||||
+ net.minecraftforge.fml.common.FMLLog.log.warn("Invalid chunk: ({}, {}) Offset: {} Length: {} runs off end file. {}", j1 % 32, (int)(j1 / 32), k >> 8, length, p_i2001_1_);
|
||||
}
|
||||
|
||||
for (int k1 = 0; k1 < 1024; ++k1)
|
||||
@@ -95,6 +110,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,3 +51,65 @@
|
||||
@Nullable
|
||||
|
||||
public synchronized DataInputStream func_76704_a(int p_76704_1_, int p_76704_2_)
|
||||
@@ -117,6 +138,11 @@
|
||||
{
|
||||
int j = i >> 8;
|
||||
int k = i & 255;
|
||||
+ if (k == 255)
|
||||
+ {
|
||||
+ this.field_76719_c.seek(j * 4096);
|
||||
+ k = (this.field_76719_c.readInt() + 4) / 4096 + 1;
|
||||
+ }
|
||||
|
||||
if (j + k > this.field_76714_f.size())
|
||||
{
|
||||
@@ -129,10 +155,12 @@
|
||||
|
||||
if (l > 4096 * k)
|
||||
{
|
||||
+ net.minecraftforge.fml.common.FMLLog.log.warn("Invalid chunk: ({}, {}) Offset: {} Invalid Size: {}>{} {}", p_76704_1_, p_76704_2_, j, l, k * 4096, field_76718_b);
|
||||
return null;
|
||||
}
|
||||
else if (l <= 0)
|
||||
{
|
||||
+ net.minecraftforge.fml.common.FMLLog.log.warn("Invalid chunk: ({}, {}) Offset: {} Invalid Size: {} {}", p_76704_1_, p_76704_2_, j, l, field_76718_b);
|
||||
return null;
|
||||
}
|
||||
else
|
||||
@@ -179,11 +207,17 @@
|
||||
int i = this.func_76707_e(p_76706_1_, p_76706_2_);
|
||||
int j = i >> 8;
|
||||
int k = i & 255;
|
||||
+ if (k == 255)
|
||||
+ {
|
||||
+ this.field_76719_c.seek(j * 4096);
|
||||
+ k = (this.field_76719_c.readInt() + 4) / 4096 + 1;
|
||||
+ }
|
||||
int l = (p_76706_4_ + 5) / 4096 + 1;
|
||||
|
||||
if (l >= 256)
|
||||
{
|
||||
- return;
|
||||
+ if (!FORGE_ENABLE_EXTENDED_SAVE) return;
|
||||
+ net.minecraftforge.fml.common.FMLLog.log.warn("Large Chunk Detected: ({}, {}) Size: {} {}", p_76706_1_, p_76706_2_, l, field_76718_b);
|
||||
}
|
||||
|
||||
if (j != 0 && k == l)
|
||||
@@ -231,7 +265,7 @@
|
||||
if (j1 >= l)
|
||||
{
|
||||
j = l1;
|
||||
- this.func_76711_a(p_76706_1_, p_76706_2_, l1 << 8 | l);
|
||||
+ this.func_76711_a(p_76706_1_, p_76706_2_, l1 << 8 | (l > 255 ? 255 : l));
|
||||
|
||||
for (int j2 = 0; j2 < l; ++j2)
|
||||
{
|
||||
@@ -253,7 +287,7 @@
|
||||
|
||||
this.field_76715_g += 4096 * l;
|
||||
this.func_76712_a(j, p_76706_3_, p_76706_4_);
|
||||
- this.func_76711_a(p_76706_1_, p_76706_2_, j << 8 | l);
|
||||
+ this.func_76711_a(p_76706_1_, p_76706_2_, j << 8 | (l > 255 ? 255 : l));
|
||||
}
|
||||
}
|
||||
|
||||
+5
-3
@@ -52,24 +52,26 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1770,7 +1780,6 @@
|
||||
@@ -1770,7 +1780,7 @@
|
||||
EntityZombieVillager entityzombievillager = new EntityZombieVillager(p_74893_1_);
|
||||
entityzombievillager.func_70012_b((double)j + 0.5D, (double)k, (double)l + 0.5D, 0.0F, 0.0F);
|
||||
entityzombievillager.func_180482_a(p_74893_1_.func_175649_E(new BlockPos(entityzombievillager)), (IEntityLivingData)null);
|
||||
- entityzombievillager.func_190733_a(this.func_180779_c(i, 0));
|
||||
+ entityzombievillager.setForgeProfession(this.chooseForgeProfession(i, net.minecraftforge.fml.common.registry.VillagerRegistry.FARMER));
|
||||
entityzombievillager.func_110163_bv();
|
||||
p_74893_1_.func_72838_d(entityzombievillager);
|
||||
}
|
||||
@@ -1778,7 +1787,7 @@
|
||||
@@ -1778,7 +1788,8 @@
|
||||
{
|
||||
EntityVillager entityvillager = new EntityVillager(p_74893_1_);
|
||||
entityvillager.func_70012_b((double)j + 0.5D, (double)k, (double)l + 0.5D, 0.0F, 0.0F);
|
||||
- entityvillager.func_70938_b(this.func_180779_c(i, p_74893_1_.field_73012_v.nextInt(6)));
|
||||
+ net.minecraftforge.fml.common.registry.VillagerRegistry.setRandomProfession(entityvillager, p_74893_1_.field_73012_v);
|
||||
+ entityvillager.setProfession(this.chooseForgeProfession(i, entityvillager.getProfessionForge()));
|
||||
entityvillager.func_190672_a(p_74893_1_.func_175649_E(new BlockPos(entityvillager)), (IEntityLivingData)null, false);
|
||||
p_74893_1_.func_72838_d(entityvillager);
|
||||
}
|
||||
@@ -1786,13 +1795,21 @@
|
||||
@@ -1786,13 +1797,21 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+9
-1
@@ -1 +1,9 @@
|
||||
rootProject.name = 'forge'
|
||||
rootProject.name = 'forge'
|
||||
|
||||
include ':mcp'
|
||||
include ':clean'
|
||||
include ':forge'
|
||||
|
||||
project(":mcp").projectDir = file("projects/mcp")
|
||||
project(":clean").projectDir = file("projects/clean")
|
||||
project(":forge").projectDir = file("projects/forge")
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Minecraft Forge
|
||||
* Copyright (c) 2016-2018.
|
||||
* Copyright (c) 2016-2020.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Minecraft Forge
|
||||
* Copyright (c) 2016-2018.
|
||||
* Copyright (c) 2016-2020.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Minecraft Forge
|
||||
* Copyright (c) 2016-2018.
|
||||
* Copyright (c) 2016-2020.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Minecraft Forge
|
||||
* Copyright (c) 2016-2018.
|
||||
* Copyright (c) 2016-2020.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Minecraft Forge
|
||||
* Copyright (c) 2016-2018.
|
||||
* Copyright (c) 2016-2020.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
||||
Loaded 100 of 963 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user