Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
91 commits
Select commit Hold shift + click to select a range
dd4084b
Refactor arrow entity constructors to replace ItemStack.EMPTY with nu…
crabsatellite Jan 10, 2026
bff9836
Enhance movement input handling for Galena Gauntlet to prevent vanill…
crabsatellite Jan 11, 2026
15dcc30
Implement custom spawn placement types for acid and purple soda fluid…
crabsatellite Jan 11, 2026
ca32a80
Optimize magnetic force synchronization for players by marking them a…
crabsatellite Jan 11, 2026
b800402
Implement randomTick method for FissurePrimalMagmaBlock and PrimalMag…
crabsatellite Jan 11, 2026
9e4d6f7
Add onPlace method to schedule regeneration and boss state checks for…
crabsatellite Jan 11, 2026
4efc4d6
Remove persistence of trackedLuxtructosaurusIds in ACWorldData as ent…
crabsatellite Jan 11, 2026
82a2e75
Enhance stun effect duration for PrimitiveClubItem to stack with exis…
crabsatellite Jan 11, 2026
f46d297
Fix tree spread calculation in RelicheirusPushTreesGoal to use square…
crabsatellite Jan 11, 2026
5133386
Add dinosaur_nugget to vallumraptor stealable items list
crabsatellite Jan 11, 2026
bea7bb3
Add AncientSaplingBlock and compostables data for new sapling types
crabsatellite Jan 12, 2026
f5643a9
Refactor enchantment handling in ACEnchantmentHelper and PrimitiveClu…
crabsatellite Jan 12, 2026
77366f2
Refactor magnetism logic in MagnetUtil to improve jump detection and …
crabsatellite Jan 12, 2026
ea5b248
Refactor fall damage handling in NuclearBombEntity to improve explosi…
crabsatellite Jan 12, 2026
40c0d5c
Fix attachment point calculation in NuclearBombEntity to improve pass…
crabsatellite Jan 12, 2026
9240aa6
Add hatching logic for Tremorzilla eggs in NuclearExplosionEntity to …
crabsatellite Jan 12, 2026
a12fb11
Add copper block weathering mappings in AcidBlock to enhance block in…
crabsatellite Jan 12, 2026
32f01ef
Implement default item retrieval for various throwable entities to st…
crabsatellite Jan 12, 2026
7b52acb
Add can_breathe_under_water tag to define underwater entities
crabsatellite Jan 12, 2026
06858a3
Add dummyExplosion handling to explosion classes for improved block i…
crabsatellite Jan 12, 2026
97ce863
Fix waterlogging condition in BioluminescentTorch and BioluminescentW…
crabsatellite Jan 13, 2026
d9a4565
Add exclusive set references between second_wave and tsunami enchantm…
crabsatellite Jan 13, 2026
203ec51
Add exclusive set references between soak_seeking and triple_splash e…
crabsatellite Jan 13, 2026
82830c8
Add exclusive set references for various enchantments and create new …
crabsatellite Jan 13, 2026
4ed1124
Refactor magnetism logic in MagnetUtil for clarity and performance; r…
crabsatellite Jan 13, 2026
964c225
Implement manual sync for magnetic entity data using UpdateMagneticDa…
crabsatellite Jan 13, 2026
4ad2457
Add color write mask state to hologram render type for improved rende…
crabsatellite Jan 13, 2026
79ec17a
Add fog support and shader enhancements for various effects
crabsatellite Jan 13, 2026
6478c02
Refactor rendering methods to remove unnecessary matrix normal parame…
crabsatellite Jan 13, 2026
1319c75
Refactor shader programs and update rendering logic for improved perf…
crabsatellite Jan 14, 2026
639aa3a
Fix effect instance checks to use value() method for DarknessIncarnat…
crabsatellite Jan 14, 2026
b9ab00d
Implement Corrodent collision logic using mixins for improved behavio…
crabsatellite Jan 15, 2026
494612e
Update GumballRenderer to use entityCutoutNoCull for improved renderi…
crabsatellite Jan 15, 2026
eb4f107
Enhance BiomeTreatItem to include food properties and update finishUs…
crabsatellite Jan 15, 2026
609260c
Refactor finishUsingItem method in JellyBeanItem for improved player …
crabsatellite Jan 15, 2026
1fc238e
Enhance SodaBottleRocketEntity with improved attachment handling and …
crabsatellite Jan 15, 2026
f13e030
Enhance FrostmintExplosion to prevent freezing for players wearing fr…
crabsatellite Jan 15, 2026
b7db920
Refactor DeepsightEffect to improve duration tracking and effect appl…
crabsatellite Jan 15, 2026
b4097b0
Enhance ThrownIceCreamScoopEntity to selectively remove effects, pres…
crabsatellite Jan 15, 2026
6ecc571
Add jukebox song entries for Fusion and Tasty music discs
crabsatellite Jan 15, 2026
b95f3ca
Refactor ClientSackOfSatingTooltip to use specific food sprites for r…
crabsatellite Jan 15, 2026
6ab185a
Add firework particle effects to SodaBottleRocketEntity for enhanced …
crabsatellite Jan 15, 2026
a6239d8
Add rainbow render type to ACRenderTypes and update RainbowParticle t…
crabsatellite Jan 15, 2026
9efa754
Add WatcherAppearanceParticle and corresponding render type to ACRend…
crabsatellite Jan 15, 2026
37e7a23
Refactor StunStarParticle rendering to use RenderType for color setting
crabsatellite Jan 15, 2026
7795925
Refactor shader files to remove unused variables and fog parameters f…
crabsatellite Jan 16, 2026
dde41ae
Fix yRot interpolation to prevent continuous spinning in SubmarineEntity
crabsatellite Jan 16, 2026
b844097
Update armor rendering methods for compatibility with 1.21 changes
crabsatellite Jan 16, 2026
f906f58
Update rainbow render type to use TRANSLUCENT_TRANSPARENCY for improv…
crabsatellite Jan 16, 2026
6f78e14
Refactor CorrodentRenderer to use updated model data retrieval method…
crabsatellite Jan 16, 2026
05cf864
Update ConversionCrucibleBlockEntity and accesstransformer.cfg for Ne…
crabsatellite Jan 16, 2026
ffec6df
Refactor GumWormEntity and GumWormSegmentEntity to update lerpTo meth…
crabsatellite Jan 16, 2026
ac848f6
Implement custom collision support in EntityMixin and adjust maxUpSte…
crabsatellite Jan 16, 2026
7e5349c
Update GobthumperBlockEntity to set Gobthumper position for summoned …
crabsatellite Jan 16, 2026
41ffbfa
Refactor screen shake logic into CameraMixin to ensure proper executi…
crabsatellite Jan 16, 2026
291dc14
Refactor shader passes to use 'citadel' naming convention and remove …
crabsatellite Jan 17, 2026
6e5595b
Remove obsolete blur and bumpy shader files to streamline shader mana…
crabsatellite Jan 17, 2026
2349c92
Fix alpha handling in color calculation for rendertype shaders
crabsatellite Jan 17, 2026
bde2f5d
Update CaveBookScreen to use NeoForgeRenderTypes for rendering the bo…
crabsatellite Jan 17, 2026
61714d1
Remove unused imports from CaveBookScreen to clean up code
crabsatellite Jan 17, 2026
d80b34e
Refactor rendering logic in CraftingRecipeWidget and EntityBoxWidget …
crabsatellite Jan 17, 2026
ea70558
Update text color constants in CaveBookScreen for improved readability
crabsatellite Jan 17, 2026
af20f8b
Prevent client-side effect addition in UpdateEffectVisualityEntityMes…
crabsatellite Jan 17, 2026
e44ce13
Adjust first-person screen overlay effects to prevent camera rotation…
crabsatellite Jan 17, 2026
092ba3f
Implement custom attack goal for Subterranodon to enhance combat beha…
crabsatellite Jan 17, 2026
32576f3
Update exclusive sets for enchantments to improve categorization and …
crabsatellite Jan 17, 2026
b648ce7
Enhance Dreadbow rendering to only show pulled state when actively us…
crabsatellite Jan 17, 2026
0ca32ef
Add additional entities to the can_breathe_under_water tag for enhanc…
crabsatellite Jan 17, 2026
72c40d3
Implement client-side tracking for BUBBLED effect visuals; sync effec…
crabsatellite Jan 17, 2026
1cac97a
Update GUI overlay event handling to use HOTBAR layer instead of CROS…
crabsatellite Jan 17, 2026
5aeefa3
Add getResultItem method to RecipeCaveMap for returning CAVE_MAP item
crabsatellite Jan 17, 2026
09ac636
Enhance BeholderSyncMessage to include entity spawn data for remote c…
crabsatellite Jan 17, 2026
c9e1de7
Refactor BeholderSyncMessage to encapsulate fields and improve data h…
crabsatellite Jan 17, 2026
a8a5b61
Refactor GumWormEntity and GumWormSegmentEntity for improved logic an…
crabsatellite Jan 17, 2026
ee207d0
Add rendering conditions to SodaBottleRocketEntity to prevent renderi…
crabsatellite Jan 17, 2026
ecfd6c4
Fix write mask state in bubbled render types for correct rendering be…
crabsatellite Jan 17, 2026
051b965
Refactor bubbled effect handling to centralize logic in ClientProxy; …
crabsatellite Jan 17, 2026
fbf3d87
Refactor GumWorm and related entities to enhance collision handling a…
crabsatellite Jan 18, 2026
2fca297
Add forced dig-down period to GumWorm to prevent bounce-up behavior a…
crabsatellite Jan 18, 2026
f414a0d
Reset biome conversion state in ConversionCrucibleBlockEntity to prev…
crabsatellite Jan 18, 2026
06d60d6
Increase forward movement speed in GumWormRidingGoal to enhance ridin…
crabsatellite Jan 18, 2026
a4415fd
Add lightmap state to ACRenderTypes for improved rendering
crabsatellite Jan 18, 2026
2ffc9f8
Implement overrides for isShotAtAngle, onHitEntity, and onHitBlock me…
crabsatellite Jan 18, 2026
7961361
Update mod version and authors in gradle.properties for release 2.0.2
crabsatellite Jan 19, 2026
0a77d50
Add save data handling for ACBoatType in AlexsCavesChestBoatEntity
crabsatellite Jan 25, 2026
6b390ac
Enhance gravity handling in GumWormEntity to prevent floating after l…
crabsatellite Jan 29, 2026
b7c5976
Add ore protection and geode generation prevention in AlexsCaves stru…
crabsatellite Jan 29, 2026
e0c6c83
Add empty values array to mineshaft, stronghold, and trial_chambers J…
crabsatellite Jan 29, 2026
74f343f
Add vertical movement adjustment for GumWormEntity when airborne
crabsatellite Jan 29, 2026
b4bcdc7
Refine gravity application in GumWormRidingGoal to only affect airbor…
crabsatellite Jan 29, 2026
c5b81a9
Enhance GumWorm gravity handling to prevent underground movement and …
crabsatellite Jan 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ parchment_mappings_version=2024.07.28
mod_id=alexscaves
mod_name=Alex's Caves
mod_license=GNU LESSER GENERAL PUBLIC LICENSE
mod_version=1.0.0
mod_authors=Alex_The_Create
mod_version=2.0.2
mod_authors=Alexthe668, Noonyeyz
mod_description=Explore new rare cave biomes hidden under the surface of the Overworld...

# JEI (optional, for recipe viewing)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import com.github.alexmodguy.alexscaves.server.misc.*;
import com.github.alexmodguy.alexscaves.server.potion.ACEffectRegistry;
import com.github.alexmodguy.alexscaves.server.recipe.ACRecipeRegistry;
import com.github.alexmodguy.alexscaves.server.message.UpdateMagneticDataMessage;
import com.mojang.logging.LogUtils;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
Expand Down Expand Up @@ -167,6 +168,8 @@ private void registerPayloads(RegisterPayloadHandlersEvent event) {
registrar.playToClient(SundropRainbowMessage.TYPE, SundropRainbowMessage.CODEC, SundropRainbowMessage::handle);
registrar.playToClient(SpelunkeryTableCompleteTutorialMessage.TYPE,
SpelunkeryTableCompleteTutorialMessage.CODEC, SpelunkeryTableCompleteTutorialMessage::handle);
registrar.playToClient(UpdateMagneticDataMessage.TYPE, UpdateMagneticDataMessage.CODEC,
UpdateMagneticDataMessage::handle);
// Client-to-server messages
registrar.playToServer(MultipartEntityMessage.TYPE, MultipartEntityMessage.CODEC,
MultipartEntityMessage::handle);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import com.github.alexmodguy.alexscaves.server.block.blockentity.*;
import com.github.alexmodguy.alexscaves.server.block.fluid.ACFluidRegistry;
import com.github.alexmodguy.alexscaves.server.entity.ACEntityRegistry;
import com.github.alexmodguy.alexscaves.server.entity.item.BeholderEyeEntity;
import com.github.alexmodguy.alexscaves.server.entity.item.QuarrySmasherEntity;
import com.github.alexmodguy.alexscaves.server.entity.item.SubmarineEntity;
import com.github.alexmodguy.alexscaves.server.entity.living.*;
Expand Down Expand Up @@ -125,6 +126,8 @@ public class ClientProxy extends CommonProxy {
public static float possessionStrengthAmount = 0;
public static int renderNukeSkyDarkFor = 0;
public static float masterVolumeNukeModifier = 0.0F;
// Client-side tracking for bubbled effect visuals (entity ID -> remaining ticks)
private static final it.unimi.dsi.fastutil.ints.Int2IntMap BUBBLED_EFFECT_TICKS = new it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap();
public static final Int2ObjectMap<AbstractTickableSoundInstance> ENTITY_SOUND_INSTANCE_MAP = new Int2ObjectOpenHashMap<>();
public static final Map<BlockEntity, AbstractTickableSoundInstance> BLOCK_ENTITY_SOUND_INSTANCE_MAP = new HashMap<>();
private final ACItemRenderProperties isterProperties = new ACItemRenderProperties();
Expand All @@ -143,6 +146,23 @@ public class ClientProxy extends CommonProxy {
public static Vec3 acSkyOverrideColor = Vec3.ZERO;
public static boolean disabledBiomeAmbientLightByOtherMod = false;

/**
* Ticks down all bubbled effect timers. Called from ClientEvents.
*/
public static void tickBubbledEffects() {
if (BUBBLED_EFFECT_TICKS.isEmpty()) return;
var iterator = BUBBLED_EFFECT_TICKS.int2IntEntrySet().iterator();
while (iterator.hasNext()) {
var entry = iterator.next();
int newValue = entry.getIntValue() - 1;
if (newValue <= 0) {
iterator.remove();
} else {
entry.setValue(newValue);
}
}
}

@SuppressWarnings("removal")
@Override
public void commonInit(IEventBus modEventBus) {
Expand Down Expand Up @@ -535,12 +555,12 @@ private void registerShaders(final RegisterShadersEvent e) {
e.registerShader(
new ShaderInstance(e.getResourceProvider(),
ResourceLocation.fromNamespaceAndPath(AlexsCaves.MODID, "rendertype_irradiated"),
DefaultVertexFormat.POSITION_TEX_COLOR),
DefaultVertexFormat.NEW_ENTITY),
ACInternalShaders::setRenderTypeIrradiatedShader);
e.registerShader(
new ShaderInstance(e.getResourceProvider(),
ResourceLocation.fromNamespaceAndPath(AlexsCaves.MODID, "rendertype_blue_irradiated"),
DefaultVertexFormat.POSITION_TEX_COLOR),
DefaultVertexFormat.NEW_ENTITY),
ACInternalShaders::setRenderTypeBlueIrradiatedShader);
e.registerShader(new ShaderInstance(e.getResourceProvider(),
ResourceLocation.fromNamespaceAndPath(AlexsCaves.MODID, "rendertype_bubbled"),
Expand Down Expand Up @@ -687,6 +707,54 @@ public void resetRenderViewEntity(Player player) {
}
}

@Override
public boolean hasBubbledEffectVisual(int entityId) {
return BUBBLED_EFFECT_TICKS.getOrDefault(entityId, 0) > 0;
}

@Override
public void setBubbledEffectTicks(int entityId, int ticks) {
if (ticks <= 0) {
BUBBLED_EFFECT_TICKS.remove(entityId);
} else {
BUBBLED_EFFECT_TICKS.put(entityId, ticks);
}
}

@Override
public void handleBeholderSync(int beholderId, boolean active, double x, double y, double z, float yRot, float xRot, UUID usingPlayerUUID) {
Player playerSided = getClientSidePlayer();
if (playerSided != null && playerSided.level() instanceof ClientLevel clientLevel) {
Entity watcher = clientLevel.getEntity(beholderId);
// If entity doesn't exist on client and we have spawn data, create it
// This is necessary when viewing a Beholder from far away (unloaded chunks)
if (watcher == null && active && usingPlayerUUID != null) {
BeholderEyeEntity beholderEye = ACEntityRegistry.BEHOLDER_EYE.get().create(clientLevel);
if (beholderEye != null) {
beholderEye.setId(beholderId);
beholderEye.setPos(x, y, z);
beholderEye.setEyeYRot(yRot);
beholderEye.setEyeXRot(xRot);
beholderEye.setUsingPlayerUUID(usingPlayerUUID);
beholderEye.hasTakenFullControlOfCamera = true;
clientLevel.addEntity(beholderEye);
watcher = beholderEye;
}
}
if (watcher instanceof BeholderEyeEntity beholderEye) {
Entity beholderEyePlayer = beholderEye.getUsingPlayer();
beholderEye.hasTakenFullControlOfCamera = true;
if (beholderEyePlayer != null && beholderEyePlayer instanceof Player && beholderEyePlayer.equals(playerSided)) {
if (active) {
setRenderViewEntity(playerSided, beholderEye);
} else {
resetRenderViewEntity(playerSided);
}
}
}
}
}

@Override
public void playWorldSound(@Nullable Object soundEmitter, byte type) {
if (soundEmitter instanceof Entity entity && !entity.level().isClientSide) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -290,8 +290,6 @@ public void postRenderStage(RenderLevelStageEvent event) {
RenderSystem.runAsFancy(() -> HologramProjectorBlockRenderer.renderEntireBatch(event.getLevelRenderer(),
event.getPoseStack(), event.getRenderTick(), event.getCamera(),
event.getPartialTick().getGameTimeDeltaPartialTick(false)));
}
if (event.getStage() == RenderLevelStageEvent.Stage.AFTER_CUTOUT_BLOCKS) {
RenderSystem.runAsFancy(() -> CorrodentRenderer.renderEntireBatch(event.getLevelRenderer(),
event.getPoseStack(), event.getRenderTick(), event.getCamera(),
event.getPartialTick().getGameTimeDeltaPartialTick(false)));
Expand All @@ -311,43 +309,11 @@ public void postRenderStage(RenderLevelStageEvent event) {
public void computeCameraAngles(ViewportEvent.ComputeCameraAngles event) {
Entity player = Minecraft.getInstance().getCameraEntity();
float partialTick = Minecraft.getInstance().getTimer().getGameTimeDeltaPartialTick(false);
float tremorAmount = ClientProxy.renderNukeSkyDarkFor > 0 ? 1.5F : 0F;
if (player instanceof PossessesCamera watcherEntity) {
Minecraft.getInstance().options.setCameraType(CameraType.FIRST_PERSON);
tremorAmount = watcherEntity.isPossessionBreakable()
? AlexsCaves.PROXY.getPossessionStrengthAmount(partialTick)
: 0F;
}
if (player != null && AlexsCaves.CLIENT_CONFIG.screenShaking.get()) {
double shakeDistanceScale = 64;
double distance = Double.MAX_VALUE;
if (tremorAmount == 0) {
AABB aabb = player.getBoundingBox().inflate(shakeDistanceScale);
for (Mob screenShaker : Minecraft.getInstance().level.getEntitiesOfClass(Mob.class, aabb,
(mob -> mob instanceof ShakesScreen))) {
ShakesScreen shakesScreen = (ShakesScreen) screenShaker;
if (shakesScreen.canFeelShake(player) && screenShaker.distanceTo(player) < distance) {
distance = screenShaker.distanceTo(player);
tremorAmount = Math.min((1F - (float) Math.min(1, distance / shakesScreen.getShakeDistance()))
* Math.max(shakesScreen.getScreenShakeAmount(partialTick), 0F), 2.0F);
}
}
}
if (tremorAmount > 0) {
if (ClientProxy.lastTremorTick != player.tickCount) {
RandomSource rng = player.level().random;
ClientProxy.randomTremorOffsets[0] = rng.nextFloat();
ClientProxy.randomTremorOffsets[1] = rng.nextFloat();
ClientProxy.randomTremorOffsets[2] = rng.nextFloat();
ClientProxy.lastTremorTick = player.tickCount;
}
float intensity = (float)(tremorAmount * Minecraft.getInstance().options.screenEffectScale().get());
((CameraAccessor) event.getCamera()).invokeMove(
ClientProxy.randomTremorOffsets[0] * 0.2F * intensity,
ClientProxy.randomTremorOffsets[1] * 0.2F * intensity,
ClientProxy.randomTremorOffsets[2] * 0.5F * intensity);
}
}
// Screen shake logic has been moved to CameraMixin because ComputeCameraAngles
// event fires BEFORE setPosition() in Camera.setup(), causing move() effects to be overwritten
if (player != null && player.isPassenger() && player.getVehicle() instanceof SubmarineEntity
&& event.getCamera().isDetached()) {
CameraAccessor cameraAccessor = (CameraAccessor) event.getCamera();
Expand Down Expand Up @@ -701,7 +667,7 @@ public void onPoseHand(EventPosePlayerHand event) {
public void onPostRenderGuiOverlay(RenderGuiLayerEvent.Post event) {
Player player = AlexsCaves.PROXY.getClientSidePlayer();
int hudY = 0;
if (event.getName().equals(VanillaGuiLayers.CROSSHAIR) && player.getVehicle() instanceof RidingMeterMount mount
if (event.getName().equals(VanillaGuiLayers.HOTBAR) && player.getVehicle() instanceof RidingMeterMount mount
&& mount.hasRidingMeter()) {
int screenWidth = Minecraft.getInstance().getWindow().getGuiScaledWidth();
int screenHeight = Minecraft.getInstance().getWindow().getGuiScaledHeight();
Expand Down Expand Up @@ -755,7 +721,7 @@ public void onPostRenderGuiOverlay(RenderGuiLayerEvent.Post event) {
(int) Math.floor(dinoHeight * invProgress), 128, 512);
event.getGuiGraphics().pose().popPose();
}
if (event.getName().equals(VanillaGuiLayers.CROSSHAIR) && DarknessArmorItem.hasMeter(player)) {
if (event.getName().equals(VanillaGuiLayers.HOTBAR) && DarknessArmorItem.hasMeter(player)) {
ItemStack stack = player.getItemBySlot(EquipmentSlot.CHEST);
int screenWidth = Minecraft.getInstance().getWindow().getGuiScaledWidth();
int screenHeight = Minecraft.getInstance().getWindow().getGuiScaledHeight();
Expand Down Expand Up @@ -1123,6 +1089,8 @@ private Vec3 calculateBiomeWaterFogColor(Entity player) {
public void onClientTick(ClientTickEvent.Post event) {
Entity cameraEntity = Minecraft.getInstance().cameraEntity;
float partialTicks = AlexsCaves.PROXY.getPartialTicks();
// Tick down bubbled effect visual timers
ClientProxy.tickBubbledEffects();
if (ClientProxy.shaderLoadAttemptCooldown > 0) {
ClientProxy.shaderLoadAttemptCooldown--;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.neoforged.neoforge.client.NeoForgeRenderTypes;
import net.minecraft.client.resources.sounds.SimpleSoundInstance;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
Expand All @@ -27,7 +27,6 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import net.neoforged.neoforge.common.NeoForge;

public class CaveBookScreen extends Screen {

Expand All @@ -36,10 +35,10 @@ public class CaveBookScreen extends Screen {
public static final float MOUSE_LEAN_THRESHOLD = 0.75F;
public static final int PAGE_SIZE_IN_LINES = 15;

public static final int TEXT_COLOR = 0X5A4830;
public static final int TEXT_COLOR = 0X826A41;
public static final int TEXT_LINK_COLOR = 0X111111;
public static final int TEXT_LINK_HOVER_COLOR = 0X0094FF;
public static final int TEXT_LINK_LOCKED_COLOR = 0XA09078;
public static final int TEXT_LINK_LOCKED_COLOR = 0XD3C9AB;
private final CaveBookProgress caveBookProgress;
public boolean unlockTooltip;
private boolean incrementingPage;
Expand Down Expand Up @@ -243,7 +242,7 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float fakePa
poseStack.pushPose();
BOOK_MODEL.setupAnim(null, openBookAmount, pageAngle, pageUp, -20 * (openBookAmount) - 10 * pageFlipBump, 0);
BOOK_MODEL.mouseOver(mouseLeanX, mouseLeanY, ageInTicks, flip, canGoLeft(), canGoRight());
BOOK_MODEL.renderToBuffer(poseStack, bufferSource.getBuffer(RenderType.entityTranslucent(BOOK_TEXTURE)), 240, OverlayTexture.NO_OVERLAY, -1);
BOOK_MODEL.renderToBuffer(poseStack, bufferSource.getBuffer(NeoForgeRenderTypes.getUnlitTranslucent(BOOK_TEXTURE)), 240, OverlayTexture.NO_OVERLAY, -1);
renderBookContents(poseStack, mouseX, mouseY, partialTick);
guiGraphics.flush();
poseStack.popPose();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ public void render(PoseStack poseStack, MultiBufferSource.BufferSource bufferSou
float texWidth = 55 / 2F;
float texHeight = 37 / 2F;
vertexconsumer.addVertex(matrix4f, -texWidth, -texHeight, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(0, 0).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F);
vertexconsumer.addVertex(matrix4f, texWidth, -texHeight, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(scaledU1, 0).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F).setUv(0, scaledV1);
vertexconsumer.addVertex(matrix4f, texWidth, texHeight, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(scaledU1, scaledV1).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F).setUv(0, 0);
vertexconsumer.addVertex(matrix4f, -texWidth, texHeight, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(0, scaledV1).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F).setUv(scaledU1, 0);
vertexconsumer.addVertex(matrix4f, texWidth, -texHeight, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(scaledU1, 0).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F);
vertexconsumer.addVertex(matrix4f, texWidth, texHeight, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(scaledU1, scaledV1).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F);
vertexconsumer.addVertex(matrix4f, -texWidth, texHeight, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(0, scaledV1).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F);
poseStack.popPose();


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,8 @@ private void renderQuad(PoseStack poseStack, VertexConsumer vertexconsumer, floa
float scaledV1 = v1 / (float)BORDER_TEXTURE_SIZE;

vertexconsumer.addVertex(matrix4f, x0, y0, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(scaledU1, scaledV0).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F);
vertexconsumer.addVertex(matrix4f, x1, y0, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(scaledU0, scaledV0).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F).setUv(scaledU0, scaledV1);
vertexconsumer.addVertex(matrix4f, x1, y1, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(scaledU0, scaledV1).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F).setUv(scaledU0, scaledV0);
vertexconsumer.addVertex(matrix4f, x0, y1, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(scaledU1, scaledV1).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F).setUv(scaledU1, scaledV0);
vertexconsumer.addVertex(matrix4f, x1, y0, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(scaledU0, scaledV0).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F);
vertexconsumer.addVertex(matrix4f, x1, y1, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(scaledU0, scaledV1).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F);
vertexconsumer.addVertex(matrix4f, x0, y1, 0.0F).setColor(1.0F, 1.0F, 1.0F, 1.0F).setUv(scaledU1, scaledV1).setOverlay(NO_OVERLAY).setLight(240).setNormal(0.0F, 1.0F, 0.0F);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,9 @@ public void setupAnim(SauropodBaseEntity entity, float limbSwing, float limbSwin
float danceAmount = entity.getDanceProgress(partialTicks);
float buryEggsAmount = entity.getBuryEggsProgress(partialTicks);
positionNeckAndTail(entity, netHeadYaw, headPitch, partialTicks);
articulateLegs(entity.legSolver, raiseArmsAmount, partialTicks);
if (!straighten) {
articulateLegs(entity.legSolver, raiseArmsAmount, partialTicks);
}
if (buryEggsAmount > 0.0F) {
limbSwing = ageInTicks;
limbSwingAmount = buryEggsAmount * 0.5F;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@

public class RainbowParticle extends Particle {
public static final ParticleGroup PARTICLE_GROUP = new ParticleGroup(100);
private static final RenderType RAINBOW_RENDER_TYPE = ACRenderTypes.getTeslaBulb(ResourceLocation.fromNamespaceAndPath(AlexsCaves.MODID, "textures/particle/rainbow.png"));
private static final RenderType RAINBOW_RENDER_TYPE = ACRenderTypes.getRainbow(ResourceLocation.fromNamespaceAndPath(AlexsCaves.MODID, "textures/particle/rainbow.png"));
public int rainbowVecCount = 64;
public int fadeSpeed = 15;
public int fillSpeed = 40;
Expand Down
Loading