Skip to content

Commit

Permalink
refactors
Browse files Browse the repository at this point in the history
  • Loading branch information
PinkGoosik committed Jul 11, 2024
1 parent 0e899f6 commit 403620c
Show file tree
Hide file tree
Showing 48 changed files with 386 additions and 432 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ modmenu_version = 11.0.1
owo_lib = 0.12.10+1.21

# NeoForge
neoforge_version = 21.0.56-beta
neoforge_version = 21.0.78-beta
neoforge_version_range = [21.0,)
curios_version = 7.0.0-beta.3+1.20.4

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.tags.BlockTags;
import net.minecraft.util.RandomSource;
Expand All @@ -23,8 +24,8 @@
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.jetbrains.annotations.Nullable;
import ru.pinkgoosik.winterly.Winterly;
import ru.pinkgoosik.winterly.data.CachedFlowers;
import ru.pinkgoosik.winterly.registry.CommonWinterlyBlocks;

import java.util.Objects;

Expand Down Expand Up @@ -161,7 +162,7 @@ public boolean canBeReplaced(BlockState state, BlockPlaceContext context) {
@Override
public BlockState getStateForPlacement(BlockPlaceContext ctx) {
BlockState state = ctx.getLevel().getBlockState(ctx.getClickedPos());
if(state.is(Blocks.SNOW) || state.is(CommonWinterlyBlocks.FROZEN_GRASS)) {
if(state.is(Blocks.SNOW) || state.is(BuiltInRegistries.BLOCK.get(Winterly.id("frozen_grass")))) {
return defaultBlockState().setValue(LAYERS, 1).setValue(PERSISTENT, true);
}
else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
Expand All @@ -26,7 +27,7 @@
import net.minecraft.world.phys.shapes.CollisionContext;
import net.minecraft.world.phys.shapes.VoxelShape;
import org.jetbrains.annotations.Nullable;
import ru.pinkgoosik.winterly.registry.CommonWinterlyBlocks;
import ru.pinkgoosik.winterly.Winterly;

import java.util.List;

Expand Down Expand Up @@ -111,7 +112,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockSt

@Override
public void appendHoverText(ItemStack stack, Item.TooltipContext context, List<Component> tooltip, TooltipFlag tooltipFlag) {
if(this.equals(CommonWinterlyBlocks.ICICLE)) {
if(this.equals(BuiltInRegistries.BLOCK.get(Winterly.id("icicle")))) {
tooltip.add(Component.translatable("tag.winterly.placeable").withStyle(ChatFormatting.GRAY));
}
super.appendHoverText(stack, context, tooltip, tooltipFlag);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package ru.pinkgoosik.winterly.block.base;

import net.minecraft.world.level.block.TransparentBlock;

public class BaseTransparentBlock extends TransparentBlock {

public BaseTransparentBlock(Properties properties) {
super(properties);
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package ru.pinkgoosik.winterly.block.entity;

import net.minecraft.core.HolderLookup;
import net.minecraft.core.registries.BuiltInRegistries;
import ru.pinkgoosik.winterly.Winterly;
import ru.pinkgoosik.winterly.data.GiftBoxData;
import ru.pinkgoosik.winterly.registry.CommonWinterlyBlockEntities;

import java.util.ArrayList;
import net.minecraft.core.BlockPos;
Expand All @@ -15,7 +16,7 @@ public class GiftBoxBlockEntity extends BlockEntity implements GiftBoxBlockEntit
public ArrayList<ItemStack> stacks = new ArrayList<>();

public GiftBoxBlockEntity(BlockPos pos, BlockState state) {
super(CommonWinterlyBlockEntities.GIFT_BOX_BLOCK_ENTITY, pos, state);
super(BuiltInRegistries.BLOCK_ENTITY_TYPE.get(Winterly.id("gift_box")), pos, state);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public DecorationFeatureRenderer(RenderLayerParent<T, M> context) {
@Override
public void render(PoseStack matrices, MultiBufferSource vertexConsumers, int light, T entity, float limbAngle, float limbDistance, float tickDelta, float animationProgress, float headYaw, float headPitch) {
if(entity instanceof DecoratedMob decorated) {
if(decorated.winterly$decorated()) {
if(decorated.winterly$isDecorated()) {
MobDecorationRenderer renderer = MobDecorationRenderers.getRenderer(decorated.winterly$getIndex());
renderer.render(this.getParentModel(), matrices, vertexConsumers, light, entity, limbAngle, limbDistance, tickDelta, animationProgress, headYaw, headPitch);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ru.pinkgoosik.winterly.extension;

public interface DecoratedMob {
boolean winterly$decorated();
boolean winterly$isDecorated();
int winterly$getIndex();
void winterly$setDecoration(int index);
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ public CommonSantaHatItem(Item.Properties settings, String color) {
this.color = color;
}

@Override
public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> tooltip, TooltipFlag tooltipFlag) {
tooltip.add(Component.translatable("tag.winterly.cosmetic").withStyle(ChatFormatting.GRAY));
tooltip.add(Component.nullToEmpty(" "));
super.appendHoverText(stack, context, tooltip, tooltipFlag);
}
// @Override
// public void appendHoverText(ItemStack stack, TooltipContext context, List<Component> tooltip, TooltipFlag tooltipFlag) {
// tooltip.add(Component.translatable("tag.winterly.cosmetic").withStyle(ChatFormatting.GRAY));
// tooltip.add(Component.nullToEmpty(" "));
// super.appendHoverText(stack, context, tooltip, tooltipFlag);
// }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package ru.pinkgoosik.winterly.mixin.common;

import net.minecraft.world.DifficultyInstance;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobSpawnType;
import net.minecraft.world.entity.SpawnGroupData;
import net.minecraft.world.entity.monster.AbstractSkeleton;
import net.minecraft.world.entity.monster.Monster;
import net.minecraft.world.entity.monster.RangedAttackMob;
import net.minecraft.world.entity.monster.Skeleton;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.ServerLevelAccessor;
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 ru.pinkgoosik.winterly.Winterly;
import ru.pinkgoosik.winterly.extension.DecoratedMob;
import ru.pinkgoosik.winterly.util.HolidayUtils;

@Mixin(AbstractSkeleton.class)
abstract class AbstractSkeletonMixin extends Monster implements RangedAttackMob {

protected AbstractSkeletonMixin(EntityType<? extends Monster> entityType, Level level) {
super(entityType, level);
}

@Inject(method = "finalizeSpawn", at = @At("RETURN"))
void finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnType, SpawnGroupData spawnGroupData, CallbackInfoReturnable<SpawnGroupData> cir) {

if((Object)this instanceof Skeleton skeleton && skeleton instanceof DecoratedMob decorated && !spawnType.equals(MobSpawnType.SPAWNER) && !spawnType.equals(MobSpawnType.CHUNK_GENERATION)) {
if(Winterly.config.mobDecorations.enabled && HolidayUtils.isWinterHolidays() || !Winterly.config.mobDecorations.onlyInWinter) {
if(!this.level().dimension().equals(Level.NETHER)) {
int chance = Winterly.config.mobDecorations.chance;
if(chance > 0 && Math.random() < (double)chance / 100) {
decorated.winterly$setDecoration(level.getRandom().nextInt(5));
}
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.mojang.serialization.MapCodec;
import it.unimi.dsi.fastutil.objects.Reference2ObjectArrayMap;
import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockBehaviour;
Expand All @@ -15,8 +16,8 @@
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import ru.pinkgoosik.winterly.Winterly;
import ru.pinkgoosik.winterly.block.CommonFrozenFlowerBlock;
import ru.pinkgoosik.winterly.registry.CommonWinterlyBlocks;

@Mixin(BlockBehaviour.BlockStateBase.class)
public abstract class BlockStateMixin extends StateHolder<Block, BlockState> {
Expand All @@ -34,7 +35,7 @@ protected BlockStateMixin(Block owner, Reference2ObjectArrayMap<Property<?>, Com

@Inject(method = "getDestroySpeed", at = @At("HEAD"), cancellable = true)
void getHardness(BlockGetter world, BlockPos pos, CallbackInfoReturnable<Float> cir) {
if(is(CommonWinterlyBlocks.FROZEN_FLOWER)) {
if(is(BuiltInRegistries.BLOCK.get(Winterly.id("frozen_flower")))) {
if(getValue(CommonFrozenFlowerBlock.LAYERS) == 0) {
cir.setReturnValue(0.0F);
}
Expand All @@ -46,7 +47,7 @@ void getHardness(BlockGetter world, BlockPos pos, CallbackInfoReturnable<Float>

@Inject(method = "requiresCorrectToolForDrops", at = @At("HEAD"), cancellable = true)
void isToolRequired(CallbackInfoReturnable<Boolean> cir) {
if(is(CommonWinterlyBlocks.FROZEN_FLOWER)) {
if(is(BuiltInRegistries.BLOCK.get(Winterly.id("frozen_flower")))) {
if(getValue(CommonFrozenFlowerBlock.LAYERS) == 0) {
cir.setReturnValue(false);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ru.pinkgoosik.winterly.mixin.common;

import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.LightLayer;
import net.minecraft.world.level.WorldGenLevel;
Expand All @@ -16,7 +17,6 @@
import org.spongepowered.asm.mixin.injection.Redirect;
import ru.pinkgoosik.winterly.Winterly;
import ru.pinkgoosik.winterly.block.CommonFrozenFlowerBlock;
import ru.pinkgoosik.winterly.registry.CommonWinterlyBlocks;

@Mixin(SnowAndFreezeFeature.class)
public abstract class FreezeTopLayerMixin {
Expand All @@ -29,7 +29,7 @@ boolean canSetIce(Biome biome, LevelReader view, BlockPos pos) {
if(view instanceof WorldGenLevel world) {

if (Winterly.config.generateFrozenGrass && (state.is(Blocks.SHORT_GRASS) || state.is(Blocks.FERN) || state.is(Blocks.LARGE_FERN) || state.is(Blocks.TALL_GRASS))) {
world.setBlock(pos, CommonWinterlyBlocks.FROZEN_GRASS.defaultBlockState(), 3);
world.setBlock(pos, BuiltInRegistries.BLOCK.get(Winterly.id("frozen_grass")).defaultBlockState(), 3);
BlockState floor = world.getBlockState(pos.below());
if (floor.hasProperty(SnowyDirtBlock.SNOWY)) {
world.setBlock(pos.below(), floor.setValue(SnowyDirtBlock.SNOWY, Boolean.TRUE), 2);
Expand All @@ -40,7 +40,7 @@ boolean canSetIce(Biome biome, LevelReader view, BlockPos pos) {
return false;
}
else if(Winterly.config.generateFrozenFlowers && (state.getBlock() instanceof FlowerBlock || state.getBlock() instanceof TallFlowerBlock)) {
world.setBlock(pos, CommonWinterlyBlocks.FROZEN_FLOWER.defaultBlockState().setValue(CommonFrozenFlowerBlock.LAYERS, 1), 3);
world.setBlock(pos, BuiltInRegistries.BLOCK.get(Winterly.id("frozen_flower")).defaultBlockState().setValue(CommonFrozenFlowerBlock.LAYERS, 1), 3);
BlockState floor = world.getBlockState(pos.below());
if (floor.hasProperty(SnowyDirtBlock.SNOWY)) {
world.setBlock(pos.below(), floor.setValue(SnowyDirtBlock.SNOWY, Boolean.TRUE), 2);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ru.pinkgoosik.winterly.mixin.common;

import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
Expand All @@ -15,7 +16,6 @@
import ru.pinkgoosik.winterly.Winterly;
import ru.pinkgoosik.winterly.block.CommonFrozenFlowerBlock;
import ru.pinkgoosik.winterly.data.CachedFlowers;
import ru.pinkgoosik.winterly.registry.CommonWinterlyBlocks;

@Mixin(ServerLevel.class)
public abstract class ServerWorldMixin {
Expand All @@ -27,11 +27,11 @@ boolean canSetSnow(Biome biome, LevelReader view, BlockPos pos) {
BlockState state = view.getBlockState(pos);
if(view instanceof Level world) {
if (state.is(Blocks.SHORT_GRASS) && Winterly.config.generateFrozenGrass) {
world.setBlockAndUpdate(pos, CommonWinterlyBlocks.FROZEN_GRASS.defaultBlockState());
world.setBlockAndUpdate(pos, BuiltInRegistries.BLOCK.get(Winterly.id("frozen_grass")).defaultBlockState());
return false;
}
else if(state.getBlock() instanceof FlowerBlock && Winterly.config.generateFrozenFlowers) {
world.setBlockAndUpdate(pos, CommonWinterlyBlocks.FROZEN_FLOWER.defaultBlockState().setValue(CommonFrozenFlowerBlock.LAYERS, 1));
world.setBlockAndUpdate(pos, BuiltInRegistries.BLOCK.get(Winterly.id("frozen_flower")).defaultBlockState().setValue(CommonFrozenFlowerBlock.LAYERS, 1));
CachedFlowers.cacheFlower(((Level) view), pos, state.getBlock());
return false;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,15 @@
import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.network.syncher.SynchedEntityData;
import net.minecraft.world.DifficultyInstance;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobSpawnType;
import net.minecraft.world.entity.SpawnGroupData;
import net.minecraft.world.entity.monster.AbstractSkeleton;
import net.minecraft.world.entity.monster.Skeleton;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.ServerLevelAccessor;
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.CallbackInfo;
import ru.pinkgoosik.winterly.Winterly;
import ru.pinkgoosik.winterly.extension.DecoratedMob;
import ru.pinkgoosik.winterly.util.HolidayUtils;

@Mixin(Skeleton.class)
public abstract class SkeletonExtension extends AbstractSkeleton implements DecoratedMob {
Expand All @@ -31,7 +24,7 @@ protected SkeletonExtension(EntityType<? extends AbstractSkeleton> entityType, L
}

@Override
public boolean winterly$decorated() {
public boolean winterly$isDecorated() {
return getEntityData().get(winterly$DECORATED);
}

Expand All @@ -40,7 +33,13 @@ protected SkeletonExtension(EntityType<? extends AbstractSkeleton> entityType, L
return getEntityData().get(winterly$INDEX);
}

@Inject(method = "defineSynchedData", at = @At("TAIL"))
@Override
public void winterly$setDecoration(int index) {
getEntityData().set(winterly$DECORATED, true);
getEntityData().set(winterly$INDEX, index);
}

@Inject(method = "defineSynchedData", at = @At("TAIL"))
void initData(SynchedEntityData.Builder builder, CallbackInfo ci) {
builder.define(winterly$DECORATED, false);
builder.define(winterly$INDEX, 0);
Expand All @@ -58,23 +57,4 @@ void read(CompoundTag nbt, CallbackInfo ci) {
getEntityData().set(winterly$INDEX, nbt.getInt("WinterlyIndex"));
}

@Nullable
@Override
public SpawnGroupData finalizeSpawn(ServerLevelAccessor level, DifficultyInstance difficulty, MobSpawnType spawnType, @Nullable SpawnGroupData spawnGroupData) {
spawnGroupData = super.finalizeSpawn(level, difficulty, spawnType, spawnGroupData);

if(!spawnType.equals(MobSpawnType.SPAWNER) && !spawnType.equals(MobSpawnType.CHUNK_GENERATION)) {
if(Winterly.config.mobDecorations.enabled && HolidayUtils.isWinterHolidays() || !Winterly.config.mobDecorations.onlyInWinter) {
if(!this.level().dimension().equals(Level.NETHER)) {
int chance = Winterly.config.mobDecorations.chance;
if(chance > 0 && Math.random() < (double)chance / 100) {
getEntityData().set(winterly$DECORATED, true);
getEntityData().set(winterly$INDEX, level.getRandom().nextInt(5));
}
}
}
}
return spawnGroupData;
}

}
Loading

0 comments on commit 403620c

Please sign in to comment.