mirror of
https://github.com/MinecraftForge/MinecraftForge
synced 2026-08-22 04:26:10 -04:00
Minecraft 1.21.4
This commit is contained in:
parent
e643d0a11f
commit
041084d1da
219 changed files with 1841 additions and 2621 deletions
|
|
@ -6,14 +6,13 @@
|
|||
package net.minecraftforge.fml.loading;
|
||||
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
public class BackgroundWaiter {
|
||||
private static final ExecutorService runner = Executors.newSingleThreadExecutor();
|
||||
|
||||
public static void runAndTick(Runnable r, Runnable tick) {
|
||||
var runner = Executors.newSingleThreadExecutor();
|
||||
ImmediateWindowHandler.updateProgress("Loading bootstrap resources");
|
||||
final Future<?> work = runner.submit(r);
|
||||
do {
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ public abstract class CommonLaunchHandler implements ILaunchHandlerService {
|
|||
|
||||
protected record LaunchType(String name, String module, String main, Dist dist, boolean data) {};
|
||||
protected static final LaunchType CLIENT = new LaunchType("client", "minecraft", "net.minecraft.client.main.Main", Dist.CLIENT, false);
|
||||
protected static final LaunchType CLIENT_DATA = new LaunchType("client_data", "minecraft", "net.minecraft.client.data.Main", Dist.CLIENT, true);
|
||||
protected static final LaunchType DATA = new LaunchType("data", "minecraft", "net.minecraft.data.Main", Dist.CLIENT, true);
|
||||
protected static final LaunchType SERVER = new LaunchType("server", "minecraft", "net.minecraft.server.Main", Dist.DEDICATED_SERVER, false);
|
||||
protected static final LaunchType SERVER_GAMETEST = new LaunchType("server_gametest", "net.minecraftforge.forge", "net.minecraftforge.gametest.GameTestMain", Dist.DEDICATED_SERVER, false);
|
||||
|
|
|
|||
|
|
@ -39,6 +39,12 @@ sealed abstract class ForgeDevLaunchHandler extends CommonDevLaunchHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public static final class ClientData extends ForgeDevLaunchHandler {
|
||||
public ClientData() {
|
||||
super(CLIENT_DATA);
|
||||
}
|
||||
}
|
||||
|
||||
public static final class Data extends ForgeDevLaunchHandler {
|
||||
public Data() {
|
||||
super(DATA);
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ org.gradle.daemon=false
|
|||
org.gradle.parallel=true
|
||||
|
||||
JAVA_VERSION=21
|
||||
MC_VERSION=1.21.3
|
||||
MC_VERSION=1.21.4
|
||||
MC_NEXT_VERSION=1.22
|
||||
MCP_VERSION=20241025.112443
|
||||
MCP_VERSION=20241203.143248
|
||||
MAPPING_CHANNEL=official
|
||||
MAPPING_VERSION=1.21.3
|
||||
MAPPING_VERSION=1.21.4
|
||||
|
||||
// Set to true before the first build of a new MC version, so we don't do compatibility checks
|
||||
CHECK_COMPATIBILITY=false
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/com/mojang/blaze3d/platform/Window.java
|
||||
+++ b/com/mojang/blaze3d/platform/Window.java
|
||||
@@ -88,7 +_,8 @@
|
||||
@@ -89,7 +_,8 @@
|
||||
GLFW.glfwWindowHint(139267, 2);
|
||||
GLFW.glfwWindowHint(139272, 204801);
|
||||
GLFW.glfwWindowHint(139270, 1);
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
if (monitor != null) {
|
||||
VideoMode videomode = monitor.getPreferredVidMode(this.fullscreen ? this.preferredFullscreenVideoMode : Optional.empty());
|
||||
this.windowedX = this.x = monitor.getX() + videomode.getWidth() / 2 - this.width / 2;
|
||||
@@ -100,6 +_,7 @@
|
||||
@@ -101,6 +_,7 @@
|
||||
this.windowedX = this.x = aint1[0];
|
||||
this.windowedY = this.y = aint[0];
|
||||
}
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
GLFW.glfwMakeContextCurrent(this.window);
|
||||
GL.createCapabilities();
|
||||
@@ -267,6 +_,9 @@
|
||||
@@ -271,6 +_,9 @@
|
||||
GLFW.glfwGetFramebufferSize(this.window, aint, aint1);
|
||||
this.framebufferWidth = aint[0] > 0 ? aint[0] : 1;
|
||||
this.framebufferHeight = aint1[0] > 0 ? aint1[0] : 1;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/Util.java
|
||||
+++ b/net/minecraft/Util.java
|
||||
@@ -264,7 +_,7 @@
|
||||
@@ -268,7 +_,7 @@
|
||||
.getSchema(DataFixUtils.makeKey(SharedConstants.getCurrentVersion().getDataVersion().getVersion()))
|
||||
.getChoiceType(p_137552_, p_137553_);
|
||||
} catch (IllegalArgumentException illegalargumentexception) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/KeyMapping.java
|
||||
+++ b/net/minecraft/client/KeyMapping.java
|
||||
@@ -14,9 +_,9 @@
|
||||
@@ -15,9 +_,9 @@
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
private static final Set<String> CATEGORIES = Sets.newHashSet();
|
||||
public static final String CATEGORY_MOVEMENT = "key.categories.movement";
|
||||
public static final String CATEGORY_MISC = "key.categories.misc";
|
||||
@@ -42,14 +_,14 @@
|
||||
@@ -43,14 +_,14 @@
|
||||
private int clickCount;
|
||||
|
||||
public static void click(InputConstants.Key p_90836_) {
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
if (keymapping != null) {
|
||||
keymapping.setDown(p_90839_);
|
||||
}
|
||||
@@ -100,7 +_,7 @@
|
||||
@@ -101,7 +_,7 @@
|
||||
}
|
||||
|
||||
public boolean isDown() {
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
}
|
||||
|
||||
public String getCategory() {
|
||||
@@ -136,7 +_,16 @@
|
||||
@@ -137,7 +_,16 @@
|
||||
public int compareTo(KeyMapping p_90841_) {
|
||||
return this.category.equals(p_90841_.category)
|
||||
? I18n.get(this.name).compareTo(I18n.get(p_90841_.name))
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
}
|
||||
|
||||
public static Supplier<Component> createNameSupplier(String p_90843_) {
|
||||
@@ -145,6 +_,20 @@
|
||||
@@ -146,6 +_,20 @@
|
||||
}
|
||||
|
||||
public boolean same(KeyMapping p_90851_) {
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
return this.key.equals(p_90851_.key);
|
||||
}
|
||||
|
||||
@@ -163,11 +_,13 @@
|
||||
@@ -164,11 +_,13 @@
|
||||
}
|
||||
|
||||
public Component getTranslatedKeyMessage() {
|
||||
|
|
@ -92,10 +92,10 @@
|
|||
}
|
||||
|
||||
public String saveString() {
|
||||
@@ -176,5 +_,88 @@
|
||||
|
||||
public void setDown(boolean p_90846_) {
|
||||
this.isDown = p_90846_;
|
||||
@@ -182,5 +_,88 @@
|
||||
@Nullable
|
||||
public static KeyMapping get(String p_378660_) {
|
||||
return ALL.get(p_378660_);
|
||||
+ }
|
||||
+
|
||||
+ private net.minecraftforge.client.settings.KeyModifier keyModifierDefault = net.minecraftforge.client.settings.KeyModifier.NONE;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/Minecraft.java
|
||||
+++ b/net/minecraft/client/Minecraft.java
|
||||
@@ -253,7 +_,7 @@
|
||||
@@ -250,7 +_,7 @@
|
||||
import org.slf4j.Logger;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
static Minecraft instance;
|
||||
private static final Logger LOGGER = LogUtils.getLogger();
|
||||
public static final boolean ON_OSX = Util.getPlatform() == Util.OS.OSX;
|
||||
@@ -433,7 +_,6 @@
|
||||
@@ -428,7 +_,6 @@
|
||||
}
|
||||
}, Util.nonCriticalIoPool());
|
||||
LOGGER.info("Setting user: {}", this.user.getName());
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
this.demo = p_91084_.game.demo;
|
||||
this.allowsMultiplayer = !p_91084_.game.disableMultiplayer;
|
||||
this.allowsChat = !p_91084_.game.disableChat;
|
||||
@@ -480,15 +_,15 @@
|
||||
@@ -475,15 +_,15 @@
|
||||
LOGGER.error("Couldn't set icon", (Throwable)ioexception);
|
||||
}
|
||||
|
||||
|
|
@ -35,15 +35,15 @@
|
|||
this.resourcePackRepository.reload();
|
||||
this.options.loadSelectedResourcePacks(this.resourcePackRepository);
|
||||
this.languageManager = new LanguageManager(this.options.languageCode, p_340763_ -> {
|
||||
@@ -562,6 +_,7 @@
|
||||
);
|
||||
this.resourceManager.registerReloadListener(this.entityRenderDispatcher);
|
||||
@@ -561,6 +_,7 @@
|
||||
this.blockEntityRenderDispatcher = new BlockEntityRenderDispatcher(this.font, this.modelManager.entityModels(), this.blockRenderer, this.itemModelResolver, this.itemRenderer, this.entityRenderDispatcher);
|
||||
this.resourceManager.registerReloadListener(this.blockEntityRenderDispatcher);
|
||||
this.particleEngine = new ParticleEngine(this.level, this.textureManager);
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onRegisterParticleProviders(this.particleEngine);
|
||||
this.resourceManager.registerReloadListener(this.particleEngine);
|
||||
this.paintingTextures = new PaintingTextureManager(this.textureManager);
|
||||
this.resourceManager.registerReloadListener(this.paintingTextures);
|
||||
@@ -577,6 +_,9 @@
|
||||
@@ -576,6 +_,9 @@
|
||||
this.resourceManager.registerReloadListener(this.gpuWarnlistManager);
|
||||
this.resourceManager.registerReloadListener(this.regionalCompliancies);
|
||||
this.gui = new Gui(this);
|
||||
|
|
@ -53,7 +53,7 @@
|
|||
this.debugRenderer = new DebugRenderer(this);
|
||||
RealmsClient realmsclient = RealmsClient.create(this);
|
||||
this.realmsDataFetcher = new RealmsDataFetcher(realmsclient);
|
||||
@@ -600,6 +_,7 @@
|
||||
@@ -599,6 +_,7 @@
|
||||
this.options.fullscreen().set(this.window.isFullscreen());
|
||||
}
|
||||
|
||||
|
|
@ -157,7 +157,7 @@
|
|||
}
|
||||
|
||||
profilerfiller.push("blit");
|
||||
@@ -1339,10 +_,12 @@
|
||||
@@ -1342,10 +_,12 @@
|
||||
this.window.setGuiScale((double)i);
|
||||
if (this.screen != null) {
|
||||
this.screen.resize(this, this.window.getGuiScaledWidth(), this.window.getGuiScaledHeight());
|
||||
|
|
@ -170,7 +170,7 @@
|
|||
this.gameRenderer.resize(this.window.getWidth(), this.window.getHeight());
|
||||
this.mouseHandler.setIgnoreFirstMove();
|
||||
}
|
||||
@@ -1483,6 +_,7 @@
|
||||
@@ -1486,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
|
|
@ -178,7 +178,7 @@
|
|||
this.running = false;
|
||||
}
|
||||
|
||||
@@ -1511,10 +_,18 @@
|
||||
@@ -1514,10 +_,18 @@
|
||||
if (p_91387_ && this.hitResult != null && this.hitResult.getType() == HitResult.Type.BLOCK) {
|
||||
BlockHitResult blockhitresult = (BlockHitResult)this.hitResult;
|
||||
BlockPos blockpos = blockhitresult.getBlockPos();
|
||||
|
|
@ -200,7 +200,7 @@
|
|||
this.player.swing(InteractionHand.MAIN_HAND);
|
||||
}
|
||||
}
|
||||
@@ -1542,6 +_,8 @@
|
||||
@@ -1545,6 +_,8 @@
|
||||
return false;
|
||||
} else {
|
||||
boolean flag = false;
|
||||
|
|
@ -209,7 +209,7 @@
|
|||
switch (this.hitResult.getType()) {
|
||||
case ENTITY:
|
||||
this.gameMode.attack(this.player, ((EntityHitResult)this.hitResult).getEntity());
|
||||
@@ -1549,7 +_,7 @@
|
||||
@@ -1552,7 +_,7 @@
|
||||
case BLOCK:
|
||||
BlockHitResult blockhitresult = (BlockHitResult)this.hitResult;
|
||||
BlockPos blockpos = blockhitresult.getBlockPos();
|
||||
|
|
@ -218,7 +218,7 @@
|
|||
this.gameMode.startDestroyBlock(blockpos, blockhitresult.getDirection());
|
||||
if (this.level.getBlockState(blockpos).isAir()) {
|
||||
flag = true;
|
||||
@@ -1562,8 +_,10 @@
|
||||
@@ -1565,8 +_,10 @@
|
||||
}
|
||||
|
||||
this.player.resetAttackStrengthTicker();
|
||||
|
|
@ -229,7 +229,7 @@
|
|||
this.player.swing(InteractionHand.MAIN_HAND);
|
||||
return flag;
|
||||
}
|
||||
@@ -1579,6 +_,12 @@
|
||||
@@ -1582,6 +_,12 @@
|
||||
}
|
||||
|
||||
for (InteractionHand interactionhand : InteractionHand.values()) {
|
||||
|
|
@ -242,7 +242,7 @@
|
|||
ItemStack itemstack = this.player.getItemInHand(interactionhand);
|
||||
if (!itemstack.isItemEnabled(this.level.enabledFeatures())) {
|
||||
return;
|
||||
@@ -1599,7 +_,7 @@
|
||||
@@ -1602,7 +_,7 @@
|
||||
}
|
||||
|
||||
if (interactionresult instanceof InteractionResult.Success interactionresult$success2) {
|
||||
|
|
@ -251,7 +251,7 @@
|
|||
this.player.swing(interactionhand);
|
||||
}
|
||||
|
||||
@@ -1611,7 +_,7 @@
|
||||
@@ -1614,7 +_,7 @@
|
||||
int i = itemstack.getCount();
|
||||
InteractionResult interactionresult1 = this.gameMode.useItemOn(this.player, interactionhand, blockhitresult);
|
||||
if (interactionresult1 instanceof InteractionResult.Success interactionresult$success) {
|
||||
|
|
@ -260,7 +260,7 @@
|
|||
this.player.swing(interactionhand);
|
||||
if (!itemstack.isEmpty() && (itemstack.getCount() != i || this.gameMode.hasInfiniteItems())) {
|
||||
this.gameRenderer.itemInHandRenderer.itemUsed(interactionhand);
|
||||
@@ -1627,6 +_,9 @@
|
||||
@@ -1630,6 +_,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -270,7 +270,7 @@
|
|||
if (!itemstack.isEmpty()
|
||||
&& this.gameMode.useItem(this.player, interactionhand) instanceof InteractionResult.Success interactionresult$success1) {
|
||||
if (interactionresult$success1.swingSource() == InteractionResult.SwingSource.CLIENT) {
|
||||
@@ -1656,6 +_,8 @@
|
||||
@@ -1659,6 +_,8 @@
|
||||
}
|
||||
|
||||
ProfilerFiller profilerfiller = Profiler.get();
|
||||
|
|
@ -279,7 +279,7 @@
|
|||
profilerfiller.push("gui");
|
||||
this.chatListener.tick();
|
||||
this.gui.tick(this.pause);
|
||||
@@ -1745,6 +_,7 @@
|
||||
@@ -1748,6 +_,7 @@
|
||||
|
||||
this.tutorial.tick();
|
||||
|
||||
|
|
@ -287,7 +287,7 @@
|
|||
try {
|
||||
this.level.tick(() -> true);
|
||||
} catch (Throwable throwable1) {
|
||||
@@ -1758,6 +_,7 @@
|
||||
@@ -1761,6 +_,7 @@
|
||||
|
||||
throw new ReportedException(crashreport1);
|
||||
}
|
||||
|
|
@ -295,7 +295,7 @@
|
|||
}
|
||||
|
||||
profilerfiller.popPush("animateTick");
|
||||
@@ -1782,6 +_,7 @@
|
||||
@@ -1785,6 +_,7 @@
|
||||
profilerfiller.popPush("keyboard");
|
||||
this.keyboardHandler.tick();
|
||||
profilerfiller.pop();
|
||||
|
|
@ -303,7 +303,7 @@
|
|||
}
|
||||
|
||||
private boolean isLevelRunningNormally() {
|
||||
@@ -1983,6 +_,7 @@
|
||||
@@ -1986,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void setLevel(ClientLevel p_91157_, ReceivingLevelScreen.Reason p_335893_) {
|
||||
|
|
@ -311,7 +311,7 @@
|
|||
this.updateScreenAndTick(new ReceivingLevelScreen(() -> false, p_335893_));
|
||||
this.level = p_91157_;
|
||||
this.updateLevelInEngines(p_91157_);
|
||||
@@ -2020,6 +_,7 @@
|
||||
@@ -2023,6 +_,7 @@
|
||||
IntegratedServer integratedserver = this.singleplayerServer;
|
||||
this.singleplayerServer = null;
|
||||
this.gameRenderer.resetData();
|
||||
|
|
@ -319,7 +319,7 @@
|
|||
this.gameMode = null;
|
||||
this.narrator.clear();
|
||||
this.clientLevelTeardownInProgress = true;
|
||||
@@ -2027,6 +_,7 @@
|
||||
@@ -2030,6 +_,7 @@
|
||||
try {
|
||||
this.updateScreenAndTick(p_335030_);
|
||||
if (this.level != null) {
|
||||
|
|
@ -327,7 +327,7 @@
|
|||
if (integratedserver != null) {
|
||||
ProfilerFiller profilerfiller = Profiler.get();
|
||||
profilerfiller.push("waitForServer");
|
||||
@@ -2040,6 +_,7 @@
|
||||
@@ -2043,6 +_,7 @@
|
||||
|
||||
this.gui.onDisconnected();
|
||||
this.isLocalServer = false;
|
||||
|
|
@ -335,40 +335,11 @@
|
|||
}
|
||||
|
||||
this.level = null;
|
||||
@@ -2187,6 +_,7 @@
|
||||
@@ -2190,6 +_,7 @@
|
||||
|
||||
private void pickBlock() {
|
||||
if (this.hitResult != null && this.hitResult.getType() != HitResult.Type.MISS) {
|
||||
+ if (net.minecraftforge.client.event.ForgeEventFactoryClient.onClickInput(2, this.options.keyPickItem, InteractionHand.MAIN_HAND).isCanceled()) return;
|
||||
boolean flag = this.player.getAbilities().instabuild;
|
||||
BlockEntity blockentity = null;
|
||||
HitResult.Type hitresult$type = this.hitResult.getType();
|
||||
@@ -2199,7 +_,7 @@
|
||||
}
|
||||
|
||||
Block block = blockstate.getBlock();
|
||||
- itemstack = block.getCloneItemStack(this.level, blockpos, blockstate);
|
||||
+ itemstack = blockstate.getCloneItemStack(this.hitResult, this.level, blockpos, this.player);
|
||||
if (itemstack.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
@@ -2213,7 +_,7 @@
|
||||
}
|
||||
|
||||
Entity entity = ((EntityHitResult)this.hitResult).getEntity();
|
||||
- itemstack = entity.getPickResult();
|
||||
+ itemstack = entity.getPickedResult(this.hitResult);
|
||||
if (itemstack == null) {
|
||||
return;
|
||||
}
|
||||
@@ -2818,6 +_,10 @@
|
||||
@Nullable
|
||||
public static String getLauncherBrand() {
|
||||
return System.getProperty("minecraft.launcher.brand");
|
||||
+ }
|
||||
+
|
||||
+ public ItemColors getItemColors() {
|
||||
+ return this.itemColors;
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
boolean flag = Screen.hasControlDown();
|
||||
HitResult hitresult = this.hitResult;
|
||||
Objects.requireNonNull(this.hitResult);
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
--- a/net/minecraft/client/color/block/BlockColors.java
|
||||
+++ b/net/minecraft/client/color/block/BlockColors.java
|
||||
@@ -29,7 +_,8 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class BlockColors {
|
||||
@@ -30,7 +_,8 @@
|
||||
private static final int DEFAULT = -1;
|
||||
public static final int LILY_PAD_IN_WORLD = -14647248;
|
||||
public static final int LILY_PAD_DEFAULT = -9321636;
|
||||
- private final IdMapper<BlockColor> blockColors = new IdMapper<>(32);
|
||||
+ // Forge: Use registry delegate as non-Vanilla block ids are not constant
|
||||
+ private final java.util.Map<net.minecraft.core.Holder.Reference<Block>, BlockColor> blockColors = new java.util.HashMap<>(32);
|
||||
private final Map<Block, Set<Property<?>>> coloringStates = Maps.newHashMap();
|
||||
|
||||
public static BlockColors createDefault() {
|
||||
@@ -91,11 +_,12 @@
|
||||
@@ -90,11 +_,12 @@
|
||||
}, Blocks.MELON_STEM, Blocks.PUMPKIN_STEM);
|
||||
blockcolors.addColoringState(StemBlock.AGE, Blocks.MELON_STEM, Blocks.PUMPKIN_STEM);
|
||||
blockcolors.register((p_92596_, p_92597_, p_92598_, p_92599_) -> p_92597_ != null && p_92598_ != null ? -14647248 : -9321636, Blocks.LILY_PAD);
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
if (blockcolor != null) {
|
||||
return blockcolor.getColor(p_92583_, null, null, 0);
|
||||
} else {
|
||||
@@ -105,13 +_,15 @@
|
||||
@@ -104,13 +_,15 @@
|
||||
}
|
||||
|
||||
public int getColor(BlockState p_92578_, @Nullable BlockAndTintGetter p_92579_, @Nullable BlockPos p_92580_, int p_92581_) {
|
||||
|
|
|
|||
|
|
@ -1,35 +0,0 @@
|
|||
--- a/net/minecraft/client/color/item/ItemColors.java
|
||||
+++ b/net/minecraft/client/color/item/ItemColors.java
|
||||
@@ -26,7 +_,8 @@
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class ItemColors {
|
||||
private static final int DEFAULT = -1;
|
||||
- private final IdMapper<ItemColor> itemColors = new IdMapper<>(32);
|
||||
+ // Forge: Use registry delegate as non-Vanilla item ids are not constant
|
||||
+ private final java.util.Map<net.minecraft.core.Holder.Reference<Item>, ItemColor> itemColors = new java.util.HashMap<>(32);
|
||||
|
||||
public static ItemColors createDefault(BlockColors p_92684_) {
|
||||
ItemColors itemcolors = new ItemColors();
|
||||
@@ -101,17 +_,20 @@
|
||||
(p_357654_, p_357655_) -> p_357655_ == 0 ? -1 : ARGB.opaque(p_357654_.getOrDefault(DataComponents.MAP_COLOR, MapItemColor.DEFAULT).rgb()),
|
||||
Items.FILLED_MAP
|
||||
);
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onItemColorsInit(itemcolors, p_92684_);
|
||||
return itemcolors;
|
||||
}
|
||||
|
||||
public int getColor(ItemStack p_92677_, int p_92678_) {
|
||||
- ItemColor itemcolor = this.itemColors.byId(BuiltInRegistries.ITEM.getId(p_92677_.getItem()));
|
||||
+ ItemColor itemcolor = this.itemColors.get(net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(p_92677_.getItem()));
|
||||
return itemcolor == null ? -1 : itemcolor.getColor(p_92677_, p_92678_);
|
||||
}
|
||||
|
||||
+ /** @deprecated Register via {@link net.minecraftforge.client.event.RegisterColorHandlersEvent.Item} */
|
||||
+ @Deprecated
|
||||
public void register(ItemColor p_92690_, ItemLike... p_92691_) {
|
||||
for (ItemLike itemlike : p_92691_) {
|
||||
- this.itemColors.addMapping(p_92690_, Item.getId(itemlike.asItem()));
|
||||
+ this.itemColors.put(net.minecraftforge.registries.ForgeRegistries.ITEMS.getDelegateOrThrow(itemlike.asItem()), p_92690_);
|
||||
}
|
||||
}
|
||||
}
|
||||
22
patches/minecraft/net/minecraft/client/data/Main.java.patch
Normal file
22
patches/minecraft/net/minecraft/client/data/Main.java.patch
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
--- a/net/minecraft/client/data/Main.java
|
||||
+++ b/net/minecraft/client/data/Main.java
|
||||
@@ -30,13 +_,18 @@
|
||||
OptionSpec<Void> optionspec1 = optionparser.accepts("client", "Include client generators");
|
||||
OptionSpec<Void> optionspec2 = optionparser.accepts("all", "Include all generators");
|
||||
OptionSpec<String> optionspec3 = optionparser.accepts("output", "Output folder").withRequiredArg().defaultsTo("generated");
|
||||
+ OptionSpec<String> inputSpec = optionparser.accepts("input", "Input folder").withRequiredArg();
|
||||
+ var loader = net.minecraftforge.data.loading.DatagenModLoader.setup(optionparser, true);
|
||||
OptionSet optionset = optionparser.parse(p_375526_);
|
||||
- if (!optionset.has(optionspec) && optionset.hasOptions()) {
|
||||
+ if (!optionset.has(optionspec) && optionset.hasOptions() && loader.hasArgs(optionset)) {
|
||||
+ var input = optionset.valuesOf(inputSpec).stream().map(Paths::get).toList();
|
||||
Path path = Paths.get(optionspec3.value(optionset));
|
||||
boolean flag = optionset.has(optionspec2);
|
||||
boolean flag1 = flag || optionset.has(optionspec1);
|
||||
Bootstrap.bootStrap();
|
||||
ClientBootstrap.bootstrap();
|
||||
+ if (!loader.run(optionset, path, input, flag, flag1, flag, flag, false))
|
||||
+ return;
|
||||
DataGenerator datagenerator = new DataGenerator(path, SharedConstants.getCurrentVersion(), true);
|
||||
addClientProviders(datagenerator, flag1);
|
||||
datagenerator.run();
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
--- a/net/minecraft/client/gui/Font.java
|
||||
+++ b/net/minecraft/client/gui/Font.java
|
||||
@@ -33,7 +_,7 @@
|
||||
import org.joml.Vector3f;
|
||||
@@ -32,7 +_,7 @@
|
||||
import org.joml.Matrix4f;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
-public class Font {
|
||||
+public class Font implements net.minecraftforge.client.extensions.IForgeFont {
|
||||
private static final float EFFECT_DEPTH = 0.01F;
|
||||
private static final Vector3f SHADOW_OFFSET = new Vector3f(0.0F, 0.0F, 0.03F);
|
||||
public static final int ALPHA_CUTOFF = 8;
|
||||
public static final float SHADOW_DEPTH = 0.03F;
|
||||
public static final int NO_SHADOW = 0;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/gui/GuiGraphics.java
|
||||
+++ b/net/minecraft/client/gui/GuiGraphics.java
|
||||
@@ -53,7 +_,7 @@
|
||||
@@ -52,7 +_,7 @@
|
||||
import org.joml.Vector2ic;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
public static final float MAX_GUI_Z = 10000.0F;
|
||||
public static final float MIN_GUI_Z = -10000.0F;
|
||||
private static final int EXTRA_SPACE_AFTER_FIRST_TOOLTIP_LINE = 2;
|
||||
@@ -227,6 +_,11 @@
|
||||
@@ -229,6 +_,11 @@
|
||||
}
|
||||
|
||||
public int drawString(Font p_283343_, @Nullable String p_281896_, int p_283569_, int p_283418_, int p_281560_, boolean p_282130_) {
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
return p_281896_ == null
|
||||
? 0
|
||||
: p_283343_.drawInBatch(
|
||||
@@ -248,6 +_,11 @@
|
||||
@@ -250,6 +_,11 @@
|
||||
}
|
||||
|
||||
public int drawString(Font p_282636_, FormattedCharSequence p_281596_, int p_281586_, int p_282816_, int p_281743_, boolean p_282394_) {
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
return p_282636_.drawInBatch(
|
||||
p_281596_,
|
||||
(float)p_281586_,
|
||||
@@ -872,6 +_,7 @@
|
||||
@@ -859,6 +_,7 @@
|
||||
CrashReport crashreport = CrashReport.forThrowable(throwable, "Rendering item");
|
||||
CrashReportCategory crashreportcategory = crashreport.addCategory("Item being rendered");
|
||||
crashreportcategory.setDetail("Item Type", () -> String.valueOf(p_281675_.getItem()));
|
||||
|
|
@ -41,7 +41,7 @@
|
|||
crashreportcategory.setDetail("Item Components", () -> String.valueOf(p_281675_.getComponents()));
|
||||
crashreportcategory.setDetail("Item Foil", () -> String.valueOf(p_281675_.hasFoil()));
|
||||
throw new ReportedException(crashreport);
|
||||
@@ -892,13 +_,24 @@
|
||||
@@ -879,13 +_,24 @@
|
||||
this.renderItemCount(p_282005_, p_283349_, p_282641_, p_282146_, p_282803_);
|
||||
this.renderItemCooldown(p_283349_, p_282641_, p_282146_);
|
||||
this.pose.popPose();
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
}
|
||||
|
||||
public void renderTooltip(Font p_283128_, List<Component> p_282716_, Optional<TooltipComponent> p_281682_, int p_283678_, int p_281696_) {
|
||||
@@ -908,8 +_,7 @@
|
||||
@@ -895,8 +_,7 @@
|
||||
public void renderTooltip(
|
||||
Font p_362491_, List<Component> p_368544_, Optional<TooltipComponent> p_362815_, int p_366300_, int p_368952_, @Nullable ResourceLocation p_368469_
|
||||
) {
|
||||
|
|
@ -76,7 +76,7 @@
|
|||
this.renderTooltipInternal(p_362491_, list, p_366300_, p_368952_, DefaultTooltipPositioner.INSTANCE, p_368469_);
|
||||
}
|
||||
|
||||
@@ -922,7 +_,22 @@
|
||||
@@ -909,7 +_,22 @@
|
||||
}
|
||||
|
||||
public void renderComponentTooltip(Font p_282739_, List<Component> p_281832_, int p_282191_, int p_282446_) {
|
||||
|
|
@ -100,7 +100,7 @@
|
|||
}
|
||||
|
||||
public void renderComponentTooltip(Font p_369090_, List<Component> p_365405_, int p_368143_, int p_366244_, @Nullable ResourceLocation p_364763_) {
|
||||
@@ -964,11 +_,13 @@
|
||||
@@ -951,11 +_,13 @@
|
||||
@Nullable ResourceLocation p_368234_
|
||||
) {
|
||||
if (!p_282615_.isEmpty()) {
|
||||
|
|
@ -115,7 +115,7 @@
|
|||
if (k > i) {
|
||||
i = k;
|
||||
}
|
||||
@@ -978,18 +_,19 @@
|
||||
@@ -965,18 +_,19 @@
|
||||
|
||||
int i2 = i;
|
||||
int j2 = j;
|
||||
|
|
@ -138,7 +138,7 @@
|
|||
k1 += clienttooltipcomponent1.getHeight(p_282675_) + (l1 == 0 ? 2 : 0);
|
||||
}
|
||||
|
||||
@@ -997,7 +_,7 @@
|
||||
@@ -984,7 +_,7 @@
|
||||
|
||||
for (int k2 = 0; k2 < p_282615_.size(); k2++) {
|
||||
ClientTooltipComponent clienttooltipcomponent2 = p_282615_.get(k2);
|
||||
|
|
@ -147,7 +147,7 @@
|
|||
k1 += clienttooltipcomponent2.getHeight(p_282675_) + (k2 == 0 ? 2 : 0);
|
||||
}
|
||||
|
||||
@@ -1054,6 +_,10 @@
|
||||
@@ -1041,6 +_,10 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/gui/components/AbstractWidget.java
|
||||
+++ b/net/minecraft/client/gui/components/AbstractWidget.java
|
||||
@@ -259,6 +_,25 @@
|
||||
@@ -250,6 +_,25 @@
|
||||
this.focused = p_93693_;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/gui/screens/LoadingOverlay.java
|
||||
+++ b/net/minecraft/client/gui/screens/LoadingOverlay.java
|
||||
@@ -62,6 +_,8 @@
|
||||
@@ -61,6 +_,8 @@
|
||||
return p_169325_ & 16777215 | p_169326_ << 24;
|
||||
}
|
||||
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
@Override
|
||||
public void render(GuiGraphics p_281839_, int p_282704_, int p_283650_, float p_283394_) {
|
||||
int i = p_281839_.guiWidth();
|
||||
@@ -100,6 +_,7 @@
|
||||
@@ -99,6 +_,7 @@
|
||||
f2 = 1.0F;
|
||||
}
|
||||
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
int k2 = (int)((double)p_281839_.guiWidth() * 0.5);
|
||||
int l2 = (int)((double)p_281839_.guiHeight() * 0.5);
|
||||
double d1 = Math.min((double)p_281839_.guiWidth() * 0.75, (double)p_281839_.guiHeight()) * 0.25;
|
||||
@@ -115,12 +_,14 @@
|
||||
@@ -114,12 +_,14 @@
|
||||
if (f < 1.0F) {
|
||||
this.drawProgressBar(p_281839_, i / 2 - j1, l1 - 5, i / 2 + j1, l1 + 5, 1.0F - Mth.clamp(f, 0.0F, 1.0F));
|
||||
}
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
try {
|
||||
this.reload.checkExceptions();
|
||||
this.onFinish.accept(Optional.empty());
|
||||
@@ -128,7 +_,6 @@
|
||||
@@ -127,7 +_,6 @@
|
||||
this.onFinish.accept(Optional.of(throwable));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/gui/screens/TitleScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/TitleScreen.java
|
||||
@@ -60,6 +_,7 @@
|
||||
@@ -58,6 +_,7 @@
|
||||
private boolean fading;
|
||||
private long fadeInStart;
|
||||
private final LogoRenderer logoRenderer;
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
public TitleScreen() {
|
||||
this(false);
|
||||
@@ -115,11 +_,15 @@
|
||||
@@ -111,11 +_,15 @@
|
||||
int j = this.width - i - 2;
|
||||
int k = 24;
|
||||
int l = this.height / 4 + 48;
|
||||
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
l = this.createTestWorldButton(l, 24);
|
||||
SpriteIconButton spriteiconbutton = this.addRenderableWidget(
|
||||
@@ -184,7 +_,7 @@
|
||||
@@ -180,7 +_,7 @@
|
||||
}).bounds(this.width / 2 - 100, i = p_96764_ + p_96765_, 200, 20).tooltip(tooltip).build()).active = flag;
|
||||
this.addRenderableWidget(
|
||||
Button.builder(Component.translatable("menu.online"), p_325369_ -> this.minecraft.setScreen(new RealmsMainScreen(this)))
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
.tooltip(tooltip)
|
||||
.build()
|
||||
)
|
||||
@@ -293,6 +_,7 @@
|
||||
@@ -289,6 +_,7 @@
|
||||
if ((i & -67108864) != 0) {
|
||||
super.render(p_282860_, p_281753_, p_283539_, p_282628_);
|
||||
this.logoRenderer.renderLogo(p_282860_, this.width, f);
|
||||
|
|
@ -41,7 +41,7 @@
|
|||
if (this.splash != null && !this.minecraft.options.hideSplashTexts().get()) {
|
||||
this.splash.render(p_282860_, this.width, this.font, i);
|
||||
}
|
||||
@@ -308,10 +_,18 @@
|
||||
@@ -304,10 +_,18 @@
|
||||
s = s + I18n.get("menu.modded");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/inventory/AbstractContainerScreen.java
|
||||
@@ -108,6 +_,7 @@
|
||||
@@ -106,6 +_,7 @@
|
||||
int i = this.leftPos;
|
||||
int j = this.topPos;
|
||||
super.render(p_283479_, p_283661_, p_281248_, p_281886_);
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
p_283479_.pose().pushPose();
|
||||
p_283479_.pose().translate((float)i, (float)j, 0.0F);
|
||||
Slot slot = this.hoveredSlot;
|
||||
@@ -119,6 +_,8 @@
|
||||
@@ -117,6 +_,8 @@
|
||||
this.onStopHovering(slot);
|
||||
}
|
||||
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
this.renderLabels(p_283479_, p_283661_, p_281248_);
|
||||
ItemStack itemstack = this.draggingItem.isEmpty() ? this.menu.getCarried() : this.draggingItem;
|
||||
if (!itemstack.isEmpty()) {
|
||||
@@ -199,7 +_,7 @@
|
||||
@@ -197,7 +_,7 @@
|
||||
ItemStack itemstack = this.hoveredSlot.getItem();
|
||||
if (this.menu.getCarried().isEmpty() || this.showTooltipWithItemInHand(itemstack)) {
|
||||
p_283594_.renderTooltip(
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
);
|
||||
}
|
||||
}
|
||||
@@ -217,7 +_,8 @@
|
||||
@@ -215,7 +_,8 @@
|
||||
p_282567_.pose().pushPose();
|
||||
p_282567_.pose().translate(0.0F, 0.0F, 232.0F);
|
||||
p_282567_.renderItem(p_281330_, p_281772_, p_281689_);
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
p_282567_.pose().popPose();
|
||||
}
|
||||
|
||||
@@ -324,7 +_,8 @@
|
||||
@@ -321,7 +_,8 @@
|
||||
if (super.mouseClicked(p_97748_, p_97749_, p_97750_)) {
|
||||
return true;
|
||||
} else {
|
||||
|
|
@ -46,7 +46,7 @@
|
|||
Slot slot = this.getHoveredSlot(p_97748_, p_97749_);
|
||||
long i = Util.getMillis();
|
||||
this.doubleclick = this.lastClickSlot == slot && i - this.lastClickTime < 250L && this.lastClickButton == p_97750_;
|
||||
@@ -335,6 +_,7 @@
|
||||
@@ -332,6 +_,7 @@
|
||||
int j = this.leftPos;
|
||||
int k = this.topPos;
|
||||
boolean flag1 = this.hasClickedOutside(p_97748_, p_97749_, j, k, p_97750_);
|
||||
|
|
@ -54,7 +54,7 @@
|
|||
int l = -1;
|
||||
if (slot != null) {
|
||||
l = slot.index;
|
||||
@@ -360,7 +_,7 @@
|
||||
@@ -357,7 +_,7 @@
|
||||
}
|
||||
} else if (!this.isQuickCrafting) {
|
||||
if (this.menu.getCarried().isEmpty()) {
|
||||
|
|
@ -63,7 +63,7 @@
|
|||
this.slotClicked(slot, l, p_97750_, ClickType.CLONE);
|
||||
} else {
|
||||
boolean flag2 = l != -999
|
||||
@@ -388,7 +_,7 @@
|
||||
@@ -385,7 +_,7 @@
|
||||
this.quickCraftingType = 0;
|
||||
} else if (p_97750_ == 1) {
|
||||
this.quickCraftingType = 1;
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
this.quickCraftingType = 2;
|
||||
}
|
||||
}
|
||||
@@ -467,10 +_,13 @@
|
||||
@@ -464,10 +_,13 @@
|
||||
|
||||
@Override
|
||||
public boolean mouseReleased(double p_97812_, double p_97813_, int p_97814_) {
|
||||
|
|
@ -86,7 +86,7 @@
|
|||
int k = -1;
|
||||
if (slot != null) {
|
||||
k = slot.index;
|
||||
@@ -487,7 +_,7 @@
|
||||
@@ -484,7 +_,7 @@
|
||||
if (slot2 != null
|
||||
&& slot2.mayPickup(this.minecraft.player)
|
||||
&& slot2.hasItem()
|
||||
|
|
@ -95,7 +95,7 @@
|
|||
&& AbstractContainerMenu.canItemQuickReplace(slot2, this.lastQuickMoved, true)) {
|
||||
this.slotClicked(slot2, slot2.index, p_97814_, ClickType.QUICK_MOVE);
|
||||
}
|
||||
@@ -551,7 +_,7 @@
|
||||
@@ -548,7 +_,7 @@
|
||||
|
||||
this.slotClicked(null, -999, AbstractContainerMenu.getQuickcraftMask(2, this.quickCraftingType), ClickType.QUICK_CRAFT);
|
||||
} else if (!this.menu.getCarried().isEmpty()) {
|
||||
|
|
@ -104,7 +104,7 @@
|
|||
this.slotClicked(slot, k, p_97814_, ClickType.CLONE);
|
||||
} else {
|
||||
boolean flag1 = k != -999
|
||||
@@ -631,9 +_,10 @@
|
||||
@@ -628,9 +_,10 @@
|
||||
|
||||
@Override
|
||||
public boolean keyPressed(int p_97765_, int p_97766_, int p_97767_) {
|
||||
|
|
@ -116,7 +116,7 @@
|
|||
this.onClose();
|
||||
return true;
|
||||
} else {
|
||||
@@ -707,4 +_,11 @@
|
||||
@@ -704,4 +_,11 @@
|
||||
|
||||
super.onClose();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/inventory/CreativeModeInventoryScreen.java
|
||||
@@ -115,6 +_,8 @@
|
||||
@@ -114,6 +_,8 @@
|
||||
private final Set<TagKey<Item>> visibleTags = new HashSet<>();
|
||||
private final boolean displayOperatorCreativeTab;
|
||||
private final EffectsInInventory effects;
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
public CreativeModeInventoryScreen(LocalPlayer p_344408_, FeatureFlagSet p_260074_, boolean p_259569_) {
|
||||
super(new CreativeModeInventoryScreen.ItemPickerMenu(p_344408_), p_344408_.getInventory(), CommonComponents.EMPTY);
|
||||
@@ -163,7 +_,7 @@
|
||||
@@ -162,7 +_,7 @@
|
||||
private void refreshCurrentTabContents(Collection<ItemStack> p_261591_) {
|
||||
int i = this.menu.getRowIndexForScroll(this.scrollOffs);
|
||||
this.menu.items.clear();
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
this.refreshSearchResults();
|
||||
} else {
|
||||
this.menu.items.addAll(p_261591_);
|
||||
@@ -331,6 +_,35 @@
|
||||
@@ -330,6 +_,35 @@
|
||||
protected void init() {
|
||||
if (this.minecraft.gameMode.hasInfiniteItems()) {
|
||||
super.init();
|
||||
|
|
@ -54,7 +54,7 @@
|
|||
this.searchBox = new EditBox(this.font, this.leftPos + 82, this.topPos + 6, 80, 9, Component.translatable("itemGroup.search"));
|
||||
this.searchBox.setMaxLength(50);
|
||||
this.searchBox.setBordered(false);
|
||||
@@ -377,7 +_,7 @@
|
||||
@@ -376,7 +_,7 @@
|
||||
public boolean charTyped(char p_98521_, int p_98522_) {
|
||||
if (this.ignoreTextInput) {
|
||||
return false;
|
||||
|
|
@ -63,7 +63,7 @@
|
|||
return false;
|
||||
} else {
|
||||
String s = this.searchBox.getValue();
|
||||
@@ -396,7 +_,7 @@
|
||||
@@ -395,7 +_,7 @@
|
||||
@Override
|
||||
public boolean keyPressed(int p_98547_, int p_98548_, int p_98549_) {
|
||||
this.ignoreTextInput = false;
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
if (this.minecraft.options.keyChat.matches(p_98547_, p_98548_)) {
|
||||
this.ignoreTextInput = true;
|
||||
this.selectTab(CreativeModeTabs.searchTab());
|
||||
@@ -432,6 +_,7 @@
|
||||
@@ -431,6 +_,7 @@
|
||||
}
|
||||
|
||||
private void refreshSearchResults() {
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
this.menu.items.clear();
|
||||
this.visibleTags.clear();
|
||||
String s = this.searchBox.getValue();
|
||||
@@ -444,10 +_,10 @@
|
||||
@@ -443,10 +_,10 @@
|
||||
SearchTree<ItemStack> searchtree;
|
||||
if (s.startsWith("#")) {
|
||||
s = s.substring(1);
|
||||
|
|
@ -93,7 +93,7 @@
|
|||
}
|
||||
|
||||
this.menu.items.addAll(searchtree.search(s.toLowerCase(Locale.ROOT)));
|
||||
@@ -479,7 +_,8 @@
|
||||
@@ -478,7 +_,8 @@
|
||||
@Override
|
||||
protected void renderLabels(GuiGraphics p_283168_, int p_281774_, int p_281466_) {
|
||||
if (selectedTab.showTitle()) {
|
||||
|
|
@ -103,7 +103,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -489,7 +_,7 @@
|
||||
@@ -488,7 +_,7 @@
|
||||
double d0 = p_98531_ - (double)this.leftPos;
|
||||
double d1 = p_98532_ - (double)this.topPos;
|
||||
|
||||
|
|
@ -112,7 +112,7 @@
|
|||
if (this.checkTabClicked(creativemodetab, d0, d1)) {
|
||||
return true;
|
||||
}
|
||||
@@ -511,7 +_,7 @@
|
||||
@@ -510,7 +_,7 @@
|
||||
double d1 = p_98623_ - (double)this.topPos;
|
||||
this.scrolling = false;
|
||||
|
||||
|
|
@ -121,7 +121,7 @@
|
|||
if (this.checkTabClicked(creativemodetab, d0, d1)) {
|
||||
this.selectTab(creativemodetab);
|
||||
return true;
|
||||
@@ -605,13 +_,15 @@
|
||||
@@ -604,13 +_,15 @@
|
||||
this.originalSlots = null;
|
||||
}
|
||||
|
||||
|
|
@ -138,7 +138,7 @@
|
|||
|
||||
this.refreshSearchResults();
|
||||
} else {
|
||||
@@ -677,7 +_,15 @@
|
||||
@@ -676,7 +_,15 @@
|
||||
super.render(p_283000_, p_281317_, p_282770_, p_281295_);
|
||||
this.effects.render(p_283000_, p_281317_, p_282770_, p_281295_);
|
||||
|
||||
|
|
@ -155,7 +155,7 @@
|
|||
if (this.checkTabHovering(p_283000_, creativemodetab, p_281317_, p_282770_)) {
|
||||
break;
|
||||
}
|
||||
@@ -689,6 +_,7 @@
|
||||
@@ -688,6 +_,7 @@
|
||||
p_283000_.renderTooltip(this.font, TRASH_SLOT_TOOLTIP, p_281317_, p_282770_);
|
||||
}
|
||||
|
||||
|
|
@ -163,7 +163,7 @@
|
|||
this.renderTooltip(p_283000_, p_281317_, p_282770_);
|
||||
}
|
||||
|
||||
@@ -701,7 +_,7 @@
|
||||
@@ -700,7 +_,7 @@
|
||||
public List<Component> getTooltipFromContainerItem(ItemStack p_281769_) {
|
||||
boolean flag = this.hoveredSlot != null && this.hoveredSlot instanceof CreativeModeInventoryScreen.CustomCreativeSlot;
|
||||
boolean flag1 = selectedTab.getType() == CreativeModeTab.Type.CATEGORY;
|
||||
|
|
@ -172,7 +172,7 @@
|
|||
TooltipFlag.Default tooltipflag$default = this.minecraft.options.advancedItemTooltips ? TooltipFlag.Default.ADVANCED : TooltipFlag.Default.NORMAL;
|
||||
TooltipFlag tooltipflag = flag ? tooltipflag$default.asCreative() : tooltipflag$default;
|
||||
List<Component> list = p_281769_.getTooltipLines(Item.TooltipContext.of(this.minecraft.level), this.minecraft.player, tooltipflag);
|
||||
@@ -720,7 +_,7 @@
|
||||
@@ -719,7 +_,7 @@
|
||||
int i = 1;
|
||||
|
||||
for (CreativeModeTab creativemodetab : CreativeModeTabs.tabs()) {
|
||||
|
|
@ -181,7 +181,7 @@
|
|||
list1.add(i++, creativemodetab.getDisplayName().copy().withStyle(ChatFormatting.BLUE));
|
||||
}
|
||||
}
|
||||
@@ -731,7 +_,7 @@
|
||||
@@ -730,7 +_,7 @@
|
||||
|
||||
@Override
|
||||
protected void renderBg(GuiGraphics p_282663_, float p_282504_, int p_282089_, int p_282249_) {
|
||||
|
|
@ -190,7 +190,7 @@
|
|||
if (creativemodetab != selectedTab) {
|
||||
this.renderTabButton(p_282663_, creativemodetab);
|
||||
}
|
||||
@@ -747,6 +_,7 @@
|
||||
@@ -746,6 +_,7 @@
|
||||
p_282663_.blitSprite(RenderType::guiTextured, resourcelocation, j, k + (int)((float)(i - k - 17) * this.scrollOffs), 12, 15);
|
||||
}
|
||||
|
||||
|
|
@ -198,7 +198,7 @@
|
|||
this.renderTabButton(p_282663_, selectedTab);
|
||||
if (selectedTab.getType() == CreativeModeTab.Type.INVENTORY) {
|
||||
InventoryScreen.renderEntityInInventoryFollowsMouse(
|
||||
@@ -765,7 +_,7 @@
|
||||
@@ -764,7 +_,7 @@
|
||||
}
|
||||
|
||||
private int getTabX(CreativeModeTab p_260136_) {
|
||||
|
|
@ -207,7 +207,7 @@
|
|||
int j = 27;
|
||||
int k = 27 * i;
|
||||
if (p_260136_.isAlignedRight()) {
|
||||
@@ -777,7 +_,7 @@
|
||||
@@ -776,7 +_,7 @@
|
||||
|
||||
private int getTabY(CreativeModeTab p_260181_) {
|
||||
int i = 0;
|
||||
|
|
@ -216,7 +216,7 @@
|
|||
i -= 32;
|
||||
} else {
|
||||
i += this.imageHeight;
|
||||
@@ -805,8 +_,8 @@
|
||||
@@ -804,8 +_,8 @@
|
||||
|
||||
protected void renderTabButton(GuiGraphics p_283590_, CreativeModeTab p_283489_) {
|
||||
boolean flag = p_283489_ == selectedTab;
|
||||
|
|
@ -227,7 +227,7 @@
|
|||
int j = this.leftPos + this.getTabX(p_283489_);
|
||||
int k = this.topPos - (flag1 ? 28 : -(this.imageHeight - 4));
|
||||
ResourceLocation[] aresourcelocation;
|
||||
@@ -816,6 +_,7 @@
|
||||
@@ -815,6 +_,7 @@
|
||||
aresourcelocation = flag ? SELECTED_BOTTOM_TABS : UNSELECTED_BOTTOM_TABS;
|
||||
}
|
||||
|
||||
|
|
@ -235,7 +235,7 @@
|
|||
p_283590_.blitSprite(RenderType::guiTextured, aresourcelocation[Mth.clamp(i, 0, aresourcelocation.length)], j, k, 26, 32);
|
||||
p_283590_.pose().pushPose();
|
||||
p_283590_.pose().translate(0.0F, 0.0F, 100.0F);
|
||||
@@ -857,6 +_,14 @@
|
||||
@@ -856,6 +_,14 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -250,7 +250,7 @@
|
|||
@OnlyIn(Dist.CLIENT)
|
||||
static class CustomCreativeSlot extends Slot {
|
||||
public CustomCreativeSlot(Container p_98633_, int p_98634_, int p_98635_, int p_98636_) {
|
||||
@@ -1038,6 +_,22 @@
|
||||
@@ -1037,6 +_,22 @@
|
||||
@Override
|
||||
public boolean mayPickup(Player p_98665_) {
|
||||
return this.target.mayPickup(p_98665_);
|
||||
|
|
@ -267,8 +267,8 @@
|
|||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public Slot setBackground(ResourceLocation atlas, ResourceLocation sprite) {
|
||||
+ this.target.setBackground(atlas, sprite);
|
||||
+ public Slot setBackground(ResourceLocation sprite) {
|
||||
+ this.target.setBackground(sprite);
|
||||
+ return this;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
+ if (((k < l + 1 || this.minecraft.player.experienceLevel < k1) && !this.minecraft.player.getAbilities().instabuild) || this.menu.enchantClue[l] == -1) { // Forge: render buttons as disabled when enchantable but enchantability not met on lower levels{
|
||||
p_282430_.blitSprite(RenderType::guiTextured, ENCHANTMENT_SLOT_DISABLED_SPRITE, i1, j + 14 + 19 * l, 108, 19);
|
||||
p_282430_.blitSprite(RenderType::guiTextured, DISABLED_LEVEL_SPRITES[l], i1 + 1, j + 15 + 19 * l, 16, 16);
|
||||
p_282430_.drawWordWrap(this.font, formattedtext, j1, j + 16 + 19 * l, l1, (i2 & 16711422) >> 1);
|
||||
p_282430_.drawWordWrap(this.font, formattedtext, j1, j + 16 + 19 * l, l1, (i2 & 16711422) >> 1, false);
|
||||
@@ -175,13 +_,16 @@
|
||||
.registryAccess()
|
||||
.lookupOrThrow(Registries.ENCHANTMENT)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java
|
||||
+++ b/net/minecraft/client/gui/screens/multiplayer/ServerSelectionList.java
|
||||
@@ -372,6 +_,8 @@
|
||||
@@ -371,6 +_,8 @@
|
||||
this.screen.setTooltipForNextRenderPass(Lists.transform(this.onlinePlayersTooltip, Component::getVisualOrderText));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,6 @@
|
|||
--- a/net/minecraft/client/gui/screens/options/controls/KeyBindsList.java
|
||||
+++ b/net/minecraft/client/gui/screens/options/controls/KeyBindsList.java
|
||||
@@ -69,6 +_,11 @@
|
||||
return 340;
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ protected int getScrollbarPosition() {
|
||||
+ return super.getScrollbarPosition() + 20;
|
||||
+ }
|
||||
+
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class CategoryEntry extends KeyBindsList.Entry {
|
||||
final Component name;
|
||||
@@ -153,9 +_,10 @@
|
||||
@@ -148,9 +_,10 @@
|
||||
this.name = p_343976_;
|
||||
this.changeButton = Button.builder(p_343976_, p_342196_ -> {
|
||||
KeyBindsList.this.keyBindsScreen.selectedKey = p_343088_;
|
||||
|
|
@ -24,7 +12,7 @@
|
|||
.createNarration(
|
||||
p_342179_ -> p_343088_.isUnbound()
|
||||
? Component.translatable("narrator.controls.unbound", p_343976_)
|
||||
@@ -163,7 +_,7 @@
|
||||
@@ -158,7 +_,7 @@
|
||||
)
|
||||
.build();
|
||||
this.resetButton = Button.builder(RESET_BUTTON_TITLE, p_357685_ -> {
|
||||
|
|
@ -33,7 +21,7 @@
|
|||
KeyBindsList.this.resetMappingAndUpdateButtons();
|
||||
}).bounds(0, 0, 50, 20).createNarration(p_344192_ -> Component.translatable("narrator.controls.reset", p_343976_)).build();
|
||||
this.refreshEntry();
|
||||
@@ -215,7 +_,7 @@
|
||||
@@ -210,7 +_,7 @@
|
||||
MutableComponent mutablecomponent = Component.empty();
|
||||
if (!this.key.isUnbound()) {
|
||||
for (KeyMapping keymapping : KeyBindsList.this.minecraft.options.keyMappings) {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,6 @@
|
|||
p_100014_.setSelected(null);
|
||||
- p_100015_.forEach(
|
||||
+ p_100015_.filter(PackSelectionModel.Entry::notHidden).forEach(
|
||||
p_357689_ -> {
|
||||
p_374582_ -> {
|
||||
TransferableSelectionList.PackEntry transferableselectionlist$packentry1 = new TransferableSelectionList.PackEntry(
|
||||
this.minecraft, p_100014_, p_357689_
|
||||
this.minecraft, p_100014_, p_374582_
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java
|
||||
+++ b/net/minecraft/client/gui/screens/worldselection/CreateWorldScreen.java
|
||||
@@ -169,6 +_,7 @@
|
||||
@@ -168,6 +_,7 @@
|
||||
) {
|
||||
queueLoadScreen(p_369292_, PREPARING_WORLD_DATA);
|
||||
PackRepository packrepository = new PackRepository(new ServerPacksSource(p_369292_.directoryValidator()));
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
WorldLoader.InitConfig worldloader$initconfig = createDefaultLoadConfig(packrepository, WorldDataConfiguration.DEFAULT);
|
||||
CompletableFuture<WorldCreationContext> completablefuture = WorldLoader.load(
|
||||
worldloader$initconfig,
|
||||
@@ -479,7 +_,7 @@
|
||||
@@ -468,7 +_,7 @@
|
||||
if (p_269627_) {
|
||||
p_270552_.accept(this.uiState.getSettings().dataConfiguration());
|
||||
} else {
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
}
|
||||
},
|
||||
Component.translatable("dataPack.validation.failed"),
|
||||
@@ -593,6 +_,7 @@
|
||||
@@ -582,6 +_,7 @@
|
||||
if (path != null) {
|
||||
if (this.tempDataPackRepository == null) {
|
||||
this.tempDataPackRepository = ServerPacksSource.createPackRepository(path, this.packValidator);
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@
|
|||
static final Component FROM_NEWER_TOOLTIP_2 = Component.translatable("selectWorld.tooltip.fromNewerVersion2").withStyle(ChatFormatting.RED);
|
||||
static final Component SNAPSHOT_TOOLTIP_1 = Component.translatable("selectWorld.tooltip.snapshot1").withStyle(ChatFormatting.GOLD);
|
||||
@@ -400,6 +_,7 @@
|
||||
p_281612_.drawString(this.minecraft.font, s1, p_282820_ + 32 + 3, p_283181_ + 9 + 3, -8355712, false);
|
||||
p_281612_.drawString(this.minecraft.font, component, p_282820_ + 32 + 3, p_283181_ + 9 + 9 + 3, -8355712, false);
|
||||
p_281612_.drawString(this.minecraft.font, s1, p_282820_ + 32 + 3, p_283181_ + 9 + 3, -8355712);
|
||||
p_281612_.drawString(this.minecraft.font, component, p_282820_ + 32 + 3, p_283181_ + 9 + 9 + 3, -8355712);
|
||||
p_281612_.blit(RenderType::guiTextured, this.icon.textureLocation(), p_282820_, p_283181_, 0.0F, 0.0F, 32, 32, 32, 32);
|
||||
+ renderExperimentalWarning(p_281612_, p_283204_, p_283025_, p_283181_, p_282820_);
|
||||
if (this.minecraft.options.touchscreen().get() || p_283396_) {
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
--- a/net/minecraft/client/main/Main.java
|
||||
+++ b/net/minecraft/client/main/Main.java
|
||||
@@ -120,8 +_,8 @@
|
||||
@@ -121,8 +_,8 @@
|
||||
CrashReport.preload();
|
||||
logger = LogUtils.getLogger();
|
||||
s1 = "Bootstrap";
|
||||
- Bootstrap.bootStrap();
|
||||
GameLoadTimesEvent.INSTANCE.setBootstrapTime(Bootstrap.bootstrapDuration.get());
|
||||
- ClientBootstrap.bootstrap();
|
||||
+ net.minecraftforge.fml.loading.BackgroundWaiter.runAndTick(Bootstrap::bootStrap, net.minecraftforge.fml.loading.FMLLoader.progressWindowTick);
|
||||
+ net.minecraftforge.fml.loading.BackgroundWaiter.runAndTick(ClientBootstrap::bootstrap, net.minecraftforge.fml.loading.FMLLoader.progressWindowTick);
|
||||
GameLoadTimesEvent.INSTANCE.setBootstrapTime(Bootstrap.bootstrapDuration.get());
|
||||
Bootstrap.validate();
|
||||
s1 = "Argument parsing";
|
||||
List<String> list = optionset.valuesOf(optionspec29);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/model/HumanoidModel.java
|
||||
+++ b/net/minecraft/client/model/HumanoidModel.java
|
||||
@@ -259,6 +_,8 @@
|
||||
@@ -255,6 +_,8 @@
|
||||
case BRUSH:
|
||||
this.rightArm.xRot = this.rightArm.xRot * 0.5F - (float) (Math.PI / 5);
|
||||
this.rightArm.yRot = 0.0F;
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -303,6 +_,8 @@
|
||||
@@ -299,6 +_,8 @@
|
||||
case BRUSH:
|
||||
this.leftArm.xRot = this.leftArm.xRot * 0.5F - (float) (Math.PI / 5);
|
||||
this.leftArm.yRot = 0.0F;
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -381,7 +_,7 @@
|
||||
@@ -377,7 +_,7 @@
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
EMPTY(false),
|
||||
ITEM(false),
|
||||
BLOCK(false),
|
||||
@@ -397,10 +_,28 @@
|
||||
@@ -393,10 +_,28 @@
|
||||
|
||||
private ArmPose(final boolean p_102896_) {
|
||||
this.twoHanded = p_102896_;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
--- a/net/minecraft/client/model/geom/LayerDefinitions.java
|
||||
+++ b/net/minecraft/client/model/geom/LayerDefinitions.java
|
||||
@@ -449,6 +_,7 @@
|
||||
builder.put(ModelLayers.createWallSignModelName(p_357774_), layerdefinition54);
|
||||
builder.put(ModelLayers.createHangingSignModelName(p_357774_), layerdefinition55);
|
||||
@@ -464,6 +_,7 @@
|
||||
builder.put(ModelLayers.createHangingSignModelName(p_374591_, hangingsignrenderer$attachmenttype), layerdefinition55);
|
||||
}
|
||||
});
|
||||
+ net.minecraftforge.client.ForgeHooksClient.loadLayerDefinitions(builder);
|
||||
ImmutableMap<ModelLayerLocation, LayerDefinition> immutablemap = builder.build();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/model/geom/ModelLayers.java
|
||||
+++ b/net/minecraft/client/model/geom/ModelLayers.java
|
||||
@@ -301,15 +_,18 @@
|
||||
@@ -308,15 +_,18 @@
|
||||
}
|
||||
|
||||
public static ModelLayerLocation createStandingSignModelName(WoodType p_171292_) {
|
||||
|
|
@ -15,10 +15,10 @@
|
|||
+ return new ModelLayerLocation(ResourceLocation.fromNamespaceAndPath(location.getNamespace(), "sign/wall/" + location.getPath()), "main");
|
||||
}
|
||||
|
||||
public static ModelLayerLocation createHangingSignModelName(WoodType p_252225_) {
|
||||
- return createLocation("hanging_sign/" + p_252225_.name(), "main");
|
||||
public static ModelLayerLocation createHangingSignModelName(WoodType p_252225_, HangingSignRenderer.AttachmentType p_378070_) {
|
||||
- return createLocation("hanging_sign/" + p_252225_.name() + "/" + p_378070_.getSerializedName(), "main");
|
||||
+ ResourceLocation location = ResourceLocation.parse(p_252225_.name());
|
||||
+ return new ModelLayerLocation(ResourceLocation.fromNamespaceAndPath(location.getNamespace(), "hanging_sign/" + location.getPath()), "main");
|
||||
+ return new ModelLayerLocation(ResourceLocation.fromNamespaceAndPath(location.getNamespace(), "hanging_sign/" + location.getPath() + "/" + p_378070_.getSerializedName()), "main");
|
||||
}
|
||||
|
||||
public static Stream<ModelLayerLocation> getKnownLocations() {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
this.storage.drop(i, levelchunk);
|
||||
}
|
||||
}
|
||||
@@ -123,6 +_,7 @@
|
||||
@@ -124,6 +_,7 @@
|
||||
}
|
||||
|
||||
this.level.onChunkLoaded(chunkpos);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/multiplayer/ClientLevel.java
|
||||
+++ b/net/minecraft/client/multiplayer/ClientLevel.java
|
||||
@@ -118,6 +_,7 @@
|
||||
@@ -123,6 +_,7 @@
|
||||
p_194170_.put(BiomeColors.GRASS_COLOR_RESOLVER, new BlockTintCache(p_194181_ -> this.calculateBlockTint(p_194181_, BiomeColors.GRASS_COLOR_RESOLVER)));
|
||||
p_194170_.put(BiomeColors.FOLIAGE_COLOR_RESOLVER, new BlockTintCache(p_194177_ -> this.calculateBlockTint(p_194177_, BiomeColors.FOLIAGE_COLOR_RESOLVER)));
|
||||
p_194170_.put(BiomeColors.WATER_COLOR_RESOLVER, new BlockTintCache(p_194168_ -> this.calculateBlockTint(p_194168_, BiomeColors.WATER_COLOR_RESOLVER)));
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
});
|
||||
private final ClientChunkCache chunkSource;
|
||||
private final Deque<Runnable> lightUpdateQueue = Queues.newArrayDeque();
|
||||
@@ -126,6 +_,8 @@
|
||||
@@ -131,6 +_,8 @@
|
||||
private final int seaLevel;
|
||||
private boolean tickDayTime;
|
||||
private static final Set<Item> MARKER_PARTICLE_ITEMS = Set.of(Items.BARRIER, Items.LIGHT);
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
public void handleBlockChangedAck(int p_233652_) {
|
||||
this.blockStatePredictionHandler.endPredictionsUpTo(p_233652_, this);
|
||||
@@ -192,6 +_,8 @@
|
||||
@@ -197,6 +_,8 @@
|
||||
this.serverSimulationDistance = p_364305_;
|
||||
this.updateSkyBrightness();
|
||||
this.prepareWeather();
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
}
|
||||
|
||||
public void queueLightUpdate(Runnable p_194172_) {
|
||||
@@ -274,6 +_,7 @@
|
||||
@@ -279,6 +_,7 @@
|
||||
p_104640_.setOldPosAndRot();
|
||||
p_104640_.tickCount++;
|
||||
Profiler.get().push(() -> BuiltInRegistries.ENTITY_TYPE.getKey(p_104640_.getType()).toString());
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
p_104640_.tick();
|
||||
Profiler.get().pop();
|
||||
|
||||
@@ -326,8 +_,10 @@
|
||||
@@ -330,8 +_,10 @@
|
||||
}
|
||||
|
||||
public void addEntity(Entity p_104741_) {
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
}
|
||||
|
||||
public void removeEntity(int p_171643_, Entity.RemovalReason p_171644_) {
|
||||
@@ -498,6 +_,12 @@
|
||||
@@ -502,6 +_,12 @@
|
||||
float p_263349_,
|
||||
long p_263408_
|
||||
) {
|
||||
|
|
@ -58,7 +58,7 @@
|
|||
if (p_263381_ == this.minecraft.player) {
|
||||
this.playSound(p_263372_, p_263404_, p_263365_, p_263335_.value(), p_263417_, p_263416_, p_263349_, false, p_263408_);
|
||||
}
|
||||
@@ -507,6 +_,12 @@
|
||||
@@ -511,6 +_,12 @@
|
||||
public void playSeededSound(
|
||||
@Nullable Player p_263514_, Entity p_263536_, Holder<SoundEvent> p_263518_, SoundSource p_263487_, float p_263538_, float p_263524_, long p_263509_
|
||||
) {
|
||||
|
|
@ -71,7 +71,7 @@
|
|||
if (p_263514_ == this.minecraft.player) {
|
||||
this.minecraft.getSoundManager().play(new EntityBoundSoundInstance(p_263518_.value(), p_263487_, p_263538_, p_263524_, p_263536_, p_263509_));
|
||||
}
|
||||
@@ -943,6 +_,24 @@
|
||||
@@ -953,6 +_,24 @@
|
||||
return this.seaLevel;
|
||||
}
|
||||
|
||||
|
|
@ -96,7 +96,7 @@
|
|||
@OnlyIn(Dist.CLIENT)
|
||||
public static class ClientLevelData implements WritableLevelData {
|
||||
private final boolean hardcore;
|
||||
@@ -1031,6 +_,7 @@
|
||||
@@ -1041,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void setDifficulty(Difficulty p_104852_) {
|
||||
|
|
@ -104,9 +104,9 @@
|
|||
this.difficulty = p_104852_;
|
||||
}
|
||||
|
||||
@@ -1067,11 +_,26 @@
|
||||
if (p_171712_ instanceof AbstractClientPlayer) {
|
||||
ClientLevel.this.players.add((AbstractClientPlayer)p_171712_);
|
||||
@@ -1084,6 +_,12 @@
|
||||
break;
|
||||
default:
|
||||
}
|
||||
+
|
||||
+ if (p_171712_.isMultipartEntity()) {
|
||||
|
|
@ -117,8 +117,11 @@
|
|||
}
|
||||
|
||||
public void onTrackingEnd(Entity p_171716_) {
|
||||
p_171716_.unRide();
|
||||
ClientLevel.this.players.remove(p_171716_);
|
||||
@@ -1097,6 +_,15 @@
|
||||
ClientLevel.this.dragonParts.removeAll(Arrays.asList(enderdragon.getSubEntities()));
|
||||
break;
|
||||
default:
|
||||
+ }
|
||||
+
|
||||
+ p_171716_.onRemovedFromWorld();
|
||||
+ net.minecraftforge.event.ForgeEventFactory.onEntityLeaveLevel(p_171716_, ClientLevel.this);
|
||||
|
|
@ -127,7 +130,6 @@
|
|||
+ for (var part : p_171716_.getParts()) {
|
||||
+ ClientLevel.this.partEntities.remove(part.getId());
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
public void onSectionChange(Entity p_233660_) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/multiplayer/ClientPacketListener.java
|
||||
+++ b/net/minecraft/client/multiplayer/ClientPacketListener.java
|
||||
@@ -451,6 +_,7 @@
|
||||
@@ -452,6 +_,7 @@
|
||||
|
||||
this.minecraft.debugRenderer.clear();
|
||||
this.minecraft.player.resetPos();
|
||||
|
|
@ -57,7 +57,7 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -2516,6 +_,8 @@
|
||||
@@ -2530,6 +_,8 @@
|
||||
}
|
||||
|
||||
public void sendChat(String p_249888_) {
|
||||
|
|
@ -66,7 +66,7 @@
|
|||
Instant instant = Instant.now();
|
||||
long i = Crypt.SaltSupplier.getLong();
|
||||
LastSeenMessagesTracker.Update lastseenmessagestracker$update = this.lastSeenMessages.generateAndApplyUpdate();
|
||||
@@ -2524,6 +_,7 @@
|
||||
@@ -2538,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void sendCommand(String p_250092_) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/multiplayer/MultiPlayerGameMode.java
|
||||
+++ b/net/minecraft/client/multiplayer/MultiPlayerGameMode.java
|
||||
@@ -106,6 +_,7 @@
|
||||
@@ -107,6 +_,7 @@
|
||||
}
|
||||
|
||||
public boolean destroyBlock(BlockPos p_105268_) {
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
if (this.minecraft.player.blockActionRestricted(this.minecraft.level, p_105268_, this.localPlayerMode)) {
|
||||
return false;
|
||||
} else {
|
||||
@@ -120,9 +_,8 @@
|
||||
@@ -121,9 +_,8 @@
|
||||
} else if (blockstate.isAir()) {
|
||||
return false;
|
||||
} else {
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
if (flag) {
|
||||
block.destroy(level, p_105268_, blockstate);
|
||||
}
|
||||
@@ -143,6 +_,7 @@
|
||||
@@ -144,6 +_,7 @@
|
||||
BlockState blockstate = this.minecraft.level.getBlockState(p_105270_);
|
||||
this.minecraft.getTutorial().onDestroyBlock(this.minecraft.level, p_105270_, blockstate, 1.0F);
|
||||
this.startPrediction(this.minecraft.level, p_233757_ -> {
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
this.destroyBlock(p_105270_);
|
||||
return new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK, p_105270_, p_105271_, p_233757_);
|
||||
});
|
||||
@@ -152,15 +_,18 @@
|
||||
@@ -153,15 +_,18 @@
|
||||
this.connection
|
||||
.send(new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.ABORT_DESTROY_BLOCK, this.destroyBlockPos, p_105271_));
|
||||
}
|
||||
|
|
@ -46,7 +46,7 @@
|
|||
if (flag && blockstate1.getDestroyProgress(this.minecraft.player, this.minecraft.player.level(), p_105270_) >= 1.0F) {
|
||||
this.destroyBlock(p_105270_);
|
||||
} else {
|
||||
@@ -171,6 +_,7 @@
|
||||
@@ -172,6 +_,7 @@
|
||||
this.destroyTicks = 0.0F;
|
||||
this.minecraft.level.destroyBlockProgress(this.minecraft.player.getId(), this.destroyBlockPos, this.getDestroyStage());
|
||||
}
|
||||
|
|
@ -54,7 +54,7 @@
|
|||
|
||||
return new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK, p_105270_, p_105271_, p_233728_);
|
||||
});
|
||||
@@ -203,6 +_,7 @@
|
||||
@@ -204,6 +_,7 @@
|
||||
BlockState blockstate1 = this.minecraft.level.getBlockState(p_105284_);
|
||||
this.minecraft.getTutorial().onDestroyBlock(this.minecraft.level, p_105284_, blockstate1, 1.0F);
|
||||
this.startPrediction(this.minecraft.level, p_233753_ -> {
|
||||
|
|
@ -62,7 +62,7 @@
|
|||
this.destroyBlock(p_105284_);
|
||||
return new ServerboundPlayerActionPacket(ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK, p_105284_, p_105285_, p_233753_);
|
||||
});
|
||||
@@ -215,7 +_,7 @@
|
||||
@@ -216,7 +_,7 @@
|
||||
} else {
|
||||
this.destroyProgress = this.destroyProgress + blockstate.getDestroyProgress(this.minecraft.player, this.minecraft.player.level(), p_105284_);
|
||||
if (this.destroyTicks % 4.0F == 0.0F) {
|
||||
|
|
@ -71,7 +71,7 @@
|
|||
this.minecraft
|
||||
.getSoundManager()
|
||||
.play(
|
||||
@@ -232,6 +_,7 @@
|
||||
@@ -233,6 +_,7 @@
|
||||
|
||||
this.destroyTicks++;
|
||||
this.minecraft.getTutorial().onDestroyBlock(this.minecraft.level, p_105284_, blockstate, Mth.clamp(this.destroyProgress, 0.0F, 1.0F));
|
||||
|
|
@ -79,7 +79,7 @@
|
|||
if (this.destroyProgress >= 1.0F) {
|
||||
this.isDestroying = false;
|
||||
this.startPrediction(this.minecraft.level, p_233739_ -> {
|
||||
@@ -270,7 +_,7 @@
|
||||
@@ -271,7 +_,7 @@
|
||||
|
||||
private boolean sameDestroyTarget(BlockPos p_105282_) {
|
||||
ItemStack itemstack = this.minecraft.player.getMainHandItem();
|
||||
|
|
@ -88,7 +88,7 @@
|
|||
}
|
||||
|
||||
private void ensureHasSentCarriedItem() {
|
||||
@@ -298,12 +_,23 @@
|
||||
@@ -299,12 +_,23 @@
|
||||
private InteractionResult performUseItemOn(LocalPlayer p_233747_, InteractionHand p_233748_, BlockHitResult p_233749_) {
|
||||
BlockPos blockpos = p_233749_.getBlockPos();
|
||||
ItemStack itemstack = p_233747_.getItemInHand(p_233748_);
|
||||
|
|
@ -114,7 +114,7 @@
|
|||
BlockState blockstate = this.minecraft.level.getBlockState(blockpos);
|
||||
if (!this.connection.isFeatureEnabled(blockstate.getBlock().requiredFeatures())) {
|
||||
return InteractionResult.FAIL;
|
||||
@@ -324,8 +_,10 @@
|
||||
@@ -325,8 +_,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -127,7 +127,7 @@
|
|||
InteractionResult interactionresult2;
|
||||
if (this.localPlayerMode.isCreative()) {
|
||||
int i = itemstack.getCount();
|
||||
@@ -359,6 +_,11 @@
|
||||
@@ -360,6 +_,11 @@
|
||||
mutableobject.setValue(InteractionResult.PASS);
|
||||
return serverbounduseitempacket;
|
||||
} else {
|
||||
|
|
@ -139,7 +139,7 @@
|
|||
InteractionResult interactionresult = itemstack.use(this.minecraft.level, p_233722_, p_233723_);
|
||||
ItemStack itemstack1;
|
||||
if (interactionresult instanceof InteractionResult.Success interactionresult$success) {
|
||||
@@ -369,6 +_,9 @@
|
||||
@@ -370,6 +_,9 @@
|
||||
|
||||
if (itemstack1 != itemstack) {
|
||||
p_233722_.setItemInHand(p_233723_, itemstack1);
|
||||
|
|
@ -149,7 +149,7 @@
|
|||
}
|
||||
|
||||
mutableobject.setValue(interactionresult);
|
||||
@@ -400,6 +_,10 @@
|
||||
@@ -401,6 +_,10 @@
|
||||
public InteractionResult interact(Player p_105227_, Entity p_105228_, InteractionHand p_105229_) {
|
||||
this.ensureHasSentCarriedItem();
|
||||
this.connection.send(ServerboundInteractPacket.createInteractionPacket(p_105228_, p_105227_.isShiftKeyDown(), p_105229_));
|
||||
|
|
@ -160,7 +160,7 @@
|
|||
return (InteractionResult)(this.localPlayerMode == GameType.SPECTATOR ? InteractionResult.PASS : p_105227_.interactOn(p_105228_, p_105229_));
|
||||
}
|
||||
|
||||
@@ -407,6 +_,10 @@
|
||||
@@ -408,6 +_,10 @@
|
||||
this.ensureHasSentCarriedItem();
|
||||
Vec3 vec3 = p_105233_.getLocation().subtract(p_105232_.getX(), p_105232_.getY(), p_105232_.getZ());
|
||||
this.connection.send(ServerboundInteractPacket.createInteractionPacket(p_105232_, p_105231_.isShiftKeyDown(), p_105234_, vec3));
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/multiplayer/PlayerInfo.java
|
||||
+++ b/net/minecraft/client/multiplayer/PlayerInfo.java
|
||||
@@ -86,6 +_,7 @@
|
||||
@@ -88,6 +_,7 @@
|
||||
}
|
||||
|
||||
protected void setGameMode(GameType p_105318_) {
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
--- a/net/minecraft/client/particle/BreakingItemParticle.java
|
||||
+++ b/net/minecraft/client/particle/BreakingItemParticle.java
|
||||
@@ -33,7 +_,7 @@
|
||||
|
||||
protected BreakingItemParticle(ClientLevel p_105665_, double p_105666_, double p_105667_, double p_105668_, ItemStack p_105669_) {
|
||||
super(p_105665_, p_105666_, p_105667_, p_105668_, 0.0, 0.0, 0.0);
|
||||
- this.setSprite(Minecraft.getInstance().getItemRenderer().getModel(p_105669_, p_105665_, null, 0).getParticleIcon());
|
||||
+ this.setSprite(Minecraft.getInstance().getItemRenderer().getModel(p_105669_, p_105665_, null, 0).getParticleIcon(net.minecraftforge.client.model.data.ModelData.EMPTY));
|
||||
this.gravity = 1.0F;
|
||||
this.quadSize /= 2.0F;
|
||||
this.uo = this.random.nextFloat() * 3.0F;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/particle/Particle.java
|
||||
+++ b/net/minecraft/client/particle/Particle.java
|
||||
@@ -243,6 +_,18 @@
|
||||
@@ -248,6 +_,18 @@
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
--- a/net/minecraft/client/particle/ParticleEngine.java
|
||||
+++ b/net/minecraft/client/particle/ParticleEngine.java
|
||||
@@ -77,11 +_,11 @@
|
||||
ParticleRenderType.TERRAIN_SHEET, ParticleRenderType.PARTICLE_SHEET_OPAQUE, ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT, ParticleRenderType.CUSTOM
|
||||
);
|
||||
@@ -72,11 +_,11 @@
|
||||
private static final int MAX_PARTICLES_PER_LAYER = 16384;
|
||||
private static final List<ParticleRenderType> RENDER_ORDER = List.of(ParticleRenderType.TERRAIN_SHEET, ParticleRenderType.PARTICLE_SHEET_OPAQUE, ParticleRenderType.PARTICLE_SHEET_TRANSLUCENT);
|
||||
protected ClientLevel level;
|
||||
- private final Map<ParticleRenderType, Queue<Particle>> particles = Maps.newIdentityHashMap();
|
||||
+ private final Map<ParticleRenderType, Queue<Particle>> particles = Maps.newTreeMap(net.minecraftforge.client.ForgeHooksClient.makeParticleRenderTypeComparator(RENDER_ORDER));
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
private final Queue<Particle> particlesToAdd = Queues.newArrayDeque();
|
||||
private final Map<ResourceLocation, ParticleEngine.MutableSpriteSet> spriteSets = Maps.newHashMap();
|
||||
private final TextureAtlas textureAtlas;
|
||||
@@ -214,10 +_,14 @@
|
||||
@@ -205,10 +_,14 @@
|
||||
this.register(ParticleTypes.BLOCK_CRUMBLE, new TerrainParticle.CrumblingProvider());
|
||||
}
|
||||
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
public <T extends ParticleOptions> void register(ParticleType<T> p_273423_, ParticleProvider.Sprite<T> p_273134_) {
|
||||
this.register(
|
||||
p_273423_,
|
||||
@@ -234,10 +_,12 @@
|
||||
@@ -225,10 +_,12 @@
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -44,7 +44,7 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -357,7 +_,7 @@
|
||||
@@ -348,7 +_,7 @@
|
||||
private <T extends ParticleOptions> Particle makeParticle(
|
||||
T p_107396_, double p_107397_, double p_107398_, double p_107399_, double p_107400_, double p_107401_, double p_107402_
|
||||
) {
|
||||
|
|
@ -53,35 +53,61 @@
|
|||
return particleprovider == null
|
||||
? null
|
||||
: particleprovider.createParticle(p_107396_, this.level, p_107397_, p_107398_, p_107399_, p_107400_, p_107401_, p_107402_);
|
||||
@@ -433,17 +_,26 @@
|
||||
@@ -424,28 +_,36 @@
|
||||
}
|
||||
}
|
||||
|
||||
+
|
||||
+ /**@deprecated Forge: use {@link #render(LightTexture, Camera, float, net.minecraft.client.renderer.culling.Frustum)} with Frustum as additional parameter*/
|
||||
+ /**@deprecated Forge: use {@link #render(Camera, float, net.minecraft.client.renderer.culling.Frustum)} with Frustum as additional parameter*/
|
||||
+ @Deprecated
|
||||
public void render(LightTexture p_107339_, Camera p_107340_, float p_107341_) {
|
||||
+ render(p_107339_, p_107340_, p_107341_, null);
|
||||
public void render(Camera p_107340_, float p_107341_, MultiBufferSource.BufferSource p_377798_) {
|
||||
- for (ParticleRenderType particlerendertype : RENDER_ORDER) {
|
||||
+ render(p_107340_, p_107341_, p_377798_, null);
|
||||
+ }
|
||||
+
|
||||
+ public void render(LightTexture p_107339_, Camera p_107340_, float p_107341_, @Nullable net.minecraft.client.renderer.culling.Frustum frustum) {
|
||||
p_107339_.turnOnLightLayer();
|
||||
RenderSystem.enableDepthTest();
|
||||
|
||||
- for (ParticleRenderType particlerendertype : RENDER_ORDER) {
|
||||
+ public void render(Camera p_107340_, float p_107341_, MultiBufferSource.BufferSource p_377798_, @Nullable net.minecraft.client.renderer.culling.Frustum frustum) {
|
||||
+ for (ParticleRenderType particlerendertype : this.particles.keySet()) { // Forge: allow custom IParticleRenderType's
|
||||
+ if (particlerendertype == ParticleRenderType.NO_RENDER) continue;
|
||||
Queue<Particle> queue = this.particles.get(particlerendertype);
|
||||
if (queue != null && !queue.isEmpty()) {
|
||||
Tesselator tesselator = Tesselator.getInstance();
|
||||
BufferBuilder bufferbuilder = particlerendertype.begin(tesselator, this.textureManager);
|
||||
if (bufferbuilder != null) {
|
||||
for (Particle particle : queue) {
|
||||
+ if (frustum != null && particle.shouldCull() && !frustum.isVisible(particle.getBoundingBox())) continue;
|
||||
try {
|
||||
particle.render(bufferbuilder, p_107340_, p_107341_);
|
||||
} catch (Throwable throwable) {
|
||||
@@ -475,7 +_,7 @@
|
||||
- renderParticleType(p_107340_, p_107341_, p_377798_, particlerendertype, queue);
|
||||
+ renderParticleType(p_107340_, p_107341_, p_377798_, particlerendertype, queue, frustum);
|
||||
}
|
||||
}
|
||||
|
||||
Queue<Particle> queue1 = this.particles.get(ParticleRenderType.CUSTOM);
|
||||
if (queue1 != null && !queue1.isEmpty()) {
|
||||
- renderCustomParticles(p_107340_, p_107341_, p_377798_, queue1);
|
||||
+ renderCustomParticles(p_107340_, p_107341_, p_377798_, queue1, frustum);
|
||||
}
|
||||
|
||||
p_377798_.endBatch();
|
||||
}
|
||||
|
||||
private static void renderParticleType(
|
||||
- Camera p_376120_, float p_375470_, MultiBufferSource.BufferSource p_377543_, ParticleRenderType p_378369_, Queue<Particle> p_376283_
|
||||
+ Camera p_376120_, float p_375470_, MultiBufferSource.BufferSource p_377543_, ParticleRenderType p_378369_, Queue<Particle> p_376283_, @Nullable net.minecraft.client.renderer.culling.Frustum frustum
|
||||
) {
|
||||
VertexConsumer vertexconsumer = p_377543_.getBuffer(Objects.requireNonNull(p_378369_.renderType()));
|
||||
|
||||
for (Particle particle : p_376283_) {
|
||||
+ if (frustum != null && particle.shouldCull() && !frustum.isVisible(particle.getBoundingBox())) continue;
|
||||
try {
|
||||
particle.render(vertexconsumer, p_376120_, p_375470_);
|
||||
} catch (Throwable throwable) {
|
||||
@@ -458,10 +_,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
- private static void renderCustomParticles(Camera p_377913_, float p_376893_, MultiBufferSource.BufferSource p_376978_, Queue<Particle> p_375784_) {
|
||||
+ private static void renderCustomParticles(Camera p_377913_, float p_376893_, MultiBufferSource.BufferSource p_376978_, Queue<Particle> p_375784_, @Nullable net.minecraft.client.renderer.culling.Frustum frustum) {
|
||||
PoseStack posestack = new PoseStack();
|
||||
|
||||
for (Particle particle : p_375784_) {
|
||||
+ if (frustum != null && particle.shouldCull() && !frustum.isVisible(particle.getBoundingBox())) continue;
|
||||
try {
|
||||
particle.renderCustom(posestack, p_376978_, p_377913_, p_376893_);
|
||||
} catch (Throwable throwable) {
|
||||
@@ -481,7 +_,7 @@
|
||||
}
|
||||
|
||||
public void destroy(BlockPos p_107356_, BlockState p_107357_) {
|
||||
|
|
@ -90,7 +116,7 @@
|
|||
VoxelShape voxelshape = p_107357_.getShape(this.level, p_107356_);
|
||||
double d0 = 0.25;
|
||||
voxelshape.forAllBoxes(
|
||||
@@ -508,6 +_,7 @@
|
||||
@@ -514,6 +_,7 @@
|
||||
p_107357_,
|
||||
p_107356_
|
||||
)
|
||||
|
|
@ -98,7 +124,7 @@
|
|||
);
|
||||
}
|
||||
}
|
||||
@@ -517,6 +_,13 @@
|
||||
@@ -523,6 +_,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -112,7 +138,7 @@
|
|||
public void crack(BlockPos p_107368_, Direction p_107369_) {
|
||||
BlockState blockstate = this.level.getBlockState(p_107368_);
|
||||
if (blockstate.getRenderShape() != RenderShape.INVISIBLE && blockstate.shouldSpawnTerrainParticles()) {
|
||||
@@ -552,7 +_,7 @@
|
||||
@@ -558,7 +_,7 @@
|
||||
d0 = (double)i + aabb.maxX + 0.1F;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/player/LocalPlayer.java
|
||||
+++ b/net/minecraft/client/player/LocalPlayer.java
|
||||
@@ -303,6 +_,7 @@
|
||||
@@ -308,6 +_,7 @@
|
||||
ServerboundPlayerActionPacket.Action serverboundplayeractionpacket$action = p_108701_
|
||||
? ServerboundPlayerActionPacket.Action.DROP_ALL_ITEMS
|
||||
: ServerboundPlayerActionPacket.Action.DROP_ITEM;
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
ItemStack itemstack = this.getInventory().removeFromSelected(p_108701_);
|
||||
this.connection.send(new ServerboundPlayerActionPacket(serverboundplayeractionpacket$action, BlockPos.ZERO, Direction.DOWN));
|
||||
return !itemstack.isEmpty();
|
||||
@@ -488,7 +_,11 @@
|
||||
@@ -493,7 +_,11 @@
|
||||
|
||||
@Override
|
||||
public void playSound(SoundEvent p_108651_, float p_108652_, float p_108653_) {
|
||||
|
|
@ -21,43 +21,43 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -682,6 +_,7 @@
|
||||
@@ -686,6 +_,7 @@
|
||||
&& this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.CROUCHING)
|
||||
&& (this.isShiftKeyDown() || !this.isSleeping() && !this.canPlayerFitWithinBlocksAndEntitiesWhen(Pose.STANDING));
|
||||
float f = (float)this.getAttributeValue(Attributes.SNEAKING_SPEED);
|
||||
this.input.tick(this.isMovingSlowly(), f);
|
||||
this.input.tick();
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onMovementInputUpdate(this, this.input);
|
||||
this.minecraft.getTutorial().onInput(this.input);
|
||||
if (this.isUsingItem() && !this.isPassenger()) {
|
||||
this.input.leftImpulse *= 0.2F;
|
||||
@@ -710,7 +_,7 @@
|
||||
boolean flag4 = this.canStartSprinting();
|
||||
boolean flag5 = this.isPassenger() ? this.getVehicle().onGround() : this.onGround();
|
||||
boolean flag6 = !flag1 && !flag2;
|
||||
- if ((flag5 || this.isUnderWater()) && flag6 && flag4) {
|
||||
+ if ((flag5 || this.isUnderWater() || this.canStartSwimming()) && flag6 && flag4) {
|
||||
if (this.shouldStopSprinting()) {
|
||||
this.setSprinting(false);
|
||||
@@ -724,7 +_,7 @@
|
||||
boolean flag3 = this.canStartSprinting();
|
||||
boolean flag4 = this.isPassenger() ? this.getVehicle().onGround() : this.onGround();
|
||||
boolean flag5 = !flag1 && !flag2;
|
||||
- if ((flag4 || this.isUnderWater()) && flag5 && flag3) {
|
||||
+ if ((flag4 || this.isUnderWater() || this.canStartSwimming()) && flag5 && flag3) {
|
||||
if (this.sprintTriggerTime <= 0 && !this.minecraft.options.keySprint.isDown()) {
|
||||
this.sprintTriggerTime = 7;
|
||||
} else {
|
||||
@@ -718,15 +_,15 @@
|
||||
@@ -732,15 +_,16 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if ((!this.isInWater() || this.isUnderWater()) && flag4 && this.minecraft.options.keySprint.isDown()) {
|
||||
+ if (!this.isSprinting() && (!(this.isInWater() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType))) || (this.isUnderWater() || this.canStartSwimming())) && this.hasEnoughImpulseToStartSprinting() && flag4 && !this.isUsingItem() && !this.hasEffect(MobEffects.BLINDNESS) && this.minecraft.options.keySprint.isDown()) {
|
||||
- if ((!this.isInWater() || this.isUnderWater()) && flag3 && this.minecraft.options.keySprint.isDown()) {
|
||||
+ if ((!this.isInWaterOrSwimmable() || this.isUnderWater() || this.canStartSwimming()) && flag3 && this.minecraft.options.keySprint.isDown()) {
|
||||
this.setSprinting(true);
|
||||
}
|
||||
|
||||
if (this.isSprinting()) {
|
||||
boolean flag7 = !this.input.hasForwardImpulse() || !this.hasEnoughFoodToStartSprinting();
|
||||
- boolean flag8 = flag7 || this.horizontalCollision && !this.minorHorizontalCollision || this.isInWater() && !this.isUnderWater();
|
||||
+ boolean flag8 = flag7 || this.horizontalCollision && !this.minorHorizontalCollision || this.isInWater() && !this.isUnderWater() || (this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)) && !this.canStartSwimming());
|
||||
boolean flag6 = !this.input.hasForwardImpulse() || !this.hasEnoughFoodToStartSprinting();
|
||||
boolean flag7 = flag6 || this.horizontalCollision && !this.minorHorizontalCollision || this.isInWater() && !this.isUnderWater();
|
||||
+ flag7 = flag7 || (this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)) && !this.canStartSwimming());
|
||||
if (this.isSwimming()) {
|
||||
- if (!this.onGround() && !this.input.keyPresses.shift() && flag7 || !this.isInWater()) {
|
||||
+ if (!this.onGround() && !this.input.keyPresses.shift() && flag7 || !(this.isInWater() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType)))) {
|
||||
- if (!this.onGround() && !this.input.keyPresses.shift() && flag6 || !this.isInWater()) {
|
||||
+ if (!this.onGround() && !this.input.keyPresses.shift() && flag7 || !this.isInWaterOrSwimmable()) {
|
||||
this.setSprinting(false);
|
||||
}
|
||||
} else if (flag8) {
|
||||
@@ -763,8 +_,9 @@
|
||||
} else if (flag7) {
|
||||
@@ -777,8 +_,9 @@
|
||||
}
|
||||
|
||||
this.wasFallFlying = this.isFallFlying();
|
||||
|
|
@ -69,7 +69,7 @@
|
|||
}
|
||||
|
||||
if (this.isEyeInFluid(FluidTags.WATER)) {
|
||||
@@ -870,6 +_,8 @@
|
||||
@@ -900,6 +_,8 @@
|
||||
@Override
|
||||
public void rideTick() {
|
||||
super.rideTick();
|
||||
|
|
@ -78,7 +78,7 @@
|
|||
this.handsBusy = false;
|
||||
if (this.getControlledVehicle() instanceof AbstractBoat abstractboat) {
|
||||
abstractboat.setInput(
|
||||
@@ -1146,6 +_,18 @@
|
||||
@@ -1177,6 +_,18 @@
|
||||
@Override
|
||||
public float getVisualRotationYInDegrees() {
|
||||
return this.getYRot();
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -468,12 +_,12 @@
|
||||
@@ -470,12 +_,12 @@
|
||||
(float)((double)window.getHeight() / window.getGuiScale()),
|
||||
0.0F,
|
||||
1000.0F,
|
||||
|
|
@ -49,7 +49,7 @@
|
|||
Lighting.setupFor3DItems();
|
||||
GuiGraphics guigraphics = new GuiGraphics(this.minecraft, this.renderBuffers.bufferSource());
|
||||
if (flag && p_109096_ && this.minecraft.level != null) {
|
||||
@@ -499,7 +_,7 @@
|
||||
@@ -501,7 +_,7 @@
|
||||
}
|
||||
} else if (flag && this.minecraft.screen != null) {
|
||||
try {
|
||||
|
|
@ -58,7 +58,7 @@
|
|||
} catch (Throwable throwable1) {
|
||||
CrashReport crashreport1 = CrashReport.forThrowable(throwable1, "Rendering screen");
|
||||
CrashReportCategory crashreportcategory1 = crashreport1.addCategory("Screen render details");
|
||||
@@ -655,6 +_,9 @@
|
||||
@@ -657,6 +_,9 @@
|
||||
if (this.minecraft.options.bobView().get()) {
|
||||
this.bobView(posestack, camera.getPartialTickTime());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,18 +5,18 @@
|
|||
@OnlyIn(Dist.CLIENT)
|
||||
public class ItemBlockRenderTypes {
|
||||
+ @Deprecated
|
||||
private static final Map<Block, RenderType> TYPE_BY_BLOCK = Util.make(Maps.newHashMap(), p_357825_ -> {
|
||||
private static final Map<Block, RenderType> TYPE_BY_BLOCK = Util.make(Maps.newHashMap(), p_374604_ -> {
|
||||
RenderType rendertype = RenderType.tripwire();
|
||||
p_357825_.put(Blocks.TRIPWIRE, rendertype);
|
||||
@@ -340,6 +_,7 @@
|
||||
p_357825_.put(Blocks.BUBBLE_COLUMN, rendertype3);
|
||||
p_357825_.put(Blocks.TINTED_GLASS, rendertype3);
|
||||
p_374604_.put(Blocks.TRIPWIRE, rendertype);
|
||||
@@ -345,6 +_,7 @@
|
||||
p_374604_.put(Blocks.BUBBLE_COLUMN, rendertype3);
|
||||
p_374604_.put(Blocks.TINTED_GLASS, rendertype3);
|
||||
});
|
||||
+ @Deprecated
|
||||
private static final Map<Fluid, RenderType> TYPE_BY_FLUID = Util.make(Maps.newHashMap(), p_109290_ -> {
|
||||
RenderType rendertype = RenderType.translucent();
|
||||
p_109290_.put(Fluids.FLOWING_WATER, rendertype);
|
||||
@@ -347,6 +_,8 @@
|
||||
@@ -352,6 +_,8 @@
|
||||
});
|
||||
private static boolean renderCutout;
|
||||
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
public static RenderType getChunkRenderType(BlockState p_109283_) {
|
||||
Block block = p_109283_.getBlock();
|
||||
if (block instanceof LeavesBlock) {
|
||||
@@ -357,6 +_,8 @@
|
||||
@@ -362,6 +_,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
public static RenderType getMovingBlockRenderType(BlockState p_109294_) {
|
||||
Block block = p_109294_.getBlock();
|
||||
if (block instanceof LeavesBlock) {
|
||||
@@ -371,6 +_,8 @@
|
||||
@@ -376,6 +_,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
public static RenderType getRenderType(BlockState p_364446_) {
|
||||
RenderType rendertype = getChunkRenderType(p_364446_);
|
||||
return rendertype == RenderType.translucent() ? Sheets.translucentItemSheet() : Sheets.cutoutBlockSheet();
|
||||
@@ -385,12 +_,77 @@
|
||||
@@ -390,12 +_,77 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/renderer/ItemInHandRenderer.java
|
||||
+++ b/net/minecraft/client/renderer/ItemInHandRenderer.java
|
||||
@@ -339,12 +_,14 @@
|
||||
@@ -343,12 +_,14 @@
|
||||
if (iteminhandrenderer$handrenderselection.renderMainHand) {
|
||||
float f4 = interactionhand == InteractionHand.MAIN_HAND ? f : 0.0F;
|
||||
float f5 = 1.0F - Mth.lerp(p_109315_, this.oMainHandHeight, this.mainHandHeight);
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
this.renderArmWithItem(p_109318_, p_109315_, f1, InteractionHand.OFF_HAND, f6, this.offHandItem, f7, p_109316_, p_109317_, p_109319_);
|
||||
}
|
||||
|
||||
@@ -410,7 +_,7 @@
|
||||
@@ -414,7 +_,7 @@
|
||||
} else {
|
||||
this.renderOneHandedMap(p_109379_, p_109380_, p_109381_, p_109378_, humanoidarm, p_109376_, p_109377_);
|
||||
}
|
||||
|
|
@ -25,19 +25,20 @@
|
|||
boolean flag2 = humanoidarm == HumanoidArm.RIGHT;
|
||||
int i = flag2 ? 1 : -1;
|
||||
@@ -460,6 +_,7 @@
|
||||
);
|
||||
} else {
|
||||
boolean flag3 = humanoidarm == HumanoidArm.RIGHT;
|
||||
int j = flag3 ? 1 : -1;
|
||||
+ if (!net.minecraftforge.client.extensions.common.IClientItemExtensions.of(p_109377_).applyForgeHandTransform(p_109379_, minecraft.player, humanoidarm, p_109377_, p_109373_, p_109378_, p_109376_)) // FORGE: Allow items to define custom arm animation
|
||||
if (p_109372_.isUsingItem() && p_109372_.getUseItemRemainingTicks() > 0 && p_109372_.getUsedItemHand() == p_109375_) {
|
||||
int k = flag3 ? 1 : -1;
|
||||
switch (p_109377_.getUseAnimation()) {
|
||||
@@ -574,8 +_,16 @@
|
||||
case NONE:
|
||||
@@ -588,8 +_,18 @@
|
||||
this.offHandHeight = Mth.clamp(this.offHandHeight - 0.4F, 0.0F, 1.0F);
|
||||
} else {
|
||||
float f = localplayer.getAttackStrengthScale(1.0F);
|
||||
- this.mainHandHeight = this.mainHandHeight + Mth.clamp((this.mainHandItem == itemstack ? f * f * f : 0.0F) - this.mainHandHeight, -0.4F, 0.4F);
|
||||
- this.offHandHeight = this.offHandHeight + Mth.clamp((float)(this.offHandItem == itemstack1 ? 1 : 0) - this.offHandHeight, -0.4F, 0.4F);
|
||||
- float f1 = this.mainHandItem != itemstack ? 0.0F : f * f * f;
|
||||
- float f2 = this.offHandItem != itemstack1 ? 0.0F : 1.0F;
|
||||
+
|
||||
+ boolean requipM = net.minecraftforge.client.ForgeHooksClient.shouldCauseReequipAnimation(this.mainHandItem, itemstack, localplayer.getInventory().selected);
|
||||
+ boolean requipO = net.minecraftforge.client.ForgeHooksClient.shouldCauseReequipAnimation(this.offHandItem, itemstack1, -1);
|
||||
+
|
||||
|
|
@ -46,8 +47,9 @@
|
|||
+ if (!requipO && this.offHandItem != itemstack1)
|
||||
+ this.offHandItem = itemstack1;
|
||||
+
|
||||
+ this.mainHandHeight += Mth.clamp((!requipM ? f * f * f : 0.0F) - this.mainHandHeight, -0.4F, 0.4F);
|
||||
+ this.offHandHeight += Mth.clamp((float)(!requipO ? 1 : 0) - this.offHandHeight, -0.4F, 0.4F);
|
||||
+ float f1 = requipM ? 0.0F : f * f * f;
|
||||
+ float f2 = requipO ? 0.0F : 1.0F;
|
||||
+
|
||||
this.mainHandHeight = this.mainHandHeight + Mth.clamp(f1 - this.mainHandHeight, -0.4F, 0.4F);
|
||||
this.offHandHeight = this.offHandHeight + Mth.clamp(f2 - this.offHandHeight, -0.4F, 0.4F);
|
||||
}
|
||||
|
||||
if (this.mainHandHeight < 0.1F) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/renderer/LevelRenderer.java
|
||||
+++ b/net/minecraft/client/renderer/LevelRenderer.java
|
||||
@@ -111,7 +_,7 @@
|
||||
@@ -109,7 +_,7 @@
|
||||
private final SkyRenderer skyRenderer = new SkyRenderer();
|
||||
private final CloudRenderer cloudRenderer = new CloudRenderer();
|
||||
private final WorldBorderRenderer worldBorderRenderer = new WorldBorderRenderer();
|
||||
|
|
@ -9,16 +9,16 @@
|
|||
@Nullable
|
||||
private ClientLevel level;
|
||||
private final SectionOcclusionGraph sectionOcclusionGraph = new SectionOcclusionGraph();
|
||||
@@ -487,7 +_,7 @@
|
||||
@@ -482,7 +_,7 @@
|
||||
postchain1.addToFrame(framegraphbuilder, i, j, this.targets);
|
||||
}
|
||||
|
||||
- this.addParticlesPass(framegraphbuilder, p_109604_, p_109606_, f, fogparameters);
|
||||
+ this.addParticlesPass(framegraphbuilder, p_109604_, p_109606_, f, fogparameters, frustum);
|
||||
- this.addParticlesPass(framegraphbuilder, p_109604_, f, fogparameters);
|
||||
+ this.addParticlesPass(framegraphbuilder, p_109604_, f, fogparameters, frustum);
|
||||
CloudStatus cloudstatus = this.minecraft.options.getCloudsType();
|
||||
if (cloudstatus != CloudStatus.OFF) {
|
||||
float f2 = this.level.effects().getCloudHeight();
|
||||
@@ -569,7 +_,11 @@
|
||||
@@ -564,7 +_,11 @@
|
||||
double d2 = vec3.z();
|
||||
p_369478_.push("terrain");
|
||||
this.renderSectionLayer(RenderType.solid(), d0, d1, d2, p_361439_, p_369924_);
|
||||
|
|
@ -30,7 +30,7 @@
|
|||
this.renderSectionLayer(RenderType.cutout(), d0, d1, d2, p_361439_, p_369924_);
|
||||
if (this.level.effects().constantAmbientLight()) {
|
||||
Lighting.setupNetherLevel();
|
||||
@@ -603,7 +_,7 @@
|
||||
@@ -598,7 +_,7 @@
|
||||
multibuffersource$buffersource.endLastBatch();
|
||||
this.checkPoseStack(posestack);
|
||||
p_369478_.popPush("blockentities");
|
||||
|
|
@ -39,7 +39,7 @@
|
|||
multibuffersource$buffersource.endLastBatch();
|
||||
this.checkPoseStack(posestack);
|
||||
multibuffersource$buffersource.endBatch(RenderType.solid());
|
||||
@@ -617,8 +_,8 @@
|
||||
@@ -612,8 +_,8 @@
|
||||
multibuffersource$buffersource.endBatch(Sheets.hangingSignSheet());
|
||||
multibuffersource$buffersource.endBatch(Sheets.chestSheet());
|
||||
this.renderBuffers.outlineBufferSource().endOutlineBatch();
|
||||
|
|
@ -50,7 +50,7 @@
|
|||
}
|
||||
|
||||
p_369478_.popPush("debug");
|
||||
@@ -648,8 +_,8 @@
|
||||
@@ -643,8 +_,8 @@
|
||||
this.renderSectionLayer(RenderType.translucent(), d0, d1, d2, p_361439_, p_369924_);
|
||||
p_369478_.popPush("string");
|
||||
this.renderSectionLayer(RenderType.tripwire(), d0, d1, d2, p_361439_, p_369924_);
|
||||
|
|
@ -61,25 +61,25 @@
|
|||
}
|
||||
|
||||
multibuffersource$buffersource.endBatch();
|
||||
@@ -657,7 +_,7 @@
|
||||
@@ -652,7 +_,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
- private void addParticlesPass(FrameGraphBuilder p_366471_, Camera p_363128_, LightTexture p_366434_, float p_365755_, FogParameters p_363695_) {
|
||||
+ private void addParticlesPass(FrameGraphBuilder p_366471_, Camera p_363128_, LightTexture p_366434_, float p_365755_, FogParameters p_363695_, Frustum frustum) {
|
||||
- private void addParticlesPass(FrameGraphBuilder p_366471_, Camera p_363128_, float p_365755_, FogParameters p_363695_) {
|
||||
+ private void addParticlesPass(FrameGraphBuilder p_366471_, Camera p_363128_, float p_365755_, FogParameters p_363695_, Frustum frustum) {
|
||||
FramePass framepass = p_366471_.addPass("particles");
|
||||
if (this.targets.particles != null) {
|
||||
this.targets.particles = framepass.readsAndWrites(this.targets.particles);
|
||||
@@ -677,7 +_,7 @@
|
||||
@@ -671,7 +_,7 @@
|
||||
resourcehandle1.get().copyDepthFrom(resourcehandle.get());
|
||||
}
|
||||
|
||||
RenderStateShard.PARTICLES_TARGET.setupRenderState();
|
||||
- this.minecraft.particleEngine.render(p_366434_, p_363128_, p_365755_);
|
||||
+ this.minecraft.particleEngine.render(p_366434_, p_363128_, p_365755_, frustum);
|
||||
RenderStateShard.PARTICLES_TARGET.clearRenderState();
|
||||
- this.minecraft.particleEngine.render(p_363128_, p_365755_, this.renderBuffers.bufferSource());
|
||||
+ this.minecraft.particleEngine.render(p_363128_, p_365755_, this.renderBuffers.bufferSource(), frustum);
|
||||
});
|
||||
}
|
||||
@@ -766,9 +_,9 @@
|
||||
|
||||
@@ -759,9 +_,9 @@
|
||||
|| p_365712_.isDetached()
|
||||
|| p_365712_.getEntity() instanceof LivingEntity && ((LivingEntity)p_365712_.getEntity()).isSleeping()
|
||||
)
|
||||
|
|
@ -91,7 +91,7 @@
|
|||
flag = true;
|
||||
}
|
||||
}
|
||||
@@ -808,9 +_,10 @@
|
||||
@@ -801,9 +_,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -104,7 +104,7 @@
|
|||
Vec3 vec3 = p_369847_.getPosition();
|
||||
double d0 = vec3.x();
|
||||
double d1 = vec3.y();
|
||||
@@ -820,6 +_,7 @@
|
||||
@@ -813,6 +_,7 @@
|
||||
List<BlockEntity> list = sectionrenderdispatcher$rendersection.getCompiled().getRenderableBlockEntities();
|
||||
if (!list.isEmpty()) {
|
||||
for (BlockEntity blockentity : list) {
|
||||
|
|
@ -112,7 +112,7 @@
|
|||
BlockPos blockpos = blockentity.getBlockPos();
|
||||
MultiBufferSource multibuffersource = p_362022_;
|
||||
p_366168_.pushPose();
|
||||
@@ -839,6 +_,9 @@
|
||||
@@ -832,6 +_,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -122,7 +122,7 @@
|
|||
this.blockEntityRenderDispatcher.render(blockentity, p_367074_, p_366168_, multibuffersource);
|
||||
p_366168_.popPose();
|
||||
}
|
||||
@@ -847,13 +_,18 @@
|
||||
@@ -840,13 +_,18 @@
|
||||
|
||||
synchronized (this.globalBlockEntities) {
|
||||
for (BlockEntity blockentity1 : this.globalBlockEntities) {
|
||||
|
|
@ -141,7 +141,7 @@
|
|||
}
|
||||
|
||||
private void renderBlockDestroyAnimation(PoseStack p_366956_, Camera p_369324_, MultiBufferSource.BufferSource p_365998_) {
|
||||
@@ -872,14 +_,14 @@
|
||||
@@ -865,14 +_,14 @@
|
||||
p_366956_.translate((double)blockpos.getX() - d0, (double)blockpos.getY() - d1, (double)blockpos.getZ() - d2);
|
||||
PoseStack.Pose posestack$pose = p_366956_.last();
|
||||
VertexConsumer vertexconsumer = new SheetedDecalTextureGenerator(p_365998_.getBuffer(ModelBakery.DESTROY_TYPES.get(i)), posestack$pose, 1.0F);
|
||||
|
|
@ -158,7 +158,7 @@
|
|||
if (this.minecraft.hitResult instanceof BlockHitResult blockhitresult) {
|
||||
if (blockhitresult.getType() != HitResult.Type.MISS) {
|
||||
BlockPos blockpos = blockhitresult.getBlockPos();
|
||||
@@ -890,6 +_,9 @@
|
||||
@@ -883,6 +_,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -168,7 +168,7 @@
|
|||
Vec3 vec3 = p_367935_.getPosition();
|
||||
Boolean obool = this.minecraft.options.highContrastBlockOutline().get();
|
||||
if (obool) {
|
||||
@@ -905,6 +_,8 @@
|
||||
@@ -898,6 +_,8 @@
|
||||
p_367206_.endLastBatch();
|
||||
}
|
||||
}
|
||||
|
|
@ -177,7 +177,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -1391,7 +_,7 @@
|
||||
@@ -1367,7 +_,7 @@
|
||||
} else {
|
||||
int i = p_109538_.getBrightness(LightLayer.SKY, p_109540_);
|
||||
int j = p_109538_.getBrightness(LightLayer.BLOCK, p_109540_);
|
||||
|
|
@ -186,7 +186,7 @@
|
|||
if (j < k) {
|
||||
j = k;
|
||||
}
|
||||
@@ -1453,5 +_,21 @@
|
||||
@@ -1429,5 +_,21 @@
|
||||
|
||||
public CloudRenderer getCloudRenderer() {
|
||||
return this.cloudRenderer;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/renderer/RenderType.java
|
||||
+++ b/net/minecraft/client/renderer/RenderType.java
|
||||
@@ -800,11 +_,22 @@
|
||||
@@ -929,11 +_,22 @@
|
||||
.createCompositeState(false)
|
||||
);
|
||||
private static final ImmutableList<RenderType> CHUNK_BUFFER_LAYERS = ImmutableList.of(solid(), cutoutMipped(), cutout(), translucent(), tripwire());
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
public static RenderType solid() {
|
||||
return SOLID;
|
||||
@@ -1025,7 +_,7 @@
|
||||
@@ -1154,7 +_,7 @@
|
||||
}
|
||||
|
||||
public static RenderType text(ResourceLocation p_110498_) {
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
}
|
||||
|
||||
public static RenderType textBackground() {
|
||||
@@ -1033,19 +_,19 @@
|
||||
@@ -1162,19 +_,19 @@
|
||||
}
|
||||
|
||||
public static RenderType textIntensity(ResourceLocation p_173238_) {
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
}
|
||||
|
||||
public static RenderType textBackgroundSeeThrough() {
|
||||
@@ -1053,7 +_,7 @@
|
||||
@@ -1182,7 +_,7 @@
|
||||
}
|
||||
|
||||
public static RenderType textIntensitySeeThrough(ResourceLocation p_173241_) {
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
--- a/net/minecraft/client/renderer/ScreenEffectRenderer.java
|
||||
+++ b/net/minecraft/client/renderer/ScreenEffectRenderer.java
|
||||
@@ -31,17 +_,24 @@
|
||||
@@ -27,17 +_,24 @@
|
||||
Player player = p_110719_.player;
|
||||
if (!player.noPhysics) {
|
||||
BlockState blockstate = getViewBlockingState(player);
|
||||
- if (blockstate != null) {
|
||||
- renderTex(p_110719_.getBlockRenderer().getBlockModelShaper().getParticleIcon(blockstate), p_110720_);
|
||||
- renderTex(p_110719_.getBlockRenderer().getBlockModelShaper().getParticleIcon(blockstate), p_110720_, p_378238_);
|
||||
+ var overlay = getOverlayBlock(player);
|
||||
+ if (overlay != null) {
|
||||
+ if (!net.minecraftforge.client.ForgeHooksClient.renderBlockOverlay(player, p_110720_, net.minecraftforge.client.event.RenderBlockScreenEffectEvent.OverlayType.BLOCK, overlay.getLeft(), overlay.getRight())) {
|
||||
+ renderTex(p_110719_.getBlockRenderer().getBlockModelShaper().getTexture(overlay.getLeft(), p_110719_.level, overlay.getRight()), p_110720_);
|
||||
+ renderTex(p_110719_.getBlockRenderer().getBlockModelShaper().getTexture(overlay.getLeft(), p_110719_.level, overlay.getRight()), p_110720_, p_378238_);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
|
@ -17,17 +17,17 @@
|
|||
if (!p_110719_.player.isSpectator()) {
|
||||
if (p_110719_.player.isEyeInFluid(FluidTags.WATER)) {
|
||||
+ if (!net.minecraftforge.client.ForgeHooksClient.renderWaterOverlay(player, p_110720_))
|
||||
renderWater(p_110719_, p_110720_);
|
||||
renderWater(p_110719_, p_110720_, p_378238_);
|
||||
+ } else if (!player.getEyeInFluidType().isAir()) {
|
||||
+ net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions.of(player.getEyeInFluidType()).renderOverlay(p_110719_, p_110720_);
|
||||
+ net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions.of(player.getEyeInFluidType()).renderOverlay(p_110719_, p_110720_, p_378238_);
|
||||
}
|
||||
|
||||
if (p_110719_.player.isOnFire()) {
|
||||
+ if (!net.minecraftforge.client.ForgeHooksClient.renderFireOverlay(player, p_110720_))
|
||||
renderFire(p_110719_, p_110720_);
|
||||
renderFire(p_110720_, p_378238_);
|
||||
}
|
||||
}
|
||||
@@ -49,6 +_,12 @@
|
||||
@@ -45,6 +_,12 @@
|
||||
|
||||
@Nullable
|
||||
private static BlockState getViewBlockingState(Player p_110717_) {
|
||||
|
|
@ -40,7 +40,7 @@
|
|||
BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
@@ -58,7 +_,7 @@
|
||||
@@ -54,7 +_,7 @@
|
||||
blockpos$mutableblockpos.set(d0, d1, d2);
|
||||
BlockState blockstate = p_110717_.level().getBlockState(blockpos$mutableblockpos);
|
||||
if (blockstate.getRenderShape() != RenderShape.INVISIBLE && blockstate.isViewBlocking(p_110717_.level(), blockpos$mutableblockpos)) {
|
||||
|
|
@ -49,17 +49,23 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -88,8 +_,12 @@
|
||||
@@ -82,6 +_,10 @@
|
||||
}
|
||||
|
||||
private static void renderWater(Minecraft p_110726_, PoseStack p_110727_) {
|
||||
+ renderFluid(p_110726_, p_110727_, UNDERWATER_LOCATION);
|
||||
private static void renderWater(Minecraft p_110726_, PoseStack p_110727_, MultiBufferSource p_376402_) {
|
||||
+ renderFluid(p_110726_, p_110727_, p_376402_, UNDERWATER_LOCATION);
|
||||
+ }
|
||||
+
|
||||
+ public static void renderFluid(Minecraft p_110726_, PoseStack p_110727_, ResourceLocation texture) {
|
||||
RenderSystem.setShader(CoreShaders.POSITION_TEX);
|
||||
- RenderSystem.setShaderTexture(0, UNDERWATER_LOCATION);
|
||||
+ RenderSystem.setShaderTexture(0, texture);
|
||||
+ public static void renderFluid(Minecraft p_110726_, PoseStack p_110727_, MultiBufferSource p_376402_, ResourceLocation texture) {
|
||||
BlockPos blockpos = BlockPos.containing(p_110726_.player.getX(), p_110726_.player.getEyeY(), p_110726_.player.getZ());
|
||||
float f = LightTexture.getBrightness(p_110726_.player.level().dimensionType(), p_110726_.player.level().getMaxLocalRawBrightness(blockpos));
|
||||
RenderSystem.enableBlend();
|
||||
int i = ARGB.colorFromFloat(0.1F, f, f, f);
|
||||
@@ -94,7 +_,7 @@
|
||||
float f7 = -p_110726_.player.getYRot() / 64.0F;
|
||||
float f8 = p_110726_.player.getXRot() / 64.0F;
|
||||
Matrix4f matrix4f = p_110727_.last().pose();
|
||||
- VertexConsumer vertexconsumer = p_376402_.getBuffer(RenderType.blockScreenEffect(UNDERWATER_LOCATION));
|
||||
+ VertexConsumer vertexconsumer = p_376402_.getBuffer(RenderType.blockScreenEffect(texture));
|
||||
vertexconsumer.addVertex(matrix4f, -1.0F, -1.0F, -0.5F).setUv(4.0F + f7, 4.0F + f8).setColor(i);
|
||||
vertexconsumer.addVertex(matrix4f, 1.0F, -1.0F, -0.5F).setUv(0.0F + f7, 4.0F + f8).setColor(i);
|
||||
vertexconsumer.addVertex(matrix4f, 1.0F, 1.0F, -0.5F).setUv(0.0F + f7, 0.0F + f8).setColor(i);
|
||||
|
|
|
|||
|
|
@ -1,20 +1,24 @@
|
|||
--- a/net/minecraft/client/renderer/Sheets.java
|
||||
+++ b/net/minecraft/client/renderer/Sheets.java
|
||||
@@ -140,11 +_,11 @@
|
||||
@@ -155,7 +_,7 @@
|
||||
}
|
||||
|
||||
private static Material createSignMaterial(WoodType p_173386_) {
|
||||
- return new Material(SIGN_SHEET, ResourceLocation.withDefaultNamespace("entity/signs/" + p_173386_.name()));
|
||||
+ return new Material(SIGN_SHEET, ResourceLocation.parse(p_173386_.name()).withPrefix("entity/signs/"));
|
||||
- return createSignMaterial(ResourceLocation.withDefaultNamespace(p_173386_.name()));
|
||||
+ return createSignMaterial(ResourceLocation.parse(p_173386_.name()));
|
||||
}
|
||||
|
||||
public static Material createSignMaterial(ResourceLocation p_378064_) {
|
||||
@@ -163,7 +_,7 @@
|
||||
}
|
||||
|
||||
private static Material createHangingSignMaterial(WoodType p_251735_) {
|
||||
- return new Material(SIGN_SHEET, ResourceLocation.withDefaultNamespace("entity/signs/hanging/" + p_251735_.name()));
|
||||
+ return new Material(SIGN_SHEET, ResourceLocation.parse(p_251735_.name()).withPrefix("entity/signs/hanging/"));
|
||||
- return createHangingSignMaterial(ResourceLocation.withDefaultNamespace(p_251735_.name()));
|
||||
+ return createHangingSignMaterial(ResourceLocation.parse(p_251735_.name()));
|
||||
}
|
||||
|
||||
public static Material getSignMaterial(WoodType p_173382_) {
|
||||
@@ -203,6 +_,23 @@
|
||||
public static Material createHangingSignMaterial(ResourceLocation p_377324_) {
|
||||
@@ -230,6 +_,23 @@
|
||||
case SINGLE:
|
||||
default:
|
||||
return p_110773_;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
+++ b/net/minecraft/client/renderer/block/BlockRenderDispatcher.java
|
||||
@@ -37,7 +_,7 @@
|
||||
this.blockModelShaper = p_173399_;
|
||||
this.blockEntityRenderer = p_173400_;
|
||||
this.specialBlockModelRenderer = p_378785_;
|
||||
this.blockColors = p_173401_;
|
||||
- this.modelRenderer = new ModelBlockRenderer(this.blockColors);
|
||||
+ this.modelRenderer = new net.minecraftforge.client.model.lighting.ForgeModelBlockRenderer(this.blockColors);
|
||||
|
|
@ -67,34 +67,16 @@
|
|||
+ public void renderSingleBlock(BlockState p_110913_, PoseStack p_110914_, MultiBufferSource p_110915_, int p_110916_, int p_110917_, net.minecraftforge.client.model.data.ModelData modelData, net.minecraft.client.renderer.RenderType renderType) {
|
||||
RenderShape rendershape = p_110913_.getRenderShape();
|
||||
if (rendershape != RenderShape.INVISIBLE) {
|
||||
switch (rendershape) {
|
||||
@@ -113,21 +_,26 @@
|
||||
float f = (float)(i >> 16 & 0xFF) / 255.0F;
|
||||
float f1 = (float)(i >> 8 & 0xFF) / 255.0F;
|
||||
float f2 = (float)(i & 0xFF) / 255.0F;
|
||||
+ for (var rt : bakedmodel.getRenderTypes(p_110913_, RandomSource.create(42), modelData))
|
||||
this.modelRenderer
|
||||
.renderModel(
|
||||
p_110914_.last(),
|
||||
- p_110915_.getBuffer(ItemBlockRenderTypes.getRenderType(p_110913_)),
|
||||
+ p_110915_.getBuffer(renderType != null ? renderType : net.minecraftforge.client.RenderTypeHelper.getEntityRenderType(rt)),
|
||||
p_110913_,
|
||||
bakedmodel,
|
||||
f,
|
||||
f1,
|
||||
f2,
|
||||
p_110916_,
|
||||
- p_110917_
|
||||
+ p_110917_,
|
||||
+ modelData,
|
||||
+ rt
|
||||
);
|
||||
break;
|
||||
case ENTITYBLOCK_ANIMATED:
|
||||
- this.blockEntityRenderer.renderByItem(new ItemStack(p_110913_.getBlock()), ItemDisplayContext.NONE, p_110914_, p_110915_, p_110916_, p_110917_);
|
||||
+ ItemStack stack = new ItemStack(p_110913_.getBlock());
|
||||
+ var renderer = net.minecraftforge.client.extensions.common.IClientItemExtensions.of(stack).getCustomRenderer();
|
||||
+ renderer.renderByItem(stack, ItemDisplayContext.NONE, p_110914_, p_110915_, p_110916_, p_110917_);
|
||||
}
|
||||
BakedModel bakedmodel = this.getBlockModel(p_110913_);
|
||||
@@ -111,9 +_,10 @@
|
||||
float f = (float)(i >> 16 & 0xFF) / 255.0F;
|
||||
float f1 = (float)(i >> 8 & 0xFF) / 255.0F;
|
||||
float f2 = (float)(i & 0xFF) / 255.0F;
|
||||
+ for (var rt : bakedmodel.getRenderTypes(p_110913_, RandomSource.create(42), modelData))
|
||||
this.modelRenderer
|
||||
.renderModel(
|
||||
- p_110914_.last(), p_110915_.getBuffer(ItemBlockRenderTypes.getRenderType(p_110913_)), p_110913_, bakedmodel, f, f1, f2, p_110916_, p_110917_
|
||||
+ p_110914_.last(), p_110915_.getBuffer(renderType != null ? renderType : net.minecraftforge.client.RenderTypeHelper.getEntityRenderType(rt)), p_110913_, bakedmodel, f, f1, f2, p_110916_, p_110917_, modelData, rt
|
||||
);
|
||||
this.specialBlockModelRenderer.get().renderByBlock(p_110913_.getBlock(), ItemDisplayContext.NONE, p_110914_, p_110915_, p_110916_, p_110917_);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,82 +1,47 @@
|
|||
--- a/net/minecraft/client/renderer/block/model/BlockModel.java
|
||||
+++ b/net/minecraft/client/renderer/block/model/BlockModel.java
|
||||
@@ -72,9 +_,10 @@
|
||||
public BlockModel parent;
|
||||
@@ -49,6 +_,7 @@
|
||||
public UnbakedModel parent;
|
||||
@Nullable
|
||||
protected ResourceLocation parentLocation;
|
||||
private final ResourceLocation parentLocation;
|
||||
+ public final net.minecraftforge.client.model.geometry.BlockGeometryBakingContext customData = new net.minecraftforge.client.model.geometry.BlockGeometryBakingContext(this);
|
||||
|
||||
public static BlockModel fromStream(Reader p_111462_) {
|
||||
- return GsonHelper.fromJson(GSON, p_111462_, BlockModel.class);
|
||||
+ return GsonHelper.fromJson(net.minecraftforge.client.model.ExtendedBlockModelDeserializer.INSTANCE, p_111462_, BlockModel.class);
|
||||
return GsonHelper.fromJson(GSON, p_111462_, BlockModel.class);
|
||||
@@ -85,6 +_,8 @@
|
||||
@Override
|
||||
public void resolveDependencies(ResolvableModel.Resolver p_377823_) {
|
||||
if (this.parentLocation != null) {
|
||||
+ if (customData.hasCustomGeometry())
|
||||
+ customData.getCustomGeometry().resolveDependencies(p_377823_, customData);
|
||||
this.parent = p_377823_.resolve(this.parentLocation);
|
||||
}
|
||||
}
|
||||
|
||||
public BlockModel(
|
||||
@@ -95,10 +_,17 @@
|
||||
this.overrides = p_273099_;
|
||||
}
|
||||
|
||||
+ @Deprecated
|
||||
public List<BlockElement> getElements() {
|
||||
+ if (customData.hasCustomGeometry()) return java.util.Collections.emptyList();
|
||||
return this.elements.isEmpty() && this.parent != null ? this.parent.getElements() : this.elements;
|
||||
}
|
||||
|
||||
+ @Nullable
|
||||
+ public ResourceLocation getParentLocation() {
|
||||
+ return parentLocation;
|
||||
+ }
|
||||
@@ -110,6 +_,9 @@
|
||||
public BakedModel bake(
|
||||
TextureSlots p_378598_, ModelBaker p_378458_, ModelState p_111453_, boolean p_111455_, boolean p_377435_, ItemTransforms p_378085_
|
||||
) {
|
||||
+ if (this.customData.getCustomGeometry() != null)
|
||||
+ return this.customData.getCustomGeometry().bake(customData, p_378458_, p_378598_, p_111453_);
|
||||
+
|
||||
public boolean hasAmbientOcclusion() {
|
||||
if (this.hasAmbientOcclusion != null) {
|
||||
return this.hasAmbientOcclusion;
|
||||
@@ -130,12 +_,18 @@
|
||||
throw new IllegalStateException("BlockModel parent has to be a block model.");
|
||||
return this.elements.isEmpty() && this.parent != null
|
||||
? this.parent.bake(p_378598_, p_378458_, p_111453_, p_111455_, p_377435_, p_378085_)
|
||||
: SimpleBakedModel.bakeElements(this.elements, p_378598_, p_378458_.sprites(), p_111453_, p_111455_, p_377435_, true, p_378085_);
|
||||
@@ -118,6 +_,7 @@
|
||||
@Nullable
|
||||
@VisibleForTesting
|
||||
List<BlockElement> getElements() {
|
||||
+ if (customData.hasCustomGeometry()) return java.util.Collections.emptyList();
|
||||
return this.elements;
|
||||
}
|
||||
|
||||
@@ -147,7 +_,8 @@
|
||||
}
|
||||
|
||||
+ if (customData.hasCustomGeometry()) {
|
||||
+ customData.getCustomGeometry().resolveDependencies(p_365651_, customData);
|
||||
+ }
|
||||
+
|
||||
this.parent = blockmodel;
|
||||
ResourceLocation resourcelocation = s.isEmpty() ? null : ResourceLocation.parse(s);
|
||||
- return new BlockModel(resourcelocation, list, textureslots$data, obool, unbakedmodel$guilight, itemtransforms);
|
||||
+ var ret = new BlockModel(resourcelocation, list, textureslots$data, obool, unbakedmodel$guilight, itemtransforms);
|
||||
+ return net.minecraftforge.client.ForgeHooksClient.deserializeBlockModel(ret, ret.getElements(), jsonobject, p_111500_);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public BakedModel bake(ModelBaker p_252120_, Function<Material, TextureAtlasSprite> p_250023_, ModelState p_251130_) {
|
||||
+ if (this.customData.getCustomGeometry() != null)
|
||||
+ return this.customData.getCustomGeometry().bake(customData, p_252120_, p_250023_, p_251130_);
|
||||
return this.bake(p_250023_, p_251130_, true);
|
||||
}
|
||||
|
||||
@@ -229,7 +_,18 @@
|
||||
ItemTransform itemtransform5 = this.getTransform(ItemDisplayContext.GUI);
|
||||
ItemTransform itemtransform6 = this.getTransform(ItemDisplayContext.GROUND);
|
||||
ItemTransform itemtransform7 = this.getTransform(ItemDisplayContext.FIXED);
|
||||
- return new ItemTransforms(itemtransform, itemtransform1, itemtransform2, itemtransform3, itemtransform4, itemtransform5, itemtransform6, itemtransform7);
|
||||
+
|
||||
+ var builder = com.google.common.collect.ImmutableMap.<ItemDisplayContext, ItemTransform>builder();
|
||||
+ for (ItemDisplayContext type : ItemDisplayContext.values()) {
|
||||
+ if (type.isModded()) {
|
||||
+ var transform = this.getTransform(type);
|
||||
+ if (transform != ItemTransform.NO_TRANSFORM) {
|
||||
+ builder.put(type, transform);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return new ItemTransforms(itemtransform, itemtransform1, itemtransform2, itemtransform3, itemtransform4, itemtransform5, itemtransform6, itemtransform7, builder.build());
|
||||
}
|
||||
|
||||
private ItemTransform getTransform(ItemDisplayContext p_270662_) {
|
||||
@@ -347,6 +_,10 @@
|
||||
|
||||
public boolean lightLikeBlock() {
|
||||
return this == SIDE;
|
||||
+ }
|
||||
+
|
||||
+ public String getSerializedName() {
|
||||
+ return name;
|
||||
}
|
||||
}
|
||||
}
|
||||
private TextureSlots.Data getTextureMap(JsonObject p_111510_) {
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
--- a/net/minecraft/client/renderer/block/model/FaceBakery.java
|
||||
+++ b/net/minecraft/client/renderer/block/model/FaceBakery.java
|
||||
@@ -58,7 +_,14 @@
|
||||
this.recalculateWinding(aint, direction);
|
||||
@@ -58,7 +_,13 @@
|
||||
recalculateWinding(aint, direction);
|
||||
}
|
||||
|
||||
- return new BakedQuad(aint, p_111603_.tintIndex(), direction, p_111604_, p_111608_, p_364904_);
|
||||
+ var data = p_111603_.data();
|
||||
+ //net.minecraftforge.client.ForgeHooksClient.fillNormal(aint, direction, data.calculateNormals());
|
||||
+ var quad = new BakedQuad(aint, p_111603_.tintIndex(), direction, p_111604_, p_111608_, p_364904_, data.ambientOcclusion());
|
||||
+ if (!net.minecraftforge.client.model.ForgeFaceData.DEFAULT.equals(data)) {
|
||||
+ net.minecraftforge.client.model.QuadTransformers.applyingLightmap(data.blockLight(), data.skyLight()).processInPlace(quad);
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
--- a/net/minecraft/client/renderer/block/model/ItemModelGenerator.java
|
||||
+++ b/net/minecraft/client/renderer/block/model/ItemModelGenerator.java
|
||||
@@ -39,6 +_,8 @@
|
||||
map.put("particle", p_111672_.hasTexture("particle") ? Either.left(p_111672_.getMaterial("particle")) : map.get("layer0"));
|
||||
BlockModel blockmodel = new BlockModel(null, list, map, false, p_111672_.getGuiLight(), p_111672_.getTransforms(), p_111672_.getOverrides());
|
||||
blockmodel.name = p_111672_.name;
|
||||
+ blockmodel.customData.copyFrom(p_111672_.customData);
|
||||
+ blockmodel.customData.setGui3d(false);
|
||||
return blockmodel;
|
||||
}
|
||||
|
||||
|
|
@ -1,53 +1,23 @@
|
|||
--- a/net/minecraft/client/renderer/block/model/ItemTransforms.java
|
||||
+++ b/net/minecraft/client/renderer/block/model/ItemTransforms.java
|
||||
@@ -21,6 +_,7 @@
|
||||
public final ItemTransform gui;
|
||||
public final ItemTransform ground;
|
||||
public final ItemTransform fixed;
|
||||
+ public final com.google.common.collect.ImmutableMap<ItemDisplayContext, ItemTransform> moddedTransforms;
|
||||
|
||||
private ItemTransforms() {
|
||||
this(
|
||||
@@ -35,6 +_,7 @@
|
||||
);
|
||||
}
|
||||
|
||||
+ @Deprecated
|
||||
public ItemTransforms(ItemTransforms p_111807_) {
|
||||
this.thirdPersonLeftHand = p_111807_.thirdPersonLeftHand;
|
||||
this.thirdPersonRightHand = p_111807_.thirdPersonRightHand;
|
||||
@@ -44,6 +_,12 @@
|
||||
this.gui = p_111807_.gui;
|
||||
this.ground = p_111807_.ground;
|
||||
this.fixed = p_111807_.fixed;
|
||||
+ this.moddedTransforms = p_111807_.moddedTransforms;
|
||||
+ }
|
||||
@@ -19,8 +_,15 @@
|
||||
ItemTransform head,
|
||||
ItemTransform gui,
|
||||
ItemTransform ground,
|
||||
- ItemTransform fixed
|
||||
+ ItemTransform fixed,
|
||||
+ com.google.common.collect.ImmutableMap<ItemDisplayContext, ItemTransform> moddedTransforms
|
||||
) {
|
||||
+
|
||||
+ @Deprecated
|
||||
+ public ItemTransforms(ItemTransform p_111798_, ItemTransform p_111799_, ItemTransform p_111800_, ItemTransform p_111801_, ItemTransform p_111802_, ItemTransform p_111803_, ItemTransform p_111804_, ItemTransform p_111805_) {
|
||||
+ this(p_111798_, p_111799_, p_111800_, p_111801_, p_111802_, p_111803_, p_111804_, p_111805_, com.google.common.collect.ImmutableMap.of());
|
||||
}
|
||||
|
||||
public ItemTransforms(
|
||||
@@ -54,7 +_,8 @@
|
||||
ItemTransform p_111802_,
|
||||
ItemTransform p_111803_,
|
||||
ItemTransform p_111804_,
|
||||
- ItemTransform p_111805_
|
||||
+ ItemTransform p_111805_,
|
||||
+ com.google.common.collect.ImmutableMap<ItemDisplayContext, ItemTransform> moddedTransforms
|
||||
) {
|
||||
this.thirdPersonLeftHand = p_111798_;
|
||||
this.thirdPersonRightHand = p_111799_;
|
||||
@@ -64,6 +_,7 @@
|
||||
this.gui = p_111803_;
|
||||
this.ground = p_111804_;
|
||||
this.fixed = p_111805_;
|
||||
+ this.moddedTransforms = moddedTransforms;
|
||||
}
|
||||
|
||||
public ItemTransform getTransform(ItemDisplayContext p_270619_) {
|
||||
@@ -76,7 +_,7 @@
|
||||
+ public ItemTransforms(ItemTransform thirdPersonLeftHand, ItemTransform thirdPersonRightHand, ItemTransform firstPersonLeftHand, ItemTransform firstPersonRightHand, ItemTransform head, ItemTransform gui, ItemTransform ground, ItemTransform fixed) {
|
||||
+ this(thirdPersonLeftHand, thirdPersonRightHand, firstPersonLeftHand, firstPersonRightHand, head, gui, ground, fixed, com.google.common.collect.ImmutableMap.of());
|
||||
+ }
|
||||
+
|
||||
public static final ItemTransforms NO_TRANSFORMS = new ItemTransforms(
|
||||
ItemTransform.NO_TRANSFORM,
|
||||
ItemTransform.NO_TRANSFORM,
|
||||
@@ -42,7 +_,7 @@
|
||||
case GUI -> this.gui;
|
||||
case GROUND -> this.ground;
|
||||
case FIXED -> this.fixed;
|
||||
|
|
@ -56,7 +26,7 @@
|
|||
};
|
||||
}
|
||||
|
||||
@@ -104,8 +_,23 @@
|
||||
@@ -66,8 +_,22 @@
|
||||
ItemTransform itemtransform5 = this.getTransform(p_111822_, jsonobject, ItemDisplayContext.GUI);
|
||||
ItemTransform itemtransform6 = this.getTransform(p_111822_, jsonobject, ItemDisplayContext.GROUND);
|
||||
ItemTransform itemtransform7 = this.getTransform(p_111822_, jsonobject, ItemDisplayContext.FIXED);
|
||||
|
|
@ -69,9 +39,8 @@
|
|||
+ fallbackType = fallbackType.fallback();
|
||||
+ transform = this.getTransform(p_111822_, jsonobject, fallbackType);
|
||||
+ }
|
||||
+ if (transform != ItemTransform.NO_TRANSFORM){
|
||||
+ if (transform != ItemTransform.NO_TRANSFORM)
|
||||
+ builder.put(type, transform);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
--- a/net/minecraft/client/renderer/block/model/MultiVariant.java
|
||||
+++ b/net/minecraft/client/renderer/block/model/MultiVariant.java
|
||||
@@ -50,7 +_,7 @@
|
||||
SimpleWeightedRandomList.Builder<BakedModel> builder = SimpleWeightedRandomList.builder();
|
||||
|
||||
for (Variant variant : this.variants) {
|
||||
- BakedModel bakedmodel = p_249016_.bake(variant.getModelLocation(), variant);
|
||||
+ BakedModel bakedmodel = p_249016_.bake(variant.getModelLocation(), variant, p_111851_);
|
||||
builder.add(bakedmodel, variant.getWeight());
|
||||
}
|
||||
|
||||
|
|
@ -1,10 +1,21 @@
|
|||
--- a/net/minecraft/client/renderer/blockentity/SkullBlockRenderer.java
|
||||
+++ b/net/minecraft/client/renderer/blockentity/SkullBlockRenderer.java
|
||||
@@ -55,6 +_,7 @@
|
||||
builder.put(SkullBlock.Types.CREEPER, new SkullModel(p_173662_.bakeLayer(ModelLayers.CREEPER_HEAD)));
|
||||
builder.put(SkullBlock.Types.DRAGON, new DragonHeadModel(p_173662_.bakeLayer(ModelLayers.DRAGON_SKULL)));
|
||||
builder.put(SkullBlock.Types.PIGLIN, new PiglinHeadModel(p_173662_.bakeLayer(ModelLayers.PIGLIN_HEAD)));
|
||||
+ net.minecraftforge.fml.ModLoader.get().postEvent(new net.minecraftforge.client.event.EntityRenderersEvent.CreateSkullModels(builder, p_173662_));
|
||||
return builder.build();
|
||||
@@ -33,6 +_,7 @@
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class SkullBlockRenderer implements BlockEntityRenderer<SkullBlockEntity> {
|
||||
+ private static Map<SkullBlock.Type, Function<EntityModelSet, SkullModelBase>> customModels;
|
||||
private final Function<SkullBlock.Type, SkullModelBase> modelByType;
|
||||
public static final Map<SkullBlock.Type, ResourceLocation> SKIN_BY_TYPE = Util.make(Maps.newHashMap(), p_340906_ -> {
|
||||
p_340906_.put(SkullBlock.Types.SKELETON, ResourceLocation.withDefaultNamespace("textures/entity/skeleton/skeleton.png"));
|
||||
@@ -57,7 +_,9 @@
|
||||
case PIGLIN -> new PiglinHeadModel(p_376421_.bakeLayer(ModelLayers.PIGLIN_HEAD));
|
||||
});
|
||||
} else {
|
||||
- return null;
|
||||
+ if (customModels == null)
|
||||
+ customModels = net.minecraftforge.client.event.ForgeEventFactoryClient.onCreateSkullModels();
|
||||
+ return customModels.getOrDefault(p_377655_, k -> null).apply(p_376421_);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -268,7 +_,7 @@
|
||||
@@ -272,7 +_,7 @@
|
||||
}
|
||||
|
||||
p_367427_.distanceToCameraSq = this.entityRenderDispatcher.distanceToSqr(p_367571_);
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
--- a/net/minecraft/client/renderer/entity/FishingHookRenderer.java
|
||||
+++ b/net/minecraft/client/renderer/entity/FishingHookRenderer.java
|
||||
@@ -63,7 +_,7 @@
|
||||
private Vec3 getPlayerHandPos(Player p_328037_, float p_328369_, float p_332926_) {
|
||||
int i = p_328037_.getMainArm() == HumanoidArm.RIGHT ? 1 : -1;
|
||||
ItemStack itemstack = p_328037_.getMainHandItem();
|
||||
- if (!itemstack.is(Items.FISHING_ROD)) {
|
||||
+ if (!itemstack.canPerformAction(net.minecraftforge.common.ToolActions.FISHING_ROD_CAST)) {
|
||||
i = -i;
|
||||
}
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/renderer/entity/HumanoidMobRenderer.java
|
||||
+++ b/net/minecraft/client/renderer/entity/HumanoidMobRenderer.java
|
||||
@@ -40,7 +_,7 @@
|
||||
@@ -51,7 +_,7 @@
|
||||
p_369040_.isCrouching = p_362179_.isCrouching();
|
||||
p_369040_.isFallFlying = p_362179_.isFallFlying();
|
||||
p_369040_.isVisuallySwimming = p_362179_.isVisuallySwimming();
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
--- a/net/minecraft/client/renderer/entity/ItemFrameRenderer.java
|
||||
+++ b/net/minecraft/client/renderer/entity/ItemFrameRenderer.java
|
||||
@@ -98,6 +_,7 @@
|
||||
|
||||
int j = mapid != null ? p_361692_.rotation % 4 * 2 : p_361692_.rotation;
|
||||
@@ -96,6 +_,7 @@
|
||||
if (p_361692_.mapId != null) {
|
||||
int j = p_361692_.rotation % 4 * 2;
|
||||
p_115061_.mulPose(Axis.ZP.rotationDegrees((float)j * 360.0F / 8.0F));
|
||||
+ if (!net.minecraftforge.client.event.ForgeEventFactoryClient.onRenderItemInFrame(p_361692_, this, p_115061_, p_115062_, p_115063_)) {
|
||||
if (mapid != null) {
|
||||
p_115061_.mulPose(Axis.ZP.rotationDegrees(180.0F));
|
||||
float f2 = 0.0078125F;
|
||||
@@ -110,6 +_,7 @@
|
||||
int k = this.getLightVal(p_361692_.isGlowFrame, 15728880, p_115063_);
|
||||
p_115061_.scale(0.5F, 0.5F, 0.5F);
|
||||
this.itemRenderer.render(itemstack, ItemDisplayContext.FIXED, false, p_115061_, p_115062_, k, OverlayTexture.NO_OVERLAY, p_361692_.itemModel);
|
||||
p_115061_.mulPose(Axis.ZP.rotationDegrees(180.0F));
|
||||
float f2 = 0.0078125F;
|
||||
p_115061_.scale(0.0078125F, 0.0078125F, 0.0078125F);
|
||||
@@ -103,6 +_,7 @@
|
||||
p_115061_.translate(0.0F, 0.0F, -1.0F);
|
||||
int i = this.getLightCoords(p_361692_.isGlowFrame, 15728850, p_115063_);
|
||||
this.mapRenderer.render(p_361692_.mapRenderState, p_115061_, p_115062_, true, i);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
} else if (!p_361692_.item.isEmpty()) {
|
||||
p_115061_.mulPose(Axis.ZP.rotationDegrees((float)p_361692_.rotation * 360.0F / 8.0F));
|
||||
int k = this.getLightCoords(p_361692_.isGlowFrame, 15728880, p_115063_);
|
||||
|
|
|
|||
|
|
@ -1,54 +1,11 @@
|
|||
--- a/net/minecraft/client/renderer/entity/ItemRenderer.java
|
||||
+++ b/net/minecraft/client/renderer/entity/ItemRenderer.java
|
||||
@@ -152,7 +_,7 @@
|
||||
float p_368655_
|
||||
) {
|
||||
p_366810_.pushPose();
|
||||
- p_369691_.getTransforms().getTransform(p_369628_).apply(p_365876_, p_366810_);
|
||||
+ p_369691_ = p_369691_.applyTransform(p_369628_, p_366810_, p_365876_);
|
||||
p_366810_.translate(-0.5F, -0.5F, p_368655_);
|
||||
this.renderItem(p_368265_, p_369628_, p_366810_, p_363829_, p_363235_, p_368132_, p_369691_, p_366607_);
|
||||
p_366810_.popPose();
|
||||
@@ -169,7 +_,8 @@
|
||||
boolean p_366488_
|
||||
) {
|
||||
if (!p_367824_.isCustomRenderer() && (!p_364096_.is(Items.TRIDENT) || p_366488_)) {
|
||||
- RenderType rendertype = ItemBlockRenderTypes.getRenderType(p_364096_);
|
||||
+ for (var model : p_367824_.getRenderPasses(p_364096_, true)) {
|
||||
+ for (var rendertype : model.getRenderTypes(p_364096_, true)) {
|
||||
VertexConsumer vertexconsumer;
|
||||
if (hasAnimatedTexture(p_364096_) && p_364096_.hasFoil()) {
|
||||
PoseStack.Pose posestack$pose = p_370127_.last().copy();
|
||||
@@ -185,8 +_,11 @@
|
||||
@@ -130,7 +_,7 @@
|
||||
f3 = 1.0F;
|
||||
}
|
||||
|
||||
this.renderModelLists(p_367824_, p_364096_, p_363416_, p_367651_, p_370127_, vertexconsumer);
|
||||
+ }
|
||||
+ }
|
||||
} else {
|
||||
- this.blockEntityRenderer.renderByItem(p_364096_, p_362035_, p_370127_, p_365365_, p_363416_, p_367651_);
|
||||
+ var blockEntityRenderer = net.minecraftforge.client.extensions.common.IClientItemExtensions.of(p_364096_).getCustomRenderer();
|
||||
+ blockEntityRenderer.renderByItem(p_364096_, p_362035_, p_370127_, p_365365_, p_363416_, p_367651_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,7 +_,7 @@
|
||||
float f1 = (float)ARGB.red(i) / 255.0F;
|
||||
float f2 = (float)ARGB.green(i) / 255.0F;
|
||||
float f3 = (float)ARGB.blue(i) / 255.0F;
|
||||
- p_115164_.putBulkData(posestack$pose, bakedquad, f1, f2, f3, f, p_115167_, p_115168_);
|
||||
+ p_115164_.putBulkData(posestack$pose, bakedquad, f1, f2, f3, f, p_115167_, p_115168_, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,6 +_,10 @@
|
||||
@Override
|
||||
public void onResourceManagerReload(ResourceManager p_115105_) {
|
||||
this.itemModelShaper.invalidateCache();
|
||||
+ }
|
||||
+
|
||||
+ public BlockEntityWithoutLevelRenderer getBlockEntityRenderer() {
|
||||
+ return blockEntityRenderer;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/renderer/entity/LivingEntityRenderer.java
|
||||
+++ b/net/minecraft/client/renderer/entity/LivingEntityRenderer.java
|
||||
@@ -69,6 +_,7 @@
|
||||
@@ -73,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void render(S p_364280_, PoseStack p_115311_, MultiBufferSource p_115312_, int p_115313_) {
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
p_115311_.pushPose();
|
||||
if (p_364280_.hasPose(Pose.SLEEPING)) {
|
||||
Direction direction = p_364280_.bedOrientation;
|
||||
@@ -104,6 +_,7 @@
|
||||
@@ -108,6 +_,7 @@
|
||||
|
||||
p_115311_.popPose();
|
||||
super.render(p_364280_, p_115311_, p_115312_, p_115313_);
|
||||
|
|
@ -16,12 +16,11 @@
|
|||
}
|
||||
|
||||
protected boolean shouldRenderLayers(S p_360804_) {
|
||||
@@ -284,7 +_,7 @@
|
||||
|
||||
p_363057_.isFullyFrozen = p_368665_.isFullyFrozen();
|
||||
p_363057_.isBaby = p_368665_.isBaby();
|
||||
- p_363057_.isInWater = p_368665_.isInWater();
|
||||
+ p_363057_.isInWater = p_368665_.isInWater() || p_368665_.isInFluidType((fluidType, height) -> p_368665_.canSwimInFluidType(fluidType));
|
||||
p_363057_.isAutoSpinAttack = p_368665_.isAutoSpinAttack();
|
||||
p_363057_.hasRedOverlay = p_368665_.hurtTime > 0 || p_368665_.deathTime > 0;
|
||||
ItemStack itemstack1 = p_368665_.getItemBySlot(EquipmentSlot.HEAD);
|
||||
@@ -290,6 +_,7 @@
|
||||
p_363057_.isFullyFrozen = p_368665_.isFullyFrozen();
|
||||
p_363057_.isBaby = p_368665_.isBaby();
|
||||
p_363057_.isInWater = p_368665_.isInWater();
|
||||
+ p_363057_.isInWater = p_368665_.isInWaterOrSwimmable();
|
||||
p_363057_.isAutoSpinAttack = p_368665_.isAutoSpinAttack();
|
||||
p_363057_.hasRedOverlay = p_368665_.hurtTime > 0 || p_368665_.deathTime > 0;
|
||||
ItemStack itemstack = p_368665_.getItemBySlot(EquipmentSlot.HEAD);
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
--- a/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java
|
||||
+++ b/net/minecraft/client/renderer/entity/layers/HumanoidArmorLayer.java
|
||||
@@ -45,22 +_,23 @@
|
||||
@@ -44,22 +_,23 @@
|
||||
}
|
||||
|
||||
public void render(PoseStack p_117085_, MultiBufferSource p_117086_, int p_117087_, S p_364101_, float p_117089_, float p_117090_) {
|
||||
- this.renderArmorPiece(p_117085_, p_117086_, p_364101_.chestItem, EquipmentSlot.CHEST, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.CHEST));
|
||||
- this.renderArmorPiece(p_117085_, p_117086_, p_364101_.legsItem, EquipmentSlot.LEGS, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.LEGS));
|
||||
- this.renderArmorPiece(p_117085_, p_117086_, p_364101_.feetItem, EquipmentSlot.FEET, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.FEET));
|
||||
- this.renderArmorPiece(p_117085_, p_117086_, p_364101_.headItem, EquipmentSlot.HEAD, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.HEAD));
|
||||
+ this.renderArmorPiece(p_117085_, p_117086_, p_364101_.chestItem, EquipmentSlot.CHEST, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.CHEST), p_364101_);
|
||||
+ this.renderArmorPiece(p_117085_, p_117086_, p_364101_.legsItem, EquipmentSlot.LEGS, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.LEGS), p_364101_);
|
||||
+ this.renderArmorPiece(p_117085_, p_117086_, p_364101_.feetItem, EquipmentSlot.FEET, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.FEET), p_364101_);
|
||||
+ this.renderArmorPiece(p_117085_, p_117086_, p_364101_.headItem, EquipmentSlot.HEAD, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.HEAD), p_364101_);
|
||||
- this.renderArmorPiece(p_117085_, p_117086_, p_364101_.chestEquipment, EquipmentSlot.CHEST, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.CHEST));
|
||||
- this.renderArmorPiece(p_117085_, p_117086_, p_364101_.legsEquipment, EquipmentSlot.LEGS, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.LEGS));
|
||||
- this.renderArmorPiece(p_117085_, p_117086_, p_364101_.feetEquipment, EquipmentSlot.FEET, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.FEET));
|
||||
- this.renderArmorPiece(p_117085_, p_117086_, p_364101_.headEquipment, EquipmentSlot.HEAD, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.HEAD));
|
||||
+ this.renderArmorPiece(p_117085_, p_117086_, p_364101_.chestEquipment, EquipmentSlot.CHEST, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.CHEST), p_364101_);
|
||||
+ this.renderArmorPiece(p_117085_, p_117086_, p_364101_.legsEquipment, EquipmentSlot.LEGS, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.LEGS), p_364101_);
|
||||
+ this.renderArmorPiece(p_117085_, p_117086_, p_364101_.feetEquipment, EquipmentSlot.FEET, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.FEET), p_364101_);
|
||||
+ this.renderArmorPiece(p_117085_, p_117086_, p_364101_.headEquipment, EquipmentSlot.HEAD, p_117087_, this.getArmorModel(p_364101_, EquipmentSlot.HEAD), p_364101_);
|
||||
}
|
||||
|
||||
- private void renderArmorPiece(PoseStack p_117119_, MultiBufferSource p_117120_, ItemStack p_366444_, EquipmentSlot p_117122_, int p_117123_, A p_117124_) {
|
||||
|
|
@ -21,16 +21,16 @@
|
|||
this.getParentModel().copyPropertiesTo(p_117124_);
|
||||
this.setPartVisibility(p_117124_, p_117122_);
|
||||
+ var model = this.getArmorModel(state, p_117122_, p_366444_, p_117124_);
|
||||
ResourceLocation resourcelocation = equippable.model().orElseThrow();
|
||||
EquipmentModel.LayerType equipmentmodel$layertype = this.usesInnerModel(p_117122_)
|
||||
? EquipmentModel.LayerType.HUMANOID_LEGGINGS
|
||||
: EquipmentModel.LayerType.HUMANOID;
|
||||
- this.equipmentRenderer.renderLayers(equipmentmodel$layertype, resourcelocation, p_117124_, p_366444_, p_117119_, p_117120_, p_117123_);
|
||||
+ this.equipmentRenderer.renderLayers(equipmentmodel$layertype, resourcelocation, model, p_366444_, p_117119_, p_117120_, p_117123_);
|
||||
EquipmentClientInfo.LayerType equipmentclientinfo$layertype = this.usesInnerModel(p_117122_)
|
||||
? EquipmentClientInfo.LayerType.HUMANOID_LEGGINGS
|
||||
: EquipmentClientInfo.LayerType.HUMANOID;
|
||||
this.equipmentRenderer
|
||||
- .renderLayers(equipmentclientinfo$layertype, equippable.assetId().orElseThrow(), p_117124_, p_366444_, p_117119_, p_117120_, p_117123_);
|
||||
+ .renderLayers(equipmentclientinfo$layertype, equippable.assetId().orElseThrow(), model, p_366444_, p_117119_, p_117120_, p_117123_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,5 +_,12 @@
|
||||
@@ -96,5 +_,12 @@
|
||||
|
||||
private boolean usesInnerModel(EquipmentSlot p_117129_) {
|
||||
return p_117129_ == EquipmentSlot.LEGS;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/renderer/entity/layers/WingsLayer.java
|
||||
+++ b/net/minecraft/client/renderer/entity/layers/WingsLayer.java
|
||||
@@ -49,7 +_,7 @@
|
||||
@@ -57,7 +_,7 @@
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
|
|
|||
|
|
@ -1,26 +1,22 @@
|
|||
--- a/net/minecraft/client/renderer/entity/player/PlayerRenderer.java
|
||||
+++ b/net/minecraft/client/renderer/entity/player/PlayerRenderer.java
|
||||
@@ -128,6 +_,9 @@
|
||||
@@ -128,10 +_,14 @@
|
||||
if (itemuseanimation == ItemUseAnimation.BRUSH) {
|
||||
return HumanoidModel.ArmPose.BRUSH;
|
||||
}
|
||||
- } else if (!p_376602_.swinging && p_376446_.is(Items.CROSSBOW) && CrossbowItem.isCharged(p_376446_)) {
|
||||
+ } else if (!p_376602_.swinging && p_376446_.getItem() instanceof CrossbowItem && CrossbowItem.isCharged(p_376446_)) {
|
||||
return HumanoidModel.ArmPose.CROSSBOW_HOLD;
|
||||
}
|
||||
|
||||
+ if (p_362189_.pose != null)
|
||||
+ return p_362189_.pose;
|
||||
+ var pose = net.minecraftforge.client.extensions.common.IClientItemExtensions.of(p_376446_).getArmPose(p_376602_, p_361073_, p_376446_);
|
||||
+ if (pose != null)
|
||||
+ return pose;
|
||||
+
|
||||
return HumanoidModel.ArmPose.ITEM;
|
||||
}
|
||||
}
|
||||
@@ -217,7 +_,8 @@
|
||||
ItemStack itemstack = p_361341_.getItemInHand(p_364300_);
|
||||
p_365410_.isEmpty = itemstack.isEmpty();
|
||||
p_365410_.useAnimation = !itemstack.isEmpty() ? itemstack.getUseAnimation() : null;
|
||||
- p_365410_.holdsChargedCrossbow = itemstack.is(Items.CROSSBOW) && CrossbowItem.isCharged(itemstack);
|
||||
+ p_365410_.holdsChargedCrossbow = itemstack.getItem() instanceof CrossbowItem && CrossbowItem.isCharged(itemstack);
|
||||
+ p_365410_.pose = net.minecraftforge.client.extensions.common.IClientItemExtensions.of(itemstack).getArmPose(p_361341_, p_364300_, itemstack);
|
||||
}
|
||||
|
||||
private static void extractCapeState(AbstractClientPlayer p_366404_, PlayerRenderState p_365208_, float p_366613_) {
|
||||
@@ -251,10 +_,12 @@
|
||||
@@ -255,10 +_,12 @@
|
||||
}
|
||||
|
||||
public void renderRightHand(PoseStack p_117771_, MultiBufferSource p_117772_, int p_117773_, ResourceLocation p_364347_, boolean p_367689_) {
|
||||
|
|
@ -33,7 +29,7 @@
|
|||
this.renderHand(p_117814_, p_117815_, p_117816_, p_368419_, this.model.leftArm, p_362915_);
|
||||
}
|
||||
|
||||
@@ -293,5 +_,12 @@
|
||||
@@ -297,5 +_,12 @@
|
||||
} else {
|
||||
super.setupRotations(p_369667_, p_117803_, p_117804_, p_117805_);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +0,0 @@
|
|||
--- a/net/minecraft/client/renderer/entity/state/PlayerRenderState.java
|
||||
+++ b/net/minecraft/client/renderer/entity/state/PlayerRenderState.java
|
||||
@@ -48,6 +_,8 @@
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public static class HandState {
|
||||
+ @Nullable
|
||||
+ public net.minecraft.client.model.HumanoidModel.ArmPose pose;
|
||||
public boolean isEmpty = true;
|
||||
@Nullable
|
||||
public ItemUseAnimation useAnimation;
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
--- a/net/minecraft/client/renderer/item/BlockModelWrapper.java
|
||||
+++ b/net/minecraft/client/renderer/item/BlockModelWrapper.java
|
||||
@@ -55,6 +_,12 @@
|
||||
aint[j] = this.tints.get(j).calculate(p_378482_, p_376532_, p_376906_);
|
||||
}
|
||||
|
||||
+ // TODO: [Rendering] Figure out how to add multiple passes
|
||||
+ /*
|
||||
+ - RenderType rendertype = ItemBlockRenderTypes.getRenderType(p_378482_);
|
||||
+ + for (var model : p_367824_.getRenderPasses(p_378482_, true)) {
|
||||
+ + for (var rendertype : model.getRenderTypes(p_378482_, true)) {
|
||||
+ */
|
||||
RenderType rendertype = ItemBlockRenderTypes.getRenderType(p_378482_);
|
||||
itemstackrenderstate$layerrenderstate.setupBlockModel(this.model, rendertype);
|
||||
}
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
--- a/net/minecraft/client/renderer/item/ItemProperties.java
|
||||
+++ b/net/minecraft/client/renderer/item/ItemProperties.java
|
||||
@@ -42,6 +_,10 @@
|
||||
private static final Map<Item, Map<ResourceLocation, ItemPropertyFunction>> PROPERTIES = Maps.newHashMap();
|
||||
|
||||
private static ClampedItemPropertyFunction registerGeneric(ResourceLocation p_174582_, ClampedItemPropertyFunction p_174583_) {
|
||||
+ return (ClampedItemPropertyFunction) registerGeneric(p_174582_, (ItemPropertyFunction) p_174583_);
|
||||
+ }
|
||||
+
|
||||
+ public static ItemPropertyFunction registerGeneric(ResourceLocation p_174582_, ItemPropertyFunction p_174583_) {
|
||||
GENERIC_PROPERTIES.put(p_174582_, p_174583_);
|
||||
return p_174583_;
|
||||
}
|
||||
@@ -51,6 +_,10 @@
|
||||
}
|
||||
|
||||
private static void register(Item p_174571_, ResourceLocation p_174572_, ClampedItemPropertyFunction p_174573_) {
|
||||
+ register(p_174571_, p_174572_, (ItemPropertyFunction) p_174573_);
|
||||
+ }
|
||||
+
|
||||
+ public static void register(Item p_174571_, ResourceLocation p_174572_, ItemPropertyFunction p_174573_) {
|
||||
PROPERTIES.computeIfAbsent(p_174571_, p_117828_ -> Maps.newHashMap()).put(p_174572_, p_174573_);
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
--- a/net/minecraft/client/renderer/item/ItemStackRenderState.java
|
||||
+++ b/net/minecraft/client/renderer/item/ItemStackRenderState.java
|
||||
@@ -72,7 +_,7 @@
|
||||
return null;
|
||||
} else {
|
||||
BakedModel bakedmodel = this.layers[p_376964_.nextInt(this.activeLayerCount)].model;
|
||||
- return bakedmodel == null ? null : bakedmodel.getParticleIcon();
|
||||
+ return bakedmodel == null ? null : bakedmodel.getParticleIcon(net.minecraftforge.client.model.data.ModelData.EMPTY);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,6 +_,9 @@
|
||||
|
||||
void render(PoseStack p_377989_, MultiBufferSource p_377594_, int p_375616_, int p_376132_) {
|
||||
p_377989_.pushPose();
|
||||
+ if (this.model != null)
|
||||
+ this.model.applyTransform(ItemStackRenderState.this.displayContext, p_377989_, ItemStackRenderState.this.isLeftHand);
|
||||
+ else
|
||||
this.transform().apply(ItemStackRenderState.this.isLeftHand, p_377989_);
|
||||
p_377989_.translate(-0.5F, -0.5F, -0.5F);
|
||||
if (this.specialRenderer != null) {
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
--- a/net/minecraft/client/renderer/special/SpecialModelRenderers.java
|
||||
+++ b/net/minecraft/client/renderer/special/SpecialModelRenderers.java
|
||||
@@ -180,6 +_,8 @@
|
||||
map.put(Blocks.TRAPPED_CHEST, GIFT_CHEST);
|
||||
}
|
||||
|
||||
+ net.minecraftforge.client.event.ForgeEventFactoryClient.onCreateSpecialBlockRenderers(map);
|
||||
+
|
||||
Builder<Block, SpecialModelRenderer<?>> builder = ImmutableMap.builder();
|
||||
map.forEach((p_377014_, p_376072_) -> {
|
||||
SpecialModelRenderer<?> specialmodelrenderer = p_376072_.bake(p_378538_);
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/renderer/texture/AbstractTexture.java
|
||||
+++ b/net/minecraft/client/renderer/texture/AbstractTexture.java
|
||||
@@ -20,6 +_,8 @@
|
||||
@@ -53,6 +_,8 @@
|
||||
RenderSystem.assertOnRenderThreadOrInit();
|
||||
int i;
|
||||
int j;
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
if (p_117961_) {
|
||||
i = p_117962_ ? 9987 : 9729;
|
||||
j = 9729;
|
||||
@@ -76,5 +_,18 @@
|
||||
@@ -110,5 +_,18 @@
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
|
|
|
|||
|
|
@ -19,25 +19,25 @@
|
|||
this.name = p_249787_;
|
||||
this.width = p_251031_.width();
|
||||
this.height = p_251031_.height();
|
||||
@@ -44,6 +_,7 @@
|
||||
this.animatedTexture = this.createAnimatedTexture(p_251031_, p_252131_.getWidth(), p_252131_.getHeight(), animationmetadatasection);
|
||||
@@ -45,6 +_,7 @@
|
||||
.orElse(null);
|
||||
this.originalImage = p_252131_;
|
||||
this.byMipLevel = new NativeImage[]{this.originalImage};
|
||||
+ this.forgeMeta = forgeMeta;
|
||||
}
|
||||
|
||||
public void increaseMipLevel(int p_248864_) {
|
||||
@@ -120,6 +_,9 @@
|
||||
@@ -130,6 +_,9 @@
|
||||
|
||||
void upload(int p_248895_, int p_250245_, int p_250458_, int p_251337_, NativeImage[] p_248825_) {
|
||||
for (int i = 0; i < this.byMipLevel.length; i++) {
|
||||
+ // Forge: Skip uploading if the texture would be made invalid by mip level
|
||||
+ if ((this.width >> i) <= 0 || (this.height >> i) <= 0)
|
||||
+ break;
|
||||
p_248825_[i]
|
||||
.upload(
|
||||
i,
|
||||
@@ -150,6 +_,10 @@
|
||||
p_248825_[i].upload(i, p_248895_ >> i, p_250245_ >> i, p_250458_ >> i, p_251337_ >> i, this.width >> i, this.height >> i, false);
|
||||
}
|
||||
}
|
||||
@@ -149,6 +_,10 @@
|
||||
return this.name;
|
||||
}
|
||||
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
public IntStream getUniqueFrames() {
|
||||
return this.animatedTexture != null ? this.animatedTexture.getUniqueFrames() : IntStream.of(1);
|
||||
}
|
||||
@@ -252,7 +_,8 @@
|
||||
@@ -244,7 +_,8 @@
|
||||
for (int i = 0; i < this.activeFrame.length; i++) {
|
||||
int j = SpriteContents.this.width >> i;
|
||||
int k = SpriteContents.this.height >> i;
|
||||
|
|
@ -58,7 +58,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -267,6 +_,9 @@
|
||||
@@ -259,6 +_,9 @@
|
||||
for (int k = 0; k < this.activeFrame.length; k++) {
|
||||
int l = SpriteContents.this.width >> k;
|
||||
int i1 = SpriteContents.this.height >> k;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/renderer/texture/TextureAtlas.java
|
||||
+++ b/net/minecraft/client/renderer/texture/TextureAtlas.java
|
||||
@@ -87,6 +_,7 @@
|
||||
@@ -82,6 +_,7 @@
|
||||
this.sprites = List.copyOf(list);
|
||||
this.animatedTextures = List.copyOf(list1);
|
||||
}
|
||||
|
|
@ -8,10 +8,10 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -168,5 +_,10 @@
|
||||
@@ -159,5 +_,10 @@
|
||||
|
||||
public void updateFilter(SpriteLoader.Preparations p_251993_) {
|
||||
this.setFilter(false, p_251993_.mipLevel() > 0);
|
||||
int getHeight() {
|
||||
return this.height;
|
||||
+ }
|
||||
+
|
||||
+ /** {@return the set of sprites in this atlas} */
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
--- a/net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader.java
|
||||
+++ b/net/minecraft/client/renderer/texture/atlas/SpriteResourceLoader.java
|
||||
@@ -45,6 +_,8 @@
|
||||
.orElse(AnimationMetadataSection.EMPTY);
|
||||
FrameSize framesize = animationmetadatasection.calculateFrameSize(nativeimage.getWidth(), nativeimage.getHeight());
|
||||
if (Mth.isMultipleOf(nativeimage.getWidth(), framesize.width()) && Mth.isMultipleOf(nativeimage.getHeight(), framesize.height())) {
|
||||
+ SpriteContents contents = net.minecraftforge.client.ForgeHooksClient.loadSpriteContents(p_296303_, p_296304_, framesize, nativeimage, resourcemetadata);
|
||||
+ if (contents != null) return contents;
|
||||
return new SpriteContents(p_296303_, framesize, nativeimage, resourcemetadata);
|
||||
} else {
|
||||
LOGGER.error(
|
||||
@@ -62,6 +_,9 @@
|
||||
framesize = new FrameSize(nativeimage.getWidth(), nativeimage.getHeight());
|
||||
}
|
||||
|
||||
+ SpriteContents contents = net.minecraftforge.client.ForgeHooksClient.loadSpriteContents(p_374679_, p_374680_, framesize, nativeimage, resourcemetadata);
|
||||
+ if (contents != null) return contents;
|
||||
+
|
||||
return new SpriteContents(p_374679_, framesize, nativeimage, resourcemetadata);
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/client/resources/model/BakedModel.java
|
||||
+++ b/net/minecraft/client/resources/model/BakedModel.java
|
||||
@@ -13,7 +_,9 @@
|
||||
@@ -12,7 +_,9 @@
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
|
|
@ -11,9 +11,9 @@
|
|||
List<BakedQuad> getQuads(@Nullable BlockState p_235039_, @Nullable Direction p_235040_, RandomSource p_235041_);
|
||||
|
||||
boolean useAmbientOcclusion();
|
||||
@@ -24,9 +_,13 @@
|
||||
@@ -21,7 +_,11 @@
|
||||
|
||||
boolean isCustomRenderer();
|
||||
boolean usesBlockLight();
|
||||
|
||||
+ /**@deprecated Forge: Use {@link net.minecraftforge.client.extensions.IForgeBakedModel#getParticleIcon(net.minecraftforge.client.model.data.ModelData)}*/
|
||||
+ @Deprecated
|
||||
|
|
@ -23,6 +23,4 @@
|
|||
+ /**@deprecated Forge: Use {@link net.minecraftforge.client.extensions.IForgeBakedModel#applyTransform(ItemTransforms.TransformType, com.mojang.blaze3d.vertex.PoseStack, boolean)} instead */
|
||||
+ @Deprecated
|
||||
+ default ItemTransforms getTransforms() { return ItemTransforms.NO_TRANSFORMS; }
|
||||
|
||||
default BakedOverrides overrides() {
|
||||
return BakedOverrides.EMPTY;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
--- a/net/minecraft/client/resources/model/ModelBaker.java
|
||||
+++ b/net/minecraft/client/resources/model/ModelBaker.java
|
||||
@@ -5,6 +_,10 @@
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
-public interface ModelBaker {
|
||||
+public interface ModelBaker extends net.minecraftforge.client.extensions.IForgeModelBaker {
|
||||
+ /**
|
||||
+ * @deprecated Forge: Use {@link #bake(ResourceLocation, ModelState, java.util.function.Function)} instead.
|
||||
+ */
|
||||
+ @Deprecated
|
||||
BakedModel bake(ResourceLocation p_250776_, ModelState p_251280_);
|
||||
}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
--- a/net/minecraft/client/resources/model/ModelBakery.java
|
||||
+++ b/net/minecraft/client/resources/model/ModelBakery.java
|
||||
@@ -94,25 +_,39 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
+ public Function<Material, TextureAtlasSprite> getModelTextureGetter() {
|
||||
+ return this.modelTextureGetter;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
public BakedModel bake(ResourceLocation p_252176_, ModelState p_249765_) {
|
||||
+ return bake(p_252176_, p_249765_, this.modelTextureGetter);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public BakedModel bake(ResourceLocation p_252176_, ModelState p_249765_, Function<Material, TextureAtlasSprite> sprites) {
|
||||
ModelBakery.BakedCacheKey modelbakery$bakedcachekey = new ModelBakery.BakedCacheKey(p_252176_, p_249765_.getRotation(), p_249765_.isUvLocked());
|
||||
BakedModel bakedmodel = ModelBakery.this.bakedCache.get(modelbakery$bakedcachekey);
|
||||
if (bakedmodel != null) {
|
||||
return bakedmodel;
|
||||
} else {
|
||||
UnbakedModel unbakedmodel = this.getModel(p_252176_);
|
||||
- BakedModel bakedmodel1 = this.bakeUncached(unbakedmodel, p_249765_);
|
||||
+ BakedModel bakedmodel1 = this.bakeUncached(unbakedmodel, p_249765_, sprites);
|
||||
ModelBakery.this.bakedCache.put(modelbakery$bakedcachekey, bakedmodel1);
|
||||
return bakedmodel1;
|
||||
}
|
||||
}
|
||||
|
||||
BakedModel bakeUncached(UnbakedModel p_343761_, ModelState p_342939_) {
|
||||
+ return bakeUncached(p_343761_, p_342939_, this.modelTextureGetter);
|
||||
+ }
|
||||
+
|
||||
+ BakedModel bakeUncached(UnbakedModel p_343761_, ModelState p_342939_, Function<Material, TextureAtlasSprite> sprites) {
|
||||
if (p_343761_ instanceof BlockModel blockmodel && blockmodel.getRootModel() == SpecialModels.GENERATED_MARKER) {
|
||||
- return ModelBakery.ITEM_MODEL_GENERATOR.generateBlockModel(this.modelTextureGetter, blockmodel).bake(this.modelTextureGetter, p_342939_, false);
|
||||
+ return ModelBakery.ITEM_MODEL_GENERATOR.generateBlockModel(sprites, blockmodel).bake(sprites, p_342939_, false);
|
||||
}
|
||||
|
||||
- return p_343761_.bake(this, this.modelTextureGetter, p_342939_);
|
||||
+ return p_343761_.bake(this, sprites, p_342939_);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,48 +1,87 @@
|
|||
--- a/net/minecraft/client/resources/model/ModelManager.java
|
||||
+++ b/net/minecraft/client/resources/model/ModelManager.java
|
||||
@@ -71,13 +_,14 @@
|
||||
TextureAtlas.LOCATION_BLOCKS,
|
||||
@@ -72,7 +_,9 @@
|
||||
ResourceLocation.withDefaultNamespace("blocks")
|
||||
);
|
||||
- private Map<ModelResourceLocation, BakedModel> bakedRegistry;
|
||||
+ private Map<ModelResourceLocation, BakedModel> bakedRegistry = new java.util.HashMap<>();
|
||||
private Map<ModelResourceLocation, BakedModel> bakedBlockStateModels = Map.of();
|
||||
+ private Map<ModelResourceLocation, BakedModel> bakedBlockStateModelsView = Map.of();
|
||||
private Map<ResourceLocation, ItemModel> bakedItemStackModels = Map.of();
|
||||
+ private Map<ResourceLocation, ItemModel> bakedItemStackModelsView = Map.of();
|
||||
private Map<ResourceLocation, ClientItem.Properties> itemProperties = Map.of();
|
||||
private final AtlasSet atlases;
|
||||
private final BlockModelShaper blockModelShaper;
|
||||
private final BlockColors blockColors;
|
||||
private int maxMipmapLevels;
|
||||
@@ -83,6 +_,7 @@
|
||||
private BakedModel missingModel;
|
||||
private Object2IntMap<BlockState> modelGroups;
|
||||
private ItemModel missingItemModel;
|
||||
private Object2IntMap<BlockState> modelGroups = Object2IntMaps.emptyMap();
|
||||
+ private ModelBakery modelBakery;
|
||||
|
||||
public ModelManager(TextureManager p_119406_, BlockColors p_119407_, int p_119408_) {
|
||||
this.blockColors = p_119407_;
|
||||
@@ -102,6 +_,7 @@
|
||||
@@ -95,6 +_,10 @@
|
||||
return this.bakedBlockStateModels.getOrDefault(p_119423_, this.missingModel);
|
||||
}
|
||||
|
||||
+ public Map<ModelResourceLocation, BakedModel> getModels() {
|
||||
+ return this.bakedBlockStateModelsView;
|
||||
+ }
|
||||
+
|
||||
public BakedModel getMissingModel() {
|
||||
return this.missingModel;
|
||||
}
|
||||
@@ -103,6 +_,10 @@
|
||||
return this.bakedItemStackModels.getOrDefault(p_376816_, this.missingItemModel);
|
||||
}
|
||||
|
||||
+ public Map<ResourceLocation, ItemModel> getItemModels() {
|
||||
+ return this.bakedItemStackModelsView;
|
||||
+ }
|
||||
+
|
||||
public ClientItem.Properties getItemProperties(ResourceLocation p_378319_) {
|
||||
return this.itemProperties.getOrDefault(p_378319_, ClientItem.Properties.DEFAULT);
|
||||
}
|
||||
@@ -115,6 +_,7 @@
|
||||
public final CompletableFuture<Void> reload(
|
||||
PreparableReloadListener.PreparationBarrier p_249079_, ResourceManager p_251134_, Executor p_250550_, Executor p_249221_
|
||||
) {
|
||||
+ net.minecraftforge.client.model.geometry.GeometryLoaderManager.init();
|
||||
UnbakedModel unbakedmodel = MissingBlockModel.missingModel();
|
||||
BlockStateModelLoader blockstatemodelloader = new BlockStateModelLoader(unbakedmodel);
|
||||
CompletableFuture<Map<ResourceLocation, UnbakedModel>> completablefuture = loadBlockModels(p_251134_, p_250550_);
|
||||
@@ -253,6 +_,8 @@
|
||||
.collect(Collectors.joining("\n"))
|
||||
CompletableFuture<EntityModelSet> completablefuture = CompletableFuture.supplyAsync(EntityModelSet::vanilla, p_250550_);
|
||||
CompletableFuture<SpecialBlockModelRenderer> completablefuture1 = completablefuture.thenApplyAsync(SpecialBlockModelRenderer::vanilla, p_250550_);
|
||||
@@ -260,13 +_,15 @@
|
||||
p_374740_.stream().sorted().map(p_374742_ -> " " + p_374742_).collect(Collectors.joining("\n"))
|
||||
)
|
||||
);
|
||||
+ p_252136_.popPush("forge_modify_baking_result");
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onModifyBakingResult(p_248945_.getBakedTopLevelModels(), p_248945_);
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onModifyBakingResult(p_248945_, modelbakery$bakingresult);
|
||||
p_252136_.popPush("dispatch");
|
||||
Map<ModelResourceLocation, BakedModel> map = p_248945_.getBakedTopLevelModels();
|
||||
BakedModel bakedmodel = map.get(MissingBlockModel.VARIANT);
|
||||
@@ -284,6 +_,8 @@
|
||||
this.bakedRegistry = modelbakery.getBakedTopLevelModels();
|
||||
Map<BlockState, BakedModel> map = createBlockStateToModelDispatch(modelbakery$bakingresult.blockStateModels(), modelbakery$bakingresult.missingModel());
|
||||
CompletableFuture<Void> completablefuture = CompletableFuture.allOf(
|
||||
p_250646_.values().stream().map(AtlasSet.StitchResult::readyForUpload).toArray(CompletableFuture[]::new)
|
||||
);
|
||||
p_252136_.pop();
|
||||
- return new ModelManager.ReloadState(modelbakery$bakingresult, p_361513_, map, p_250646_, p_378097_, p_377275_, completablefuture);
|
||||
+ return new ModelManager.ReloadState(modelbakery$bakingresult, p_361513_, map, p_250646_, p_378097_, p_377275_, completablefuture, p_248945_);
|
||||
}
|
||||
|
||||
private static Map<BlockState, BakedModel> createBlockStateToModelDispatch(Map<ModelResourceLocation, BakedModel> p_377857_, BakedModel p_378390_) {
|
||||
@@ -298,11 +_,15 @@
|
||||
p_248996_.atlasPreparations.values().forEach(AtlasSet.StitchResult::upload);
|
||||
ModelBakery.BakingResult modelbakery$bakingresult = p_248996_.bakedModels;
|
||||
this.bakedBlockStateModels = modelbakery$bakingresult.blockStateModels();
|
||||
+ this.bakedBlockStateModelsView = java.util.Collections.unmodifiableMap(this.bakedBlockStateModels);
|
||||
this.bakedItemStackModels = modelbakery$bakingresult.itemStackModels();
|
||||
+ this.bakedItemStackModelsView = java.util.Collections.unmodifiableMap(this.bakedItemStackModels);
|
||||
this.itemProperties = modelbakery$bakingresult.itemProperties();
|
||||
this.modelGroups = p_248996_.modelGroups;
|
||||
this.missingModel = p_248996_.missingModel;
|
||||
+ this.modelBakery = modelbakery;
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onModelBake(this, this.bakedRegistry, modelbakery);
|
||||
this.missingModel = modelbakery$bakingresult.missingModel();
|
||||
this.missingItemModel = modelbakery$bakingresult.missingItemModel();
|
||||
+ this.modelBakery = p_248996_.modelBakery();
|
||||
+ net.minecraftforge.client.ForgeHooksClient.onModelBake(this, this.modelBakery);
|
||||
p_251960_.popPush("cache");
|
||||
this.blockModelShaper.replaceCache(p_248996_.modelCache);
|
||||
p_251960_.pop();
|
||||
@@ -308,6 +_,7 @@
|
||||
this.specialBlockModelRenderer = p_248996_.specialBlockModelRenderer;
|
||||
@@ -329,6 +_,7 @@
|
||||
}
|
||||
|
||||
public TextureAtlas getAtlas(ResourceLocation p_119429_) {
|
||||
|
|
@ -50,14 +89,24 @@
|
|||
return this.atlases.getAtlas(p_119429_);
|
||||
}
|
||||
|
||||
@@ -318,6 +_,10 @@
|
||||
|
||||
public void updateMaxMipLevel(int p_119411_) {
|
||||
@@ -341,6 +_,10 @@
|
||||
this.maxMipmapLevels = p_119411_;
|
||||
+ }
|
||||
+
|
||||
+ public ModelBakery getModelBakery() {
|
||||
+ return com.google.common.base.Preconditions.checkNotNull(modelBakery, "Attempted to query model bakery before it has been initialized.");
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
+ public ModelBakery getModelBakery() {
|
||||
+ return com.google.common.base.Preconditions.checkNotNull(modelBakery, "Attempted to query model bakery before it has been initialized.");
|
||||
+ }
|
||||
+
|
||||
public Supplier<SpecialBlockModelRenderer> specialBlockModelRenderer() {
|
||||
return () -> this.specialBlockModelRenderer;
|
||||
}
|
||||
@@ -357,7 +_,8 @@
|
||||
Map<ResourceLocation, AtlasSet.StitchResult> atlasPreparations,
|
||||
EntityModelSet entityModelSet,
|
||||
SpecialBlockModelRenderer specialBlockModelRenderer,
|
||||
- CompletableFuture<Void> readyForUpload
|
||||
+ CompletableFuture<Void> readyForUpload,
|
||||
+ ModelBakery modelBakery
|
||||
) {
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,45 +1,50 @@
|
|||
--- a/net/minecraft/client/resources/model/SimpleBakedModel.java
|
||||
+++ b/net/minecraft/client/resources/model/SimpleBakedModel.java
|
||||
@@ -25,6 +_,15 @@
|
||||
protected final boolean usesBlockLight;
|
||||
protected final TextureAtlasSprite particleIcon;
|
||||
protected final ItemTransforms transforms;
|
||||
@@ -29,6 +_,19 @@
|
||||
private final boolean usesBlockLight;
|
||||
private final TextureAtlasSprite particleIcon;
|
||||
private final ItemTransforms transforms;
|
||||
+ /*
|
||||
+ protected final net.minecraftforge.client.ChunkRenderTypeSet blockRenderTypes;
|
||||
+ protected final List<net.minecraft.client.renderer.RenderType> itemRenderTypes;
|
||||
+ protected final List<net.minecraft.client.renderer.RenderType> fabulousItemRenderTypes;
|
||||
+ */
|
||||
+
|
||||
+ /** @deprecated Forge: Use {@linkplain #SimpleBakedModel(List, Map, boolean, boolean, boolean, TextureAtlasSprite, ItemTransforms, net.minecraftforge.client.RenderTypeGroup) variant with RenderTypeGroup} **/
|
||||
+ /* @deprecated Forge: Use {@linkplain #SimpleBakedModel(List, Map, boolean, boolean, boolean, TextureAtlasSprite, ItemTransforms, net.minecraftforge.client.RenderTypeGroup) variant with RenderTypeGroup} **/
|
||||
+ /*
|
||||
+ @Deprecated
|
||||
+ public SimpleBakedModel(List<BakedQuad> p_119489_, Map<Direction, List<BakedQuad>> p_119490_, boolean p_119491_, boolean p_119492_, boolean p_119493_, TextureAtlasSprite p_119494_, ItemTransforms p_119495_) {
|
||||
+ this(p_119489_, p_119490_, p_119491_, p_119492_, p_119493_, p_119494_, p_119495_, net.minecraftforge.client.RenderTypeGroup.EMPTY);
|
||||
+ }
|
||||
+ */
|
||||
|
||||
public SimpleBakedModel(
|
||||
List<BakedQuad> p_119489_,
|
||||
@@ -33,7 +_,8 @@
|
||||
boolean p_119492_,
|
||||
@@ -38,6 +_,7 @@
|
||||
boolean p_119493_,
|
||||
TextureAtlasSprite p_119494_,
|
||||
- ItemTransforms p_119495_
|
||||
+ ItemTransforms p_119495_,
|
||||
+ net.minecraftforge.client.RenderTypeGroup renderTypes
|
||||
ItemTransforms p_119495_
|
||||
+ //net.minecraftforge.client.RenderTypeGroup renderTypes
|
||||
) {
|
||||
this.unculledFaces = p_119489_;
|
||||
this.culledFaces = p_119490_;
|
||||
@@ -42,6 +_,9 @@
|
||||
@@ -46,6 +_,11 @@
|
||||
this.usesBlockLight = p_119492_;
|
||||
this.particleIcon = p_119494_;
|
||||
this.transforms = p_119495_;
|
||||
+ /*
|
||||
+ this.blockRenderTypes = !renderTypes.isEmpty() ? net.minecraftforge.client.ChunkRenderTypeSet.of(renderTypes.block()) : null;
|
||||
+ this.itemRenderTypes = !renderTypes.isEmpty() ? List.of(renderTypes.entity()) : null;
|
||||
+ this.fabulousItemRenderTypes = !renderTypes.isEmpty() ? List.of(renderTypes.entityFabulous()) : null;
|
||||
+ */
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,6 +_,25 @@
|
||||
public static BakedModel bakeElements(
|
||||
@@ -123,6 +_,27 @@
|
||||
return this.transforms;
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ @Override
|
||||
+ public net.minecraftforge.client.ChunkRenderTypeSet getRenderTypes(BlockState state, RandomSource rand, net.minecraftforge.client.model.data.ModelData data) {
|
||||
+ return blockRenderTypes != null ? blockRenderTypes : BakedModel.super.getRenderTypes(state, rand, data);
|
||||
|
|
@ -58,19 +63,22 @@
|
|||
+ }
|
||||
+ return BakedModel.super.getRenderTypes(itemStack, fabulous);
|
||||
+ }
|
||||
+ */
|
||||
+
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public static class Builder {
|
||||
private final ImmutableList.Builder<BakedQuad> unculledFaces = ImmutableList.builder();
|
||||
@@ -124,13 +_,19 @@
|
||||
@@ -164,13 +_,21 @@
|
||||
return this;
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ private net.minecraftforge.client.RenderTypeGroup renderTypes = net.minecraftforge.client.RenderTypeGroup.EMPTY;
|
||||
+ public SimpleBakedModel.Builder renderTypes(net.minecraftforge.client.RenderTypeGroup renderTypes) {
|
||||
+ this.renderTypes = renderTypes;
|
||||
+ return this;
|
||||
+ }
|
||||
+ */
|
||||
+
|
||||
public BakedModel build() {
|
||||
if (this.particleIcon == null) {
|
||||
|
|
@ -79,7 +87,7 @@
|
|||
Map<Direction, List<BakedQuad>> map = Maps.transformValues(this.culledFaces, ImmutableList.Builder::build);
|
||||
return new SimpleBakedModel(
|
||||
- this.unculledFaces.build(), new EnumMap<>(map), this.hasAmbientOcclusion, this.usesBlockLight, this.isGui3d, this.particleIcon, this.transforms
|
||||
+ this.unculledFaces.build(), new EnumMap<>(map), this.hasAmbientOcclusion, this.usesBlockLight, this.isGui3d, this.particleIcon, this.transforms, this.renderTypes
|
||||
+ this.unculledFaces.build(), new EnumMap<>(map), this.hasAmbientOcclusion, this.usesBlockLight, this.isGui3d, this.particleIcon, this.transforms/*, this.renderTypes*/
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
--- a/net/minecraft/client/resources/model/SpriteGetter.java
|
||||
+++ b/net/minecraft/client/resources/model/SpriteGetter.java
|
||||
@@ -9,4 +_,9 @@
|
||||
TextureAtlasSprite get(Material p_376066_);
|
||||
|
||||
TextureAtlasSprite reportMissingReference(String p_377389_);
|
||||
+
|
||||
+ default TextureAtlasSprite maybeMissing(net.minecraft.client.renderer.block.model.TextureSlots textures, String name) {
|
||||
+ var material = textures.getMaterial(name);
|
||||
+ return material != null ? get(material) : reportMissingReference(name);
|
||||
+ }
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
--- a/net/minecraft/client/resources/model/UnbakedModel.java
|
||||
+++ b/net/minecraft/client/resources/model/UnbakedModel.java
|
||||
@@ -13,6 +_,10 @@
|
||||
boolean DEFAULT_AMBIENT_OCCLUSION = true;
|
||||
UnbakedModel.GuiLight DEFAULT_GUI_LIGHT = UnbakedModel.GuiLight.SIDE;
|
||||
|
||||
+ default BakedModel bake(TextureSlots textures, ModelBaker baker, ModelState state) {
|
||||
+ return bake(textures, baker, state, this.getAmbientOcclusion(), this.getGuiLight().lightLikeBlock(), this.getTransforms());
|
||||
+ }
|
||||
+
|
||||
BakedModel bake(TextureSlots p_376037_, ModelBaker p_250133_, ModelState p_119536_, boolean p_378145_, boolean p_377763_, ItemTransforms p_375499_);
|
||||
|
||||
@Nullable
|
||||
@@ -135,6 +_,10 @@
|
||||
|
||||
public boolean lightLikeBlock() {
|
||||
return this == SIDE;
|
||||
+ }
|
||||
+
|
||||
+ public String getSerializedName() {
|
||||
+ return name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
}
|
||||
|
||||
private synchronized void loadLibrary() {
|
||||
@@ -325,7 +_,8 @@
|
||||
@@ -334,7 +_,8 @@
|
||||
|
||||
public void play(SoundInstance p_120313_) {
|
||||
if (this.loaded) {
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
WeighedSoundEvents weighedsoundevents = p_120313_.resolve(this.soundManager);
|
||||
ResourceLocation resourcelocation = p_120313_.getLocation();
|
||||
if (weighedsoundevents == null) {
|
||||
@@ -389,19 +_,22 @@
|
||||
@@ -398,19 +_,22 @@
|
||||
p_194488_.setSelfPosition(vec3);
|
||||
p_194488_.setRelative(flag);
|
||||
});
|
||||
|
|
@ -34,8 +34,8 @@
|
|||
if (!flag2) {
|
||||
this.soundBuffers
|
||||
.getCompleteBuffer(sound.getPath())
|
||||
.thenAccept(p_194501_ -> channelaccess$channelhandle.execute(p_194495_ -> {
|
||||
p_194495_.attachStaticBuffer(p_194501_);
|
||||
.thenAccept(p_377326_ -> channelaccess$channelhandle.execute(p_194495_ -> {
|
||||
p_194495_.attachStaticBuffer(p_377326_);
|
||||
p_194495_.play();
|
||||
+ net.minecraftforge.client.event.ForgeEventFactoryClient.onPlaySoundSource(this, soundinstance, p_194495_);
|
||||
}));
|
||||
|
|
@ -44,8 +44,8 @@
|
|||
- .getStream(sound.getPath(), flag1)
|
||||
+ soundinstance
|
||||
+ .getStream(this.soundBuffers, sound, flag1)
|
||||
.thenAccept(p_194504_ -> channelaccess$channelhandle.execute(p_194498_ -> {
|
||||
p_194498_.attachBufferStream(p_194504_);
|
||||
.thenAccept(p_376862_ -> channelaccess$channelhandle.execute(p_194498_ -> {
|
||||
p_194498_.attachBufferStream(p_376862_);
|
||||
p_194498_.play();
|
||||
+ net.minecraftforge.client.event.ForgeEventFactoryClient.onPlayStreamingSource(this, soundinstance, p_194498_);
|
||||
}));
|
||||
|
|
|
|||
|
|
@ -1,41 +1,21 @@
|
|||
--- a/net/minecraft/data/Main.java
|
||||
+++ b/net/minecraft/data/Main.java
|
||||
@@ -86,8 +_,15 @@
|
||||
OptionSpec<Void> optionspec6 = optionparser.accepts("all", "Include all generators");
|
||||
OptionSpec<String> optionspec7 = optionparser.accepts("output", "Output folder").withRequiredArg().defaultsTo("generated");
|
||||
OptionSpec<String> optionspec8 = optionparser.accepts("input", "Input folder").withRequiredArg();
|
||||
+ OptionSpec<String> existing = optionparser.accepts("existing", "Existing resource packs that generated resources can reference").withRequiredArg();
|
||||
+ OptionSpec<String> existingMod = optionparser.accepts("existing-mod", "Existing mods that generated resources can reference the resource packs of").withRequiredArg();
|
||||
+ OptionSpec<java.io.File> gameDir = optionparser.accepts("gameDir").withRequiredArg().ofType(java.io.File.class).defaultsTo(new java.io.File(".")).required(); //Need by modlauncher, so lets just eat it
|
||||
+ OptionSpec<String> mod = optionparser.accepts("mod", "A modid to dump").withRequiredArg().withValuesSeparatedBy(",");
|
||||
+ OptionSpec<Void> flat = optionparser.accepts("flat", "Do not append modid prefix to output directory when generating for multiple mods");
|
||||
+ OptionSpec<String> assetIndex = optionparser.accepts("assetIndex").withRequiredArg();
|
||||
+ OptionSpec<java.io.File> assetsDir = optionparser.accepts("assetsDir").withRequiredArg().ofType(java.io.File.class);
|
||||
@@ -77,14 +_,17 @@
|
||||
OptionSpec<Void> optionspec4 = optionparser.accepts("all", "Include all generators");
|
||||
OptionSpec<String> optionspec5 = optionparser.accepts("output", "Output folder").withRequiredArg().defaultsTo("generated");
|
||||
OptionSpec<String> optionspec6 = optionparser.accepts("input", "Input folder").withRequiredArg();
|
||||
+ var loader = net.minecraftforge.data.loading.DatagenModLoader.setup(optionparser, false);
|
||||
OptionSet optionset = optionparser.parse(p_129669_);
|
||||
- if (!optionset.has(optionspec) && optionset.hasOptions()) {
|
||||
+ if (!optionset.has(optionspec) && optionset.hasOptions() && !(optionset.specs().size() == 1 && optionset.has(gameDir))) {
|
||||
Path path = Paths.get(optionspec7.value(optionset));
|
||||
boolean flag = optionset.has(optionspec6);
|
||||
boolean flag1 = flag || optionset.has(optionspec2);
|
||||
@@ -95,6 +_,13 @@
|
||||
+ if (!optionset.has(optionspec) && optionset.hasOptions() && loader.hasArgs(optionset)) {
|
||||
Path path = Paths.get(optionspec5.value(optionset));
|
||||
boolean flag = optionset.has(optionspec4);
|
||||
boolean flag1 = flag || optionset.has(optionspec1);
|
||||
boolean flag2 = flag || optionset.has(optionspec2);
|
||||
boolean flag3 = flag || optionset.has(optionspec3);
|
||||
boolean flag4 = flag || optionset.has(optionspec4);
|
||||
boolean flag5 = flag || optionset.has(optionspec5);
|
||||
+ Collection<Path> inputs = optionset.valuesOf(optionspec8).stream().map(Paths::get).collect(Collectors.toList());
|
||||
+ Collection<Path> existingPacks = optionset.valuesOf(existing).stream().map(Paths::get).collect(Collectors.toList());
|
||||
+ java.util.Set<String> existingMods = new java.util.HashSet<>(optionset.valuesOf(existingMod));
|
||||
+ java.util.Set<String> mods = new java.util.HashSet<>(optionset.valuesOf(mod));
|
||||
+ boolean isFlat = mods.isEmpty() || optionset.has(flat);
|
||||
+ net.minecraftforge.data.loading.DatagenModLoader.begin(mods, path, inputs, existingPacks, existingMods, flag2, flag1, flag3, flag4, flag5, isFlat, optionset.valueOf(assetIndex), optionset.valueOf(assetsDir));
|
||||
+ if (mods.contains("minecraft") || mods.isEmpty()) {
|
||||
DataGenerator datagenerator = createStandardGenerator(
|
||||
path,
|
||||
optionset.valuesOf(optionspec8).stream().map(p_129659_ -> Paths.get(p_129659_)).collect(Collectors.toList()),
|
||||
@@ -107,6 +_,7 @@
|
||||
true
|
||||
);
|
||||
Collection<Path> collection = optionset.valuesOf(optionspec6).stream().map(p_129659_ -> Paths.get(p_129659_)).toList();
|
||||
+ if (!loader.run(optionset, path, collection, flag1, flag, flag2, flag3, false))
|
||||
+ return;
|
||||
DataGenerator datagenerator = new DataGenerator(path, SharedConstants.getCurrentVersion(), true);
|
||||
addServerProviders(datagenerator, collection, flag1, flag2, flag3);
|
||||
datagenerator.run();
|
||||
+ }
|
||||
} else {
|
||||
optionparser.printHelpOn(System.out);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/data/loot/BlockLootSubProvider.java
|
||||
+++ b/net/minecraft/data/loot/BlockLootSubProvider.java
|
||||
@@ -668,12 +_,16 @@
|
||||
@@ -690,12 +_,16 @@
|
||||
|
||||
protected abstract void generate();
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
private static <E> Codec<List<Holder<E>>> homogenousList(Codec<Holder<E>> p_206668_, boolean p_206669_) {
|
||||
Codec<List<Holder<E>>> codec = p_206668_.listOf().validate(ExtraCodecs.ensureHomogenous(Holder::kind));
|
||||
@@ -42,6 +_,10 @@
|
||||
@@ -36,6 +_,10 @@
|
||||
this.elementCodec = p_206661_;
|
||||
this.homogenousListCodec = homogenousList(p_206661_, p_206662_);
|
||||
this.registryAwareCodec = Codec.either(TagKey.hashedCodec(p_206660_), this.homogenousListCodec);
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -50,14 +_,17 @@
|
||||
@@ -44,14 +_,17 @@
|
||||
Optional<HolderGetter<E>> optional = registryops.getter(this.registryKey);
|
||||
if (optional.isPresent()) {
|
||||
HolderGetter<E> holdergetter = optional.get();
|
||||
|
|
@ -39,7 +39,7 @@
|
|||
);
|
||||
return dataresult.map(p_326149_ -> Pair.of((HolderSet<E>)p_326149_, (T)p_326147_.getSecond()));
|
||||
}
|
||||
@@ -90,7 +_,7 @@
|
||||
@@ -84,7 +_,7 @@
|
||||
}
|
||||
|
||||
private <T> DataResult<Pair<HolderSet<E>, T>> decodeWithoutRegistry(DynamicOps<T> p_206671_, T p_206672_) {
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
List<Holder.Direct<E>> list = new ArrayList<>();
|
||||
|
||||
for (Holder<E> holder : p_206666_.getFirst()) {
|
||||
@@ -106,6 +_,9 @@
|
||||
@@ -100,6 +_,9 @@
|
||||
}
|
||||
|
||||
private <T> DataResult<T> encodeWithoutRegistry(HolderSet<E> p_206690_, DynamicOps<T> p_206691_, T p_206692_) {
|
||||
|
|
|
|||
|
|
@ -63,15 +63,15 @@
|
|||
E e = dataresult.getOrThrow();
|
||||
p_330991_.register(p_332850_, e, p_332222_);
|
||||
}
|
||||
@@ -267,6 +_,7 @@
|
||||
String s = Registries.elementsDirPath(p_331358_.key());
|
||||
FileToIdConverter filetoidconverter = FileToIdConverter.json(s);
|
||||
@@ -266,6 +_,7 @@
|
||||
) {
|
||||
FileToIdConverter filetoidconverter = FileToIdConverter.registry(p_331358_.key());
|
||||
RegistryOps<JsonElement> registryops = RegistryOps.create(JsonOps.INSTANCE, p_333035_);
|
||||
+ Decoder<Optional<E>> conditional = net.minecraftforge.common.crafting.conditions.ConditionCodec.wrap(p_329404_);
|
||||
|
||||
for (Entry<ResourceLocation, Resource> entry : filetoidconverter.listMatchingResources(p_335634_).entrySet()) {
|
||||
ResourceLocation resourcelocation = entry.getKey();
|
||||
@@ -275,7 +_,7 @@
|
||||
@@ -274,7 +_,7 @@
|
||||
RegistrationInfo registrationinfo = REGISTRATION_INFO_CACHE.apply(resource.knownPackInfo());
|
||||
|
||||
try {
|
||||
|
|
@ -80,18 +80,17 @@
|
|||
} catch (Exception exception) {
|
||||
p_335074_.put(
|
||||
resourcekey,
|
||||
@@ -298,7 +_,9 @@
|
||||
@@ -297,7 +_,8 @@
|
||||
RegistryDataLoader.NetworkedRegistryData registrydataloader$networkedregistrydata = p_331925_.get(p_332518_.key());
|
||||
if (registrydataloader$networkedregistrydata != null) {
|
||||
RegistryOps<Tag> registryops = RegistryOps.create(NbtOps.INSTANCE, p_329253_);
|
||||
- RegistryOps<JsonElement> registryops1 = RegistryOps.create(JsonOps.INSTANCE, p_329253_);
|
||||
+ RegistryOps<JsonElement> registryops1 = RegistryOps.create(JsonOps.INSTANCE, p_329253_)
|
||||
+ .withContext(net.minecraftforge.common.crafting.conditions.ICondition.IContext.KEY, net.minecraftforge.common.crafting.conditions.ICondition.IContext.TAGS_INVALID);
|
||||
+ RegistryOps<JsonElement> registryops1 = net.minecraftforge.common.crafting.conditions.ICondition.IContext.TAGS_INVALID.wrap(RegistryOps.create(JsonOps.INSTANCE, p_329253_));
|
||||
+ Decoder<Optional<E>> conditional = net.minecraftforge.common.crafting.conditions.ConditionCodec.wrap(p_328898_);
|
||||
String s = Registries.elementsDirPath(p_332518_.key());
|
||||
FileToIdConverter filetoidconverter = FileToIdConverter.json(s);
|
||||
FileToIdConverter filetoidconverter = FileToIdConverter.registry(p_332518_.key());
|
||||
|
||||
@@ -321,7 +_,7 @@
|
||||
for (RegistrySynchronization.PackedRegistryEntry registrysynchronization$packedregistryentry : registrydataloader$networkedregistrydata.elements) {
|
||||
@@ -319,7 +_,7 @@
|
||||
|
||||
try {
|
||||
Resource resource = p_332010_.getResourceOrThrow(resourcelocation);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/server/Bootstrap.java
|
||||
+++ b/net/minecraft/server/Bootstrap.java
|
||||
@@ -53,6 +_,8 @@
|
||||
@@ -57,6 +_,8 @@
|
||||
CauldronInteraction.bootStrap();
|
||||
BuiltInRegistries.bootStrap();
|
||||
CreativeModeTabs.validate();
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
wrapStreams();
|
||||
bootstrapDuration.set(Duration.between(instant, Instant.now()).toMillis());
|
||||
}
|
||||
@@ -119,7 +_,6 @@
|
||||
@@ -123,7 +_,6 @@
|
||||
Commands.validate();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/server/Main.java
|
||||
+++ b/net/minecraft/server/Main.java
|
||||
@@ -83,6 +_,17 @@
|
||||
@@ -87,6 +_,17 @@
|
||||
OptionSpec<Void> optionspec13 = optionparser.accepts("jfrProfile");
|
||||
OptionSpec<Path> optionspec14 = optionparser.accepts("pidFile").withRequiredArg().withValuesConvertedBy(new PathConverter());
|
||||
OptionSpec<String> optionspec15 = optionparser.nonOptions();
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
try {
|
||||
OptionSet optionset = optionparser.parse(p_129699_);
|
||||
@@ -91,6 +_,14 @@
|
||||
@@ -95,6 +_,14 @@
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
Path path = optionset.valueOf(optionspec14);
|
||||
if (path != null) {
|
||||
writePidFile(path);
|
||||
@@ -105,24 +_,29 @@
|
||||
@@ -109,24 +_,29 @@
|
||||
Bootstrap.validate();
|
||||
Util.startTimerHackThread();
|
||||
Path path1 = Paths.get("server.properties");
|
||||
|
|
@ -70,7 +70,7 @@
|
|||
LevelStorageSource levelstoragesource = LevelStorageSource.createDefault(file1.toPath());
|
||||
LevelStorageSource.LevelStorageAccess levelstoragesource$levelstorageaccess = levelstoragesource.validateAndCreateAccess(s);
|
||||
Dynamic<?> dynamic;
|
||||
@@ -173,6 +_,10 @@
|
||||
@@ -177,6 +_,10 @@
|
||||
|
||||
PackRepository packrepository = ServerPacksSource.createPackRepository(levelstoragesource$levelstorageaccess);
|
||||
|
||||
|
|
@ -81,7 +81,7 @@
|
|||
WorldStem worldstem;
|
||||
try {
|
||||
WorldLoader.InitConfig worldloader$initconfig = loadOrCreateConfig(dedicatedserversettings.getProperties(), dynamic1, flag, packrepository);
|
||||
@@ -214,6 +_,16 @@
|
||||
@@ -218,6 +_,16 @@
|
||||
worlddimensions = dedicatedserverproperties.createDimensions(p_358511_.datapackWorldgen());
|
||||
}
|
||||
|
||||
|
|
@ -98,7 +98,7 @@
|
|||
WorldDimensions.Complete worlddimensions$complete = worlddimensions.bake(registry);
|
||||
Lifecycle lifecycle = worlddimensions$complete.lifecycle().add(p_358511_.datapackWorldgen().allRegistriesLifecycle());
|
||||
return new WorldLoader.DataLoadOutput<>(
|
||||
@@ -244,9 +_,16 @@
|
||||
@@ -248,9 +_,16 @@
|
||||
|
||||
WorldData worlddata = worldstem.worldData();
|
||||
levelstoragesource$levelstorageaccess.saveDataTag(registryaccess$frozen, worlddata);
|
||||
|
|
@ -117,7 +117,7 @@
|
|||
p_296433_,
|
||||
levelstoragesource$levelstorageaccess,
|
||||
packrepository,
|
||||
@@ -256,12 +_,13 @@
|
||||
@@ -260,12 +_,13 @@
|
||||
services,
|
||||
LoggerChunkProgressListener::createFromGameruleRadius
|
||||
);
|
||||
|
|
@ -133,7 +133,7 @@
|
|||
}
|
||||
|
||||
return dedicatedserver1;
|
||||
@@ -270,7 +_,10 @@
|
||||
@@ -274,7 +_,10 @@
|
||||
Thread thread = new Thread("Server Shutdown Thread") {
|
||||
@Override
|
||||
public void run() {
|
||||
|
|
|
|||
|
|
@ -1,21 +1,15 @@
|
|||
--- a/net/minecraft/server/ServerAdvancementManager.java
|
||||
+++ b/net/minecraft/server/ServerAdvancementManager.java
|
||||
@@ -26,8 +_,17 @@
|
||||
@@ -26,7 +_,12 @@
|
||||
private AdvancementTree tree = new AdvancementTree();
|
||||
private final HolderLookup.Provider registries;
|
||||
|
||||
+ /** @deprecated Forge: use {@linkplain ServerAdvancementManager#ServerAdvancementManager(net.minecraftforge.common.crafting.conditions.ICondition.IContext) constructor with context}. */
|
||||
public ServerAdvancementManager(HolderLookup.Provider p_336198_) {
|
||||
- super(p_336198_, Advancement.CODEC, Registries.elementsDirPath(Registries.ADVANCEMENT));
|
||||
+ this(p_336198_, net.minecraftforge.common.crafting.conditions.ICondition.IContext.EMPTY);
|
||||
+ }
|
||||
+
|
||||
+ public ServerAdvancementManager(HolderLookup.Provider p_336198_, net.minecraftforge.common.crafting.conditions.ICondition.IContext context) {
|
||||
+ super(
|
||||
+ p_336198_.createSerializationContext(com.mojang.serialization.JsonOps.INSTANCE)
|
||||
+ .<com.mojang.serialization.DynamicOps<com.google.gson.JsonElement>>withContext(
|
||||
+ net.minecraftforge.common.crafting.conditions.ICondition.IContext.KEY, context
|
||||
+ ), Advancement.CODEC, Registries.elementsDirPath(Registries.ADVANCEMENT));
|
||||
super(p_336198_, Advancement.CODEC, Registries.ADVANCEMENT);
|
||||
this.registries = p_336198_;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/server/level/ServerEntity.java
|
||||
+++ b/net/minecraft/server/level/ServerEntity.java
|
||||
@@ -278,6 +_,7 @@
|
||||
@@ -277,6 +_,7 @@
|
||||
public void removePairing(ServerPlayer p_8535_) {
|
||||
this.entity.stopSeenByPlayer(p_8535_);
|
||||
p_8535_.connection.send(new ClientboundRemoveEntitiesPacket(this.entity.getId()));
|
||||
|
|
@ -8,7 +8,7 @@
|
|||
}
|
||||
|
||||
public void addPairing(ServerPlayer p_8542_) {
|
||||
@@ -285,6 +_,7 @@
|
||||
@@ -284,6 +_,7 @@
|
||||
this.sendPairingData(p_8542_, list::add);
|
||||
p_8542_.connection.send(new ClientboundBundlePacket(list));
|
||||
this.entity.startSeenByPlayer(p_8542_);
|
||||
|
|
|
|||
|
|
@ -1,11 +1,10 @@
|
|||
--- a/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -202,11 +_,12 @@
|
||||
private final List<CustomSpawner> customSpawners;
|
||||
@@ -204,10 +_,12 @@
|
||||
@Nullable
|
||||
private EndDragonFight dragonFight;
|
||||
- final Int2ObjectMap<EnderDragonPart> dragonParts = new Int2ObjectOpenHashMap<>();
|
||||
+ final Int2ObjectMap<net.minecraftforge.entity.PartEntity<?>> dragonParts = new Int2ObjectOpenHashMap<>();
|
||||
final Int2ObjectMap<EnderDragonPart> dragonParts = new Int2ObjectOpenHashMap<>();
|
||||
+ final Int2ObjectMap<net.minecraftforge.entity.PartEntity<?>> partEntities = new Int2ObjectOpenHashMap<>();
|
||||
private final StructureManager structureManager;
|
||||
private final StructureCheck structureCheck;
|
||||
private final boolean tickTime;
|
||||
|
|
@ -14,7 +13,7 @@
|
|||
|
||||
public ServerLevel(
|
||||
MinecraftServer p_214999_,
|
||||
@@ -289,6 +_,12 @@
|
||||
@@ -290,6 +_,12 @@
|
||||
this.sleepStatus = new SleepStatus();
|
||||
this.gameEventDispatcher = new GameEventDispatcher(this);
|
||||
this.randomSequences = Objects.requireNonNullElseGet(p_288977_, () -> this.getDataStorage().computeIfAbsent(RandomSequences.factory(i), "random_sequences"));
|
||||
|
|
@ -27,7 +26,7 @@
|
|||
}
|
||||
|
||||
@Deprecated
|
||||
@@ -330,8 +_,8 @@
|
||||
@@ -331,8 +_,8 @@
|
||||
int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE);
|
||||
if (this.sleepStatus.areEnoughSleeping(i) && this.sleepStatus.areEnoughDeepSleeping(i, this.players)) {
|
||||
if (this.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT)) {
|
||||
|
|
@ -38,7 +37,7 @@
|
|||
}
|
||||
|
||||
this.wakeUpAllPlayers();
|
||||
@@ -369,7 +_,8 @@
|
||||
@@ -370,7 +_,8 @@
|
||||
|
||||
this.handlingTick = false;
|
||||
profilerfiller.pop();
|
||||
|
|
@ -48,7 +47,7 @@
|
|||
if (flag1) {
|
||||
this.resetEmptyTime();
|
||||
}
|
||||
@@ -398,6 +_,7 @@
|
||||
@@ -399,6 +_,7 @@
|
||||
p_358707_.stopRiding();
|
||||
}
|
||||
|
||||
|
|
@ -56,7 +55,7 @@
|
|||
profilerfiller.push("tick");
|
||||
this.guardEntityTick(this::tickNonPassenger, p_358707_);
|
||||
profilerfiller.pop();
|
||||
@@ -525,6 +_,7 @@
|
||||
@@ -526,6 +_,7 @@
|
||||
BlockPos blockpos = this.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING, p_300602_);
|
||||
BlockPos blockpos1 = blockpos.below();
|
||||
Biome biome = this.getBiome(blockpos).value();
|
||||
|
|
@ -64,7 +63,7 @@
|
|||
if (biome.shouldFreeze(this, blockpos1)) {
|
||||
this.setBlockAndUpdate(blockpos1, Blocks.ICE.defaultBlockState());
|
||||
}
|
||||
@@ -700,8 +_,8 @@
|
||||
@@ -701,8 +_,8 @@
|
||||
this.server.getPlayerList().broadcastAll(new ClientboundGameEventPacket(ClientboundGameEventPacket.START_RAINING, 0.0F));
|
||||
}
|
||||
|
||||
|
|
@ -75,7 +74,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -738,6 +_,7 @@
|
||||
@@ -739,6 +_,7 @@
|
||||
p_8648_.tickCount++;
|
||||
profilerfiller.push(() -> BuiltInRegistries.ENTITY_TYPE.getKey(p_8648_.getType()).toString());
|
||||
profilerfiller.incrementCounter("tickNonPassenger");
|
||||
|
|
@ -83,7 +82,7 @@
|
|||
p_8648_.tick();
|
||||
profilerfiller.pop();
|
||||
|
||||
@@ -755,6 +_,7 @@
|
||||
@@ -756,6 +_,7 @@
|
||||
ProfilerFiller profilerfiller = Profiler.get();
|
||||
profilerfiller.push(() -> BuiltInRegistries.ENTITY_TYPE.getKey(p_8664_.getType()).toString());
|
||||
profilerfiller.incrementCounter("tickPassenger");
|
||||
|
|
@ -91,7 +90,7 @@
|
|||
p_8664_.rideTick();
|
||||
profilerfiller.pop();
|
||||
|
||||
@@ -787,6 +_,7 @@
|
||||
@@ -788,6 +_,7 @@
|
||||
} else {
|
||||
this.entityManager.autoSave();
|
||||
}
|
||||
|
|
@ -99,7 +98,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -881,6 +_,7 @@
|
||||
@@ -882,6 +_,7 @@
|
||||
}
|
||||
|
||||
private void addPlayer(ServerPlayer p_8854_) {
|
||||
|
|
@ -107,7 +106,7 @@
|
|||
Entity entity = this.getEntities().get(p_8854_.getUUID());
|
||||
if (entity != null) {
|
||||
LOGGER.warn("Force-added player with duplicate UUID {}", p_8854_.getUUID());
|
||||
@@ -888,7 +_,8 @@
|
||||
@@ -889,7 +_,8 @@
|
||||
this.removePlayerImmediately((ServerPlayer)entity, Entity.RemovalReason.DISCARDED);
|
||||
}
|
||||
|
||||
|
|
@ -117,7 +116,7 @@
|
|||
}
|
||||
|
||||
private boolean addEntity(Entity p_8873_) {
|
||||
@@ -896,7 +_,12 @@
|
||||
@@ -897,7 +_,12 @@
|
||||
LOGGER.warn("Tried to add entity {} but it was marked as removed already", EntityType.getKey(p_8873_.getType()));
|
||||
return false;
|
||||
} else {
|
||||
|
|
@ -131,7 +130,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -944,6 +_,12 @@
|
||||
@@ -945,6 +_,12 @@
|
||||
float p_263390_,
|
||||
long p_263403_
|
||||
) {
|
||||
|
|
@ -144,7 +143,7 @@
|
|||
this.server
|
||||
.getPlayerList()
|
||||
.broadcast(
|
||||
@@ -961,6 +_,12 @@
|
||||
@@ -962,6 +_,12 @@
|
||||
public void playSeededSound(
|
||||
@Nullable Player p_263545_, Entity p_263544_, Holder<SoundEvent> p_263491_, SoundSource p_263542_, float p_263530_, float p_263520_, long p_263490_
|
||||
) {
|
||||
|
|
@ -157,7 +156,7 @@
|
|||
this.server
|
||||
.getPlayerList()
|
||||
.broadcast(
|
||||
@@ -1019,6 +_,7 @@
|
||||
@@ -1020,6 +_,7 @@
|
||||
|
||||
@Override
|
||||
public void gameEvent(Holder<GameEvent> p_334475_, Vec3 p_215042_, GameEvent.Context p_215043_) {
|
||||
|
|
@ -165,7 +164,7 @@
|
|||
this.gameEventDispatcher.post(p_334475_, p_215042_, p_215043_);
|
||||
}
|
||||
|
||||
@@ -1057,16 +_,24 @@
|
||||
@@ -1058,16 +_,24 @@
|
||||
|
||||
@Override
|
||||
public void updateNeighborsAt(BlockPos p_215045_, Block p_215046_) {
|
||||
|
|
@ -190,7 +189,7 @@
|
|||
this.neighborUpdater.updateNeighborsAtExceptFromFacing(p_215052_, p_215053_, p_215054_, p_370072_);
|
||||
}
|
||||
|
||||
@@ -1112,12 +_,14 @@
|
||||
@@ -1113,12 +_,14 @@
|
||||
Explosion.BlockInteraction explosion$blockinteraction = switch (p_255827_) {
|
||||
case NONE -> Explosion.BlockInteraction.KEEP;
|
||||
case BLOCK -> this.getDestroyType(GameRules.RULE_BLOCK_EXPLOSION_DROP_DECAY);
|
||||
|
|
@ -206,41 +205,41 @@
|
|||
serverexplosion.explode();
|
||||
ParticleOptions particleoptions = serverexplosion.isSmall() ? p_310962_ : p_310322_;
|
||||
|
||||
@@ -1691,6 +_,11 @@
|
||||
@@ -1714,6 +_,11 @@
|
||||
return this.chunkSource.getGenerator().getSeaLevel();
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ public java.util.Collection<net.minecraftforge.entity.PartEntity<?>> getPartEntities() {
|
||||
+ return this.dragonParts.values();
|
||||
+ return this.partEntities.values();
|
||||
+ }
|
||||
+
|
||||
final class EntityCallbacks implements LevelCallback<Entity> {
|
||||
public void onCreated(Entity p_143355_) {
|
||||
}
|
||||
@@ -1725,8 +_,8 @@
|
||||
ServerLevel.this.navigatingMobs.add(mob);
|
||||
@@ -1754,6 +_,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if (p_143371_ instanceof EnderDragon enderdragon) {
|
||||
- for (EnderDragonPart enderdragonpart : enderdragon.getSubEntities()) {
|
||||
+ if (p_143371_.isMultipartEntity()) {
|
||||
+ for (var enderdragonpart : p_143371_.getParts()) {
|
||||
ServerLevel.this.dragonParts.put(enderdragonpart.getId(), enderdragonpart);
|
||||
+ for (var part : p_143371_.getParts()) {
|
||||
+ ServerLevel.this.partEntities.put(part.getId(), part);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
p_143371_.updateDynamicGameEventListener(DynamicGameEventListener::add);
|
||||
}
|
||||
|
||||
@@ -1781,7 +_,16 @@
|
||||
}
|
||||
}
|
||||
@@ -1752,13 +_,16 @@
|
||||
ServerLevel.this.navigatingMobs.remove(mob);
|
||||
}
|
||||
|
||||
- if (p_143375_ instanceof EnderDragon enderdragon) {
|
||||
- for (EnderDragonPart enderdragonpart : enderdragon.getSubEntities()) {
|
||||
+ if (p_143375_.isMultipartEntity()) {
|
||||
+ for (var enderdragonpart : p_143375_.getParts()) {
|
||||
ServerLevel.this.dragonParts.remove(enderdragonpart.getId());
|
||||
}
|
||||
}
|
||||
|
||||
+ for (var part : p_143375_.getParts()) {
|
||||
+ ServerLevel.this.partEntities.remove(part.getId());
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
p_143375_.updateDynamicGameEventListener(DynamicGameEventListener::remove);
|
||||
+
|
||||
+ p_143375_.onRemovedFromWorld();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -181,7 +_,8 @@
|
||||
@@ -180,7 +_,8 @@
|
||||
import net.minecraft.world.scores.criteria.ObjectiveCriteria;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
private static final Logger LOGGER = LogUtils.getLogger();
|
||||
private static final int NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_XZ = 32;
|
||||
private static final int NEUTRAL_MOB_DEATH_NOTIFICATION_RADII_Y = 10;
|
||||
@@ -846,6 +_,7 @@
|
||||
@@ -844,6 +_,7 @@
|
||||
|
||||
@Override
|
||||
public void die(DamageSource p_9035_) {
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
this.gameEvent(GameEvent.ENTITY_DIE);
|
||||
boolean flag = this.serverLevel().getGameRules().getBoolean(GameRules.RULE_SHOWDEATHMESSAGES);
|
||||
if (flag) {
|
||||
@@ -1041,6 +_,7 @@
|
||||
@@ -1034,6 +_,7 @@
|
||||
|
||||
@Nullable
|
||||
public ServerPlayer teleport(TeleportTransition p_361322_) {
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
if (this.isRemoved()) {
|
||||
return null;
|
||||
} else {
|
||||
@@ -1068,7 +_,7 @@
|
||||
@@ -1061,7 +_,7 @@
|
||||
PlayerList playerlist = this.server.getPlayerList();
|
||||
playerlist.sendPlayerPermissionLevel(this);
|
||||
serverlevel1.removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION);
|
||||
|
|
@ -35,7 +35,7 @@
|
|||
ProfilerFiller profilerfiller = Profiler.get();
|
||||
profilerfiller.push("moving");
|
||||
if (resourcekey == Level.OVERWORLD && serverlevel.dimension() == Level.NETHER) {
|
||||
@@ -1092,6 +_,7 @@
|
||||
@@ -1085,6 +_,7 @@
|
||||
this.lastSentExp = -1;
|
||||
this.lastSentHealth = -1.0F;
|
||||
this.lastSentFood = -1;
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
return this;
|
||||
}
|
||||
}
|
||||
@@ -1132,6 +_,9 @@
|
||||
@@ -1125,6 +_,9 @@
|
||||
|
||||
@Override
|
||||
public Either<Player.BedSleepingProblem, Unit> startSleepInBed(BlockPos p_9115_) {
|
||||
|
|
@ -53,7 +53,7 @@
|
|||
Direction direction = this.level().getBlockState(p_9115_).getValue(HorizontalDirectionalBlock.FACING);
|
||||
if (this.isSleeping() || !this.isAlive()) {
|
||||
return Either.left(Player.BedSleepingProblem.OTHER_PROBLEM);
|
||||
@@ -1143,7 +_,7 @@
|
||||
@@ -1136,7 +_,7 @@
|
||||
return Either.left(Player.BedSleepingProblem.OBSTRUCTED);
|
||||
} else {
|
||||
this.setRespawnPosition(this.level().dimension(), p_9115_, this.getYRot(), false, true);
|
||||
|
|
@ -62,7 +62,7 @@
|
|||
return Either.left(Player.BedSleepingProblem.NOT_POSSIBLE_NOW);
|
||||
} else {
|
||||
if (!this.isCreative()) {
|
||||
@@ -1189,6 +_,7 @@
|
||||
@@ -1182,6 +_,7 @@
|
||||
}
|
||||
|
||||
private boolean bedInRange(BlockPos p_9117_, Direction p_9118_) {
|
||||
|
|
@ -70,7 +70,7 @@
|
|||
return this.isReachableBedBlock(p_9117_) || this.isReachableBedBlock(p_9117_.relative(p_9118_.getOpposite()));
|
||||
}
|
||||
|
||||
@@ -1303,6 +_,7 @@
|
||||
@@ -1286,6 +_,7 @@
|
||||
this.connection.send(new ClientboundOpenScreenPacket(abstractcontainermenu.containerId, abstractcontainermenu.getType(), p_9033_.getDisplayName()));
|
||||
this.initMenu(abstractcontainermenu);
|
||||
this.containerMenu = abstractcontainermenu;
|
||||
|
|
@ -78,7 +78,7 @@
|
|||
return OptionalInt.of(this.containerCounter);
|
||||
}
|
||||
}
|
||||
@@ -1352,6 +_,7 @@
|
||||
@@ -1335,6 +_,7 @@
|
||||
public void doCloseContainer() {
|
||||
this.containerMenu.removed(this);
|
||||
this.inventoryMenu.transferState(this.containerMenu);
|
||||
|
|
@ -86,7 +86,7 @@
|
|||
this.containerMenu = this.inventoryMenu;
|
||||
}
|
||||
|
||||
@@ -1575,6 +_,15 @@
|
||||
@@ -1558,6 +_,15 @@
|
||||
this.setShoulderEntityLeft(p_9016_.getShoulderEntityLeft());
|
||||
this.setShoulderEntityRight(p_9016_.getShoulderEntityRight());
|
||||
this.setLastDeathLocation(p_9016_.getLastDeathLocation());
|
||||
|
|
@ -102,7 +102,7 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -1676,6 +_,7 @@
|
||||
@@ -1657,6 +_,7 @@
|
||||
|
||||
public boolean setGameMode(GameType p_143404_) {
|
||||
boolean flag = this.isSpectator();
|
||||
|
|
@ -110,7 +110,7 @@
|
|||
if (!this.gameMode.changeGameModeForPlayer(p_143404_)) {
|
||||
return false;
|
||||
} else {
|
||||
@@ -1840,6 +_,9 @@
|
||||
@@ -1821,6 +_,9 @@
|
||||
public void setCamera(@Nullable Entity p_9214_) {
|
||||
Entity entity = this.getCamera();
|
||||
this.camera = (Entity)(p_9214_ == null ? this : p_9214_);
|
||||
|
|
@ -120,7 +120,7 @@
|
|||
if (entity != this.camera) {
|
||||
if (this.camera.level() instanceof ServerLevel serverlevel) {
|
||||
this.teleportTo(
|
||||
@@ -1878,7 +_,11 @@
|
||||
@@ -1859,7 +_,11 @@
|
||||
|
||||
@Nullable
|
||||
public Component getTabListDisplayName() {
|
||||
|
|
@ -133,7 +133,7 @@
|
|||
}
|
||||
|
||||
public int getTabListOrder() {
|
||||
@@ -1925,6 +_,9 @@
|
||||
@@ -1906,6 +_,9 @@
|
||||
}
|
||||
|
||||
public void setRespawnPosition(ResourceKey<Level> p_9159_, @Nullable BlockPos p_9160_, float p_9161_, boolean p_9162_, boolean p_9163_) {
|
||||
|
|
@ -143,7 +143,7 @@
|
|||
if (p_9160_ != null) {
|
||||
boolean flag = p_9160_.equals(this.respawnPosition) && p_9159_.equals(this.respawnDimension);
|
||||
if (p_9163_ && !flag) {
|
||||
@@ -1982,6 +_,9 @@
|
||||
@@ -1963,6 +_,9 @@
|
||||
if (itementity == null) {
|
||||
return null;
|
||||
} else {
|
||||
|
|
@ -153,7 +153,7 @@
|
|||
this.level().addFreshEntity(itementity);
|
||||
ItemStack itemstack = itementity.getItem();
|
||||
if (p_9087_) {
|
||||
@@ -2088,9 +_,12 @@
|
||||
@@ -2069,9 +_,12 @@
|
||||
|
||||
public boolean drop(boolean p_182295_) {
|
||||
Inventory inventory = this.getInventory();
|
||||
|
|
@ -167,7 +167,7 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -2189,6 +_,75 @@
|
||||
@@ -2170,6 +_,75 @@
|
||||
@Nullable
|
||||
public BlockPos getRaidOmenPosition() {
|
||||
return this.raidOmenPosition;
|
||||
|
|
|
|||
|
|
@ -1,20 +1,20 @@
|
|||
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
@@ -1021,9 +_,10 @@
|
||||
switch (serverboundplayeractionpacket$action) {
|
||||
case SWAP_ITEM_WITH_OFFHAND:
|
||||
if (!this.player.isSpectator()) {
|
||||
- ItemStack itemstack = this.player.getItemInHand(InteractionHand.OFF_HAND);
|
||||
- this.player.setItemInHand(InteractionHand.OFF_HAND, this.player.getItemInHand(InteractionHand.MAIN_HAND));
|
||||
- this.player.setItemInHand(InteractionHand.MAIN_HAND, itemstack);
|
||||
+ var event = net.minecraftforge.event.ForgeEventFactory.onLivingSwapHandItems(this.player);
|
||||
+ if (event.isCanceled()) return;
|
||||
+ this.player.setItemInHand(InteractionHand.OFF_HAND, event.getItemSwappedToOffHand());
|
||||
+ this.player.setItemInHand(InteractionHand.MAIN_HAND, event.getItemSwappedToMainHand());
|
||||
this.player.stopUsingItem();
|
||||
}
|
||||
@@ -1081,9 +_,10 @@
|
||||
switch (serverboundplayeractionpacket$action) {
|
||||
case SWAP_ITEM_WITH_OFFHAND:
|
||||
if (!this.player.isSpectator()) {
|
||||
- ItemStack itemstack = this.player.getItemInHand(InteractionHand.OFF_HAND);
|
||||
- this.player.setItemInHand(InteractionHand.OFF_HAND, this.player.getItemInHand(InteractionHand.MAIN_HAND));
|
||||
- this.player.setItemInHand(InteractionHand.MAIN_HAND, itemstack);
|
||||
+ var event = net.minecraftforge.event.ForgeEventFactory.onLivingSwapHandItems(this.player);
|
||||
+ if (event.isCanceled()) return;
|
||||
+ this.player.setItemInHand(InteractionHand.OFF_HAND, event.getItemSwappedToOffHand());
|
||||
+ this.player.setItemInHand(InteractionHand.MAIN_HAND, event.getItemSwappedToMainHand());
|
||||
this.player.stopUsingItem();
|
||||
}
|
||||
|
||||
@@ -1214,8 +_,9 @@
|
||||
@@ -1281,8 +_,9 @@
|
||||
}
|
||||
|
||||
CompletableFuture<FilteredText> completablefuture = this.filterTextPacket(playerchatmessage.signedContent());
|
||||
|
|
@ -25,16 +25,16 @@
|
|||
PlayerChatMessage playerchatmessage1 = playerchatmessage.withUnsignedContent(component).filter(p_296589_.mask());
|
||||
this.broadcastChatMessage(playerchatmessage1);
|
||||
});
|
||||
@@ -1537,7 +_,7 @@
|
||||
@@ -1607,7 +_,7 @@
|
||||
|
||||
@Override
|
||||
public void onInteraction(InteractionHand p_143682_, Vec3 p_143683_) {
|
||||
- this.performInteraction(p_143682_, (p_143686_, p_143687_, p_143688_) -> p_143687_.interactAt(p_143686_, p_143683_, p_143688_));
|
||||
+ this.performInteraction(p_143682_, (p_143686_, p_143687_, p_143688_) -> net.minecraftforge.common.ForgeHooks.onInteractEntityAt(p_143687_, p_143686_, p_143683_, p_143688_));
|
||||
}
|
||||
@Override
|
||||
public void onInteraction(InteractionHand p_143682_, Vec3 p_143683_) {
|
||||
- this.performInteraction(p_143682_, (p_143686_, p_143687_, p_143688_) -> p_143687_.interactAt(p_143686_, p_143683_, p_143688_));
|
||||
+ this.performInteraction(p_143682_, (p_143686_, p_143687_, p_143688_) -> net.minecraftforge.common.ForgeHooks.onInteractEntityAt(p_143687_, p_143686_, p_143683_, p_143688_));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1847,6 +_,7 @@
|
||||
@Override
|
||||
@@ -1912,6 +_,7 @@
|
||||
|
||||
@Override
|
||||
public void handleCustomPayload(ServerboundCustomPayloadPacket p_329963_) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/server/packs/AbstractPackResources.java
|
||||
+++ b/net/minecraft/server/packs/AbstractPackResources.java
|
||||
@@ -63,4 +_,9 @@
|
||||
@@ -62,4 +_,9 @@
|
||||
public PackLocationInfo location() {
|
||||
return this.location;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,29 +1,30 @@
|
|||
--- a/net/minecraft/server/packs/resources/SimpleJsonResourceReloadListener.java
|
||||
+++ b/net/minecraft/server/packs/resources/SimpleJsonResourceReloadListener.java
|
||||
@@ -55,7 +_,15 @@
|
||||
ResourceLocation resourcelocation1 = filetoidconverter.fileToId(resourcelocation);
|
||||
@@ -31,6 +_,10 @@
|
||||
this(p_378826_.createSerializationContext(JsonOps.INSTANCE), p_361980_, FileToIdConverter.registry(p_376437_));
|
||||
}
|
||||
|
||||
+ protected SimpleJsonResourceReloadListener(HolderLookup.Provider p_378826_, Codec<T> p_361980_, ResourceKey<? extends Registry<T>> p_376437_, net.minecraftforge.common.crafting.conditions.ICondition.IContext context) {
|
||||
+ this(context.wrap(p_378826_.createSerializationContext(JsonOps.INSTANCE)), p_361980_, FileToIdConverter.registry(p_376437_));
|
||||
+ }
|
||||
+
|
||||
protected SimpleJsonResourceReloadListener(Codec<T> p_370137_, FileToIdConverter p_375758_) {
|
||||
this(JsonOps.INSTANCE, p_370137_, p_375758_);
|
||||
}
|
||||
@@ -65,7 +_,15 @@
|
||||
ResourceLocation resourcelocation1 = p_377980_.fileToId(resourcelocation);
|
||||
|
||||
try (Reader reader = entry.getValue().openAsReader()) {
|
||||
- p_368755_.parse(p_369854_, JsonParser.parseReader(reader)).ifSuccess(p_370131_ -> {
|
||||
- p_376362_.parse(p_378080_, JsonParser.parseReader(reader)).ifSuccess(p_370131_ -> {
|
||||
+ var json = JsonParser.parseReader(reader);
|
||||
+ json = net.minecraftforge.common.ForgeHooks.readConditional(p_369854_, json);
|
||||
+ json = net.minecraftforge.common.ForgeHooks.readConditional(p_378080_, json);
|
||||
+ if (json == null) {
|
||||
+ LOGGER.debug("Skipping loading {} as its conditions were not met", resourcelocation);
|
||||
+ continue;
|
||||
+ }
|
||||
+ p_368755_.parse(p_369854_, json).ifSuccess(p_370131_ -> {
|
||||
+ p_370131_ = net.minecraftforge.common.ForgeHooks.onJsonDataParsed(p_368755_, resourcelocation1, p_370131_);
|
||||
+ p_376362_.parse(p_378080_, json).ifSuccess(p_370131_ -> {
|
||||
+ p_370131_ = net.minecraftforge.common.ForgeHooks.onJsonDataParsed(p_376362_, resourcelocation1, p_370131_);
|
||||
+ if (p_370131_ == null) return;
|
||||
if (p_279404_.putIfAbsent(resourcelocation1, (T)p_370131_) != null) {
|
||||
if (p_377922_.putIfAbsent(resourcelocation1, (T)p_370131_) != null) {
|
||||
throw new IllegalStateException("Duplicate data file ignored with ID " + resourcelocation1);
|
||||
}
|
||||
@@ -64,5 +_,9 @@
|
||||
LOGGER.error("Couldn't parse data file '{}' from '{}'", resourcelocation1, resourcelocation, jsonparseexception);
|
||||
}
|
||||
}
|
||||
+ }
|
||||
+
|
||||
+ protected ResourceLocation getPreparedPath(ResourceLocation rl) {
|
||||
+ return rl.withPath(this.directory + "/" + rl.getPath() + ".json");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/tags/ItemTags.java
|
||||
+++ b/net/minecraft/tags/ItemTags.java
|
||||
@@ -183,4 +_,12 @@
|
||||
@@ -185,4 +_,12 @@
|
||||
private static TagKey<Item> bind(String p_203855_) {
|
||||
return TagKey.create(Registries.ITEM, ResourceLocation.withDefaultNamespace(p_203855_));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
--- a/net/minecraft/util/SpawnUtil.java
|
||||
+++ b/net/minecraft/util/SpawnUtil.java
|
||||
@@ -35,7 +_,7 @@
|
||||
if (p_216406_.getWorldBorder().isWithinBounds(blockpos$mutableblockpos) && moveToPossibleSpawnPosition(p_216406_, p_216410_, blockpos$mutableblockpos, p_216411_)) {
|
||||
@@ -47,7 +_,7 @@
|
||||
)) {
|
||||
T t = (T)p_216404_.create(p_216406_, null, blockpos$mutableblockpos, p_369127_, false, false);
|
||||
if (t != null) {
|
||||
- if (t.checkSpawnRules(p_216406_, p_369127_) && t.checkSpawnObstruction(p_216406_)) {
|
||||
+ if (net.minecraftforge.event.ForgeEventFactory.checkSpawnPosition(t, p_216406_, p_369127_)) {
|
||||
p_216406_.addFreshEntityWithPassengers(t);
|
||||
t.playAmbientSound();
|
||||
return Optional.of(t);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@
|
|||
}
|
||||
|
||||
public void onClientRemoval() {
|
||||
@@ -476,7 +_,7 @@
|
||||
@@ -480,7 +_,7 @@
|
||||
|
||||
if (this.isInLava()) {
|
||||
this.lavaHurt();
|
||||
|
|
@ -62,7 +62,7 @@
|
|||
}
|
||||
|
||||
this.checkBelowWorld();
|
||||
@@ -767,12 +_,12 @@
|
||||
@@ -779,12 +_,12 @@
|
||||
this.setRemainingFireTicks(-this.getFireImmuneTicks());
|
||||
}
|
||||
|
||||
|
|
@ -77,7 +77,7 @@
|
|||
this.setRemainingFireTicks(-this.getFireImmuneTicks());
|
||||
}
|
||||
}
|
||||
@@ -852,9 +_,7 @@
|
||||
@@ -864,9 +_,7 @@
|
||||
return blockpos;
|
||||
} else {
|
||||
BlockState blockstate = this.level().getBlockState(blockpos);
|
||||
|
|
@ -88,7 +88,7 @@
|
|||
? blockpos.atY(Mth.floor(this.position.y - (double)p_216987_))
|
||||
: blockpos;
|
||||
}
|
||||
@@ -1138,19 +_,19 @@
|
||||
@@ -1150,19 +_,19 @@
|
||||
return !blockstate.is(BlockTags.INSIDE_STEP_SOUND_BLOCKS) && !blockstate.is(BlockTags.COMBINATION_STEP_SOUND_BLOCKS) ? p_278049_ : blockpos;
|
||||
}
|
||||
|
||||
|
|
@ -114,12 +114,23 @@
|
|||
this.playSound(soundtype.getStepSound(), soundtype.getVolume() * 0.15F, soundtype.getPitch());
|
||||
}
|
||||
|
||||
@@ -1301,27 +_,33 @@
|
||||
@@ -1290,6 +_,10 @@
|
||||
return this.wasTouchingWater;
|
||||
}
|
||||
|
||||
+ public boolean isInWaterOrSwimmable() {
|
||||
+ return this.isInWater() || isInFluidType((fluidType, height) -> canSwimInFluidType(fluidType));
|
||||
+ }
|
||||
+
|
||||
private boolean isInRain() {
|
||||
BlockPos blockpos = this.blockPosition();
|
||||
return this.level().isRainingAt(blockpos)
|
||||
@@ -1322,27 +_,33 @@
|
||||
|
||||
public void updateSwimming() {
|
||||
if (this.isSwimming()) {
|
||||
- this.setSwimming(this.isSprinting() && this.isInWater() && !this.isPassenger());
|
||||
+ this.setSwimming(this.isSprinting() && (this.isInWater() || this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType))) && !this.isPassenger());
|
||||
+ this.setSwimming(this.isSprinting() && this.isInWaterOrSwimmable() && !this.isPassenger());
|
||||
} else {
|
||||
- this.setSwimming(this.isSprinting() && this.isUnderWater() && !this.isPassenger() && this.level().getFluidState(this.blockPosition).is(FluidTags.WATER));
|
||||
+ this.setSwimming(this.isSprinting() && (this.isUnderWater() || this.canStartSwimming()) && !this.isPassenger());
|
||||
|
|
@ -156,7 +167,7 @@
|
|||
if (!this.wasTouchingWater && !this.firstTick) {
|
||||
this.doWaterSplashEffect();
|
||||
}
|
||||
@@ -1337,6 +_,7 @@
|
||||
@@ -1358,6 +_,7 @@
|
||||
private void updateFluidOnEyes() {
|
||||
this.wasEyeInWater = this.isEyeInFluid(FluidTags.WATER);
|
||||
this.fluidOnEyes.clear();
|
||||
|
|
@ -164,7 +175,7 @@
|
|||
double d0 = this.getEyeY();
|
||||
if (this.getVehicle() instanceof AbstractBoat abstractboat
|
||||
&& !abstractboat.isUnderWater()
|
||||
@@ -1349,7 +_,7 @@
|
||||
@@ -1370,7 +_,7 @@
|
||||
FluidState fluidstate = this.level().getFluidState(blockpos);
|
||||
double d1 = (double)((float)blockpos.getY() + fluidstate.getHeight(this.level(), blockpos));
|
||||
if (d1 > d0) {
|
||||
|
|
@ -173,7 +184,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -1403,12 +_,13 @@
|
||||
@@ -1424,12 +_,13 @@
|
||||
}
|
||||
|
||||
public boolean canSpawnSprintParticle() {
|
||||
|
|
@ -188,7 +199,7 @@
|
|||
if (blockstate.getRenderShape() != RenderShape.INVISIBLE) {
|
||||
Vec3 vec3 = this.getDeltaMovement();
|
||||
BlockPos blockpos1 = this.blockPosition();
|
||||
@@ -1424,7 +_,7 @@
|
||||
@@ -1445,7 +_,7 @@
|
||||
|
||||
this.level()
|
||||
.addParticle(
|
||||
|
|
@ -197,7 +208,7 @@
|
|||
d0,
|
||||
this.getY() + 0.1,
|
||||
d1,
|
||||
@@ -1435,12 +_,15 @@
|
||||
@@ -1456,12 +_,15 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -214,7 +225,7 @@
|
|||
}
|
||||
|
||||
public void moveRelative(float p_19921_, Vec3 p_19922_) {
|
||||
@@ -1810,6 +_,11 @@
|
||||
@@ -1831,6 +_,11 @@
|
||||
p_20241_.putBoolean("HasVisualFire", this.hasVisualFire);
|
||||
}
|
||||
|
||||
|
|
@ -226,7 +237,7 @@
|
|||
if (!this.tags.isEmpty()) {
|
||||
ListTag listtag = new ListTag();
|
||||
|
||||
@@ -1901,6 +_,9 @@
|
||||
@@ -1924,6 +_,9 @@
|
||||
this.setGlowingTag(p_20259_.getBoolean("Glowing"));
|
||||
this.setTicksFrozen(p_20259_.getInt("TicksFrozen"));
|
||||
this.hasVisualFire = p_20259_.getBoolean("HasVisualFire");
|
||||
|
|
@ -236,7 +247,7 @@
|
|||
if (p_20259_.contains("Tags", 9)) {
|
||||
this.tags.clear();
|
||||
ListTag listtag3 = p_20259_.getList("Tags", 8);
|
||||
@@ -1983,6 +_,8 @@
|
||||
@@ -2006,6 +_,8 @@
|
||||
} else {
|
||||
ItemEntity itementity = new ItemEntity(p_364149_, this.getX(), this.getY() + (double)p_367722_, this.getZ(), p_366908_);
|
||||
itementity.setDefaultPickUpDelay();
|
||||
|
|
@ -245,7 +256,7 @@
|
|||
p_364149_.addFreshEntity(itementity);
|
||||
return itementity;
|
||||
}
|
||||
@@ -2050,6 +_,7 @@
|
||||
@@ -2078,6 +_,7 @@
|
||||
|
||||
public void rideTick() {
|
||||
this.setDeltaMovement(Vec3.ZERO);
|
||||
|
|
@ -253,7 +264,7 @@
|
|||
this.tick();
|
||||
if (this.isPassenger()) {
|
||||
this.getVehicle().positionRider(this);
|
||||
@@ -2110,6 +_,7 @@
|
||||
@@ -2138,6 +_,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -261,7 +272,7 @@
|
|||
if (p_19967_ || this.canRide(p_19966_) && p_19966_.canAddPassenger(this)) {
|
||||
if (this.isPassenger()) {
|
||||
this.stopRiding();
|
||||
@@ -2141,6 +_,7 @@
|
||||
@@ -2169,6 +_,7 @@
|
||||
public void removeVehicle() {
|
||||
if (this.vehicle != null) {
|
||||
Entity entity = this.vehicle;
|
||||
|
|
@ -269,7 +280,7 @@
|
|||
this.vehicle = null;
|
||||
entity.removePassenger(this);
|
||||
}
|
||||
@@ -2190,6 +_,8 @@
|
||||
@@ -2218,6 +_,8 @@
|
||||
return this.passengers.isEmpty();
|
||||
}
|
||||
|
||||
|
|
@ -278,16 +289,16 @@
|
|||
protected boolean couldAcceptPassenger() {
|
||||
return true;
|
||||
}
|
||||
@@ -2378,7 +_,7 @@
|
||||
@@ -2406,7 +_,7 @@
|
||||
}
|
||||
|
||||
public boolean isVisuallyCrawling() {
|
||||
- return this.isVisuallySwimming() && !this.isInWater();
|
||||
+ return this.isVisuallySwimming() && !this.isInWater() && !this.isInFluidType((fluidType, height) -> this.canSwimInFluidType(fluidType));
|
||||
+ return this.isVisuallySwimming() && !this.isInWaterOrSwimmable();
|
||||
}
|
||||
|
||||
public void setSwimming(boolean p_20283_) {
|
||||
@@ -2491,7 +_,7 @@
|
||||
@@ -2519,7 +_,7 @@
|
||||
this.igniteForSeconds(8.0F);
|
||||
}
|
||||
|
||||
|
|
@ -296,7 +307,7 @@
|
|||
}
|
||||
|
||||
public void onAboveBubbleCol(boolean p_20313_) {
|
||||
@@ -2586,7 +_,7 @@
|
||||
@@ -2614,7 +_,7 @@
|
||||
}
|
||||
|
||||
protected Component getTypeName() {
|
||||
|
|
@ -305,7 +316,7 @@
|
|||
}
|
||||
|
||||
public boolean is(Entity p_20356_) {
|
||||
@@ -2879,6 +_,7 @@
|
||||
@@ -2907,6 +_,7 @@
|
||||
return this.stringUUID;
|
||||
}
|
||||
|
||||
|
|
@ -313,7 +324,7 @@
|
|||
public boolean isPushedByFluid() {
|
||||
return true;
|
||||
}
|
||||
@@ -3283,9 +_,17 @@
|
||||
@@ -3307,9 +_,17 @@
|
||||
return Mth.lerp(p_344421_, this.yRotO, this.yRot);
|
||||
}
|
||||
|
||||
|
|
@ -332,7 +343,7 @@
|
|||
} else {
|
||||
AABB aabb = this.getBoundingBox().deflate(0.001);
|
||||
int i = Mth.floor(aabb.minX);
|
||||
@@ -3300,25 +_,28 @@
|
||||
@@ -3324,25 +_,28 @@
|
||||
Vec3 vec3 = Vec3.ZERO;
|
||||
int k1 = 0;
|
||||
BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos();
|
||||
|
|
@ -368,7 +379,7 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
@@ -3326,27 +_,28 @@
|
||||
@@ -3350,27 +_,28 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -407,7 +418,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -3359,7 +_,10 @@
|
||||
@@ -3383,7 +_,10 @@
|
||||
return !this.level().hasChunksAt(i, k, j, l);
|
||||
}
|
||||
|
||||
|
|
@ -418,7 +429,7 @@
|
|||
return this.fluidHeight.getDouble(p_204037_);
|
||||
}
|
||||
|
||||
@@ -3375,7 +_,9 @@
|
||||
@@ -3399,7 +_,9 @@
|
||||
return this.dimensions.height();
|
||||
}
|
||||
|
||||
|
|
@ -428,7 +439,7 @@
|
|||
return new ClientboundAddEntityPacket(this, p_344981_);
|
||||
}
|
||||
|
||||
@@ -3496,6 +_,11 @@
|
||||
@@ -3520,6 +_,11 @@
|
||||
|
||||
this.levelCallback.onMove();
|
||||
}
|
||||
|
|
@ -440,7 +451,7 @@
|
|||
}
|
||||
|
||||
public void checkDespawn() {
|
||||
@@ -3648,6 +_,100 @@
|
||||
@@ -3672,6 +_,100 @@
|
||||
float f1 = (float)Mth.lerp(d0, (double)this.getXRot(), p_298926_);
|
||||
this.setPos(d1, d2, d3);
|
||||
this.setRot(f, f1);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/world/entity/EntityType.java
|
||||
+++ b/net/minecraft/world/entity/EntityType.java
|
||||
@@ -893,6 +_,11 @@
|
||||
@@ -867,6 +_,11 @@
|
||||
private final float spawnDimensionsScale;
|
||||
private final FeatureFlagSet requiredFeatures;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
private static <T extends Entity> EntityType<T> register(ResourceKey<EntityType<?>> p_368406_, EntityType.Builder<T> p_363129_) {
|
||||
return Registry.register(BuiltInRegistries.ENTITY_TYPE, p_368406_, p_363129_.build(p_368406_));
|
||||
}
|
||||
@@ -927,7 +_,8 @@
|
||||
@@ -901,7 +_,8 @@
|
||||
int p_273451_,
|
||||
String p_367006_,
|
||||
Optional<ResourceKey<LootTable>> p_364691_,
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
) {
|
||||
this.factory = p_273268_;
|
||||
this.category = p_272918_;
|
||||
@@ -943,6 +_,10 @@
|
||||
@@ -917,6 +_,10 @@
|
||||
this.descriptionId = p_367006_;
|
||||
this.lootTable = p_364691_;
|
||||
this.requiredFeatures = p_273518_;
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
}
|
||||
|
||||
@Nullable
|
||||
@@ -1214,14 +_,26 @@
|
||||
@@ -1193,14 +_,26 @@
|
||||
}
|
||||
|
||||
public int clientTrackingRange() {
|
||||
|
|
@ -60,8 +60,8 @@
|
|||
return this != PLAYER
|
||||
&& this != LLAMA_SPIT
|
||||
&& this != WITHER
|
||||
@@ -1273,6 +_,12 @@
|
||||
return (p_358865_, p_358866_) -> new ChestRaft(p_358865_, p_358866_, p_368732_);
|
||||
@@ -1256,6 +_,12 @@
|
||||
return OP_ONLY_CUSTOM_DATA.contains(this);
|
||||
}
|
||||
|
||||
+ public T customClientSpawn(net.minecraftforge.network.packets.SpawnEntity packet, Level world) {
|
||||
|
|
@ -73,7 +73,7 @@
|
|||
public static class Builder<T extends Entity> {
|
||||
private final EntityType.EntityFactory<T> factory;
|
||||
private final MobCategory category;
|
||||
@@ -1291,6 +_,10 @@
|
||||
@@ -1274,6 +_,10 @@
|
||||
ResourceKey.create(Registries.LOOT_TABLE, p_358877_.location().withPrefix("entities/"))
|
||||
);
|
||||
private DependantName<EntityType<?>, String> descriptionId = p_358878_ -> Util.makeDescriptionId("entity", p_358878_.location());
|
||||
|
|
@ -84,7 +84,7 @@
|
|||
|
||||
private Builder(EntityType.EntityFactory<T> p_20696_, MobCategory p_20697_) {
|
||||
this.factory = p_20696_;
|
||||
@@ -1404,6 +_,30 @@
|
||||
@@ -1387,6 +_,30 @@
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
@ -115,7 +115,7 @@
|
|||
public EntityType<T> build(ResourceKey<EntityType<?>> p_369693_) {
|
||||
if (this.serialize) {
|
||||
Util.fetchChoiceType(References.ENTITY_TREE, p_369693_.location().toString());
|
||||
@@ -1423,7 +_,8 @@
|
||||
@@ -1406,7 +_,8 @@
|
||||
this.updateInterval,
|
||||
this.descriptionId.get(p_369693_),
|
||||
this.lootTable.get(p_369693_),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/world/entity/ExperienceOrb.java
|
||||
+++ b/net/minecraft/world/entity/ExperienceOrb.java
|
||||
@@ -111,7 +_,8 @@
|
||||
@@ -112,7 +_,8 @@
|
||||
this.applyEffectsFromBlocks();
|
||||
float f = 0.98F;
|
||||
if (this.onGround()) {
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
}
|
||||
|
||||
this.setDeltaMovement(this.getDeltaMovement().multiply((double)f, 0.98, (double)f));
|
||||
@@ -230,6 +_,7 @@
|
||||
@@ -231,6 +_,7 @@
|
||||
public void playerTouch(Player p_20792_) {
|
||||
if (p_20792_ instanceof ServerPlayer serverplayer) {
|
||||
if (p_20792_.takeXpDelay == 0) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -137,7 +_,7 @@
|
||||
@@ -136,7 +_,7 @@
|
||||
import net.minecraft.world.scores.Scoreboard;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
private static final Logger LOGGER = LogUtils.getLogger();
|
||||
private static final String TAG_ACTIVE_EFFECTS = "active_effects";
|
||||
private static final ResourceLocation SPEED_MODIFIER_POWDER_SNOW_ID = ResourceLocation.withDefaultNamespace("powder_snow");
|
||||
@@ -173,6 +_,8 @@
|
||||
@@ -172,6 +_,8 @@
|
||||
public static final float EXTRA_RENDER_CULLING_SIZE_WITH_BIG_HAT = 0.5F;
|
||||
public static final float DEFAULT_BABY_SCALE = 0.5F;
|
||||
public static final String ATTRIBUTES_FIELD = "attributes";
|
||||
|
|
@ -18,7 +18,7 @@
|
|||
public static final Predicate<LivingEntity> PLAYER_NOT_WEARING_DISGUISE_ITEM = p_358894_ -> {
|
||||
if (p_358894_ instanceof Player player) {
|
||||
ItemStack itemstack = player.getItemBySlot(EquipmentSlot.HEAD);
|
||||
@@ -272,7 +_,8 @@
|
||||
@@ -270,7 +_,8 @@
|
||||
this.setYRot((float)(Math.random() * (float) (Math.PI * 2)));
|
||||
this.yHeadRot = this.getYRot();
|
||||
NbtOps nbtops = NbtOps.INSTANCE;
|
||||
|
|
@ -28,7 +28,7 @@
|
|||
}
|
||||
|
||||
public Brain<?> getBrain() {
|
||||
@@ -326,7 +_,8 @@
|
||||
@@ -324,7 +_,8 @@
|
||||
.add(Attributes.EXPLOSION_KNOCKBACK_RESISTANCE)
|
||||
.add(Attributes.WATER_MOVEMENT_EFFICIENCY)
|
||||
.add(Attributes.MOVEMENT_EFFICIENCY)
|
||||
|
|
@ -38,7 +38,7 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -354,7 +_,8 @@
|
||||
@@ -352,7 +_,8 @@
|
||||
float f = (float)Mth.ceil((double)this.fallDistance - d7);
|
||||
double d4 = Math.min((double)(0.2F + f / 15.0F), 2.5);
|
||||
int i = (int)(150.0 * d4);
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -364,6 +_,7 @@
|
||||
@@ -362,6 +_,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
public final boolean canBreatheUnderwater() {
|
||||
return this.getType().is(EntityTypeTags.CAN_BREATHE_UNDER_WATER);
|
||||
}
|
||||
@@ -410,6 +_,10 @@
|
||||
@@ -408,6 +_,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -185,16 +185,7 @@
|
|||
}
|
||||
|
||||
if (p_361865_.is(DamageTypeTags.IS_FREEZING) && this.getType().is(EntityTypeTags.FREEZE_HURTS_EXTRA_TYPES)) {
|
||||
@@ -1166,7 +_,7 @@
|
||||
if (entity instanceof Player player1) {
|
||||
this.lastHurtByPlayerTime = 100;
|
||||
this.lastHurtByPlayer = player1;
|
||||
- } else if (entity instanceof Wolf wolf && wolf.isTame()) {
|
||||
+ } else if (entity instanceof net.minecraft.world.entity.TamableAnimal wolf && wolf.isTame()) {
|
||||
this.lastHurtByPlayerTime = 100;
|
||||
if (wolf.getOwner() instanceof Player player) {
|
||||
this.lastHurtByPlayer = player;
|
||||
@@ -1231,7 +_,7 @@
|
||||
@@ -1212,7 +_,7 @@
|
||||
if (this instanceof ServerPlayer serverplayer) {
|
||||
CriteriaTriggers.ENTITY_HURT_PLAYER.trigger(serverplayer, p_361865_, f, p_365677_, flag);
|
||||
if (f1 > 0.0F && f1 < 3.4028235E37F) {
|
||||
|
|
@ -203,7 +194,16 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -1261,7 +_,7 @@
|
||||
@@ -1240,7 +_,7 @@
|
||||
this.lastHurtByPlayer = player;
|
||||
return player;
|
||||
} else {
|
||||
- if (entity instanceof Wolf wolf && wolf.isTame()) {
|
||||
+ if (entity instanceof net.minecraft.world.entity.TamableAnimal wolf && wolf.isTame()) {
|
||||
this.lastHurtByPlayerTime = 100;
|
||||
if (wolf.getOwner() instanceof Player player1) {
|
||||
this.lastHurtByPlayer = player1;
|
||||
@@ -1273,7 +_,7 @@
|
||||
for (InteractionHand interactionhand : InteractionHand.values()) {
|
||||
ItemStack itemstack1 = this.getItemInHand(interactionhand);
|
||||
deathprotection = itemstack1.get(DataComponents.DEATH_PROTECTION);
|
||||
|
|
@ -212,7 +212,7 @@
|
|||
itemstack = itemstack1.copy();
|
||||
itemstack1.shrink(1);
|
||||
break;
|
||||
@@ -1345,6 +_,7 @@
|
||||
@@ -1357,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void die(DamageSource p_21014_) {
|
||||
|
|
@ -220,7 +220,7 @@
|
|||
if (!this.isRemoved() && !this.dead) {
|
||||
Entity entity = p_21014_.getEntity();
|
||||
LivingEntity livingentity = this.getKillCredit();
|
||||
@@ -1380,10 +_,10 @@
|
||||
@@ -1392,10 +_,10 @@
|
||||
if (this.level() instanceof ServerLevel serverlevel) {
|
||||
boolean flag = false;
|
||||
if (p_21269_ instanceof WitherBoss) {
|
||||
|
|
@ -233,7 +233,7 @@
|
|||
this.level().setBlock(blockpos, blockstate, 3);
|
||||
flag = true;
|
||||
}
|
||||
@@ -1398,6 +_,7 @@
|
||||
@@ -1410,6 +_,7 @@
|
||||
}
|
||||
|
||||
protected void dropAllDeathLoot(ServerLevel p_342160_, DamageSource p_21192_) {
|
||||
|
|
@ -241,7 +241,7 @@
|
|||
boolean flag = this.lastHurtByPlayerTime > 0;
|
||||
if (this.shouldDropLoot() && p_342160_.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
|
||||
this.dropFromLootTable(p_342160_, p_21192_, flag);
|
||||
@@ -1406,6 +_,11 @@
|
||||
@@ -1418,6 +_,11 @@
|
||||
|
||||
this.dropEquipment(p_342160_);
|
||||
this.dropExperience(p_342160_, p_21192_.getEntity());
|
||||
|
|
@ -253,7 +253,7 @@
|
|||
}
|
||||
|
||||
protected void dropEquipment(ServerLevel p_365823_) {
|
||||
@@ -1413,7 +_,8 @@
|
||||
@@ -1425,7 +_,8 @@
|
||||
|
||||
protected void dropExperience(ServerLevel p_370040_, @Nullable Entity p_342525_) {
|
||||
if (!this.wasExperienceConsumed() && (this.isAlwaysExperienceDropper() || this.lastHurtByPlayerTime > 0 && this.shouldDropExperience() && p_370040_.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT))) {
|
||||
|
|
@ -263,7 +263,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
@@ -1489,6 +_,11 @@
|
||||
@@ -1501,6 +_,11 @@
|
||||
}
|
||||
|
||||
public void knockback(double p_147241_, double p_147242_, double p_147243_) {
|
||||
|
|
@ -275,7 +275,7 @@
|
|||
p_147241_ *= 1.0 - this.getAttributeValue(Attributes.KNOCKBACK_RESISTANCE);
|
||||
if (!(p_147241_ <= 0.0)) {
|
||||
this.hasImpulse = true;
|
||||
@@ -1566,6 +_,13 @@
|
||||
@@ -1582,6 +_,13 @@
|
||||
} else {
|
||||
BlockPos blockpos = this.blockPosition();
|
||||
BlockState blockstate = this.getInBlockState();
|
||||
|
|
@ -289,7 +289,7 @@
|
|||
if (blockstate.is(BlockTags.CLIMBABLE)) {
|
||||
this.lastClimbablePos = Optional.of(blockpos);
|
||||
return true;
|
||||
@@ -1627,6 +_,10 @@
|
||||
@@ -1636,6 +_,10 @@
|
||||
|
||||
@Override
|
||||
public boolean causeFallDamage(float p_147187_, float p_147188_, DamageSource p_147189_) {
|
||||
|
|
@ -300,7 +300,7 @@
|
|||
boolean flag = super.causeFallDamage(p_147187_, p_147188_, p_147189_);
|
||||
int i = this.calculateFallDamage(p_147187_, p_147188_);
|
||||
if (i > 0) {
|
||||
@@ -1654,9 +_,10 @@
|
||||
@@ -1663,9 +_,10 @@
|
||||
int i = Mth.floor(this.getX());
|
||||
int j = Mth.floor(this.getY() - 0.2F);
|
||||
int k = Mth.floor(this.getZ());
|
||||
|
|
@ -313,7 +313,7 @@
|
|||
this.playSound(soundtype.getFallSound(), soundtype.getVolume() * 0.5F, soundtype.getPitch() * 0.75F);
|
||||
}
|
||||
}
|
||||
@@ -1717,9 +_,9 @@
|
||||
@@ -1726,9 +_,9 @@
|
||||
float f2 = f1 - p_21194_;
|
||||
if (f2 > 0.0F && f2 < 3.4028235E37F) {
|
||||
if (this instanceof ServerPlayer) {
|
||||
|
|
@ -325,7 +325,7 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
@@ -1747,6 +_,8 @@
|
||||
@@ -1756,6 +_,8 @@
|
||||
|
||||
protected void actuallyHurt(ServerLevel p_365124_, DamageSource p_21240_, float p_21241_) {
|
||||
if (!this.isInvulnerableTo(p_365124_, p_21240_)) {
|
||||
|
|
@ -334,7 +334,7 @@
|
|||
p_21241_ = this.getDamageAfterArmorAbsorb(p_21240_, p_21241_);
|
||||
p_21241_ = this.getDamageAfterMagicAbsorb(p_21240_, p_21241_);
|
||||
float f1 = Math.max(p_21241_ - this.getAbsorptionAmount(), 0.0F);
|
||||
@@ -1756,6 +_,7 @@
|
||||
@@ -1765,6 +_,7 @@
|
||||
serverplayer.awardStat(Stats.DAMAGE_DEALT_ABSORBED, Math.round(f * 10.0F));
|
||||
}
|
||||
|
||||
|
|
@ -342,7 +342,7 @@
|
|||
if (f1 != 0.0F) {
|
||||
this.getCombatTracker().recordDamage(p_21240_, f1);
|
||||
this.setHealth(this.getHealth() - f1);
|
||||
@@ -1815,6 +_,8 @@
|
||||
@@ -1824,6 +_,8 @@
|
||||
}
|
||||
|
||||
public void swing(InteractionHand p_21012_, boolean p_21013_) {
|
||||
|
|
@ -351,7 +351,7 @@
|
|||
if (!this.swinging || this.swingTime >= this.getCurrentSwingDuration() / 2 || this.swingTime < 0) {
|
||||
this.swingTime = -1;
|
||||
this.swinging = true;
|
||||
@@ -1927,9 +_,10 @@
|
||||
@@ -1936,9 +_,10 @@
|
||||
}
|
||||
|
||||
private void swapHandItems() {
|
||||
|
|
@ -365,7 +365,7 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -2147,15 +_,18 @@
|
||||
@@ -2156,15 +_,18 @@
|
||||
}
|
||||
|
||||
this.hasImpulse = true;
|
||||
|
|
@ -386,7 +386,7 @@
|
|||
}
|
||||
|
||||
protected float getWaterSlowDown() {
|
||||
@@ -2179,8 +_,8 @@
|
||||
@@ -2188,8 +_,8 @@
|
||||
public void travel(Vec3 p_21280_) {
|
||||
if (this.isControlledByLocalInstance()) {
|
||||
FluidState fluidstate = this.level().getFluidState(this.blockPosition());
|
||||
|
|
@ -397,7 +397,7 @@
|
|||
} else if (this.isFallFlying()) {
|
||||
this.travelFallFlying();
|
||||
} else {
|
||||
@@ -2191,7 +_,7 @@
|
||||
@@ -2200,7 +_,7 @@
|
||||
|
||||
private void travelInAir(Vec3 p_362087_) {
|
||||
BlockPos blockpos = this.getBlockPosBelowThatAffectsMyMovement();
|
||||
|
|
@ -406,7 +406,7 @@
|
|||
float f1 = f * 0.91F;
|
||||
Vec3 vec3 = this.handleRelativeFrictionAndCalculateMovement(p_362087_, f);
|
||||
double d0 = vec3.y;
|
||||
@@ -2214,10 +_,18 @@
|
||||
@@ -2223,10 +_,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -426,7 +426,7 @@
|
|||
if (this.isInWater()) {
|
||||
float f = this.isSprinting() ? 0.9F : this.getWaterSlowDown();
|
||||
float f1 = 0.02F;
|
||||
@@ -2235,6 +_,7 @@
|
||||
@@ -2244,6 +_,7 @@
|
||||
f = 0.96F;
|
||||
}
|
||||
|
||||
|
|
@ -434,7 +434,7 @@
|
|||
this.moveRelative(f1, p_362114_);
|
||||
this.move(MoverType.SELF, this.getDeltaMovement());
|
||||
Vec3 vec3 = this.getDeltaMovement();
|
||||
@@ -2383,7 +_,7 @@
|
||||
@@ -2392,7 +_,7 @@
|
||||
double d0 = Mth.clamp(p_21298_.x, -0.15F, 0.15F);
|
||||
double d1 = Mth.clamp(p_21298_.z, -0.15F, 0.15F);
|
||||
double d2 = Math.max(p_21298_.y, -0.15F);
|
||||
|
|
@ -443,7 +443,7 @@
|
|||
d2 = 0.0;
|
||||
}
|
||||
|
||||
@@ -2416,6 +_,7 @@
|
||||
@@ -2425,6 +_,7 @@
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
|
|
@ -451,7 +451,7 @@
|
|||
super.tick();
|
||||
this.updatingUsingItem();
|
||||
this.updateSwimAmount();
|
||||
@@ -2568,6 +_,7 @@
|
||||
@@ -2577,6 +_,7 @@
|
||||
};
|
||||
ItemStack itemstack1 = this.getItemBySlot(equipmentslot);
|
||||
if (this.equipmentHasChanged(itemstack, itemstack1)) {
|
||||
|
|
@ -459,7 +459,7 @@
|
|||
if (map == null) {
|
||||
map = Maps.newEnumMap(EquipmentSlot.class);
|
||||
}
|
||||
@@ -2727,6 +_,10 @@
|
||||
@@ -2736,6 +_,10 @@
|
||||
profilerfiller.push("jump");
|
||||
if (this.jumping && this.isAffectedByFluids()) {
|
||||
double d3;
|
||||
|
|
@ -470,7 +470,7 @@
|
|||
if (this.isInLava()) {
|
||||
d3 = this.getFluidHeight(FluidTags.LAVA);
|
||||
} else {
|
||||
@@ -2737,15 +_,22 @@
|
||||
@@ -2746,15 +_,22 @@
|
||||
double d4 = this.getFluidJumpThreshold();
|
||||
if (!flag || this.onGround() && !(d3 > d4)) {
|
||||
if (!this.isInLava() || this.onGround() && !(d3 > d4)) {
|
||||
|
|
@ -495,7 +495,7 @@
|
|||
}
|
||||
} else {
|
||||
this.noJumpDelay = 0;
|
||||
@@ -3095,8 +_,11 @@
|
||||
@@ -3104,8 +_,11 @@
|
||||
|
||||
private void updatingUsingItem() {
|
||||
if (this.isUsingItem()) {
|
||||
|
|
@ -508,7 +508,7 @@
|
|||
this.updateUsingItem(this.useItem);
|
||||
} else {
|
||||
this.stopUsingItem();
|
||||
@@ -3105,8 +_,12 @@
|
||||
@@ -3114,8 +_,12 @@
|
||||
}
|
||||
|
||||
protected void updateUsingItem(ItemStack p_147201_) {
|
||||
|
|
@ -522,7 +522,7 @@
|
|||
this.completeUsingItem();
|
||||
}
|
||||
}
|
||||
@@ -3134,8 +_,10 @@
|
||||
@@ -3143,8 +_,10 @@
|
||||
public void startUsingItem(InteractionHand p_21159_) {
|
||||
ItemStack itemstack = this.getItemInHand(p_21159_);
|
||||
if (!itemstack.isEmpty() && !this.isUsingItem()) {
|
||||
|
|
@ -534,7 +534,7 @@
|
|||
if (!this.level().isClientSide) {
|
||||
this.setLivingEntityFlag(1, true);
|
||||
this.setLivingEntityFlag(2, p_21159_ == InteractionHand.OFF_HAND);
|
||||
@@ -3187,6 +_,9 @@
|
||||
@@ -3196,6 +_,9 @@
|
||||
vec31 = vec31.xRot(-this.getXRot() * (float) (Math.PI / 180.0));
|
||||
vec31 = vec31.yRot(-this.getYRot() * (float) (Math.PI / 180.0));
|
||||
vec31 = vec31.add(this.getX(), this.getEyeY(), this.getZ());
|
||||
|
|
@ -544,7 +544,7 @@
|
|||
this.level()
|
||||
.addParticle(
|
||||
new ItemParticleOption(ParticleTypes.ITEM, p_21061_),
|
||||
@@ -3207,7 +_,9 @@
|
||||
@@ -3216,7 +_,9 @@
|
||||
this.releaseUsingItem();
|
||||
} else {
|
||||
if (!this.useItem.isEmpty() && this.isUsingItem()) {
|
||||
|
|
@ -554,7 +554,7 @@
|
|||
if (itemstack != this.useItem) {
|
||||
this.setItemInHand(interactionhand, itemstack);
|
||||
}
|
||||
@@ -3235,7 +_,13 @@
|
||||
@@ -3244,7 +_,13 @@
|
||||
|
||||
public void releaseUsingItem() {
|
||||
if (!this.useItem.isEmpty()) {
|
||||
|
|
@ -568,7 +568,7 @@
|
|||
if (this.useItem.useOnRelease()) {
|
||||
this.updatingUsingItem();
|
||||
}
|
||||
@@ -3245,6 +_,7 @@
|
||||
@@ -3254,6 +_,7 @@
|
||||
}
|
||||
|
||||
public void stopUsingItem() {
|
||||
|
|
@ -576,7 +576,7 @@
|
|||
if (!this.level().isClientSide) {
|
||||
boolean flag = this.isUsingItem();
|
||||
this.setLivingEntityFlag(1, false);
|
||||
@@ -3265,7 +_,8 @@
|
||||
@@ -3274,7 +_,8 @@
|
||||
public ItemStack getItemBlockingWith() {
|
||||
if (this.isUsingItem() && !this.useItem.isEmpty()) {
|
||||
Item item = this.useItem.getItem();
|
||||
|
|
@ -586,7 +586,7 @@
|
|||
return null;
|
||||
} else {
|
||||
return item.getUseDuration(this.useItem, this) - this.useItemRemaining < 5 ? null : this.useItem;
|
||||
@@ -3410,8 +_,8 @@
|
||||
@@ -3419,8 +_,8 @@
|
||||
}
|
||||
|
||||
BlockState blockstate = this.level().getBlockState(p_21141_);
|
||||
|
|
@ -597,11 +597,11 @@
|
|||
}
|
||||
|
||||
this.setPose(Pose.SLEEPING);
|
||||
@@ -3426,15 +_,15 @@
|
||||
@@ -3435,15 +_,15 @@
|
||||
}
|
||||
|
||||
private boolean checkBedExists() {
|
||||
- return this.getSleepingPos().map(p_358885_ -> this.level().getBlockState(p_358885_).getBlock() instanceof BedBlock).orElse(false);
|
||||
- return this.getSleepingPos().map(p_374931_ -> this.level().getBlockState(p_374931_).getBlock() instanceof BedBlock).orElse(false);
|
||||
+ return this.getSleepingPos().map(p_341272_ -> net.minecraftforge.event.ForgeEventFactory.fireSleepingLocationCheck(this, p_341272_)).orElse(false);
|
||||
}
|
||||
|
||||
|
|
@ -616,7 +616,7 @@
|
|||
Vec3 vec31 = BedBlock.findStandUpPosition(this.getType(), this.level(), p_261435_, direction, this.getYRot()).orElseGet(() -> {
|
||||
BlockPos blockpos = p_261435_.above();
|
||||
return new Vec3((double)blockpos.getX() + 0.5, (double)blockpos.getY() + 0.1, (double)blockpos.getZ() + 0.5);
|
||||
@@ -3455,7 +_,9 @@
|
||||
@@ -3464,7 +_,9 @@
|
||||
@Nullable
|
||||
public Direction getBedOrientation() {
|
||||
BlockPos blockpos = this.getSleepingPos().orElse(null);
|
||||
|
|
@ -627,7 +627,7 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -3464,7 +_,7 @@
|
||||
@@ -3473,7 +_,7 @@
|
||||
}
|
||||
|
||||
public ItemStack getProjectile(ItemStack p_21272_) {
|
||||
|
|
@ -636,7 +636,7 @@
|
|||
}
|
||||
|
||||
private static byte entityEventForEquipmentBreak(EquipmentSlot p_21267_) {
|
||||
@@ -3519,6 +_,8 @@
|
||||
@@ -3528,6 +_,8 @@
|
||||
}
|
||||
|
||||
public final EquipmentSlot getEquipmentSlotForItem(ItemStack p_147234_) {
|
||||
|
|
@ -645,7 +645,7 @@
|
|||
Equippable equippable = p_147234_.get(DataComponents.EQUIPPABLE);
|
||||
return equippable != null && this.canUseSlot(equippable.slot()) ? equippable.slot() : EquipmentSlot.MAINHAND;
|
||||
}
|
||||
@@ -3650,5 +_,42 @@
|
||||
@@ -3659,5 +_,42 @@
|
||||
}
|
||||
|
||||
public static record Fallsounds(SoundEvent small, SoundEvent big) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/world/entity/Mob.java
|
||||
+++ b/net/minecraft/world/entity/Mob.java
|
||||
@@ -133,6 +_,9 @@
|
||||
@@ -129,6 +_,9 @@
|
||||
private Leashable.LeashData leashData;
|
||||
private BlockPos restrictCenter = BlockPos.ZERO;
|
||||
private float restrictRadius = -1.0F;
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
protected Mob(EntityType<? extends Mob> p_21368_, Level p_21369_) {
|
||||
super(p_21368_, p_21369_);
|
||||
@@ -239,7 +_,10 @@
|
||||
@@ -235,7 +_,10 @@
|
||||
}
|
||||
|
||||
public void setTarget(@Nullable LivingEntity p_21544_) {
|
||||
|
|
@ -22,7 +22,7 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -421,6 +_,10 @@
|
||||
@@ -418,6 +_,10 @@
|
||||
if (this.isNoAi()) {
|
||||
p_21484_.putBoolean("NoAI", this.isNoAi());
|
||||
}
|
||||
|
|
@ -33,9 +33,9 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -480,6 +_,14 @@
|
||||
}
|
||||
@@ -484,6 +_,14 @@
|
||||
|
||||
this.lootTableSeed = p_21450_.getLong("DeathLootTableSeed");
|
||||
this.setNoAi(p_21450_.getBoolean("NoAI"));
|
||||
+
|
||||
+ if (p_21450_.contains("forge:spawn_type")) {
|
||||
|
|
@ -48,7 +48,7 @@
|
|||
}
|
||||
|
||||
@Override
|
||||
@@ -532,7 +_,7 @@
|
||||
@@ -536,7 +_,7 @@
|
||||
&& this.canPickUpLoot()
|
||||
&& this.isAlive()
|
||||
&& !this.dead
|
||||
|
|
@ -57,7 +57,7 @@
|
|||
Vec3i vec3i = this.getPickupReach();
|
||||
|
||||
for (ItemEntity itementity : this.level()
|
||||
@@ -700,6 +_,14 @@
|
||||
@@ -702,6 +_,14 @@
|
||||
this.discard();
|
||||
} else if (!this.isPersistenceRequired() && !this.requiresCustomPersistence()) {
|
||||
Entity entity = this.level().getNearestPlayer(this, -1.0);
|
||||
|
|
@ -72,7 +72,7 @@
|
|||
if (entity != null) {
|
||||
double d0 = entity.distanceToSqr(this);
|
||||
int i = this.getType().getCategory().getDespawnDistance();
|
||||
@@ -1116,6 +_,16 @@
|
||||
@@ -1118,6 +_,16 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -89,7 +89,7 @@
|
|||
@Nullable
|
||||
public SpawnGroupData finalizeSpawn(ServerLevelAccessor p_21434_, DifficultyInstance p_21435_, EntitySpawnReason p_369316_, @Nullable SpawnGroupData p_21437_) {
|
||||
RandomSource randomsource = p_21434_.getRandom();
|
||||
@@ -1127,6 +_,7 @@
|
||||
@@ -1129,6 +_,7 @@
|
||||
}
|
||||
|
||||
this.setLeftHanded(randomsource.nextFloat() < 0.05F);
|
||||
|
|
@ -97,7 +97,7 @@
|
|||
return p_21437_;
|
||||
}
|
||||
|
||||
@@ -1438,15 +_,25 @@
|
||||
@@ -1439,15 +_,25 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -124,7 +124,7 @@
|
|||
@VisibleForTesting
|
||||
public void removeFreeWill() {
|
||||
this.removeAllGoals(p_341273_ -> true);
|
||||
@@ -1472,6 +_,41 @@
|
||||
@@ -1473,6 +_,41 @@
|
||||
public ItemStack getPickResult() {
|
||||
SpawnEggItem spawneggitem = SpawnEggItem.byId(this.getType());
|
||||
return spawneggitem == null ? null : new ItemStack(spawneggitem);
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@
|
|||
}
|
||||
|
||||
static {
|
||||
@@ -164,5 +_,13 @@
|
||||
@@ -163,5 +_,13 @@
|
||||
@FunctionalInterface
|
||||
public interface SpawnPredicate<T extends Entity> {
|
||||
boolean test(EntityType<T> p_217081_, ServerLevelAccessor p_217082_, EntitySpawnReason p_365908_, BlockPos p_217084_, RandomSource p_217085_);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/world/entity/TamableAnimal.java
|
||||
+++ b/net/minecraft/world/entity/TamableAnimal.java
|
||||
@@ -219,13 +_,16 @@
|
||||
@@ -222,13 +_,16 @@
|
||||
|
||||
@Override
|
||||
public void die(DamageSource p_21809_) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
|
||||
+++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java
|
||||
@@ -177,11 +_,12 @@
|
||||
@@ -176,11 +_,12 @@
|
||||
.build();
|
||||
|
||||
public static AttributeSupplier getSupplier(EntityType<? extends LivingEntity> p_22298_) {
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue