Skip to content

Commit

Permalink
Merge branch '1.20.1' into 1.20.2
Browse files Browse the repository at this point in the history
# Conflicts:
#	gradle.properties
  • Loading branch information
Sollace committed Feb 11, 2024
2 parents 1b688ac + 623d231 commit 0de1847
Show file tree
Hide file tree
Showing 37 changed files with 827 additions and 87 deletions.
19 changes: 13 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ repositories {
maven { name 'minelp-snapshot'; url 'https://repo.minelittlepony-mod.com/maven/snapshot' }
maven { name 'minelp-releases'; url 'https://repo.minelittlepony-mod.com/maven/release' }
maven { name 'TerraformersMC'; url 'https://maven.terraformersmc.com/' }
maven { name 'Modrinth'; url 'https://api.modrinth.com/maven' }
maven { name 'JitPack'; url 'https://jitpack.io'; content { includeGroup "com.github.Virtuoel" } }
}

dependencies {
Expand Down Expand Up @@ -73,17 +75,22 @@ dependencies {
modImplementation "com.terraformersmc.terraform-api:terraform-wood-api-v1:${project.terraformer_api_version}"
include "com.terraformersmc.terraform-api:terraform-wood-api-v1:${project.terraformer_api_version}"

modCompileOnly "maven.modrinth:farmers-delight-fabric:${project.farmers_delight_version}", { exclude group: "net.fabricmc.fabric-api" }
if (project.use_pehkui == '1') {
modCompileOnly "maven.modrinth:pehkui:${project.pehkui_version}", { exclude group: "net.fabricmc.fabric-api" }
modCompileOnly "com.github.Virtuoel:KanosConfig:0.4.1", { exclude group: "net.fabricmc.fabric-api" }
}

if (project.use_sodium == '1') {
modCompileOnly "maven.modrinth:sodium:${project.sodium_version}", { exclude group: "net.fabricmc.fabric-api" }
modCompileOnly "maven.modrinth:iris:${project.iris_version}", { exclude group: "net.fabricmc.fabric-api" }
}

if (project.tmi_type == 'emi') {
modCompileOnly "dev.emi:emi-fabric:${project.emi_version}"
} else {
modCompileOnly "dev.emi:emi-fabric-dummy:${project.emi_version}"
}

if (project.tmi_type == 'rei') {
// TODO:
} else {
// TODO:
}
}

processResources {
Expand Down
13 changes: 11 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ org.gradle.daemon=false
description=Magical Abilities for Mine Little Pony!

# Publishing
minecraft_version_range=>=1.20.2
minecraft_version_range=1.20.2
modrinth_loader_type=fabric
modrinth_project_id=9K7RJlvM

Expand All @@ -24,10 +24,19 @@ org.gradle.daemon=false
modmenu_version=8.0.0-beta.1
minelp_version=4.11.1+1.20.2
kirin_version=1.16.0+1.20.2
reach_attributes_version=2.3.3
reach_attributes_version=2.3.4
trinkets_version=3.8.0
terraformer_api_version=8.0.0-beta.1

# Testing
use_pehkui=0
use_sodium=1

farmers_delight_version=1.4.3
pehkui_version=3.7.8+1.14.4-1.20.1
iris_version=1.6.8+1.20.1
sodium_version=mc1.20.1-0.5.2

# TMI Testing
tmi_type=emi
emi_version=1.0.21+1.20.2
Binary file removed lib/reach-entity-attributes-2.3.3.jar
Binary file not shown.
Binary file added lib/reach-entity-attributes-2.3.4.jar
Binary file not shown.
3 changes: 3 additions & 0 deletions src/main/java/com/minelittlepony/unicopia/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ public class Config extends com.minelittlepony.common.util.settings.Config {
public final Setting<Boolean> simplifiedPortals = value("compatibility", "simplifiedPortals", false)
.addComment("Disables dynamic portal rendering");

public final Setting<Boolean> disableShaders = value("compatibility", "disableShaders", false)
.addComment("Disables post-effect shaders used by the corruption mechanic");

public final Setting<Long> fancyPortalRefreshRate = value("client", "fancyPortalRefreshRate", -1L)
.addComment("Sets the refresh rate of portals when using fancy portal rendering")
.addComment("Set to -1 (default) for unlimited");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ public boolean shouldApplyMixin(String targetClassName, String mixinClassName) {
if (mixinClassName.indexOf("minelp") != -1) {
return FabricLoader.getInstance().isModLoaded("minelp");
}
if (mixinClassName.indexOf("forgified") != -1) {
return FabricLoader.getInstance().isModLoaded("connectormod");
}
}
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ protected boolean shouldAdvance(Random random) {
return true;
}

protected BlockState getPlacedFruitState(Random random) {
public BlockState getPlacedFruitState(Random random) {
return fruit.get().getDefaultState();
}

Expand Down Expand Up @@ -141,7 +141,7 @@ public int getTint(BlockState state, @Nullable BlockRenderView world, @Nullable
return TintedBlock.blend(foliageColor, overlay);
}

private boolean isPositionValidForFruit(BlockState state, BlockPos pos) {
public boolean isPositionValidForFruit(BlockState state, BlockPos pos) {
return state.getRenderingSeed(pos) % 3 == 1;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ protected boolean shouldAdvance(Random random) {
}

@Override
protected BlockState getPlacedFruitState(Random random) {
public BlockState getPlacedFruitState(Random random) {
return super.getPlacedFruitState(random).with(EnchantedFruitBlock.ENCHANTED, random.nextInt(1000) == 0);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,24 @@ public Identifier getFabricId() {
}

public void loadShader(@Nullable Identifier shaderId) {

if (shader != null) {
shader.close();
try {
shader.close();
} catch (Throwable ignored) {
} finally {
shader = null;
}
}

if (shaderId == null) {
return;
}

if (Unicopia.getConfig().disableShaders.get()) {
return;
}

try {
shader = new LoadedShader(client, shaderId);
} catch (IOException e) {
Expand All @@ -66,6 +76,10 @@ public void onResized(int width, int height) {
}

public void render(float tickDelta) {
if (Unicopia.getConfig().disableShaders.get()) {
return;
}

if (shader != null && client.player != null) {
RenderSystem.disableBlend();
RenderSystem.disableDepthTest();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import net.minecraft.util.math.Box;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.util.shape.VoxelShapes;
import net.minecraft.world.WorldAccess;
import net.minecraft.world.EntityView;

public class EntityCollisions {

Expand All @@ -40,7 +40,7 @@ public static void getCollissionShapes(@Nullable Entity entity, ShapeContext con
}
}

public static List<VoxelShape> getColissonShapes(@Nullable Entity entity, WorldAccess world, Box box) {
public static List<VoxelShape> getColissonShapes(@Nullable Entity entity, EntityView world, Box box) {
ShapeContext ctx = entity == null ? ShapeContext.absent() : ShapeContext.of(entity);
return collectCollisionBoxes(box, collector -> {
world.getOtherEntities(entity, box.expand(50), e -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,12 @@ abstract class MixinBoatEntity extends Entity implements LavaAffine {
"fall",
"canAddPassenger"
},
at = @At(value = "FIELD", target = "net/minecraft/registry/tag/FluidTags.WATER:Lnet/minecraft/registry/tag/TagKey;", opcode = Opcodes.GETSTATIC)
at = @At(
value = "FIELD",
target = "net/minecraft/registry/tag/FluidTags.WATER:Lnet/minecraft/registry/tag/TagKey;",
opcode = Opcodes.GETSTATIC
),
require = 0 // Forge
)
private TagKey<Fluid> redirectFluidTag() {
return isLavaAffine() ? FluidTags.LAVA : FluidTags.WATER;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.minelittlepony.unicopia.mixin;

import java.util.List;
import java.util.stream.Stream;

import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import com.minelittlepony.unicopia.entity.collision.EntityCollisions;

import net.minecraft.entity.Entity;
import net.minecraft.util.math.Box;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.world.EntityView;

@Mixin(EntityView.class)
interface MixinEntityView {
@Inject(method = "getEntityCollisions(Lnet/minecraft/entity/Entity;Lnet/minecraft/util/math/Box;)Ljava/util/List;", at = @At("RETURN"), cancellable = true)
private void onGetEntityCollisions(@Nullable Entity entity, Box box, CallbackInfoReturnable<List<VoxelShape>> info) {
if (box.getAverageSideLength() < 1.0E-7D) {
return;
}

List<VoxelShape> shapes = EntityCollisions.getColissonShapes(entity, (EntityView)this, box);
if (!shapes.isEmpty()) {
info.setReturnValue(Stream.concat(shapes.stream(), info.getReturnValue().stream()).toList());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.minelittlepony.unicopia.mixin;

import java.util.function.Consumer;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;

import com.minelittlepony.unicopia.server.world.gen.BiomeSelectionInjector;
import com.mojang.datafixers.util.Pair;

import net.minecraft.registry.RegistryKey;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.source.util.MultiNoiseUtil;
import net.minecraft.world.biome.source.util.VanillaBiomeParameters;

@Mixin(VanillaBiomeParameters.class)
abstract class MixinVanillaBiomeParameters {
@ModifyVariable(method = "writeOverworldBiomeParameters", at = @At("HEAD"))
private Consumer<Pair<MultiNoiseUtil.NoiseHypercube, RegistryKey<Biome>>> onWriteOverworldBiomeParameters(Consumer<Pair<MultiNoiseUtil.NoiseHypercube, RegistryKey<Biome>>> parametersCollector) {
return new BiomeSelectionInjector(parametersCollector);
}
}
21 changes: 0 additions & 21 deletions src/main/java/com/minelittlepony/unicopia/mixin/MixinWorld.java
Original file line number Diff line number Diff line change
@@ -1,26 +1,17 @@
package com.minelittlepony.unicopia.mixin;

import java.util.List;
import java.util.Stack;
import java.util.function.Supplier;
import java.util.stream.Stream;

import org.jetbrains.annotations.Nullable;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import com.minelittlepony.unicopia.entity.collision.EntityCollisions;
import com.minelittlepony.unicopia.entity.duck.RotatedView;
import com.minelittlepony.unicopia.server.world.BlockDestructionManager;
import net.minecraft.block.BlockState;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.world.World;
import net.minecraft.world.WorldAccess;

Expand All @@ -47,18 +38,6 @@ public BlockDestructionManager getDestructionManager() {
return destructions.get();
}

@Override
public List<VoxelShape> getEntityCollisions(@Nullable Entity entity, Box box) {
if (box.getAverageSideLength() >= 1.0E-7D) {
List<VoxelShape> shapes = EntityCollisions.getColissonShapes(entity, this, box);
if (!shapes.isEmpty()) {
return Stream.concat(shapes.stream(), WorldAccess.super.getEntityCollisions(entity, box).stream()).toList();
}
}

return WorldAccess.super.getEntityCollisions(entity, box);
}

@ModifyVariable(method = "setBlockState(Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/BlockState;II)Z", at = @At("HEAD"))
private BlockPos modifyBlockPos(BlockPos pos) {
pos = applyRotation(pos);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.minelittlepony.unicopia.mixin.forgified;

import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Pseudo;
import org.spongepowered.asm.mixin.injection.*;
import com.minelittlepony.unicopia.entity.duck.LavaAffine;
import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.FluidState;
import net.minecraft.fluid.Fluids;
import net.minecraft.registry.tag.FluidTags;

@Pseudo
@Mixin(targets = "net.minecraftforge.common.extensions.IForgeBoat")
interface MixinIForgeBoat {
@ModifyVariable(
method = "canBoatInFluid(Lnet/minecraft/fluid/FluidState;)Z",
at = @At("HEAD"),
ordinal = 0,
argsOnly = true,
require = 0
)
private FluidState modifyFluidState(FluidState incoming) {
if (this instanceof LavaAffine a && a.isLavaAffine()) {
if (incoming.isIn(FluidTags.WATER)) {
return Fluids.LAVA.getDefaultState();
}
if (incoming.isIn(FluidTags.LAVA)) {
return Fluids.WATER.getDefaultState();
}
}

return incoming;
}
@SuppressWarnings("deprecation")
@ModifyVariable(
method = "canBoatInFluid(Lnet/minecraft/fluid/Fluid;)Z",
at = @At("HEAD"),
ordinal = 0,
argsOnly = true,
require = 0
)
private Fluid modifyFluid(Fluid incoming) {
if (this instanceof LavaAffine a && a.isLavaAffine()) {
if (incoming.isIn(FluidTags.WATER)) {
return Fluids.LAVA;
}
if (incoming.isIn(FluidTags.LAVA)) {
return Fluids.WATER;
}
}

return incoming;
}
}
Loading

0 comments on commit 0de1847

Please sign in to comment.