Skip to content

Commit

Permalink
vigil candle support for amendments & effect removal functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
PssbleTrngle committed Oct 17, 2024
1 parent b64d606 commit edae490
Show file tree
Hide file tree
Showing 20 changed files with 231 additions and 33 deletions.
4 changes: 3 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -108,11 +108,13 @@ dependencies {
implementation(fg.deobf("maven.modrinth:shield-expansion:${shieldexpansion_version}"))
implementation(fg.deobf("maven.modrinth:create:${create_version}"))
implementation(fg.deobf("maven.modrinth:supplementaries:${supplementaries_version}"))
implementation(fg.deobf("maven.modrinth:amendments:${amendments_version}"))
implementation(fg.deobf("maven.modrinth:amendments:${amendments_version}"))
implementation(fg.deobf("maven.modrinth:moonlight:${moonlight_lib_version}"))

// For dev testing
runtimeOnly(fg.deobf("maven.modrinth:scannable:${scannable_version}"))
runtimeOnly(fg.deobf("maven.modrinth:architectury-api:${architectury_version}"))
runtimeOnly(fg.deobf("maven.modrinth:moonlight:${moonlight_lib_version}"))

/// Utilities for the development environment
//runtimeOnly fg.deobf("curse.maven:jade-324717:${jade_version}")
Expand Down
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ nethersdelight_version=MTDQhZd2
shieldexpansion_version=8mpKmudC
create_version=ZZW2y7nG
supplementaries_version=eMF95dNK
amendments_version=qE7sokDv
scannable_version=2FlwUOgm
architectury_version=tBWqtdBO
moonlight_lib_version=sfzdPwZX
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// 1.20.1 2024-10-14T21:56:57.8734426 Oreganized Block Tags
// 1.20.1 2024-10-17T22:46:04.3663948 Oreganized Block Tags
7a2d68d81bc5ee59f9a2f4ba68ddb39bfd9c875d data/forge/tags/blocks/glass.json
d96b4f83e03abe39a1b97d92b7818c8f6b2e5c68 data/forge/tags/blocks/glass_panes.json
d062c23ad5308b7de0b2e86f6531ea724530f898 data/forge/tags/blocks/melts_lead.json
Expand All @@ -15,12 +15,13 @@ bb0420ecbadc747d984fcef0fe7fc67586bc3231 data/forge/tags/blocks/storage_blocks/l
05f4708355ed88fe57116020dd93ac53f3098dba data/forge/tags/blocks/storage_blocks/raw_silver.json
bff6697a058fddfe9e14615bc043fcb2071fd6fc data/forge/tags/blocks/storage_blocks/silver.json
7a1e2c391ad442cdc57f69ce1737207bc52bfb84 data/minecraft/tags/blocks/beacon_base_blocks.json
b85964d677734db0ac4bbc66f550f073ed0cb5e1 data/minecraft/tags/blocks/candles.json
82c03c405a971b2a7fc3fd43a9fb6c221f463ce0 data/minecraft/tags/blocks/cauldrons.json
503ad75af537d0ffef02ada9fb9afb5f5cd8e83b data/minecraft/tags/blocks/doors.json
0f64e9b9dc279dd460f6408313b130a37a0c9d86 data/minecraft/tags/blocks/ice.json
7a2d68d81bc5ee59f9a2f4ba68ddb39bfd9c875d data/minecraft/tags/blocks/impermeable.json
f7079c32fc948b65cb486bea80e2dc93d13ce577 data/minecraft/tags/blocks/mineable/axe.json
bb012b5952f56da417a3022bb00d105f9a28dc10 data/minecraft/tags/blocks/mineable/pickaxe.json
abb8283f25d49e1094364bfc91028dd0f3af9ad6 data/minecraft/tags/blocks/mineable/pickaxe.json
84a13f81c79f0c05f8f7a8cbf1d3c25129a97179 data/minecraft/tags/blocks/mineable/shovel.json
bb86ac7ab19373da790ec5711f473614e4b62d79 data/minecraft/tags/blocks/needs_iron_tool.json
dc9cc2dca9fa3a28a0458ec282e3e0fe81999ee1 data/minecraft/tags/blocks/needs_stone_tool.json
Expand All @@ -38,3 +39,4 @@ eaca08d04b1742f418e6bc0964dd32cf16035d88 data/oreganized/tags/blocks/mineable/sc
cf3608bd187922aeb48c566c19e8482b0dca34c7 data/oreganized/tags/blocks/prevents_lead_cloud.json
06c2e2e512966767a31df77e646e41c4c39e3dd3 data/oreganized/tags/blocks/silktouch_using_scribe.json
3112fb4a1df2953e2c3572fa47f886bf8e5bd679 data/oreganized/tags/blocks/stone_types/glance.json
cead6b906640efcd90a6dbb5f5e17623f3631b53 data/oreganized/tags/blocks/vigil_candles.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"values": [
"#oreganized:vigil_candles"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,22 +35,6 @@
"oreganized:grooved_ice",
"oreganized:grooved_packed_ice",
"oreganized:grooved_blue_ice",
"oreganized:vigil_candle",
"oreganized:purple_vigil_candle",
"oreganized:gray_vigil_candle",
"oreganized:blue_vigil_candle",
"oreganized:magenta_vigil_candle",
"oreganized:yellow_vigil_candle",
"oreganized:lime_vigil_candle",
"oreganized:orange_vigil_candle",
"oreganized:green_vigil_candle",
"oreganized:light_gray_vigil_candle",
"oreganized:red_vigil_candle",
"oreganized:cyan_vigil_candle",
"oreganized:black_vigil_candle",
"oreganized:white_vigil_candle",
"oreganized:pink_vigil_candle",
"oreganized:light_blue_vigil_candle",
"oreganized:brown_vigil_candle"
"#oreganized:vigil_candles"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"values": [
"oreganized:vigil_candle",
"oreganized:light_blue_vigil_candle",
"oreganized:blue_vigil_candle",
"oreganized:orange_vigil_candle",
"oreganized:red_vigil_candle",
"oreganized:purple_vigil_candle",
"oreganized:light_gray_vigil_candle",
"oreganized:green_vigil_candle",
"oreganized:gray_vigil_candle",
"oreganized:magenta_vigil_candle",
"oreganized:white_vigil_candle",
"oreganized:yellow_vigil_candle",
"oreganized:black_vigil_candle",
"oreganized:brown_vigil_candle",
"oreganized:lime_vigil_candle",
"oreganized:cyan_vigil_candle",
"oreganized:pink_vigil_candle"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"values": [
"minecraft:darkness"
]
}
7 changes: 7 additions & 0 deletions src/main/java/galena/oreganized/Oreganized.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.teamabnormals.blueprint.core.util.DataUtil;
import com.teamabnormals.blueprint.core.util.registry.RegistryHelper;
import galena.oreganized.compat.create.CreateCompat;
import galena.oreganized.compat.supplementaries.AmendmentsCompat;
import galena.oreganized.content.block.LeadOreBlock;
import galena.oreganized.content.block.MoltenLeadCauldronBlock;
import galena.oreganized.content.entity.LeadBoltEntity;
Expand All @@ -20,6 +21,7 @@
import galena.oreganized.data.OItemTags;
import galena.oreganized.data.OLang;
import galena.oreganized.data.OLootTables;
import galena.oreganized.data.OMobEffectTags;
import galena.oreganized.data.ORecipes;
import galena.oreganized.data.ORegistries;
import galena.oreganized.data.OSoundDefinitions;
Expand Down Expand Up @@ -159,6 +161,10 @@ public Oreganized() {
CreateCompat.register();
}

if (ModList.get().isLoaded("amendments")) {
AmendmentsCompat.register();
}

//CompatHandler.register();

//context.registerConfig(ModConfig.Type.COMMON, OreganizedConfig.COMMON_SPEC);
Expand Down Expand Up @@ -286,6 +292,7 @@ public void gatherData(GatherDataEvent event) {
generator.addProvider(server, datapackProvider);
generator.addProvider(server, new OBiomeTags(output, lookupProvider, helper));
generator.addProvider(server, new ODamageTags(output, lookupProvider, helper));
generator.addProvider(server, new OMobEffectTags(output, lookupProvider, helper));
//generator.addProvider(server, new OPaintingVariantTags(output, lookupProvider, helper));
//generator.addProvider(server, new OBiomeModifier.register(event));

Expand Down
3 changes: 1 addition & 2 deletions src/main/java/galena/oreganized/client/OreganizedClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,7 @@ private static void registerBlockRenderers() {
render(OBlocks.LEAD_BARS, cutout);
render(OBlocks.GARGOYLE, cutout);

render(OBlocks.VIGIL_CANDLE, cutout);
OBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> render(block, cutout));
OBlocks.vigilCandles().forEach(block -> render(block, cutout));

for (int i = 0; OBlocks.CRYSTAL_GLASS.size() > i; i++) {
render(OBlocks.CRYSTAL_GLASS.get(i), translucent);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package galena.oreganized.compat.supplementaries;

import net.mehvahdjukaar.amendments.common.tile.WallLanternBlockTile;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.CandleBlock;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;

public class AmendmentsCompat {

public static void register() {
MinecraftForge.EVENT_BUS.addListener(AmendmentsCompat::onBlockInteract);
}

private static void onBlockInteract(PlayerInteractEvent.RightClickBlock event) {
var pos = event.getPos();
var level = event.getLevel();
var be = level.getBlockEntity(pos);
var held = event.getItemStack();
var player = event.getEntity();

if(!(be instanceof WallLanternBlockTile lantern)) return;

var state = lantern.getHeldBlock();
var lit = state.getValue(CandleBlock.LIT);

InteractionResult result = InteractionResult.PASS;

if(held.is(Items.FLINT_AND_STEEL) && !lit) {
level.playSound(player, pos, SoundEvents.FLINTANDSTEEL_USE, SoundSource.BLOCKS, 1.0F, level.getRandom().nextFloat() * 0.4F + 0.8F);
lantern.setHeldBlock(state.setValue(BlockStateProperties.LIT, true));
if (player != null) {
held.hurtAndBreak(1, player, (p_41303_) -> {
p_41303_.broadcastBreakEvent(event.getHand());
});
}

result = InteractionResult.sidedSuccess(level.isClientSide());
} else if(held.isEmpty() && lit) {
level.playSound(player, pos, SoundEvents.CANDLE_EXTINGUISH, SoundSource.BLOCKS, 1.0F, 1.0F);
lantern.setHeldBlock(state.setValue(BlockStateProperties.LIT, false));

result = InteractionResult.sidedSuccess(level.isClientSide());
}

if(result != InteractionResult.PASS) {
event.setCancellationResult(result);
event.setCanceled(true);
}
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package galena.oreganized.content.block;

import galena.oreganized.content.entity.VigilCandleBlockEntity;
import galena.oreganized.index.OBlockEntities;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.InteractionHand;
Expand All @@ -12,7 +14,11 @@
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.AbstractCandleBlock;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.EntityBlock;
import net.minecraft.world.level.block.LanternBlock;
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.level.block.state.StateDefinition;
import net.minecraft.world.level.material.FluidState;
Expand All @@ -30,7 +36,7 @@
import static net.minecraft.world.level.block.CandleBlock.MIN_CANDLES;
import static net.minecraft.world.level.block.state.properties.BlockStateProperties.CANDLES;

public class VigilCandleBlock extends LanternBlock {
public class VigilCandleBlock extends LanternBlock implements EntityBlock {

private static VoxelShape shape(double x, double y, double z) {
return Block.box(x, y, z, 6 + x, 10 + y, 6 + z);
Expand Down Expand Up @@ -135,4 +141,16 @@ public boolean placeLiquid(LevelAccessor level, BlockPos pos, BlockState state,
}
}

@Override
public @Nullable BlockEntity newBlockEntity(BlockPos pos, BlockState state) {
return new VigilCandleBlockEntity(pos, state);
}

@SuppressWarnings("unchecked")
@Override
public @Nullable <T extends BlockEntity> BlockEntityTicker<T> getTicker(Level level, BlockState state, BlockEntityType<T> type) {
if(type != OBlockEntities.VIGIL_CANDLE.get()) return null;
BlockEntityTicker<VigilCandleBlockEntity> ticker = (l, p, s, be) -> be.tick(l, p, s);
return (BlockEntityTicker<T>) ticker;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package galena.oreganized.content.entity;

import galena.oreganized.index.OBlockEntities;
import galena.oreganized.index.OTags;
import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.CandleBlock;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;

public class VigilCandleBlockEntity extends BlockEntity {

public VigilCandleBlockEntity(BlockPos pos, BlockState state) {
super(OBlockEntities.VIGIL_CANDLE.get(), pos, state);
}

public void tick(Level level, BlockPos pos, BlockState state) {
if (level.getGameTime() % 20L != 0) return;
if (!state.getValue(CandleBlock.LIT)) return;

var range = 3 + state.getValue(CandleBlock.CANDLES);
var entities = level.getEntitiesOfClass(LivingEntity.class, new AABB(pos).inflate(range));

var effects = level.registryAccess().registryOrThrow(Registries.MOB_EFFECT);
var shouldClear = effects.getTagOrEmpty(OTags.Effects.VIGIL_CANDLE_CLEARS);

entities.forEach(entity -> {
shouldClear.forEach(effect -> {
entity.removeEffect(effect.get());
});
});
}

}
12 changes: 8 additions & 4 deletions src/main/java/galena/oreganized/data/OBlockTags.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import static galena.oreganized.index.OTags.Blocks.STORAGE_BLOCKS_RAW_LEAD;
import static galena.oreganized.index.OTags.Blocks.STORAGE_BLOCKS_RAW_SILVER;
import static galena.oreganized.index.OTags.Blocks.STORAGE_BLOCKS_SILVER;
import static galena.oreganized.index.OTags.Blocks.VIGIL_CANDLES;

public class OBlockTags extends IntrinsicHolderTagsProvider<Block> {

Expand Down Expand Up @@ -95,9 +96,8 @@ protected void addTags(HolderLookup.Provider provider) {
/*tag(MINEABLE_WITH_BUSH_HAMMER).add(
);*/
var pickaxeMinable = tag(BlockTags.MINEABLE_WITH_PICKAXE);

pickaxeMinable.add(
tag(BlockTags.MINEABLE_WITH_PICKAXE).add(
OBlocks.LEAD_ORE.get(),
OBlocks.DEEPSLATE_LEAD_ORE.get(),
OBlocks.RAW_LEAD_BLOCK.get(),
Expand Down Expand Up @@ -142,8 +142,12 @@ protected void addTags(HolderLookup.Provider provider) {
OBlocks.GROOVED_BLUE_ICE.get()
);

pickaxeMinable.add(OBlocks.VIGIL_CANDLE.get());
OBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> pickaxeMinable.add(block.get()));
var vigilCandles = tag(VIGIL_CANDLES);

OBlocks.vigilCandles().forEach(block -> vigilCandles.add(block.get()));

tag(BlockTags.CANDLES).addTags(VIGIL_CANDLES);
tag(BlockTags.MINEABLE_WITH_PICKAXE).addTags(VIGIL_CANDLES);

tag(BlockTags.MINEABLE_WITH_SHOVEL).add(
OBlocks.WAXED_WHITE_CONCRETE_POWDER.get(),
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/galena/oreganized/data/OItemModels.java
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,7 @@ protected void registerModels() {
block(OBlocks.GROOVED_PACKED_ICE);
block(OBlocks.GROOVED_BLUE_ICE);

normalItem(OBlocks.VIGIL_CANDLE);
OBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> normalItem(block));
OBlocks.vigilCandles().forEach(this::normalItem);

for (Supplier<? extends Block> blocks : OBlocks.WAXED_CONRETE_POWDER) {
withExistingParent(blockName(blocks), "minecraft:block/" + blockName(blocks).replace("waxed_", ""));
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/galena/oreganized/data/OLootTables.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,8 +128,7 @@ protected void generate() {
dropSelf(blocks);
}

vigilCandle(OBlocks.VIGIL_CANDLE);
OBlocks.COLORED_VIGIL_CANDLES.forEach((color, block) -> vigilCandle(block));
OBlocks.vigilCandles().forEach(this::vigilCandle);
}

private void grooved(Supplier<Block> block, Block other) {
Expand Down
33 changes: 33 additions & 0 deletions src/main/java/galena/oreganized/data/OMobEffectTags.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package galena.oreganized.data;

import galena.oreganized.Oreganized;
import galena.oreganized.index.OTags;
import net.minecraft.core.HolderLookup;
import net.minecraft.core.registries.Registries;
import net.minecraft.data.PackOutput;
import net.minecraft.data.tags.TagsProvider;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.effect.MobEffect;
import net.minecraftforge.common.data.ExistingFileHelper;
import org.jetbrains.annotations.NotNull;

import javax.annotation.Nullable;
import java.util.concurrent.CompletableFuture;

public class OMobEffectTags extends TagsProvider<MobEffect> {

public OMobEffectTags(PackOutput output, CompletableFuture<HolderLookup.Provider> future, @Nullable ExistingFileHelper helper) {
super(output, Registries.MOB_EFFECT, future, Oreganized.MOD_ID, helper);
}

@Override
public @NotNull String getName() {
return "Oreganized MobEffect Tags";
}

@Override
protected void addTags(HolderLookup.Provider provider) {
tag(OTags.Effects.VIGIL_CANDLE_CLEARS).add(ResourceKey.create(Registries.MOB_EFFECT, new ResourceLocation("darkness")));
}
}
Loading

0 comments on commit edae490

Please sign in to comment.