Skip to content

Commit

Permalink
Fix ImmutableBlockSettings
Browse files Browse the repository at this point in the history
  • Loading branch information
FirstMegaGame4 committed Nov 15, 2023
1 parent eaefefd commit a7b2700
Show file tree
Hide file tree
Showing 4 changed files with 145 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -307,11 +307,11 @@ public AdvancedBlockSettings offsetType(Function<BlockState, AbstractBlock.Offse
return this;
}

private AbstractBlockSettingsDuckInterface ducked(AbstractBlock.Settings settings) {
AbstractBlockSettingsDuckInterface ducked(AbstractBlock.Settings settings) {
return (AbstractBlockSettingsDuckInterface) settings;
}

private AbstractBlockSettingsDuckInterface ducked() {
AbstractBlockSettingsDuckInterface ducked() {
return this.ducked(this);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.mmodding.mmodding_lib.library.blocks.settings;

import com.mmodding.mmodding_lib.mixin.accessors.AbstractBlockAccessor;
import com.mmodding.mmodding_lib.mixin.accessors.AbstractBlockSettingsAccessor;
import net.minecraft.block.*;
import net.minecraft.entity.EntityType;
import net.minecraft.sound.BlockSoundGroup;
Expand All @@ -21,7 +22,36 @@ protected ImmutableBlockSettings(Material material, MapColor mapColor) {
}

protected ImmutableBlockSettings(AbstractBlock.Settings settings) {
super(settings);
super(((AbstractBlockSettingsAccessor) settings).getMaterial(), ((AbstractBlockSettingsAccessor) settings).getMapColorProvider());

AbstractBlockSettingsAccessor accessor = (AbstractBlockSettingsAccessor) settings;

super.material(accessor.getMaterial());
super.hardness(accessor.getHardness());
super.resistance(accessor.getResistance());
super.collidable(accessor.getCollidable());
super.ticksRandomly(accessor.getRandomTicks());
super.luminance(accessor.getLuminance());
super.mapColorProvider(accessor.getMapColorProvider());
super.sounds(accessor.getSoundGroup());
super.slipperiness(accessor.getSlipperiness());
super.velocityMultiplier(accessor.getVelocityMultiplier());
super.dynamicBounds(accessor.getDynamicBounds());
super.opaque(accessor.getOpaque());
super.air(accessor.getIsAir());
super.requiresTool(accessor.isToolRequired());
super.jumpVelocityMultiplier(accessor.getJumpVelocityMultiplier());
super.drops(accessor.getLootTableId());
super.allowsSpawning(accessor.getAllowsSpawningPredicate());
super.solidBlock(accessor.getSolidBlockPredicate());
super.suffocates(accessor.getSuffocationPredicate());
super.blockVision(accessor.getBlockVisionPredicate());
super.postProcess(accessor.getPostProcessPredicate());
super.emissiveLighting(accessor.getEmissiveLightingPredicate());

this.ducked().mmodding_lib$setTranslucent(this.ducked(settings).mmodding_lib$getTranslucent());
this.ducked().mmodding_lib$setNotTranslucent(this.ducked(settings).mmodding_lib$getNotTranslucent());
this.ducked().mmodding_lib$setInvisibleSides(this.ducked(settings).mmodding_lib$getInvisibleSides());
}

public static ImmutableBlockSettings of(Material material) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package com.mmodding.mmodding_lib.mixin.accessors;

import net.minecraft.block.AbstractBlock;
import net.minecraft.block.BlockState;
import net.minecraft.block.MapColor;
import net.minecraft.block.Material;
import net.minecraft.entity.EntityType;
import net.minecraft.sound.BlockSoundGroup;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;

import java.util.function.Function;
import java.util.function.ToIntFunction;

@Mixin(AbstractBlock.Settings.class)
public interface AbstractBlockSettingsAccessor {

@Accessor
Material getMaterial();

@Accessor
float getHardness();

@Accessor
float getResistance();

@Accessor
boolean getCollidable();

@Accessor
boolean getRandomTicks();

@Accessor("luminance")
ToIntFunction<BlockState> getLuminance();

@Accessor
Function<BlockState, MapColor> getMapColorProvider();

@Accessor
BlockSoundGroup getSoundGroup();

@Accessor
float getSlipperiness();

@Accessor
float getVelocityMultiplier();

@Accessor
float getJumpVelocityMultiplier();

@Accessor
Identifier getLootTableId();

@Accessor
boolean getOpaque();

@Accessor
boolean getIsAir();

@Accessor
boolean isToolRequired();

@Accessor
AbstractBlock.TypedContextPredicate<EntityType<?>> getAllowsSpawningPredicate();

@Accessor
AbstractBlock.ContextPredicate getSolidBlockPredicate();

@Accessor
AbstractBlock.ContextPredicate getSuffocationPredicate();

@Accessor
AbstractBlock.ContextPredicate getBlockVisionPredicate();

@Accessor
AbstractBlock.ContextPredicate getPostProcessPredicate();

@Accessor
AbstractBlock.ContextPredicate getEmissiveLightingPredicate();

@Accessor
boolean getDynamicBounds();

@Accessor
void setMaterial(Material material);

@Accessor
void setCollidable(boolean collidable);

@Accessor
void setRandomTicks(boolean ticksRandomly);

@Accessor
void setMapColorProvider(Function<BlockState, MapColor> mapColorProvider);

@Accessor
void setLootTableId(Identifier lootTableId);

@Accessor
void setOpaque(boolean opaque);

@Accessor
void setIsAir(boolean isAir);

@Accessor
void setToolRequired(boolean toolRequired);

@Accessor
void setDynamicBounds(boolean dynamicBounds);
}
1 change: 1 addition & 0 deletions src/main/resources/mmodding_lib.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"compatibilityLevel": "JAVA_17",
"mixins": [
"accessors.AbstractBlockAccessor",
"accessors.AbstractBlockSettingsAccessor",
"accessors.AreaHelperAccessor",
"accessors.BlockEntityTypeBuilderAccessor",
"accessors.BlocksAccessor",
Expand Down

0 comments on commit a7b2700

Please sign in to comment.