Update copyright, code cleanup, and default world type option
This commit is contained in:
parent
689486ff49
commit
0346a29ed4
|
|
@ -3,6 +3,7 @@
|
|||
- Added `by_hand_only` boolean field to Sieve recipes, which allows modpack makers to add sieve drops that don't drop from the Mechanical Sieve.
|
||||
- Added JEI information telling the player that meshes can be enchanted with Fortune and Efficiency.
|
||||
- Fixed minor rendering bug with infested leaves and Ars Nouveau leaves not rotating properly.
|
||||
- Fixed bugged config option to disable Void World by default. Now, instead of being two options in the client and server configs, there is one option in the common config file that controls default world type both on the create world screen and in server.properties.
|
||||
- Optimized syncing block entity visual updates from the server to the client.
|
||||
|
||||
## Ex Deorum 1.13
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -19,9 +19,16 @@
|
|||
package thedarkcolour.exdeorum.asm;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.world.level.levelgen.presets.WorldPreset;
|
||||
import net.minecraft.world.level.levelgen.presets.WorldPresets;
|
||||
import net.minecraft.world.level.levelgen.structure.Structure;
|
||||
import thedarkcolour.exdeorum.config.EConfig;
|
||||
import thedarkcolour.exdeorum.registry.EWorldPresets;
|
||||
import thedarkcolour.exdeorum.voidworld.VoidChunkGenerator;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public final class ASMHooks {
|
||||
/**
|
||||
|
|
@ -38,7 +45,7 @@ public final class ASMHooks {
|
|||
|
||||
/**
|
||||
* Called in {@link net.minecraft.world.level.dimension.end.EndDragonFight#spawnExitPortal(boolean)}
|
||||
* right before EndPodiumFeature.place is called to fix End Portal not spawning fully,
|
||||
* right before {@code EndPodiumFeature.place} is called to fix End Portal not spawning fully,
|
||||
* with part of it being generated outside the world in the void.
|
||||
*/
|
||||
public static BlockPos prePlaceEndPodium(BlockPos pos) {
|
||||
|
|
@ -48,4 +55,12 @@ public final class ASMHooks {
|
|||
return pos.immutable();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called in {@link net.minecraft.server.dedicated.DedicatedServerProperties#DedicatedServerProperties(Properties)}
|
||||
* where {@code WorldPresets.NORMAL} is used in the line that looks like {@code WorldPresets.NORMAL.location().toString()}
|
||||
*/
|
||||
public static ResourceKey<WorldPreset> overrideDefaultWorldPreset() {
|
||||
return EConfig.COMMON.setVoidWorldAsDefault.get() ? EWorldPresets.VOID_WORLD : WorldPresets.NORMAL;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
21
src/main/java/thedarkcolour/exdeorum/asm/package-info.java
Normal file
21
src/main/java/thedarkcolour/exdeorum/asm/package-info.java
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@net.minecraft.MethodsReturnNonnullByDefault
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package thedarkcolour.exdeorum.asm;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -51,6 +51,7 @@ public abstract class AbstractCrucibleBlock extends EBlock {
|
|||
return 0;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Nullable
|
||||
@Override
|
||||
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState pState, BlockEntityType<T> type) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -19,18 +19,13 @@
|
|||
package thedarkcolour.exdeorum.block;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.EntityBlock;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityTicker;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.phys.BlockHitResult;
|
||||
import net.minecraft.world.phys.shapes.BooleanOp;
|
||||
import net.minecraft.world.phys.shapes.CollisionContext;
|
||||
import net.minecraft.world.phys.shapes.Shapes;
|
||||
|
|
@ -38,7 +33,6 @@ import net.minecraft.world.phys.shapes.VoxelShape;
|
|||
import org.jetbrains.annotations.Nullable;
|
||||
import thedarkcolour.exdeorum.blockentity.BarrelBlockEntity;
|
||||
import thedarkcolour.exdeorum.registry.EBlockEntities;
|
||||
import thedarkcolour.exdeorum.registry.EBlocks;
|
||||
|
||||
public class BarrelBlock extends EBlock {
|
||||
public static final VoxelShape SHAPE = Shapes.join(
|
||||
|
|
@ -51,6 +45,7 @@ public class BarrelBlock extends EBlock {
|
|||
super(properties, EBlockEntities.BARREL);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Nullable
|
||||
@Override
|
||||
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState pState, BlockEntityType<T> type) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -45,7 +45,7 @@ public abstract class EBlock extends Block implements EntityBlock {
|
|||
|
||||
@Override
|
||||
public BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
|
||||
return blockEntityType.get().create(pos, state);
|
||||
return this.blockEntityType.get().create(pos, state);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -19,7 +19,6 @@
|
|||
package thedarkcolour.exdeorum.block;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.util.RandomSource;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
|
@ -37,7 +36,6 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||
import net.minecraft.world.phys.HitResult;
|
||||
import net.minecraftforge.fml.loading.FMLEnvironment;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import thedarkcolour.exdeorum.blockentity.InfestedLeavesBlockEntity;
|
||||
import thedarkcolour.exdeorum.client.RenderUtil;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ public class MechanicalSieveBlock extends EBlock {
|
|||
return SHAPE;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Nullable
|
||||
@Override
|
||||
public <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState pState, BlockEntityType<T> type) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -36,6 +36,7 @@ import net.minecraft.world.level.ServerLevelAccessor;
|
|||
import net.minecraft.world.level.block.LiquidBlock;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.material.FlowingFluid;
|
||||
import net.minecraftforge.event.ForgeEventFactory;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import thedarkcolour.exdeorum.config.EConfig;
|
||||
|
||||
|
|
@ -114,7 +115,6 @@ public class WitchWaterBlock extends LiquidBlock {
|
|||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Nullable
|
||||
private static <T extends Mob> T attemptToConvertEntity(Level level, Entity entity, EntityType<T> newType) {
|
||||
if (level.getDifficulty() != Difficulty.PEACEFUL && entity instanceof LivingEntity) {
|
||||
|
|
@ -123,7 +123,7 @@ public class WitchWaterBlock extends LiquidBlock {
|
|||
if (newEntity != null) {
|
||||
var serverLevel = (ServerLevelAccessor) level;
|
||||
newEntity.copyPosition(entity);
|
||||
newEntity.finalizeSpawn(serverLevel, level.getCurrentDifficultyAt(entity.blockPosition()), MobSpawnType.CONVERSION, null, null);
|
||||
ForgeEventFactory.onFinalizeSpawn(newEntity, serverLevel, level.getCurrentDifficultyAt(entity.blockPosition()), MobSpawnType.CONVERSION, null, null);
|
||||
newEntity.setNoAi(newEntity.isNoAi());
|
||||
|
||||
if (entity.hasCustomName()) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -81,16 +81,16 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
super(EBlockEntities.BARREL.get(), pos, state);
|
||||
}
|
||||
|
||||
private final LazyOptional<IItemHandler> itemHandler = LazyOptional.of(() -> item);
|
||||
private final LazyOptional<IFluidHandler> fluidHandler = LazyOptional.of(() -> tank);
|
||||
private final LazyOptional<IItemHandler> itemHandler = LazyOptional.of(() -> this.item);
|
||||
private final LazyOptional<IFluidHandler> fluidHandler = LazyOptional.of(() -> this.tank);
|
||||
|
||||
@Nonnull
|
||||
@Override
|
||||
public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) {
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER) {
|
||||
return fluidHandler.cast();
|
||||
return this.fluidHandler.cast();
|
||||
} else if (cap == ForgeCapabilities.ITEM_HANDLER) {
|
||||
return itemHandler.cast();
|
||||
return this.itemHandler.cast();
|
||||
}
|
||||
|
||||
return super.getCapability(cap, side);
|
||||
|
|
@ -107,13 +107,13 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
public void saveAdditional(CompoundTag nbt) {
|
||||
super.saveAdditional(nbt);
|
||||
|
||||
nbt.put("item", item.serializeNBT());
|
||||
nbt.put("tank", tank.writeToNBT(new CompoundTag()));
|
||||
nbt.putShort("compost", compost);
|
||||
nbt.putFloat("progress", progress);
|
||||
nbt.putShort("r", r);
|
||||
nbt.putShort("g", g);
|
||||
nbt.putShort("b", b);
|
||||
nbt.put("item", this.item.serializeNBT());
|
||||
nbt.put("tank", this.tank.writeToNBT(new CompoundTag()));
|
||||
nbt.putShort("compost", this.compost);
|
||||
nbt.putFloat("progress", this.progress);
|
||||
nbt.putShort("r", this.r);
|
||||
nbt.putShort("g", this.g);
|
||||
nbt.putShort("b", this.b);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -130,25 +130,25 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
}
|
||||
|
||||
public boolean isBrewing() {
|
||||
return tank.getFluidAmount() == 1000 && progress != 0.0f && !isBurning();
|
||||
return this.tank.getFluidAmount() == 1000 && this.progress != 0.0f && !isBurning();
|
||||
}
|
||||
|
||||
public boolean isBurning() {
|
||||
return isHotFluid(tank.getFluid().getFluid().getFluidType()) && progress != 0.0f;
|
||||
return isHotFluid(this.tank.getFluid().getFluid().getFluidType()) && this.progress != 0.0f;
|
||||
}
|
||||
|
||||
// Composting is in progress if at 1000. When finished, compost is set back to 0
|
||||
public boolean isComposting() {
|
||||
return compost == 1000;
|
||||
return this.compost == 1000;
|
||||
}
|
||||
|
||||
// Returns true if there are no solid ingredients (can a fluid be inserted?)
|
||||
public boolean hasNoSolids() {
|
||||
return compost <= 0 && item.getStackInSlot(0).isEmpty();
|
||||
return this.compost <= 0 && this.item.getStackInSlot(0).isEmpty();
|
||||
}
|
||||
|
||||
public boolean hasFullWater() {
|
||||
return tank.getFluidAmount() == 1000 && tank.getFluid().getFluid().is(FluidTags.WATER);
|
||||
return this.tank.getFluidAmount() == 1000 && this.tank.getFluid().getFluid().is(FluidTags.WATER);
|
||||
}
|
||||
|
||||
// Burning temp of wood according to google is 300 C or ~575 kelvin
|
||||
|
|
@ -160,18 +160,18 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
private void spawnParticlesIfBurning() {
|
||||
if (isBurning()) {
|
||||
BlockPos pos = getBlockPos();
|
||||
int burnTicks = (int) (progress * 300);
|
||||
int burnTicks = (int) (this.progress * 300);
|
||||
|
||||
if (burnTicks % 30 == 0) {
|
||||
level.addParticle(ParticleTypes.LARGE_SMOKE, pos.getX() + Math.random(), pos.getY() + 1.2, pos.getZ() + Math.random(), 0.0, 0.0, 0.0);
|
||||
this.level.addParticle(ParticleTypes.LARGE_SMOKE, pos.getX() + Math.random(), pos.getY() + 1.2, pos.getZ() + Math.random(), 0.0, 0.0, 0.0);
|
||||
} else if (burnTicks % 5 == 0) {
|
||||
level.addParticle(ParticleTypes.SMOKE, pos.getX() + Math.random(), pos.getY() + 1.2, pos.getZ() + Math.random(), 0.0, 0.0, 0.0);
|
||||
this.level.addParticle(ParticleTypes.SMOKE, pos.getX() + Math.random(), pos.getY() + 1.2, pos.getZ() + Math.random(), 0.0, 0.0, 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ItemStack getItem() {
|
||||
return item.getStackInSlot(0);
|
||||
return this.item.getStackInSlot(0);
|
||||
}
|
||||
|
||||
private void setItem(ItemStack item) {
|
||||
|
|
@ -200,8 +200,8 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
tryInWorldFluidMixing();
|
||||
|
||||
// If the item is a fluid handler, try to transfer fluids
|
||||
if (wasBurning && !isHotFluid(tank.getFluid().getFluid().getFluidType())) {
|
||||
progress = 0.0f;
|
||||
if (wasBurning && !isHotFluid(this.tank.getFluid().getFluid().getFluidType())) {
|
||||
this.progress = 0.0f;
|
||||
}
|
||||
|
||||
return InteractionResult.sidedSuccess(level.isClientSide);
|
||||
|
|
@ -213,19 +213,19 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
var fluid = new FluidStack(Fluids.WATER, 250);
|
||||
|
||||
if (playerItem.getItem() == Items.POTION && PotionUtils.getPotion(playerItem) == Potions.WATER) {
|
||||
if (tank.fill(fluid, IFluidHandler.FluidAction.SIMULATE) > 0) {
|
||||
if (this.tank.fill(fluid, IFluidHandler.FluidAction.SIMULATE) > 0) {
|
||||
if (!player.getAbilities().instabuild) {
|
||||
player.setItemInHand(hand, new ItemStack(Items.GLASS_BOTTLE));
|
||||
}
|
||||
tank.fill(fluid, IFluidHandler.FluidAction.EXECUTE);
|
||||
this.tank.fill(fluid, IFluidHandler.FluidAction.EXECUTE);
|
||||
level.playSound(null, player.getX(), player.getY(), player.getZ(), SoundEvents.BOTTLE_FILL, SoundSource.NEUTRAL, 1.0F, 1.0F);
|
||||
|
||||
markUpdated();
|
||||
return InteractionResult.sidedSuccess(level.isClientSide);
|
||||
}
|
||||
} else if (playerItem.getItem() == Items.GLASS_BOTTLE) {
|
||||
if (tank.drain(fluid, IFluidHandler.FluidAction.SIMULATE).getAmount() == 250) {
|
||||
extractWaterBottle(tank, level, player, playerItem, fluid);
|
||||
if (this.tank.drain(fluid, IFluidHandler.FluidAction.SIMULATE).getAmount() == 250) {
|
||||
extractWaterBottle(this.tank, level, player, playerItem, fluid);
|
||||
|
||||
markUpdated();
|
||||
return InteractionResult.sidedSuccess(level.isClientSide);
|
||||
|
|
@ -238,7 +238,7 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
if (itemFluidCap.isPresent()) {
|
||||
var fluidInTank = itemFluidCap.get().getFluidInTank(0);
|
||||
|
||||
if (tank.getFluidAmount() >= 1000) {
|
||||
if (this.tank.getFluidAmount() >= 1000) {
|
||||
if (!level.isClientSide) {
|
||||
tryFluidMixing(fluidInTank.getFluid());
|
||||
}
|
||||
|
|
@ -253,7 +253,7 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
var playerItem = player.getItemInHand(hand);
|
||||
if (!level.isClientSide) {
|
||||
// mix item ingredient into fluid OR turn into compost (delegated to item handler)
|
||||
var handItem = item.insertItem(0, player.getAbilities().instabuild ? playerItem.copy() : playerItem, false);
|
||||
var handItem = this.item.insertItem(0, player.getAbilities().instabuild ? playerItem.copy() : playerItem, false);
|
||||
|
||||
if (!player.getAbilities().instabuild) {
|
||||
player.setItemInHand(hand, handItem);
|
||||
|
|
@ -280,7 +280,7 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
// Pops the item out of the barrel (ex. dirt that has finished composting)
|
||||
private InteractionResult giveResultItem(Level level) {
|
||||
if (!level.isClientSide) {
|
||||
popOutItem(level, this.worldPosition, item.extract(false));
|
||||
popOutItem(level, this.worldPosition, this.item.extract(false));
|
||||
|
||||
// Empty contents
|
||||
setItem(ItemStack.EMPTY);
|
||||
|
|
@ -306,7 +306,7 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
*/
|
||||
private boolean tryCrafting(ItemStack input, boolean simulate) {
|
||||
boolean crafted = false;
|
||||
if (!tank.isEmpty()) {
|
||||
if (!this.tank.isEmpty()) {
|
||||
crafted = tryMixing(input, simulate);
|
||||
} else if (!isComposting()) {
|
||||
crafted = tryComposting(input, simulate);
|
||||
|
|
@ -332,15 +332,15 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
return false;
|
||||
}
|
||||
|
||||
var recipe = RecipeUtil.getBarrelMixingRecipe(level.getRecipeManager(), playerItem, this.tank.getFluid());
|
||||
var recipe = RecipeUtil.getBarrelMixingRecipe(this.level.getRecipeManager(), playerItem, this.tank.getFluid());
|
||||
|
||||
if (recipe != null) {
|
||||
if (!simulate) {
|
||||
// Empty barrel
|
||||
tank.drain(recipe.fluidAmount, IFluidHandler.FluidAction.EXECUTE);
|
||||
this.tank.drain(recipe.fluidAmount, IFluidHandler.FluidAction.EXECUTE);
|
||||
// Replace fluid with result
|
||||
setItem(new ItemStack(recipe.result));
|
||||
level.playSound(null, worldPosition, SoundEvents.AMBIENT_UNDERWATER_EXIT, SoundSource.BLOCKS, 0.8f, 0.8f);
|
||||
this.level.playSound(null, this.worldPosition, SoundEvents.AMBIENT_UNDERWATER_EXIT, SoundSource.BLOCKS, 0.8f, 0.8f);
|
||||
}
|
||||
// Mixing was successful, so return true
|
||||
return true;
|
||||
|
|
@ -364,24 +364,24 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
}
|
||||
|
||||
private void addCompost(ItemStack playerItem, int volume) {
|
||||
int oldCompost = compost;
|
||||
compost = (short) Math.min(1000, compost + volume);
|
||||
int oldCompost = this.compost;
|
||||
this.compost = (short) Math.min(1000, this.compost + volume);
|
||||
|
||||
if (compost != 0) {
|
||||
if (this.compost != 0) {
|
||||
if (!CompostColors.isLoaded()) {
|
||||
CompostColors.loadColors();
|
||||
}
|
||||
|
||||
float weightNew = (float) (compost - oldCompost) / compost;
|
||||
float weightNew = (float) (this.compost - oldCompost) / this.compost;
|
||||
float weightOld = 1 - weightNew;
|
||||
var color = CompostColors.COLORS.getOrDefault(playerItem.getItem(), CompostColors.DEFAULT_COLOR);
|
||||
|
||||
r = (short) (weightNew * color.x + weightOld * r);
|
||||
g = (short) (weightNew * color.y + weightOld * g);
|
||||
b = (short) (weightNew * color.z + weightOld * b);
|
||||
this.r = (short) (weightNew * color.x + weightOld * this.r);
|
||||
this.g = (short) (weightNew * color.y + weightOld * this.g);
|
||||
this.b = (short) (weightNew * color.z + weightOld * this.b);
|
||||
}
|
||||
|
||||
level.playSound(null, worldPosition, SoundEvents.COMPOSTER_FILL, SoundSource.BLOCKS);
|
||||
this.level.playSound(null, this.worldPosition, SoundEvents.COMPOSTER_FILL, SoundSource.BLOCKS);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -391,8 +391,8 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
* <li> When the fluid in the barrel changes (see {@link FluidHandler#onContentsChanged()}) </li>
|
||||
*/
|
||||
public void tryInWorldFluidMixing() {
|
||||
if (!tank.isEmpty() && item.getStackInSlot(0).isEmpty()) {
|
||||
var aboveFluid = level.getBlockState(worldPosition.above()).getFluidState().getType();
|
||||
if (!this.tank.isEmpty() && this.item.getStackInSlot(0).isEmpty()) {
|
||||
var aboveFluid = this.level.getBlockState(this.worldPosition.above()).getFluidState().getType();
|
||||
|
||||
if (aboveFluid != Fluids.EMPTY) {
|
||||
tryFluidMixing(aboveFluid);
|
||||
|
|
@ -401,10 +401,10 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
}
|
||||
|
||||
private void tryFluidMixing(Fluid additive) {
|
||||
BarrelFluidMixingRecipe recipe = RecipeUtil.getFluidMixingRecipe(tank.getFluid(), additive);
|
||||
BarrelFluidMixingRecipe recipe = RecipeUtil.getFluidMixingRecipe(this.tank.getFluid(), additive);
|
||||
|
||||
if (recipe != null) {
|
||||
tank.drain(recipe.baseFluidAmount, IFluidHandler.FluidAction.EXECUTE);
|
||||
this.tank.drain(recipe.baseFluidAmount, IFluidHandler.FluidAction.EXECUTE);
|
||||
setItem(new ItemStack(recipe.result));
|
||||
}
|
||||
}
|
||||
|
|
@ -494,14 +494,14 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
}
|
||||
|
||||
private void doCompost() {
|
||||
progress += getProgressStep();
|
||||
this.progress += getProgressStep();
|
||||
markUpdated();
|
||||
|
||||
if (progress >= 1.0f) {
|
||||
progress = 0.0f;
|
||||
compost = 0;
|
||||
if (this.progress >= 1.0f) {
|
||||
this.progress = 0.0f;
|
||||
this.compost = 0;
|
||||
setItem(new ItemStack(Items.DIRT));
|
||||
level.playSound(null, worldPosition, SoundEvents.COMPOSTER_READY, SoundSource.BLOCKS);
|
||||
this.level.playSound(null, this.worldPosition, SoundEvents.COMPOSTER_READY, SoundSource.BLOCKS);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -531,14 +531,14 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
if (stack.isEmpty())
|
||||
return ItemStack.EMPTY;
|
||||
validateSlotIndex(slot);
|
||||
if (!stacks.get(slot).isEmpty())
|
||||
if (!this.stacks.get(slot).isEmpty())
|
||||
return stack;
|
||||
|
||||
if (tryCrafting(stack, simulate)) {
|
||||
if (stack.getCount() == 1) {
|
||||
return getRemainderItem(stack);
|
||||
} else {
|
||||
popOutItem(level, worldPosition, getRemainderItem(stack));
|
||||
popOutItem(BarrelBlockEntity.this.level, BarrelBlockEntity.this.worldPosition, getRemainderItem(stack));
|
||||
return ItemHandlerHelper.copyStackWithSize(stack, stack.getCount() - 1);
|
||||
}
|
||||
} else {
|
||||
|
|
@ -558,7 +558,7 @@ public class BarrelBlockEntity extends EBlockEntity {
|
|||
|
||||
@Override
|
||||
protected void onContentsChanged(int slot) {
|
||||
if (!level.isClientSide) {
|
||||
if (!BarrelBlockEntity.this.level.isClientSide) {
|
||||
markUpdated();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -93,7 +93,7 @@ public class LavaCrucibleBlockEntity extends AbstractCrucibleBlockEntity {
|
|||
|
||||
@Override
|
||||
public int getMeltingRate() {
|
||||
BlockState state = level.getBlockState(getBlockPos().below());
|
||||
BlockState state = this.level.getBlockState(getBlockPos().below());
|
||||
|
||||
return HEAT_REGISTRY.getInt(state);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@net.minecraft.MethodsReturnNonnullByDefault
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package thedarkcolour.exdeorum.blockentity.helper;
|
||||
|
|
@ -199,21 +199,6 @@ public class SieveLogic {
|
|||
this.progress = progress;
|
||||
}
|
||||
|
||||
public CompoundTag writeUpdateTag() {
|
||||
var tag = new CompoundTag();
|
||||
tag.putBoolean("logic", true);
|
||||
tag.putFloat("progress", this.progress);
|
||||
tag.put("mesh", this.mesh.serializeNBT());
|
||||
tag.put("contents", this.contents.serializeNBT());
|
||||
return tag;
|
||||
}
|
||||
|
||||
public void readUpdateTag(CompoundTag nbt) {
|
||||
this.progress = nbt.getFloat("progress");
|
||||
this.mesh = nbt.contains("mesh") ? ItemStack.of(nbt.getCompound("mesh")) : ItemStack.EMPTY;
|
||||
this.contents = nbt.contains("contents") ? ItemStack.of(nbt.getCompound("contents")) : ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
// implement on the owner of this sieve logic
|
||||
public interface Owner {
|
||||
ServerLevel getServerLevel();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@net.minecraft.MethodsReturnNonnullByDefault
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package thedarkcolour.exdeorum.blockentity.logic;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -58,7 +58,6 @@ import thedarkcolour.exdeorum.registry.EMenus;
|
|||
import thedarkcolour.exdeorum.registry.EWorldPresets;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
public class ClientHandler {
|
||||
// Used for the composting recipe category in JEI
|
||||
|
|
@ -152,7 +151,7 @@ public class ClientHandler {
|
|||
|
||||
// Sets Ex Deorum world type as default
|
||||
private static void onScreenOpen(ScreenEvent.Opening event) {
|
||||
if (EConfig.CLIENT.setVoidWorldAsDefault.get()) {
|
||||
if (EConfig.CLIENT.setVoidWorldAsDefault.get() && EConfig.COMMON.setVoidWorldAsDefault.get()) {
|
||||
if (event.getNewScreen() instanceof CreateWorldScreen screen) {
|
||||
var ctx = screen.getUiState().getSettings();
|
||||
screen.getUiState().setWorldType(new WorldCreationUiState.WorldTypeEntry(ctx.worldgenLoadContext().registryOrThrow(Registries.WORLD_PRESET).getHolder(EWorldPresets.VOID_WORLD).orElse(null)));
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@
|
|||
|
||||
package thedarkcolour.exdeorum.client.screen;
|
||||
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -29,8 +29,6 @@ import net.minecraft.resources.ResourceLocation;
|
|||
import net.minecraft.util.Mth;
|
||||
import net.minecraft.world.inventory.InventoryMenu;
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import thedarkcolour.exdeorum.ExDeorum;
|
||||
|
|
@ -58,7 +56,7 @@ public class BarrelRenderer implements BlockEntityRenderer<BarrelBlockEntity> {
|
|||
stack.translate(2 / 16f, 2 / 16f, 2 / 16f);
|
||||
stack.scale(12 / 16f, 12 / 16f, 12 / 16f);
|
||||
|
||||
blockRenderer.renderSingleBlock(state, stack, buffers, light, overlay, ModelData.EMPTY, null);
|
||||
this.blockRenderer.renderSingleBlock(state, stack, buffers, light, overlay, ModelData.EMPTY, null);
|
||||
|
||||
stack.popPose();
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -24,7 +24,6 @@ import net.minecraft.client.renderer.MultiBufferSource;
|
|||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraftforge.client.model.data.ModelData;
|
||||
import thedarkcolour.exdeorum.ExDeorum;
|
||||
import thedarkcolour.exdeorum.blockentity.InfestedLeavesBlockEntity;
|
||||
import thedarkcolour.exdeorum.client.RenderUtil;
|
||||
import thedarkcolour.exdeorum.config.EConfig;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@net.minecraft.MethodsReturnNonnullByDefault
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package thedarkcolour.exdeorum.client.ter;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -24,7 +24,6 @@ public class ModIds {
|
|||
public static final String TINKERS_CONSTRUCT = "tconstruct";
|
||||
public static final String ALL_THE_ORES = "alltheores";
|
||||
public static final String THERMAL = "thermal";
|
||||
public static final String CHEM_LIB = "chemlib";
|
||||
public static final String OCCULTISM = "occultism";
|
||||
public static final String RAILCRAFT = "railcraft";
|
||||
public static final String GREG = "gtceu";
|
||||
|
|
@ -36,7 +35,6 @@ public class ModIds {
|
|||
public static final String BIOMES_O_PLENTY = "biomesoplenty";
|
||||
public static final String APPLIED_ENERGISTICS_2 = "ae2";
|
||||
public static final String ARS_NOUVEAU = "ars_nouveau";
|
||||
public static final String MODEST_FLINT_OVERHAUL = "modestflintoverhaul";
|
||||
public static final String FACTORIUM = "factorium";
|
||||
public static final String AETHER = "aether";
|
||||
public static final String BLUE_SKIES = "blue_skies";
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -72,11 +72,11 @@ public abstract class BarrelMixingCategory<T> implements IRecipeCategory<T> {
|
|||
|
||||
@Override
|
||||
public void draw(T recipe, IRecipeSlotsView recipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) {
|
||||
slot.draw(graphics);
|
||||
plus.draw(graphics, 21, 5);
|
||||
slot.draw(graphics, 18 + 3 + 3 + 8, 0);
|
||||
arrow.draw(graphics, 53, 1);
|
||||
slot.draw(graphics, 78, 0);
|
||||
this.slot.draw(graphics);
|
||||
this.plus.draw(graphics, 21, 5);
|
||||
this.slot.draw(graphics, 18 + 3 + 3 + 8, 0);
|
||||
this.arrow.draw(graphics, 53, 1);
|
||||
this.slot.draw(graphics, 78, 0);
|
||||
}
|
||||
|
||||
public static class Items extends BarrelMixingCategory<BarrelMixingRecipe> {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -24,8 +24,6 @@ import com.mojang.blaze3d.vertex.BufferBuilder;
|
|||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import com.mojang.blaze3d.vertex.Tesselator;
|
||||
import com.mojang.math.Axis;
|
||||
import mezz.jei.api.gui.ingredient.IRecipeSlotTooltipCallback;
|
||||
import mezz.jei.api.gui.ingredient.IRecipeSlotView;
|
||||
import mezz.jei.api.ingredients.IIngredientRenderer;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.CrashReport;
|
||||
|
|
@ -66,8 +64,6 @@ class ClientJeiUtil {
|
|||
private static final FluidState EMPTY = Fluids.EMPTY.defaultFluidState();
|
||||
private static final BlockState AIR = Blocks.AIR.defaultBlockState();
|
||||
|
||||
private static final IIngredientRenderer<ItemStack> ASTERISK_RENDERER = AsteriskRenderer.INSTANCE;
|
||||
|
||||
// https://github.com/way2muchnoise/JustEnoughResources/blob/89ee40ff068c8d6eb6ab103f76381445691cffc9/Common/src/main/java/jeresources/util/RenderHelper.java#L100
|
||||
static void renderBlock(GuiGraphics guiGraphics, BlockState block, float x, float y, float z, float scale) {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -38,20 +38,20 @@ final class CrucibleHeatSourceRecipe {
|
|||
}
|
||||
|
||||
public int meltRate() {
|
||||
return meltRate;
|
||||
return this.meltRate;
|
||||
}
|
||||
|
||||
public BlockState blockState() {
|
||||
return blockState;
|
||||
return this.blockState;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public IIngredientType<Object> ingredientType() {
|
||||
return ingredientType;
|
||||
return this.ingredientType;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Object ingredient() {
|
||||
return ingredient;
|
||||
return this.ingredient;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -23,10 +23,8 @@ import mezz.jei.api.constants.VanillaTypes;
|
|||
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
|
||||
import mezz.jei.api.gui.drawable.IDrawable;
|
||||
import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
|
||||
import mezz.jei.api.helpers.IGuiHelper;
|
||||
import mezz.jei.api.helpers.IJeiHelpers;
|
||||
import mezz.jei.api.helpers.IModIdHelper;
|
||||
import mezz.jei.api.ingredients.IIngredientType;
|
||||
import mezz.jei.api.recipe.IFocusFactory;
|
||||
import mezz.jei.api.recipe.IFocusGroup;
|
||||
import mezz.jei.api.recipe.RecipeIngredientRole;
|
||||
|
|
@ -34,14 +32,11 @@ import mezz.jei.api.recipe.RecipeType;
|
|||
import mezz.jei.api.recipe.category.IRecipeCategory;
|
||||
import mezz.jei.api.runtime.IIngredientManager;
|
||||
import mezz.jei.api.runtime.IRecipesGui;
|
||||
import net.minecraft.ChatFormatting;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiGraphics;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.TooltipFlag;
|
||||
import net.minecraftforge.fml.ModContainer;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import thedarkcolour.exdeorum.data.TranslationKeys;
|
||||
import thedarkcolour.exdeorum.registry.EItems;
|
||||
|
|
@ -115,13 +110,13 @@ class CrucibleHeatSourcesCategory implements IRecipeCategory<CrucibleHeatSourceR
|
|||
public List<Component> getTooltipStrings(CrucibleHeatSourceRecipe recipe, IRecipeSlotsView recipeSlotsView, double mouseX, double mouseY) {
|
||||
if (44.0 < mouseX && mouseX < 76.0 && 16 < mouseY && mouseY < 48) {
|
||||
if (recipe.ingredientType() != null) {
|
||||
var tooltip = ingredientManager.getIngredientRenderer(recipe.ingredientType()).getTooltip(recipe.ingredient(), Minecraft.getInstance().options.advancedItemTooltips ? TooltipFlag.ADVANCED : TooltipFlag.NORMAL);
|
||||
return modIdHelper.addModNameToIngredientTooltip(tooltip, recipe.ingredient(), ingredientManager.getIngredientHelper(recipe.ingredientType()));
|
||||
var tooltip = this.ingredientManager.getIngredientRenderer(recipe.ingredientType()).getTooltip(recipe.ingredient(), Minecraft.getInstance().options.advancedItemTooltips ? TooltipFlag.ADVANCED : TooltipFlag.NORMAL);
|
||||
return this.modIdHelper.addModNameToIngredientTooltip(tooltip, recipe.ingredient(), this.ingredientManager.getIngredientHelper(recipe.ingredientType()));
|
||||
} else {
|
||||
|
||||
var block = recipe.blockState().getBlock();
|
||||
var modId = ForgeRegistries.BLOCKS.getKey(block).getNamespace();
|
||||
return List.of(Component.translatable(block.getDescriptionId()), Component.literal(modIdHelper.getFormattedModNameForModId(modId)));
|
||||
return List.of(Component.translatable(block.getDescriptionId()), Component.literal(this.modIdHelper.getFormattedModNameForModId(modId)));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -133,13 +128,13 @@ class CrucibleHeatSourcesCategory implements IRecipeCategory<CrucibleHeatSourceR
|
|||
if (input.getType() == InputConstants.Type.MOUSE && (input.getValue() == InputConstants.MOUSE_BUTTON_LEFT || input.getValue() == InputConstants.MOUSE_BUTTON_RIGHT)) {
|
||||
if (44.0 < mouseX && mouseX < 76.0 && 16 < mouseY && mouseY < 48) {
|
||||
if (recipe.ingredientType() != null) {
|
||||
ingredientManager.createTypedIngredient(recipe.ingredientType(), recipe.ingredient()).ifPresent(ingredient -> {
|
||||
this.ingredientManager.createTypedIngredient(recipe.ingredientType(), recipe.ingredient()).ifPresent(ingredient -> {
|
||||
if (Minecraft.getInstance().screen instanceof IRecipesGui recipesGui) {
|
||||
if (input.getValue() == InputConstants.MOUSE_BUTTON_LEFT) {
|
||||
recipesGui.show(focusFactory.createFocus(RecipeIngredientRole.OUTPUT, ingredient));
|
||||
recipesGui.show(this.focusFactory.createFocus(RecipeIngredientRole.OUTPUT, ingredient));
|
||||
} else {
|
||||
// INPUT + CATALYST
|
||||
recipesGui.show(List.of(focusFactory.createFocus(RecipeIngredientRole.CATALYST, ingredient), focusFactory.createFocus(RecipeIngredientRole.INPUT, ingredient)));
|
||||
recipesGui.show(List.of(this.focusFactory.createFocus(RecipeIngredientRole.CATALYST, ingredient), this.focusFactory.createFocus(RecipeIngredientRole.INPUT, ingredient)));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -73,8 +73,8 @@ abstract class OneToOneCategory<T> implements IRecipeCategory<T> {
|
|||
|
||||
@Override
|
||||
public void draw(T recipe, IRecipeSlotsView recipeSlotsView, GuiGraphics graphics, double mouseX, double mouseY) {
|
||||
slot.draw(graphics);
|
||||
arrow.draw(graphics, 25, 1);
|
||||
slot.draw(graphics, 54, 0);
|
||||
this.slot.draw(graphics);
|
||||
this.arrow.draw(graphics, 25, 1);
|
||||
this.slot.draw(graphics, 54, 0);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -28,6 +28,6 @@ import thedarkcolour.exdeorum.recipe.sieve.SieveRecipe;
|
|||
public record SieveMeshFilter(ReplacementMatch match) implements RecipeFilter {
|
||||
@Override
|
||||
public boolean test(RecipeKJS recipe) {
|
||||
return match instanceof ItemMatch match && recipe instanceof RecipeJS recipeJs && recipeJs.getOriginalRecipe() instanceof SieveRecipe sieveRecipe && match.contains(sieveRecipe.mesh);
|
||||
return this.match instanceof ItemMatch itemMatch && recipe instanceof RecipeJS recipeJs && recipeJs.getOriginalRecipe() instanceof SieveRecipe sieveRecipe && itemMatch.contains(sieveRecipe.mesh);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@net.minecraft.MethodsReturnNonnullByDefault
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package thedarkcolour.exdeorum.compat.kubejs;
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@net.minecraft.MethodsReturnNonnullByDefault
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package thedarkcolour.exdeorum.compat;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@net.minecraft.MethodsReturnNonnullByDefault
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package thedarkcolour.exdeorum.compat.top;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -49,7 +49,7 @@ public class EConfig {
|
|||
.comment("Whether to use a simplified renderer for infested leaves (reduces FPS lag with lots of infested trees)")
|
||||
.define("use_fast_infested_leaves", false);
|
||||
this.setVoidWorldAsDefault = builder
|
||||
.comment("Whether the Void World type is set as the default world preset in the world creation screen.")
|
||||
.comment("Whether the Void World type is set as the default world preset. (DEPRECATED - USE THE OPTION IN THE COMMON CONFIG INSTEAD)")
|
||||
.define("set_void_world_as_default", true);
|
||||
|
||||
builder.pop();
|
||||
|
|
@ -74,6 +74,7 @@ public class EConfig {
|
|||
public final ConfigValue<String> preferredLithiumOre;
|
||||
public final ConfigValue<String> preferredBoronOre;
|
||||
|
||||
public final BooleanValue setVoidWorldAsDefault;
|
||||
public final BooleanValue voidNetherGeneration;
|
||||
public final BooleanValue voidEndGeneration;
|
||||
|
||||
|
|
@ -103,6 +104,9 @@ public class EConfig {
|
|||
|
||||
builder.pop();
|
||||
|
||||
this.setVoidWorldAsDefault = builder
|
||||
.comment("Whether the Void World type is set as the default world preset in world creation screen and server.properties.")
|
||||
.define("set_void_world_as_default", true);
|
||||
this.voidNetherGeneration = builder
|
||||
.comment("If the Void World type is selected, whether the Nether world generation is overridden to a void world. Changes take effect after reopening the world.")
|
||||
.define("void_nether_generation", true);
|
||||
|
|
@ -122,7 +126,6 @@ public class EConfig {
|
|||
public final BooleanValue automatedSieves;
|
||||
public final DoubleValue barrelProgressStep;
|
||||
public final BooleanValue witchWaterNetherrackGenerator;
|
||||
public final BooleanValue setVoidWorldAsDefault;
|
||||
public final ConfigValue<String> defaultSpawnTreeFeature;
|
||||
public final BooleanValue useBiomeAppropriateTree;
|
||||
public final BooleanValue limitMossSieveDrops;
|
||||
|
|
@ -130,8 +133,6 @@ public class EConfig {
|
|||
public final BooleanValue allowWitchWaterEntityConversion;
|
||||
public final IntValue mechanicalSieveEnergyStorage;
|
||||
public final IntValue mechanicalSieveEnergyConsumption;
|
||||
//public final IntValue mechanicalHammerEnergyStorage;
|
||||
//public final IntValue mechanicalHammerEnergyConsumption;
|
||||
|
||||
public Server(ForgeConfigSpec.Builder builder) {
|
||||
builder.comment("Server configuration for Ex Deorum").push("server");
|
||||
|
|
@ -157,9 +158,6 @@ public class EConfig {
|
|||
this.witchWaterNetherrackGenerator = builder
|
||||
.comment("Whether Witch Water forms netherrack when lava flows into it, allowing for a netherrack version of a cobblestone generator.")
|
||||
.define("witch_water_netherrack_generator", true);
|
||||
this.setVoidWorldAsDefault = builder
|
||||
.comment("Whether the Void World type is used by default in the \"server.properties\" file when creating a server.")
|
||||
.define("set_void_world_as_default", true);
|
||||
this.defaultSpawnTreeFeature = builder
|
||||
.comment("The ID of the default tree feature to use when generating a spawn island (or when useBiomeAppropriateTree is true and the biome has no tree set). By default, minecraft:oak_tree_bees_005 is used.")
|
||||
.define("default_spawn_tree_feature", ModIds.MINECRAFT + ":oak_tree_bees_005");
|
||||
|
|
@ -181,12 +179,6 @@ public class EConfig {
|
|||
this.mechanicalSieveEnergyConsumption = builder
|
||||
.comment("The amount of FE/t a tick consumed by the mechanical sieve when sifting a block.")
|
||||
.defineInRange("mechanical_sieve_energy_consumption", 40, 0, Integer.MAX_VALUE);
|
||||
//this.mechanicalHammerEnergyStorage = builder
|
||||
// .comment("The maximum amount of FE the mechanical hammer can have in its energy storage.")
|
||||
// .defineInRange("mechanical_hammer_energy_storage", 40_000, 0, Integer.MAX_VALUE);
|
||||
//this.mechanicalHammerEnergyConsumption = builder
|
||||
// .comment("The amount of FE/t a tick consumed by the mechanical hammer when sifting a block.")
|
||||
// .defineInRange("mechanical_hammer_energy_consumption", 40, 0, Integer.MAX_VALUE);
|
||||
|
||||
builder.pop();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@net.minecraft.MethodsReturnNonnullByDefault
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package thedarkcolour.exdeorum.config;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -69,12 +69,12 @@ class BlockLoot extends BlockLootSubProvider {
|
|||
|
||||
@Override
|
||||
protected Iterable<Block> getKnownBlocks() {
|
||||
return added;
|
||||
return this.added;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void add(Block block, LootTable.Builder builder) {
|
||||
super.add(block, builder);
|
||||
added.add(block);
|
||||
this.added.add(block);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -18,7 +18,6 @@
|
|||
|
||||
package thedarkcolour.exdeorum.data.recipe;
|
||||
|
||||
import mcjty.theoneprobe.apiimpl.elements.ElementItemStack;
|
||||
import net.minecraft.data.recipes.FinishedRecipe;
|
||||
import net.minecraft.data.recipes.RecipeCategory;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@net.minecraft.MethodsReturnNonnullByDefault
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package thedarkcolour.exdeorum.data.recipe;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -20,9 +20,11 @@ package thedarkcolour.exdeorum.event;
|
|||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
// necessary to avoid EventBus loading LocalPlayer through its ASM transformations
|
||||
class ClientsideCode {
|
||||
@Nullable
|
||||
static Player getLocalPlayer() {
|
||||
return Minecraft.getInstance().player;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -178,7 +178,7 @@ public final class EventHandler {
|
|||
|
||||
if (FMLEnvironment.dist == Dist.CLIENT) {
|
||||
// since event code is turned into ASM, we need this to prevent ASM trying to load the LocalPlayer class
|
||||
Player player = DistExecutor.unsafeCallWhenOn(Dist.CLIENT, () -> ClientsideCode::getLocalPlayer);;
|
||||
Player player = DistExecutor.unsafeCallWhenOn(Dist.CLIENT, () -> ClientsideCode::getLocalPlayer);
|
||||
if (player == null) {
|
||||
return;
|
||||
} else {
|
||||
|
|
|
|||
21
src/main/java/thedarkcolour/exdeorum/event/package-info.java
Normal file
21
src/main/java/thedarkcolour/exdeorum/event/package-info.java
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@net.minecraft.MethodsReturnNonnullByDefault
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package thedarkcolour.exdeorum.event;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
21
src/main/java/thedarkcolour/exdeorum/fluid/package-info.java
Normal file
21
src/main/java/thedarkcolour/exdeorum/fluid/package-info.java
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@net.minecraft.MethodsReturnNonnullByDefault
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package thedarkcolour.exdeorum.fluid;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -48,7 +48,7 @@ public class CrookItem extends Item {
|
|||
|
||||
@Override
|
||||
public float getDestroySpeed(ItemStack pStack, BlockState pState) {
|
||||
return pState.is(BlockTags.LEAVES) ? speed : 1.0f;
|
||||
return pState.is(BlockTags.LEAVES) ? this.speed : 1.0f;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -28,7 +28,6 @@ import net.minecraft.world.InteractionResult;
|
|||
import net.minecraft.world.entity.EntityType;
|
||||
import net.minecraft.world.entity.LivingEntity;
|
||||
import net.minecraft.world.entity.animal.Cow;
|
||||
import net.minecraft.world.entity.animal.MushroomCow;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
|
|
@ -52,7 +51,7 @@ public class GrassSpreaderItem extends Item {
|
|||
var pos = ctx.getClickedPos();
|
||||
var player = ctx.getPlayer();
|
||||
var state = level.getBlockState(pos);
|
||||
var grass = grassState.get();
|
||||
var grass = this.grassState.get();
|
||||
|
||||
if (canSpread(state) && grass != state) {
|
||||
if (!level.isClientSide) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -159,7 +159,7 @@ public class PorcelainBucket extends Item {
|
|||
|
||||
private ItemStack getEmptySuccessItem(ItemStack stack, Player player) {
|
||||
if (!player.getAbilities().instabuild) {
|
||||
if (fluid.get() == Fluids.LAVA) {
|
||||
if (this.fluid.get() == Fluids.LAVA) {
|
||||
return ItemStack.EMPTY;
|
||||
} else {
|
||||
return new ItemStack(EItems.PORCELAIN_BUCKET.get());
|
||||
|
|
@ -224,7 +224,7 @@ public class PorcelainBucket extends Item {
|
|||
}
|
||||
|
||||
protected boolean canBlockContainFluid(Level level, BlockPos pos, BlockState state) {
|
||||
return state.getBlock() instanceof LiquidBlockContainer block && block.canPlaceLiquid(level, pos, state, fluid.get());
|
||||
return state.getBlock() instanceof LiquidBlockContainer block && block.canPlaceLiquid(level, pos, state, this.fluid.get());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -27,7 +27,6 @@ import net.minecraft.world.item.Item;
|
|||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.item.context.UseOnContext;
|
||||
import net.minecraft.world.level.block.LeavesBlock;
|
||||
import thedarkcolour.exdeorum.block.EBlock;
|
||||
import thedarkcolour.exdeorum.blockentity.InfestedLeavesBlockEntity;
|
||||
import thedarkcolour.exdeorum.registry.EBlocks;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -103,7 +103,7 @@ public class WateringCanItem extends Item {
|
|||
|
||||
@Override
|
||||
public boolean isBarVisible(ItemStack stack) {
|
||||
return renewing ? stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).map(handler -> handler.getFluidInTank(0).getAmount() < capacity).orElse(true) : true;
|
||||
return this.renewing ? stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).map(handler -> handler.getFluidInTank(0).getAmount() < this.capacity).orElse(true) : true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -114,7 +114,7 @@ public class WateringCanItem extends Item {
|
|||
@Override
|
||||
public int getBarWidth(ItemStack stack) {
|
||||
return stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).map(fluidHandler -> {
|
||||
return Math.round((float) fluidHandler.getFluidInTank(0).getAmount() * 13.0F / (float) capacity);
|
||||
return Math.round((float) fluidHandler.getFluidInTank(0).getAmount() * 13.0F / (float) this.capacity);
|
||||
}).orElse(0);
|
||||
}
|
||||
|
||||
|
|
@ -132,7 +132,7 @@ public class WateringCanItem extends Item {
|
|||
public void appendHoverText(ItemStack stack, @Nullable Level pLevel, List<Component> tooltip, TooltipFlag pIsAdvanced) {
|
||||
stack.getCapability(ForgeCapabilities.FLUID_HANDLER_ITEM).ifPresent(fluidHandler -> {
|
||||
// use the block name which is guaranteed to have a vanilla translation
|
||||
tooltip.add(Component.translatable("block.minecraft.water").append(Component.translatable(TranslationKeys.FRACTION_DISPLAY, fluidHandler.getFluidInTank(0).getAmount(), capacity)).withStyle(ChatFormatting.GRAY));
|
||||
tooltip.add(Component.translatable("block.minecraft.water").append(Component.translatable(TranslationKeys.FRACTION_DISPLAY, fluidHandler.getFluidInTank(0).getAmount(), this.capacity)).withStyle(ChatFormatting.GRAY));
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -193,7 +193,7 @@ public class WateringCanItem extends Item {
|
|||
if (useTicks % WATERING_INTERVAL == 0) {
|
||||
tryWatering((ServerLevel) level, pos, state);
|
||||
|
||||
if (!this.renewing || fluidHandler.getFluidInTank(0).getAmount() != capacity) {
|
||||
if (!this.renewing || fluidHandler.getFluidInTank(0).getAmount() != this.capacity) {
|
||||
if (!(living instanceof Player player && player.getAbilities().instabuild)) {
|
||||
((CapabilityProvider) fluidHandler).drain();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
21
src/main/java/thedarkcolour/exdeorum/loot/package-info.java
Normal file
21
src/main/java/thedarkcolour/exdeorum/loot/package-info.java
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
@net.minecraft.MethodsReturnNonnullByDefault
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package thedarkcolour.exdeorum.loot;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Ex Deorum
|
||||
* Copyright (c) 2023 thedarkcolour
|
||||
* Copyright (c) 2024 thedarkcolour
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user