Get creeperheal to properly log blocks in the database, using the new queue system.
This commit is contained in:
parent
a02cd91bcb
commit
2d525f3c7f
25 changed files with 492 additions and 9 deletions
|
@ -157,6 +157,8 @@ dependencies {
|
||||||
// then special handling is done to allow a setup of a vanilla dependency without the use of an external repository.
|
// then special handling is done to allow a setup of a vanilla dependency without the use of an external repository.
|
||||||
minecraft "net.neoforged:forge:${minecraft_version}-${neo_version}"
|
minecraft "net.neoforged:forge:${minecraft_version}-${neo_version}"
|
||||||
|
|
||||||
|
runtimeOnly fg.deobf("maven.modrinth:mariadb-jdbc:3.1.4+20230506")
|
||||||
|
|
||||||
implementation fg.deobf("dev.zontreck:LibZontreckMod:${libzontreck}")
|
implementation fg.deobf("dev.zontreck:LibZontreckMod:${libzontreck}")
|
||||||
// Example mod dependency with JEI - using fg.deobf() ensures the dependency is remapped to your development mappings
|
// Example mod dependency with JEI - using fg.deobf() ensures the dependency is remapped to your development mappings
|
||||||
// The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
|
// The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
org.gradle.jvmargs=-Xmx3G
|
org.gradle.jvmargs=-Xmx3G
|
||||||
org.gradle.daemon=false
|
org.gradle.daemon=false
|
||||||
|
|
||||||
libzontreck=1201.13.041224.0832
|
libzontreck=1201.13.042424.0415
|
||||||
|
|
||||||
## Environment Properties
|
## Environment Properties
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// 1.20.1 2024-03-03T19:44:16.098572878 Block States: ariasessentials
|
// 1.20.1 2024-04-23T21:56:19.854483943 Block States: ariasessentials
|
||||||
ae2f6cd918bd461be7fb693641eaa5b78410b538 assets/ariasessentials/blockstates/clinker_brick_block.json
|
ae2f6cd918bd461be7fb693641eaa5b78410b538 assets/ariasessentials/blockstates/clinker_brick_block.json
|
||||||
f48474f63edb825feaa3cc2c990ecd5ed6909c74 assets/ariasessentials/blockstates/clinker_brick_slab.json
|
f48474f63edb825feaa3cc2c990ecd5ed6909c74 assets/ariasessentials/blockstates/clinker_brick_slab.json
|
||||||
5b501afd2a40c586b6811b9784ca2cd1a2dba373 assets/ariasessentials/blockstates/clinker_brick_stained_block.json
|
5b501afd2a40c586b6811b9784ca2cd1a2dba373 assets/ariasessentials/blockstates/clinker_brick_stained_block.json
|
||||||
|
@ -34,6 +34,7 @@ acdba80ab9bebc435f3cfdc80f845fa942eaf1d4 assets/ariasessentials/blockstates/stee
|
||||||
b2076aa8074c942d074509a3ee27df350f81ab0f assets/ariasessentials/blockstates/steel_floor_grating_top.json
|
b2076aa8074c942d074509a3ee27df350f81ab0f assets/ariasessentials/blockstates/steel_floor_grating_top.json
|
||||||
a637df1cfe9b47f5691beb585ad9e7f72a8a641b assets/ariasessentials/blockstates/steel_railing.json
|
a637df1cfe9b47f5691beb585ad9e7f72a8a641b assets/ariasessentials/blockstates/steel_railing.json
|
||||||
7c667fb64bd412a080e1d92d9b7e194ef1a7cb25 assets/ariasessentials/blockstates/steel_table.json
|
7c667fb64bd412a080e1d92d9b7e194ef1a7cb25 assets/ariasessentials/blockstates/steel_table.json
|
||||||
|
1bef53c224409e06091b0f9da5407589e173845b assets/ariasessentials/blockstates/tflipflop.json
|
||||||
e03106a0ee60bc58f97f5cc3b1ad921f245c99dd assets/ariasessentials/models/block/clinker_brick_block_model0.json
|
e03106a0ee60bc58f97f5cc3b1ad921f245c99dd assets/ariasessentials/models/block/clinker_brick_block_model0.json
|
||||||
d777dea2873725f45fadd678d411040f530f8f58 assets/ariasessentials/models/block/clinker_brick_block_model1.json
|
d777dea2873725f45fadd678d411040f530f8f58 assets/ariasessentials/models/block/clinker_brick_block_model1.json
|
||||||
c480c6d87ce48bdf5d6fbb846a9c435a5c263c06 assets/ariasessentials/models/block/clinker_brick_block_model2.json
|
c480c6d87ce48bdf5d6fbb846a9c435a5c263c06 assets/ariasessentials/models/block/clinker_brick_block_model2.json
|
||||||
|
@ -391,6 +392,7 @@ c33b748f6f17358bd7d58374caea829f5af46c8d assets/ariasessentials/models/block/ste
|
||||||
e7f3120933bf9c3e48b630a6451cbadc3cfb49cb assets/ariasessentials/models/block/steel_floor_grating_top.json
|
e7f3120933bf9c3e48b630a6451cbadc3cfb49cb assets/ariasessentials/models/block/steel_floor_grating_top.json
|
||||||
711b9bb46c9847800562b02eb8cb83ad18e9cc82 assets/ariasessentials/models/block/steel_railing.json
|
711b9bb46c9847800562b02eb8cb83ad18e9cc82 assets/ariasessentials/models/block/steel_railing.json
|
||||||
8f302a21d929580d8500d08ebb54ad6b98071de2 assets/ariasessentials/models/block/steel_table.json
|
8f302a21d929580d8500d08ebb54ad6b98071de2 assets/ariasessentials/models/block/steel_table.json
|
||||||
|
585d5b3662ac26492f4e06ba82306930f94ae07e assets/ariasessentials/models/block/tflipflop.json
|
||||||
4fca23a45d563abf5cf473dc0d1c245d48174b2a assets/ariasessentials/models/item/clinker_brick_block.json
|
4fca23a45d563abf5cf473dc0d1c245d48174b2a assets/ariasessentials/models/item/clinker_brick_block.json
|
||||||
e4ed8c1d0d0f321a19c7e72b059778bbbc9b38b5 assets/ariasessentials/models/item/clinker_brick_slab.json
|
e4ed8c1d0d0f321a19c7e72b059778bbbc9b38b5 assets/ariasessentials/models/item/clinker_brick_slab.json
|
||||||
4fbbce22895215e022ceed79aada64c3a498da6a assets/ariasessentials/models/item/clinker_brick_stained_block.json
|
4fbbce22895215e022ceed79aada64c3a498da6a assets/ariasessentials/models/item/clinker_brick_stained_block.json
|
||||||
|
@ -426,3 +428,4 @@ cf2fb18ac1885dc8d29dd6910a480e6df6f0159a assets/ariasessentials/models/item/stee
|
||||||
609df26ad277d9ed6f9e10a8c03d828136dd8cbb assets/ariasessentials/models/item/steel_floor_grating_top.json
|
609df26ad277d9ed6f9e10a8c03d828136dd8cbb assets/ariasessentials/models/item/steel_floor_grating_top.json
|
||||||
ac717f3bc13cb5de4400d736175cacc91f525bdc assets/ariasessentials/models/item/steel_railing.json
|
ac717f3bc13cb5de4400d736175cacc91f525bdc assets/ariasessentials/models/item/steel_railing.json
|
||||||
18a59a078fccb7d9a638033aa76c5175d4abaa01 assets/ariasessentials/models/item/steel_table.json
|
18a59a078fccb7d9a638033aa76c5175d4abaa01 assets/ariasessentials/models/item/steel_table.json
|
||||||
|
fadd2e7bba0010cc7e3c0139ffda671a728ebe3f assets/ariasessentials/models/item/tflipflop.json
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
// 1.20.1 2024-03-03T19:41:24.288854196 Loot Tables
|
// 1.20.1 2024-04-23T21:53:46.136412523 Loot Tables
|
||||||
2b4a329fcd0a69fdad6c43120bd5de86ad0565af data/ariasessentials/loot_tables/blocks/clinker_brick_block.json
|
2b4a329fcd0a69fdad6c43120bd5de86ad0565af data/ariasessentials/loot_tables/blocks/clinker_brick_block.json
|
||||||
1ec32912180bc6bc4127ed7ddba8be226035858c data/ariasessentials/loot_tables/blocks/clinker_brick_recessed.json
|
1ec32912180bc6bc4127ed7ddba8be226035858c data/ariasessentials/loot_tables/blocks/clinker_brick_recessed.json
|
||||||
006e62eaf1f971fd385a92b5d6b5477d032c88e3 data/ariasessentials/loot_tables/blocks/clinker_brick_sastor_corner_block.json
|
|
||||||
f9732252ea209ddd741e2b993a1e8917dd2ea889 data/ariasessentials/loot_tables/blocks/clinker_brick_slab.json
|
f9732252ea209ddd741e2b993a1e8917dd2ea889 data/ariasessentials/loot_tables/blocks/clinker_brick_slab.json
|
||||||
1ebd50d212ef1833facb449ff4926ca684238f5f data/ariasessentials/loot_tables/blocks/clinker_brick_stained_block.json
|
1ebd50d212ef1833facb449ff4926ca684238f5f data/ariasessentials/loot_tables/blocks/clinker_brick_stained_block.json
|
||||||
28f5cc93c182169e183435e963ed928c69a225d9 data/ariasessentials/loot_tables/blocks/clinker_brick_stained_slab.json
|
28f5cc93c182169e183435e963ed928c69a225d9 data/ariasessentials/loot_tables/blocks/clinker_brick_stained_slab.json
|
||||||
|
@ -37,3 +36,4 @@ b5b1ddda0fb43e0b553667d8fc7b7a036a0c5150 data/ariasessentials/loot_tables/blocks
|
||||||
54db4e8dce7f9d4b654de37cb16f7e292cb4fac9 data/ariasessentials/loot_tables/blocks/steel_floor_grating_top.json
|
54db4e8dce7f9d4b654de37cb16f7e292cb4fac9 data/ariasessentials/loot_tables/blocks/steel_floor_grating_top.json
|
||||||
7716ab37ac37d21bcb205d283bda1658f75a2df8 data/ariasessentials/loot_tables/blocks/steel_railing.json
|
7716ab37ac37d21bcb205d283bda1658f75a2df8 data/ariasessentials/loot_tables/blocks/steel_railing.json
|
||||||
878361275ccef96377190d00986722463f8da79c data/ariasessentials/loot_tables/blocks/steel_table.json
|
878361275ccef96377190d00986722463f8da79c data/ariasessentials/loot_tables/blocks/steel_table.json
|
||||||
|
9f87deac2a9b034e2b571cf6113bc9ffd90e778e data/ariasessentials/loot_tables/blocks/tflipflop.json
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"facing=east,input_power=false,powered=false": {
|
||||||
|
"model": "ariasessentials:block/tflipflop",
|
||||||
|
"y": 90
|
||||||
|
},
|
||||||
|
"facing=east,input_power=false,powered=true": {
|
||||||
|
"model": "ariasessentials:block/tflipflop",
|
||||||
|
"y": 90
|
||||||
|
},
|
||||||
|
"facing=east,input_power=true,powered=false": {
|
||||||
|
"model": "ariasessentials:block/tflipflop",
|
||||||
|
"y": 90
|
||||||
|
},
|
||||||
|
"facing=east,input_power=true,powered=true": {
|
||||||
|
"model": "ariasessentials:block/tflipflop",
|
||||||
|
"y": 90
|
||||||
|
},
|
||||||
|
"facing=north,input_power=false,powered=false": {
|
||||||
|
"model": "ariasessentials:block/tflipflop"
|
||||||
|
},
|
||||||
|
"facing=north,input_power=false,powered=true": {
|
||||||
|
"model": "ariasessentials:block/tflipflop"
|
||||||
|
},
|
||||||
|
"facing=north,input_power=true,powered=false": {
|
||||||
|
"model": "ariasessentials:block/tflipflop"
|
||||||
|
},
|
||||||
|
"facing=north,input_power=true,powered=true": {
|
||||||
|
"model": "ariasessentials:block/tflipflop"
|
||||||
|
},
|
||||||
|
"facing=south,input_power=false,powered=false": {
|
||||||
|
"model": "ariasessentials:block/tflipflop",
|
||||||
|
"y": 180
|
||||||
|
},
|
||||||
|
"facing=south,input_power=false,powered=true": {
|
||||||
|
"model": "ariasessentials:block/tflipflop",
|
||||||
|
"y": 180
|
||||||
|
},
|
||||||
|
"facing=south,input_power=true,powered=false": {
|
||||||
|
"model": "ariasessentials:block/tflipflop",
|
||||||
|
"y": 180
|
||||||
|
},
|
||||||
|
"facing=south,input_power=true,powered=true": {
|
||||||
|
"model": "ariasessentials:block/tflipflop",
|
||||||
|
"y": 180
|
||||||
|
},
|
||||||
|
"facing=west,input_power=false,powered=false": {
|
||||||
|
"model": "ariasessentials:block/tflipflop",
|
||||||
|
"y": 270
|
||||||
|
},
|
||||||
|
"facing=west,input_power=false,powered=true": {
|
||||||
|
"model": "ariasessentials:block/tflipflop",
|
||||||
|
"y": 270
|
||||||
|
},
|
||||||
|
"facing=west,input_power=true,powered=false": {
|
||||||
|
"model": "ariasessentials:block/tflipflop",
|
||||||
|
"y": 270
|
||||||
|
},
|
||||||
|
"facing=west,input_power=true,powered=true": {
|
||||||
|
"model": "ariasessentials:block/tflipflop",
|
||||||
|
"y": 270
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "ariasessentials:block/logicgates/tflipflop"
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "ariasessentials:block/tflipflop"
|
||||||
|
}
|
|
@ -11,11 +11,11 @@
|
||||||
"entries": [
|
"entries": [
|
||||||
{
|
{
|
||||||
"type": "minecraft:item",
|
"type": "minecraft:item",
|
||||||
"name": "ariasessentials:clinker_brick_sastor_corner_block"
|
"name": "ariasessentials:tflipflop"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"rolls": 1.0
|
"rolls": 1.0
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"random_sequence": "ariasessentials:blocks/clinker_brick_sastor_corner_block"
|
"random_sequence": "ariasessentials:blocks/tflipflop"
|
||||||
}
|
}
|
|
@ -5,6 +5,9 @@ import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
import java.util.concurrent.ScheduledThreadPoolExecutor;
|
||||||
|
|
||||||
import dev.zontreck.essentials.blocks.ModBlocks;
|
import dev.zontreck.essentials.blocks.ModBlocks;
|
||||||
import dev.zontreck.essentials.client.Keybindings;
|
import dev.zontreck.essentials.client.Keybindings;
|
||||||
|
@ -60,6 +63,7 @@ public class AriasEssentials {
|
||||||
public static boolean ALIVE;
|
public static boolean ALIVE;
|
||||||
public static Map<UUID, Homes> player_homes = new HashMap<>();
|
public static Map<UUID, Homes> player_homes = new HashMap<>();
|
||||||
public static boolean DEBUG = true;
|
public static boolean DEBUG = true;
|
||||||
|
public static ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,37 @@
|
||||||
package dev.zontreck.essentials.antiexplode;
|
package dev.zontreck.essentials.antiexplode;
|
||||||
|
|
||||||
import dev.zontreck.libzontreck.memory.world.BlockRestoreQueue;
|
import dev.zontreck.libzontreck.memory.world.BlockRestoreQueue;
|
||||||
|
import dev.zontreck.libzontreck.memory.world.PrimitiveBlock;
|
||||||
import dev.zontreck.libzontreck.memory.world.SortedBlockQueue;
|
import dev.zontreck.libzontreck.memory.world.SortedBlockQueue;
|
||||||
|
|
||||||
public class CreeperHealQueue extends SortedBlockQueue
|
public class CreeperHealQueue extends BlockRestoreQueue
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public String getRestoreQueueName() {
|
public String getRestoreQueueName() {
|
||||||
return "creeperheal";
|
return "creeperheal";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean usesDatabase() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void databaseUpdate(PrimitiveBlock block) {
|
||||||
|
super.databaseUpdate(block);
|
||||||
|
notifyDirtyQueue(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyDirtyQueue(boolean b) {
|
||||||
|
// Queue was modified.
|
||||||
|
// Restart the timer for repairing blocks if necessary
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean sorted() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package dev.zontreck.essentials.blocks;
|
package dev.zontreck.essentials.blocks;
|
||||||
|
|
||||||
import dev.zontreck.essentials.AriasEssentials;
|
import dev.zontreck.essentials.AriasEssentials;
|
||||||
|
import dev.zontreck.essentials.blocks.logicgates.TFlipFlopBlock;
|
||||||
import dev.zontreck.essentials.items.CreativeModeTabs;
|
import dev.zontreck.essentials.items.CreativeModeTabs;
|
||||||
import dev.zontreck.libzontreck.edlibmc.Auxiliaries;
|
import dev.zontreck.libzontreck.edlibmc.Auxiliaries;
|
||||||
import dev.zontreck.libzontreck.edlibmc.StandardBlocks;
|
import dev.zontreck.libzontreck.edlibmc.StandardBlocks;
|
||||||
|
@ -318,4 +319,7 @@ public class ModBlocks {
|
||||||
public static final RegistryObject<Block> STEEL_CATWALK_BLOCK = registerWithItem(BLOCKS.register("steel_catwalk_block", ()-> new Block(gratingBlock)), new Item.Properties());
|
public static final RegistryObject<Block> STEEL_CATWALK_BLOCK = registerWithItem(BLOCKS.register("steel_catwalk_block", ()-> new Block(gratingBlock)), new Item.Properties());
|
||||||
|
|
||||||
|
|
||||||
|
public static final RegistryObject<Block> TFLIPFLOP_BLOCK = registerWithItem(BLOCKS.register("tflipflop", () -> new TFlipFlopBlock(noViewBlocking().noOcclusion().noCollission())), new Item.Properties());
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,75 @@
|
||||||
|
package dev.zontreck.essentials.blocks.logicgates;
|
||||||
|
|
||||||
|
import dev.zontreck.essentials.blocks.RotatableBlock;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.core.Direction;
|
||||||
|
import net.minecraft.world.item.context.BlockPlaceContext;
|
||||||
|
import net.minecraft.world.level.BlockGetter;
|
||||||
|
import net.minecraft.world.level.block.*;
|
||||||
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
|
import net.minecraft.world.level.block.state.StateDefinition;
|
||||||
|
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||||
|
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
public class TFlipFlopBlock extends RotatableBlock
|
||||||
|
{
|
||||||
|
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||||
|
public static final BooleanProperty INPUTPOWER = BooleanProperty.create("input_power");
|
||||||
|
|
||||||
|
|
||||||
|
public TFlipFlopBlock(Properties p_49795_) {
|
||||||
|
super(p_49795_);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState rotate(BlockState p_55115_, Rotation p_55116_) {
|
||||||
|
return p_55115_.setValue(FACING, p_55116_.rotate(p_55115_.getValue(FACING)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState mirror(BlockState p_55112_, Mirror p_55113_) {
|
||||||
|
return p_55112_.rotate(p_55113_.getRotation(p_55112_.getValue(FACING)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BlockState getStateForPlacement(BlockPlaceContext p_55087_) {
|
||||||
|
return super.getStateForPlacement(p_55087_).setValue(POWERED, false).setValue(INPUTPOWER, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
|
||||||
|
super.createBlockStateDefinition(builder);
|
||||||
|
builder.add(POWERED, INPUTPOWER);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canConnectRedstone(BlockState state, BlockGetter level, BlockPos pos, @Nullable Direction direction) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSignal(BlockState state, BlockGetter level, BlockPos pos, Direction direction) {
|
||||||
|
return state.getValue(POWERED) && state.getValue(FACING) == direction ? 15 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updatePowered(BlockState state)
|
||||||
|
{
|
||||||
|
boolean powered = state.getValue(POWERED);
|
||||||
|
boolean inputPower = state.getValue(INPUTPOWER);
|
||||||
|
|
||||||
|
if(inputPower)return;
|
||||||
|
|
||||||
|
inputPower = true;
|
||||||
|
powered = !powered;
|
||||||
|
|
||||||
|
state.setValue((POWERED), powered);
|
||||||
|
state.setValue((INPUTPOWER), inputPower);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removePower(BlockState state)
|
||||||
|
{
|
||||||
|
state.setValue(INPUTPOWER, false);
|
||||||
|
}
|
||||||
|
}
|
|
@ -22,6 +22,7 @@ public class AEServerConfig
|
||||||
public Teleportation teleport;
|
public Teleportation teleport;
|
||||||
public Messages messages;
|
public Messages messages;
|
||||||
public Bottles bottles;
|
public Bottles bottles;
|
||||||
|
public CreeperHeal creeperHeal;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,6 +46,11 @@ public class AEServerConfig
|
||||||
config.bottles = Bottles.deserialize(tag.getCompound(Bottles.TAG_NAME));
|
config.bottles = Bottles.deserialize(tag.getCompound(Bottles.TAG_NAME));
|
||||||
} else config.bottles = new Bottles();
|
} else config.bottles = new Bottles();
|
||||||
|
|
||||||
|
if(tag.contains(CreeperHeal.TAG_NAME))
|
||||||
|
{
|
||||||
|
config.creeperHeal = CreeperHeal.deserialize(tag.getCompound(CreeperHeal.TAG_NAME));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
@ -55,6 +61,8 @@ public class AEServerConfig
|
||||||
if(serverConfig.toFile().exists())
|
if(serverConfig.toFile().exists())
|
||||||
{
|
{
|
||||||
inst = deserialize(SNbtIo.loadSnbt(serverConfig));
|
inst = deserialize(SNbtIo.loadSnbt(serverConfig));
|
||||||
|
|
||||||
|
save(); // incase of updates
|
||||||
}else {
|
}else {
|
||||||
initNewConfig();
|
initNewConfig();
|
||||||
}
|
}
|
||||||
|
@ -65,7 +73,7 @@ public class AEServerConfig
|
||||||
private static void initNewConfig()
|
private static void initNewConfig()
|
||||||
{
|
{
|
||||||
inst = new AEServerConfig();
|
inst = new AEServerConfig();
|
||||||
inst.reset();
|
inst.reset(); // also saves
|
||||||
}
|
}
|
||||||
|
|
||||||
private void reset()
|
private void reset()
|
||||||
|
@ -95,6 +103,7 @@ public class AEServerConfig
|
||||||
);
|
);
|
||||||
messages = new Messages();
|
messages = new Messages();
|
||||||
bottles = new Bottles();
|
bottles = new Bottles();
|
||||||
|
creeperHeal = new CreeperHeal();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -124,6 +133,7 @@ public class AEServerConfig
|
||||||
tag.put(Teleportation.TAG_NAME, teleport.serialize());
|
tag.put(Teleportation.TAG_NAME, teleport.serialize());
|
||||||
tag.put(Messages.TAG_NAME, messages.serialize());
|
tag.put(Messages.TAG_NAME, messages.serialize());
|
||||||
tag.put(Bottles.TAG_NAME, bottles.serialize());
|
tag.put(Bottles.TAG_NAME, bottles.serialize());
|
||||||
|
tag.put(CreeperHeal.TAG_NAME, creeperHeal.serialize());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
package dev.zontreck.essentials.configs.server.sections;
|
||||||
|
|
||||||
|
import dev.zontreck.essentials.configs.server.AEServerConfig;
|
||||||
|
import net.minecraft.nbt.CompoundTag;
|
||||||
|
import net.minecraft.nbt.ListTag;
|
||||||
|
import net.minecraft.nbt.StringTag;
|
||||||
|
import net.minecraft.nbt.Tag;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class CreeperHeal
|
||||||
|
{
|
||||||
|
public static final String TAG_NAME = "creeper_heal";
|
||||||
|
public static final String TAG_BLACKLIST = "blacklisted_dims";
|
||||||
|
public static final String TAG_VERSION = "version";
|
||||||
|
public static final String TAG_DURATION = "duration";
|
||||||
|
|
||||||
|
|
||||||
|
public List<String> blacklistedDimensions = new ArrayList<>();
|
||||||
|
public int version = 0;
|
||||||
|
|
||||||
|
public int duration = 40; // Once every 2 seconds
|
||||||
|
|
||||||
|
|
||||||
|
public static final int VERSION = 1;
|
||||||
|
|
||||||
|
public CompoundTag serialize()
|
||||||
|
{
|
||||||
|
CompoundTag tag = new CompoundTag();
|
||||||
|
tag.putInt(TAG_VERSION, version);
|
||||||
|
ListTag blacklist = new ListTag();
|
||||||
|
for(String dimension : blacklistedDimensions)
|
||||||
|
{
|
||||||
|
blacklist.add(StringTag.valueOf(dimension));
|
||||||
|
}
|
||||||
|
tag.put(TAG_BLACKLIST, blacklist);
|
||||||
|
tag.putInt(TAG_DURATION, duration);
|
||||||
|
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CreeperHeal deserialize(CompoundTag tag)
|
||||||
|
{
|
||||||
|
CreeperHeal heal = new CreeperHeal();
|
||||||
|
heal.version = tag.getInt(TAG_VERSION);
|
||||||
|
|
||||||
|
if(heal.version == 0){
|
||||||
|
heal.version = VERSION;
|
||||||
|
return heal;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(heal.version >= 1)
|
||||||
|
{
|
||||||
|
|
||||||
|
ListTag lst = tag.getList(TAG_BLACKLIST, StringTag.TAG_STRING);
|
||||||
|
for(Tag t : lst)
|
||||||
|
{
|
||||||
|
heal.blacklistedDimensions.add(t.getAsString());
|
||||||
|
}
|
||||||
|
heal.duration = tag.getInt(TAG_DURATION);
|
||||||
|
}
|
||||||
|
|
||||||
|
return heal;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -138,6 +138,8 @@ public class ModBlockStatesProvider extends BlockStateProvider {
|
||||||
|
|
||||||
blockWithExistingModel(ModBlocks.STEEL_CATWALK_BLOCK, "block/engineersdecor/steel_catwalk_block", false);
|
blockWithExistingModel(ModBlocks.STEEL_CATWALK_BLOCK, "block/engineersdecor/steel_catwalk_block", false);
|
||||||
|
|
||||||
|
blockWithExistingModel(ModBlocks.TFLIPFLOP_BLOCK, "block/logicgates/tflipflop", true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void blockWithExistingModel(RegistryObject<Block> blk, String model, boolean rotatable)
|
private void blockWithExistingModel(RegistryObject<Block> blk, String model, boolean rotatable)
|
||||||
|
|
|
@ -76,6 +76,8 @@ public class ModBlockLootTablesProvider extends BlockLootSubProvider
|
||||||
|
|
||||||
dropSelf(ModBlocks.STEEL_CATWALK_BLOCK.get());
|
dropSelf(ModBlocks.STEEL_CATWALK_BLOCK.get());
|
||||||
|
|
||||||
|
dropSelf(ModBlocks.TFLIPFLOP_BLOCK.get());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,26 @@
|
||||||
package dev.zontreck.essentials.imc;
|
package dev.zontreck.essentials.imc;
|
||||||
|
|
||||||
|
import dev.zontreck.essentials.AriasEssentials;
|
||||||
import dev.zontreck.essentials.antiexplode.CreeperHealQueue;
|
import dev.zontreck.essentials.antiexplode.CreeperHealQueue;
|
||||||
import dev.zontreck.essentials.commands.teleport.TeleportActioner;
|
import dev.zontreck.essentials.commands.teleport.TeleportActioner;
|
||||||
import dev.zontreck.essentials.commands.teleport.TeleportContainer;
|
import dev.zontreck.essentials.commands.teleport.TeleportContainer;
|
||||||
|
import dev.zontreck.essentials.configs.server.AEServerConfig;
|
||||||
|
import dev.zontreck.libzontreck.config.ServerConfig;
|
||||||
import dev.zontreck.libzontreck.events.BlockRestoreQueueRegistrationEvent;
|
import dev.zontreck.libzontreck.events.BlockRestoreQueueRegistrationEvent;
|
||||||
import dev.zontreck.libzontreck.events.TeleportEvent;
|
import dev.zontreck.libzontreck.events.TeleportEvent;
|
||||||
|
import dev.zontreck.libzontreck.memory.world.BlockRestoreQueue;
|
||||||
|
import dev.zontreck.libzontreck.memory.world.BlockRestoreQueueRegistry;
|
||||||
|
import dev.zontreck.libzontreck.memory.world.BlockRestoreRunner;
|
||||||
|
import dev.zontreck.libzontreck.memory.world.SavedBlock;
|
||||||
|
import dev.zontreck.libzontreck.vectors.Vector3i;
|
||||||
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.phys.Vec2;
|
import net.minecraft.world.phys.Vec2;
|
||||||
|
import net.minecraftforge.event.level.ExplosionEvent;
|
||||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||||
|
|
||||||
|
import java.util.Timer;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class Events
|
public class Events
|
||||||
{
|
{
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
|
@ -26,6 +39,23 @@ public class Events
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void onRegisterRestoreQueues (BlockRestoreQueueRegistrationEvent event)
|
public static void onRegisterRestoreQueues (BlockRestoreQueueRegistrationEvent event)
|
||||||
{
|
{
|
||||||
event.register(new CreeperHealQueue());
|
CreeperHealQueue queue = new CreeperHealQueue();
|
||||||
|
event.register(queue);
|
||||||
|
|
||||||
|
BlockRestoreRunner runner = new BlockRestoreRunner(queue);
|
||||||
|
AriasEssentials.executorService.scheduleAtFixedRate(runner, 0, AEServerConfig.getInstance().creeperHeal.duration * 1000 / 20, TimeUnit.MILLISECONDS);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public static void onExplosionEvent(ExplosionEvent.Detonate event)
|
||||||
|
{
|
||||||
|
for(BlockPos pos : event.getAffectedBlocks())
|
||||||
|
{
|
||||||
|
SavedBlock sb = SavedBlock.takeSnapshot(new Vector3i(pos), event.getLevel());
|
||||||
|
|
||||||
|
BlockRestoreQueue queue = BlockRestoreQueueRegistry.getQueue("creeperheal");
|
||||||
|
queue.enqueueBlock(sb);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
"block.ariasessentials.steel_catwalk_stairs_rr": "Steel Catwalk Right Rail",
|
"block.ariasessentials.steel_catwalk_stairs_rr": "Steel Catwalk Right Rail",
|
||||||
"block.ariasessentials.steel_catwalk_stairs_dr": "Steel Catwalk Double Rail",
|
"block.ariasessentials.steel_catwalk_stairs_dr": "Steel Catwalk Double Rail",
|
||||||
"block.ariasessentials.steel_catwalk_block": "Steel Catwalk Block",
|
"block.ariasessentials.steel_catwalk_block": "Steel Catwalk Block",
|
||||||
|
"block.ariasessentials.tflipflop": "T-Flip Flop",
|
||||||
|
|
||||||
"key.category.ariasessentials": "Aria's Essentials",
|
"key.category.ariasessentials": "Aria's Essentials",
|
||||||
"key.ariasessentials.autowalk": "Auto Walk"
|
"key.ariasessentials.autowalk": "Auto Walk"
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,187 @@
|
||||||
|
{
|
||||||
|
"credit": "Made with Blockbench",
|
||||||
|
"textures": {
|
||||||
|
"0": "ariasessentials:block/logicgates/logic_gate",
|
||||||
|
"1": "ariasessentials:block/logicgates/tflipflop",
|
||||||
|
"2": "ariasessentials:block/logicgates/locked_bar",
|
||||||
|
"3": "ariasessentials:block/logicgates/torch",
|
||||||
|
"4": "ariasessentials:block/logicgates/off",
|
||||||
|
"particle": "ariasessentials:block/logicgates/logic_gate"
|
||||||
|
},
|
||||||
|
"elements": [
|
||||||
|
{
|
||||||
|
"from": [0.25, 0.25, 0.25],
|
||||||
|
"to": [15.75, 0.5, 15.75],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 15.5, 0.25], "texture": "#0"},
|
||||||
|
"east": {"uv": [0, 0, 15.5, 0.25], "texture": "#0"},
|
||||||
|
"south": {"uv": [0, 0, 15.5, 0.25], "texture": "#0"},
|
||||||
|
"west": {"uv": [0, 0, 15.5, 0.25], "texture": "#0"},
|
||||||
|
"up": {"uv": [0, 0, 15.5, 15.5], "rotation": 270, "texture": "#1"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "lock_bar",
|
||||||
|
"from": [3, 0.5, 11],
|
||||||
|
"to": [13, 1, 12],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 9, 1], "texture": "#2"},
|
||||||
|
"east": {"uv": [2, 3, 3, 4], "texture": "#2"},
|
||||||
|
"south": {"uv": [0, 1, 9, 2], "texture": "#2"},
|
||||||
|
"west": {"uv": [2, 2, 3, 3], "texture": "#2"},
|
||||||
|
"up": {"uv": [1, 11, 0, 2], "rotation": 270, "texture": "#2"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"from": [0, 0, 0],
|
||||||
|
"to": [16, 0.25, 16],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 16, 16], "texture": "#0"},
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "texture": "#0"},
|
||||||
|
"south": {"uv": [0, 0, 16, 16], "texture": "#0"},
|
||||||
|
"west": {"uv": [0, 0, 16, 16], "texture": "#0"},
|
||||||
|
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"},
|
||||||
|
"down": {"uv": [16, 0, 0, 16], "rotation": 90, "texture": "#0"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "indicator",
|
||||||
|
"from": [8.4, 3.25, 14.25],
|
||||||
|
"to": [9.15, 4.25, 15],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
|
"south": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
|
"west": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
|
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#4"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "torch",
|
||||||
|
"from": [8.4, 0.5, 14.25],
|
||||||
|
"to": [9.15, 3.25, 15],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [1, 0, 2, 3], "texture": "#3"},
|
||||||
|
"east": {"uv": [2, 0, 2.75, 2.75], "texture": "#3"},
|
||||||
|
"south": {"uv": [0, 3, 1, 6], "texture": "#3"},
|
||||||
|
"west": {"uv": [0, 0, 1, 3], "texture": "#3"},
|
||||||
|
"up": {"uv": [4, 1, 3, 0], "rotation": 270, "texture": "#3"},
|
||||||
|
"down": {"uv": [2, 3, 1, 4], "rotation": 90, "texture": "#3"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "indicator",
|
||||||
|
"from": [8.4, 3.25, 4.25],
|
||||||
|
"to": [9.15, 4.25, 5],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
|
"south": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
|
"west": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
|
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#4"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "torch",
|
||||||
|
"from": [8.4, 0.5, 4.25],
|
||||||
|
"to": [9.15, 3.25, 5],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 0.75, 2.75], "texture": "#3"},
|
||||||
|
"east": {"uv": [0, 0, 0.75, 2.75], "texture": "#3"},
|
||||||
|
"south": {"uv": [0, 0, 0.75, 2.75], "texture": "#3"},
|
||||||
|
"west": {"uv": [0, 0, 0.75, 2.75], "texture": "#3"},
|
||||||
|
"up": {"uv": [0, 0, 0.75, 0.75], "rotation": 270, "texture": "#3"},
|
||||||
|
"down": {"uv": [0, 0, 0.75, 0.75], "rotation": 90, "texture": "#3"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "indicator",
|
||||||
|
"from": [8.4, 3.25, 1.25],
|
||||||
|
"to": [9.15, 4.25, 2],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
|
"east": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
|
"south": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
|
"west": {"uv": [0, 0, 16, 16], "texture": "#4"},
|
||||||
|
"up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#4"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "torch",
|
||||||
|
"from": [8.4, 0.5, 1.25],
|
||||||
|
"to": [9.15, 3.25, 2],
|
||||||
|
"faces": {
|
||||||
|
"north": {"uv": [0, 0, 0.75, 2.75], "texture": "#3"},
|
||||||
|
"east": {"uv": [0, 0, 0.75, 2.75], "texture": "#3"},
|
||||||
|
"south": {"uv": [0, 0, 0.75, 2.75], "texture": "#3"},
|
||||||
|
"west": {"uv": [0, 0, 0.75, 2.75], "texture": "#3"},
|
||||||
|
"up": {"uv": [0, 0, 0.75, 0.75], "rotation": 270, "texture": "#3"},
|
||||||
|
"down": {"uv": [0, 0, 0.75, 0.75], "rotation": 90, "texture": "#3"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"display": {
|
||||||
|
"thirdperson_righthand": {
|
||||||
|
"translation": [0, 4.5, 0],
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
},
|
||||||
|
"thirdperson_lefthand": {
|
||||||
|
"translation": [0, 4, 0],
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
},
|
||||||
|
"firstperson_righthand": {
|
||||||
|
"translation": [0, 3.5, 0],
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
},
|
||||||
|
"firstperson_lefthand": {
|
||||||
|
"translation": [0, 4.5, 0],
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
},
|
||||||
|
"ground": {
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
},
|
||||||
|
"gui": {
|
||||||
|
"rotation": [45, 45, 0],
|
||||||
|
"translation": [0, -0.5, 0],
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
},
|
||||||
|
"head": {
|
||||||
|
"translation": [0, 14.25, 0]
|
||||||
|
},
|
||||||
|
"fixed": {
|
||||||
|
"rotation": [-90, 0, 0],
|
||||||
|
"translation": [0, 0, -3.75],
|
||||||
|
"scale": [0.5, 0.5, 0.5]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"groups": [
|
||||||
|
{
|
||||||
|
"name": "base",
|
||||||
|
"origin": [0, 0, 0],
|
||||||
|
"color": 0,
|
||||||
|
"nbt": "{}",
|
||||||
|
"children": [0, 1, 2]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "input",
|
||||||
|
"origin": [0, 0, 0],
|
||||||
|
"color": 0,
|
||||||
|
"nbt": "{}",
|
||||||
|
"children": [3, 4]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "state",
|
||||||
|
"origin": [0, 0, 0],
|
||||||
|
"color": 0,
|
||||||
|
"nbt": "{}",
|
||||||
|
"children": [5, 6]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "state",
|
||||||
|
"origin": [0, 0, 0],
|
||||||
|
"color": 0,
|
||||||
|
"nbt": "{}",
|
||||||
|
"children": [7, 8]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 115 B |
Binary file not shown.
After Width: | Height: | Size: 265 B |
Binary file not shown.
After Width: | Height: | Size: 73 B |
Binary file not shown.
After Width: | Height: | Size: 341 B |
Binary file not shown.
After Width: | Height: | Size: 330 B |
Loading…
Add table
Add a link
Reference in a new issue