It's like an HRA but with your friends instead of Hiss
This commit is contained in:
parent
9a23bc0752
commit
7107936a61
10 changed files with 183 additions and 33 deletions
|
@ -14,9 +14,8 @@ import net.minecraft.core.BlockPos;
|
|||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.util.datafix.fixes.References;
|
||||
import net.minecraft.world.item.BlockItem;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.item.*;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.SoundType;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
|
@ -31,19 +30,17 @@ import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityT
|
|||
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
|
||||
import su.a71.tardim_ic.tardim_ic.jammer.LocationJammerMaterial;
|
||||
import su.a71.tardim_ic.tardim_ic.redstone_input.RedstoneInputBlock;
|
||||
import su.a71.tardim_ic.tardim_ic.redstone_input.RedstoneInputTileEntity;
|
||||
import su.a71.tardim_ic.tardim_ic.Constants;
|
||||
import su.a71.tardim_ic.tardim_ic.registration.CommandInit;
|
||||
import su.a71.tardim_ic.tardim_ic.registration.ComputerCraftCompat;
|
||||
import su.a71.tardim_ic.tardim_ic.registration.Exteriors;
|
||||
import su.a71.tardim_ic.tardim_ic.soviet_chronobox.SovietChronoboxTileEntity;
|
||||
|
||||
public class Registration {
|
||||
// Blocks
|
||||
public static Block DOOR_SOVIET_CHRONOBOX;
|
||||
public static Block ROOF_SOVIET_CHRONOBOX;
|
||||
public static Block FLOOR_SOVIET_CHRONOBOX;
|
||||
public static BlockEntityType<TileEntityTardim> TILE_SOVIET_CHRONOBOX;
|
||||
|
||||
public static final Block REDSTONE_TARDIM_INPUT = new RedstoneInputBlock();
|
||||
|
||||
|
@ -63,40 +60,23 @@ public class Registration {
|
|||
public static final ResourceLocation CLOISTER_SOUND = new ResourceLocation("tardim_ic:cloister");
|
||||
public static SoundEvent CLOISTER_SOUND_EVENT = new SoundEvent(CLOISTER_SOUND);
|
||||
|
||||
public static TardimRegistry.TardimBuilder TARDIM_TYPE_SOVIET;
|
||||
|
||||
private static <T extends BlockEntity> BlockEntityType<T> createTardimTile(String string, FabricBlockEntityTypeBuilder<T> builder) {
|
||||
Type<?> type = Util.fetchChoiceType(References.BLOCK_ENTITY, string);
|
||||
return (BlockEntityType)Registry.register(Registry.BLOCK_ENTITY_TYPE, new ResourceLocation(Constants.MOD_ID, string), builder.build(type));
|
||||
}
|
||||
public static final ArmorMaterial LOCATION_JAMMER_MATERIAL = new LocationJammerMaterial();
|
||||
public static final Item LOCATION_JAMMER = new ArmorItem(LOCATION_JAMMER_MATERIAL, EquipmentSlot.CHEST, new Item.Properties().tab(TARDIM_IC_TAB));
|
||||
|
||||
// Register our stuff
|
||||
public static void register() {
|
||||
Registry.register(Registry.ITEM, new ResourceLocation(Constants.MOD_ID, "location_jammer"), LOCATION_JAMMER);
|
||||
|
||||
if (FabricLoader.getInstance().isModLoaded("computercraft")) {
|
||||
ComputerCraftCompat.register();
|
||||
ComputerCraftCompat.register(); // Register ComputerCraft-related features
|
||||
}
|
||||
Exteriors.register(); // Register custom TARDIM exteriors
|
||||
|
||||
Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "redstone_tardim_input"), REDSTONE_TARDIM_INPUT);
|
||||
Registry.register(Registry.ITEM, new ResourceLocation(Constants.MOD_ID, "redstone_tardim_input"), new BlockItem(REDSTONE_TARDIM_INPUT, new FabricItemSettings().tab(TARDIM_IC_TAB)));
|
||||
|
||||
Registry.register(Registry.SOUND_EVENT, CLOISTER_SOUND, CLOISTER_SOUND_EVENT);
|
||||
|
||||
FLOOR_SOVIET_CHRONOBOX = Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "tardim_floor_soviet"), new BlockTardimFloor(FabricBlockSettings.of(Material.WOOD).sounds(SoundType.WOOD).strength(-1.0F, 3600000.0F).noLootTable().noOcclusion(), new BlockTardimFloor.TardimTileData() {
|
||||
public BlockEntityType<TileEntityTardim> getType() {
|
||||
return TILE_SOVIET_CHRONOBOX;
|
||||
}
|
||||
public BlockEntityTicker<? super TileEntityTardim> getTicker() {
|
||||
return TileEntityTardim::serverTick;
|
||||
}
|
||||
public BlockEntity createBlockEntity(BlockPos var1, BlockState var2) {
|
||||
return new SovietChronoboxTileEntity(var1, var2);
|
||||
}
|
||||
}));
|
||||
TILE_SOVIET_CHRONOBOX = createTardimTile("tardim_soviet_chronobox", FabricBlockEntityTypeBuilder.create(SovietChronoboxTileEntity::new, new Block[]{FLOOR_SOVIET_CHRONOBOX}));
|
||||
DOOR_SOVIET_CHRONOBOX = Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "tardim_door_soviet"), new BlockTardimDoors(FabricBlockSettings.of(Material.WOOD).sounds(SoundType.WOOD).strength(-1.0F, 3600000.0F).noLootTable().noOcclusion()));
|
||||
ROOF_SOVIET_CHRONOBOX = Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "tardim_roof_soviet"), new BlockTardimRoof(FabricBlockSettings.of(Material.WOOD).sounds(SoundType.WOOD).strength(-1.0F, 3600000.0F).noLootTable().noOcclusion()));
|
||||
TARDIM_TYPE_SOVIET = new TardimRegistry.TardimBuilder(new ResourceLocation(Constants.MOD_ID, "tardim_soviet_chronobox"), "TARDIM Soviet Chronobox", ROOF_SOVIET_CHRONOBOX, DOOR_SOVIET_CHRONOBOX, FLOOR_SOVIET_CHRONOBOX);
|
||||
|
||||
CommandInit.init();
|
||||
}
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
package su.a71.tardim_ic.tardim_ic.digital_interface;
|
||||
|
||||
import com.mojang.datafixers.util.Pair;
|
||||
import com.swdteam.tardim.common.command.tardim.CommandTardimBase;
|
||||
import com.swdteam.tardim.common.command.tardim.CommandTravel;
|
||||
import com.swdteam.tardim.common.data.DimensionMapReloadListener;
|
||||
import com.swdteam.tardim.common.init.TRDSounds;
|
||||
|
@ -28,11 +27,13 @@ import net.minecraft.server.level.ServerPlayer;
|
|||
import net.minecraft.server.players.PlayerList;
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.sounds.SoundSource;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.biome.Biome;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.levelgen.Heightmap;
|
||||
import net.minecraft.world.phys.Vec3;
|
||||
import org.squiddev.cobalt.Lua;
|
||||
import su.a71.tardim_ic.tardim_ic.Registration;
|
||||
import su.a71.tardim_ic.tardim_ic.utils.FakePlayer;
|
||||
|
||||
|
@ -40,6 +41,8 @@ import javax.annotation.Nonnull;
|
|||
import javax.annotation.Nullable;
|
||||
import java.util.*;
|
||||
|
||||
import static su.a71.tardim_ic.tardim_ic.Registration.LOCATION_JAMMER;
|
||||
|
||||
|
||||
public class DigitalInterfacePeripheral implements IPeripheral {
|
||||
|
||||
|
@ -438,6 +441,12 @@ public class DigitalInterfacePeripheral implements IPeripheral {
|
|||
throw new LuaException("Player not found");
|
||||
}
|
||||
|
||||
for (ItemStack armour : player.getArmorSlots()) {
|
||||
if (armour.is(LOCATION_JAMMER)) {
|
||||
throw new LuaException("Player location jammed");
|
||||
};
|
||||
}
|
||||
|
||||
ResourceKey<Level> dim = player.getCommandSenderWorld().dimension();
|
||||
BlockPos pos = player.blockPosition();
|
||||
|
||||
|
|
|
@ -0,0 +1,56 @@
|
|||
package su.a71.tardim_ic.tardim_ic.jammer;
|
||||
|
||||
|
||||
import net.minecraft.sounds.SoundEvent;
|
||||
import net.minecraft.sounds.SoundEvents;
|
||||
import net.minecraft.world.entity.EquipmentSlot;
|
||||
import net.minecraft.world.item.ArmorMaterial;
|
||||
import net.minecraft.world.item.Items;
|
||||
import net.minecraft.world.item.crafting.Ingredient;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class LocationJammerMaterial implements ArmorMaterial {
|
||||
private static final int[] BASE_DURABILITY = new int[] {13, 15, 16, 11};
|
||||
private static final int[] PROTECTION_VALUES = new int[] {1, 1, 1, 1};
|
||||
|
||||
@Override
|
||||
public int getDurabilityForSlot(EquipmentSlot slot) {
|
||||
return BASE_DURABILITY[slot.getIndex()] * 33;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDefenseForSlot(EquipmentSlot slot) {
|
||||
return PROTECTION_VALUES[slot.getIndex()];
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnchantmentValue() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull SoundEvent getEquipSound() {
|
||||
return SoundEvents.ARMOR_EQUIP_GENERIC;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull Ingredient getRepairIngredient() {
|
||||
return Ingredient.of(Items.IRON_INGOT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getName() {
|
||||
// Must be all lowercase
|
||||
return "location jammer";
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getToughness() {
|
||||
return 0.0F;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getKnockbackResistance() {
|
||||
return 0.1F;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package su.a71.tardim_ic.tardim_ic.mixin;
|
||||
|
||||
import com.swdteam.tardim.common.command.tardim.CommandLocate;
|
||||
import com.swdteam.tardim.common.command.tardim.CommandTardimBase;
|
||||
import dan200.computercraft.api.lua.LuaException;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||
import su.a71.tardim_ic.tardim_ic.registration.CommandInit;
|
||||
|
||||
import static com.swdteam.tardim.common.command.tardim.CommandTardimBase.sendResponse;
|
||||
import static su.a71.tardim_ic.tardim_ic.Registration.LOCATION_JAMMER;
|
||||
|
||||
@Mixin(value = CommandLocate.class, remap = false)
|
||||
public class JammerMixin {
|
||||
@Inject(method="execute([Ljava/lang/String;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/core/BlockPos;Lcom/swdteam/tardim/common/command/tardim/CommandTardimBase/CommandSource;)V", at=@At(value = "INVOKE", target = "Lcom/swdteam/tardim/tardim/TardimData;setTravelLocation(Lcom/swdteam/tardim/tardim/TardimData/Location)V"), locals = LocalCapture.CAPTURE_FAILHARD)
|
||||
private static void init(CallbackInfo ci, Player player, Player otherPlayer, CommandTardimBase.CommandSource source) {
|
||||
for (ItemStack armour : player.getArmorSlots()) {
|
||||
if (armour.is(LOCATION_JAMMER)) {
|
||||
sendResponse(player, "Player's location is jammed", CommandTardimBase.ResponseType.FAIL, source);
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,57 @@
|
|||
package su.a71.tardim_ic.tardim_ic.registration;
|
||||
|
||||
import com.mojang.datafixers.types.Type;
|
||||
import com.swdteam.tardim.common.block.BlockTardimDoors;
|
||||
import com.swdteam.tardim.common.block.BlockTardimFloor;
|
||||
import com.swdteam.tardim.common.block.BlockTardimRoof;
|
||||
import com.swdteam.tardim.common.init.TardimRegistry;
|
||||
import com.swdteam.tardim.tileentity.TileEntityTardim;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder;
|
||||
import net.minecraft.Util;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Registry;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.util.datafix.fixes.References;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.SoundType;
|
||||
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.material.Material;
|
||||
import su.a71.tardim_ic.tardim_ic.Constants;
|
||||
import su.a71.tardim_ic.tardim_ic.soviet_chronobox.SovietChronoboxTileEntity;
|
||||
|
||||
public class Exteriors {
|
||||
// Soviet Chronobox
|
||||
public static TardimRegistry.TardimBuilder TARDIM_TYPE_SOVIET;
|
||||
public static Block DOOR_SOVIET_CHRONOBOX;
|
||||
public static Block ROOF_SOVIET_CHRONOBOX;
|
||||
public static Block FLOOR_SOVIET_CHRONOBOX;
|
||||
public static BlockEntityType<TileEntityTardim> TILE_SOVIET_CHRONOBOX;
|
||||
|
||||
private static <T extends BlockEntity> BlockEntityType<T> createTardimTile(String string, FabricBlockEntityTypeBuilder<T> builder) {
|
||||
Type<?> type = Util.fetchChoiceType(References.BLOCK_ENTITY, string);
|
||||
return (BlockEntityType) Registry.register(Registry.BLOCK_ENTITY_TYPE, new ResourceLocation(Constants.MOD_ID, string), builder.build(type));
|
||||
}
|
||||
|
||||
public static void register() {
|
||||
FLOOR_SOVIET_CHRONOBOX = Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "tardim_floor_soviet"), new BlockTardimFloor(FabricBlockSettings.of(Material.WOOD).sounds(SoundType.WOOD).strength(-1.0F, 3600000.0F).noLootTable().noOcclusion(), new BlockTardimFloor.TardimTileData() {
|
||||
public BlockEntityType<TileEntityTardim> getType() {
|
||||
return TILE_SOVIET_CHRONOBOX;
|
||||
}
|
||||
public BlockEntityTicker<? super TileEntityTardim> getTicker() {
|
||||
return TileEntityTardim::serverTick;
|
||||
}
|
||||
public BlockEntity createBlockEntity(BlockPos var1, BlockState var2) {
|
||||
return new SovietChronoboxTileEntity(var1, var2);
|
||||
}
|
||||
}));
|
||||
TILE_SOVIET_CHRONOBOX = createTardimTile("tardim_soviet_chronobox", FabricBlockEntityTypeBuilder.create(SovietChronoboxTileEntity::new, new Block[]{FLOOR_SOVIET_CHRONOBOX}));
|
||||
DOOR_SOVIET_CHRONOBOX = Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "tardim_door_soviet"), new BlockTardimDoors(FabricBlockSettings.of(Material.WOOD).sounds(SoundType.WOOD).strength(-1.0F, 3600000.0F).noLootTable().noOcclusion()));
|
||||
ROOF_SOVIET_CHRONOBOX = Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "tardim_roof_soviet"), new BlockTardimRoof(FabricBlockSettings.of(Material.WOOD).sounds(SoundType.WOOD).strength(-1.0F, 3600000.0F).noLootTable().noOcclusion()));
|
||||
TARDIM_TYPE_SOVIET = new TardimRegistry.TardimBuilder(new ResourceLocation(Constants.MOD_ID, "tardim_soviet_chronobox"), "TARDIM Soviet Chronobox", ROOF_SOVIET_CHRONOBOX, DOOR_SOVIET_CHRONOBOX, FLOOR_SOVIET_CHRONOBOX);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
"Base:"
|
||||
* Quartz
|
||||
* Deepslate
|
||||
* Stone?
|
|
@ -5,9 +5,10 @@ import com.swdteam.tardim.tileentity.TileEntityTardim;
|
|||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import su.a71.tardim_ic.tardim_ic.Registration;
|
||||
import su.a71.tardim_ic.tardim_ic.registration.Exteriors;
|
||||
|
||||
public class SovietChronoboxTileEntity extends TileEntityTardim {
|
||||
public SovietChronoboxTileEntity(BlockPos pos, BlockState state) {
|
||||
super(Registration.TILE_SOVIET_CHRONOBOX, pos, state);
|
||||
super(Exteriors.TILE_SOVIET_CHRONOBOX, pos, state);
|
||||
}
|
||||
}
|
|
@ -21,6 +21,9 @@
|
|||
"su.a71.tardim_ic.tardim_ic.TardimInControl"
|
||||
]
|
||||
},
|
||||
"mixins": [
|
||||
"mixins.tardim_ic.json"
|
||||
],
|
||||
|
||||
"depends": {
|
||||
"fabricloader": ">=0.14.10",
|
||||
|
|
15
Fabric/src/main/resources/mixins.tardim_ic.json
Normal file
15
Fabric/src/main/resources/mixins.tardim_ic.json
Normal file
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"required": true,
|
||||
"package": "su.a71.tardim_ic.tardim_ic.mixin",
|
||||
"compatibilityLevel": "JAVA_17",
|
||||
"refmap": "refmap.tardim_ic.json",
|
||||
"mixins": [
|
||||
"JammerMixin"
|
||||
],
|
||||
"client": [
|
||||
],
|
||||
"injectors": {
|
||||
"defaultRequire": 1
|
||||
},
|
||||
"minVersion": "0.8.4"
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
=== HOW MANY PROBLEMS TARDIM HAS?! ===
|
||||
1. A few log messages definitely left from testing (e.g. aklfjsjsfw)
|
||||
2. isValidFlightPath is private of Fabric
|
||||
2. isValidFlightPath is private on Fabric
|
||||
3. FABRIC AND FORGE HAVE DIFFERENT JAVA IMPORT PATHS
|
Loading…
Add table
Reference in a new issue