Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,8 @@ dependencies {
runtimeOnly "curse.maven:applied-flux-965012:6649565" // 应用通量附属
runtimeOnly "curse.maven:glodium-957920:5821676" // ae flux 前置
runtimeOnly "maven.modrinth:guideme:21.1.15" // guideme
compileOnly "maven.modrinth:ae2-lightning-tech:${ae2lt_version}"
runtimeOnly "maven.modrinth:ae2-lightning-tech:${ae2lt_version}"

// 饰品栏支持
compileOnly "top.theillusivec4.curios:curios-neoforge:${curios_version}+${minecraft_version}:api"
Expand Down
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ mod_description=A mod provided some utilities.
## Mod Compat
mekanism_version = 1.21.1-10.7.18.84
ae_version = 19.2.17
ae2lt_version = 1.1.4
emi_version = 1.1.20+1.21.1
jei_version = 19.27.0.340
curios_version = 9.5.1
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"variants": {
"": {
"model": "beyonddimensions:block/lightning_pathway"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "beyonddimensions:block/lightning_pathway"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"parent": "beyonddimensions:block/lightning_pathway"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"neoforge:conditions": [
{
"type": "neoforge:mod_loaded",
"modid": "ae2lt"
}
],
"parent": "minecraft:recipes/root",
"criteria": {
"has_the_recipe": {
"conditions": {
"recipe": "beyonddimensions:lightning_pathway"
},
"trigger": "minecraft:recipe_unlocked"
},
"unlock_lightning_pathway": {
"conditions": {
"items": [
{
"items": "beyonddimensions:space_time_bar"
}
]
},
"trigger": "minecraft:inventory_changed"
}
},
"requirements": [
[
"has_the_recipe",
"unlock_lightning_pathway"
]
],
"rewards": {
"recipes": [
"beyonddimensions:lightning_pathway"
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"type": "minecraft:block",
"pools": [
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "beyonddimensions:lightning_pathway"
}
],
"rolls": 1.0
}
],
"random_sequence": "beyonddimensions:blocks/lightning_pathway"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"neoforge:conditions": [
{
"type": "neoforge:mod_loaded",
"modid": "ae2lt"
}
],
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"A": {
"item": "beyonddimensions:space_time_bar"
},
"B": {
"item": "beyonddimensions:space_time_stable_frame"
},
"C": {
"item": "minecraft:lightning_rod"
},
"D": {
"item": "minecraft:ender_eye"
}
},
"pattern": [
"ABA",
"CDC",
"ABA"
],
"result": {
"count": 1,
"id": "beyonddimensions:lightning_pathway"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"beyonddimensions:net_smoker_block",
"beyonddimensions:dimensional_connect_block",
{
"id": "beyonddimensions:ars_source_pathway",
"id": "beyonddimensions:rs_net_pathway",
"required": false
},
{
Expand All @@ -26,6 +26,10 @@
{
"id": "beyonddimensions:rs_net_pathway",
"required": false
},
{
"id": "beyonddimensions:lightning_pathway",
"required": false
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ private BDBlockIds()

// 模块方块
public static final String ARS_SOURCE_PATHWAY = "ars_source_pathway";
public static final String LIGHTNING_PATHWAY = "lightning_pathway";
public static final String MANA_POOL_PATHWAY = "mana_pool_pathway";
public static final String SCHEMATICANNON_PATHWAY = "schematicannon_pathway";
public static final String RS_NET_PATHWAY = "rs_net_pathway";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ public final class OtherModIds
{
public static final String MEKANISM = "mekanism";
public static final String AE2 = "ae2";
public static final String AE2_LIGHTNING_TECH = "ae2lt";
public static final String EMI = "emi";
public static final String JEI = "jei";
public static final String POLYMORPH = "polymorph";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
package com.wintercogs.beyonddimensions.integration.module.ae2lt;

import com.moakiee.ae2lt.api.AE2LTCapabilities;
import com.wintercogs.beyonddimensions.api.capability.helper.CapabilityHelper;
import com.wintercogs.beyonddimensions.api.capability.helper.wrapper.StackHandlerWrapperHelper;
import com.wintercogs.beyonddimensions.api.storage.key.StackKeyRegistry;
import com.wintercogs.beyonddimensions.integration.BDIntegrationModule;
import com.wintercogs.beyonddimensions.integration.IIntegrationModule;
import com.wintercogs.beyonddimensions.integration.OtherModIds;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.block.entity.LightningPathwayBlockEntity;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.datagen.AE2LTModuleBlockLootTableProvider;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.datagen.AE2LTModuleBlockStateProvider;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.datagen.AE2LTModuleRecipeProvider;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.init.AE2LTModuleBlockEntities;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.init.AE2LTModuleBlocks;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.storage.LightningHandlerWrapper;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.storage.LightningStackKey;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.storage.LightningStackTypedHandler;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.storage.LightningUnifiedStorageHandler;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.PackOutput;
import net.minecraft.data.loot.LootTableProvider;
import net.minecraft.tags.BlockTags;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
import net.neoforged.neoforge.common.data.ExistingFileHelper;
import net.neoforged.neoforge.data.event.GatherDataEvent;
import org.jetbrains.annotations.NotNull;

import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;

@BDIntegrationModule(modId = OtherModIds.AE2_LIGHTNING_TECH)
public class AE2LTModule implements IIntegrationModule
{
@Override
public String modId()
{
return OtherModIds.AE2_LIGHTNING_TECH;
}

@Override
public void onBootstrap(IEventBus modBus, IEventBus gameBus)
{
AE2LTModuleBlocks.register(modBus);
AE2LTModuleBlockEntities.register(modBus);
modBus.addListener(LightningPathwayBlockEntity::registerCapability);
}

@Override
public void onCommonSetup(FMLCommonSetupEvent event)
{
StackKeyRegistry.registerType(LightningStackKey.HIGH_VOLTAGE);
CapabilityHelper.BlockCapabilityMap.put(LightningStackKey.ID, AE2LTCapabilities.LIGHTNING_ENERGY_BLOCK);
CapabilityHelper.registerUSHandler(LightningStackKey.HIGH_VOLTAGE, LightningUnifiedStorageHandler::new);
CapabilityHelper.registerStackTypedHandler(LightningStackKey.HIGH_VOLTAGE, LightningStackTypedHandler::new);
StackHandlerWrapperHelper.stackWrappers.put(LightningStackKey.ID, LightningHandlerWrapper::new);
}

@Override
public void onBlockCreativeTabCollect(CreativeModeTab.ItemDisplayParameters parameters, CreativeModeTab.Output output)
{
output.accept(AE2LTModuleBlocks.LIGHTNING_PATHWAY);
}

@Override
public void onDatagen(GatherDataEvent event)
{
DataGenerator generator = event.getGenerator();
PackOutput output = generator.getPackOutput();
ExistingFileHelper files = event.getExistingFileHelper();
CompletableFuture<HolderLookup.Provider> registries = event.getLookupProvider();
generator.addProvider(event.includeServer(), new LootTableProvider(output, Collections.emptySet(),
List.of(new LootTableProvider.SubProviderEntry(
AE2LTModuleBlockLootTableProvider::new, LootContextParamSets.BLOCK)), registries)
{
@Override
public @NotNull String getName()
{
return "BeyondDimensions AE2LT Module LootTable Provider";
}
});
generator.addProvider(event.includeClient(), new AE2LTModuleBlockStateProvider(output, files));
generator.addProvider(event.includeServer(), new AE2LTModuleRecipeProvider(output, registries));
}

@Override
public void onBlockTagDatagen(HolderLookup.Provider provider, BlockTagAppender appender)
{
appender.addOptional(BlockTags.MINEABLE_WITH_PICKAXE, AE2LTModuleBlocks.LIGHTNING_PATHWAY.getId());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.wintercogs.beyonddimensions.integration.module.ae2lt.block;

import com.wintercogs.beyonddimensions.common.block.NetedBlock;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.block.entity.LightningPathwayBlockEntity;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.EntityBlock;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable;

public class LightningPathwayBlock extends NetedBlock implements EntityBlock
{
public LightningPathwayBlock(Properties properties)
{
super(properties);
}

@Override
public @Nullable BlockEntity newBlockEntity(BlockPos pos, BlockState state)
{
return new LightningPathwayBlockEntity(pos, state);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.wintercogs.beyonddimensions.integration.module.ae2lt.block.entity;

import com.moakiee.ae2lt.api.AE2LTCapabilities;
import com.wintercogs.beyonddimensions.common.block.entity.NetedBlockEntity;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.init.AE2LTModuleBlockEntities;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.storage.LightningUnifiedStorageHandler;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.block.state.BlockState;
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;

public class LightningPathwayBlockEntity extends NetedBlockEntity
{
public LightningPathwayBlockEntity(BlockPos pos, BlockState state)
{
super(AE2LTModuleBlockEntities.LIGHTNING_PATHWAY_BLOCK_ENTITY.get(), pos, state);
}

public static void registerCapability(RegisterCapabilitiesEvent event)
{
event.registerBlockEntity(
AE2LTCapabilities.LIGHTNING_ENERGY_BLOCK,
AE2LTModuleBlockEntities.LIGHTNING_PATHWAY_BLOCK_ENTITY.get(),
(be, side) -> be.getNet() == null
? null
: new LightningUnifiedStorageHandler(be.getNet().getUnifiedStorage())
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.wintercogs.beyonddimensions.integration.module.ae2lt.datagen;

import com.wintercogs.beyonddimensions.datagen.util.BDBlockLootSubProvider;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.init.AE2LTModuleBlocks;
import net.minecraft.core.Holder;
import net.minecraft.core.HolderLookup;
import net.minecraft.world.level.block.Block;
import org.jetbrains.annotations.NotNull;

public class AE2LTModuleBlockLootTableProvider extends BDBlockLootSubProvider
{
public AE2LTModuleBlockLootTableProvider(HolderLookup.Provider registries)
{
super(registries);
}

@Override
protected void generate()
{
dropSelf(AE2LTModuleBlocks.LIGHTNING_PATHWAY.get());
}

@Override
protected @NotNull Iterable<Block> getKnownBlocks()
{
return AE2LTModuleBlocks.BLOCKS.getEntries().stream().map(Holder::value)::iterator;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.wintercogs.beyonddimensions.integration.module.ae2lt.datagen;

import com.wintercogs.beyonddimensions.datagen.util.BDBlockStateProvider;
import com.wintercogs.beyonddimensions.integration.module.ae2lt.init.AE2LTModuleBlocks;
import net.minecraft.data.PackOutput;
import net.neoforged.neoforge.common.data.ExistingFileHelper;
import org.jetbrains.annotations.NotNull;

public class AE2LTModuleBlockStateProvider extends BDBlockStateProvider
{
public AE2LTModuleBlockStateProvider(PackOutput output, ExistingFileHelper helper)
{
super(output, helper);
}

@Override
public @NotNull String getName()
{
return "BeyondDimensions AE2LT Module BlockState Provider";
}

@Override
protected void registerStatesAndModels()
{
blockWithItem(AE2LTModuleBlocks.LIGHTNING_PATHWAY);
}
}
Loading