Skip to content

Commit

Permalink
feat: implement basic functionalities in 1.17.1
Browse files Browse the repository at this point in the history
  • Loading branch information
Samarium150 committed Jul 29, 2021
1 parent b062adb commit 6f6bc6e
Show file tree
Hide file tree
Showing 28 changed files with 314 additions and 316 deletions.
8 changes: 4 additions & 4 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ apply plugin: 'net.minecraftforge.gradle'

def previousVersion = '1.2.0'
def baseVersion = '1.2.1'
def minecraftVersion = '1.16.5'
def minecraftVersion = '1.17.1'
version = "${minecraftVersion}-${baseVersion}" as Object
group = 'com.github.samarium150'
archivesBaseName = 'structurescompass'

java.toolchain.languageVersion = JavaLanguageVersion.of(8)
java.toolchain.languageVersion = JavaLanguageVersion.of(16)

logger.quiet('Java: {} JVM: {}({}) Arch: {}',
System.getProperty('java.version'),
Expand All @@ -42,7 +42,7 @@ sourceSets {
def mainSourceSet = sourceSets.main

minecraft {
mappings channel: 'official', version: '1.16.5'
mappings channel: 'official', version: minecraftVersion

// accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
runs {
Expand Down Expand Up @@ -73,7 +73,7 @@ minecraft {
// sourceSets.main.resources { srcDir 'src/generated/resources' }

dependencies {
minecraft 'net.minecraftforge:forge:1.16.5-36.2.2'
minecraft 'net.minecraftforge:forge:1.17.1-37.0.13'
}

compileJava {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
import net.minecraft.command.CommandSource;
import net.minecraft.command.Commands;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.gen.feature.structure.Structure;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.item.ItemStack;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraftforge.registries.ForgeRegistries;

import javax.annotation.Nonnull;
Expand All @@ -28,13 +28,13 @@ public final class GetCompass {

private GetCompass() { }

private static int getTaggedCompass(@Nonnull CommandSource source, String feature) throws CommandSyntaxException {
private static int getTaggedCompass(@Nonnull CommandSourceStack source, String feature) throws CommandSyntaxException {
ItemStack structures_compass = new ItemStack(ItemRegistry.STRUCTURES_COMPASS.get());
giveItem(source.getPlayerOrException(), StructuresCompassItem.setStructureName(feature, structures_compass));
return Command.SINGLE_SUCCESS;
}

private static void giveItem(@Nonnull ServerPlayerEntity player, ItemStack structures_compass) {
private static void giveItem(@Nonnull ServerPlayer player, ItemStack structures_compass) {
ItemEntity itemEntity = player.drop(structures_compass, false);
if (itemEntity != null) {
itemEntity.setNoPickUpDelay();
Expand All @@ -46,11 +46,11 @@ private static void giveItem(@Nonnull ServerPlayerEntity player, ItemStack struc
* Register this command
* @param dispatcher CommandDispatcher
*/
public static void register(CommandDispatcher<CommandSource> dispatcher) {
LiteralArgumentBuilder<CommandSource> structures_compass = Commands.literal("structures_compass")
public static void register(CommandDispatcher<CommandSourceStack> dispatcher) {
LiteralArgumentBuilder<CommandSourceStack> structures_compass = Commands.literal("structures_compass")
.requires((commandSource) -> commandSource.hasPermission(2));

for (Structure<?> structureFeature : ForgeRegistries.STRUCTURE_FEATURES) {
for (StructureFeature<?> structureFeature : ForgeRegistries.STRUCTURE_FEATURES) {
ResourceLocation res = structureFeature.getRegistryName();
if (res == null) continue;
String structure = res.toString();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
package com.github.samarium150.structurescompass.gui;

import com.github.samarium150.structurescompass.util.StructureUtils;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.Util;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.SimpleSound;
import net.minecraft.client.gui.widget.list.ExtendedList.AbstractListEntry;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.SoundEvents;
import net.minecraft.util.Util;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.world.gen.feature.structure.Structure;
import net.minecraft.client.gui.components.ObjectSelectionList.Entry;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.client.resources.sounds.SimpleSoundInstance;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

Expand All @@ -27,34 +28,33 @@
* </a>.
*/
@OnlyIn(Dist.CLIENT)
public final class StructureSearchEntry extends AbstractListEntry<StructureSearchEntry> {
public final class StructureSearchEntry extends Entry<StructureSearchEntry> {

private final Minecraft minecraft;
private final StructureSearchList list;
private final Structure<?> structure;
private final StructureFeature<?> structure;
private final StructuresCompassScreen screen;
private long lastTickTime;

public StructureSearchEntry(@Nonnull StructureSearchList list, Structure<?> structure) {
public StructureSearchEntry(@Nonnull StructureSearchList list, StructureFeature<?> structure) {
minecraft = Minecraft.getInstance();
this.list = list;
this.structure = structure;
screen = list.getScreen();
}

public void search() {
minecraft.getSoundManager().play(SimpleSound.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
minecraft.getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
screen.search(structure);
}

public Structure<?> getStructure() {
public StructureFeature<?> getStructure() {
return structure;
}

@SuppressWarnings("deprecation")
@Override
public void render(
@Nonnull MatrixStack matrixStack,
@Nonnull PoseStack matrixStack,
int index, int top, int left, int width, int height, int mouseX, int mouseY,
boolean isMouseOver, float partialTicks
) {
Expand All @@ -63,16 +63,16 @@ public void render(
left + 1, top + 1, 0xffffff
);
minecraft.font.draw(matrixStack,
new StringTextComponent(I18n.get("string.structurescompass.source") + ": "
new TextComponent(I18n.get("string.structurescompass.source") + ": "
+ StructureUtils.getStructureSource(structure)),
left + 1, top + minecraft.font.lineHeight + 3, 0x808080
);
minecraft.font.draw(matrixStack,
new StringTextComponent(I18n.get("string.structurescompass.dimension") + ": "
new TextComponent(I18n.get("string.structurescompass.dimension") + ": "
+ StructureUtils.getDimensions(structure)),
left + 1, top + minecraft.font.lineHeight + 14, 0x808080
);
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
}

@Override
Expand All @@ -87,4 +87,11 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
}
return false;
}

@Nonnull
@Override
public Component getNarration() {
return new TextComponent(I18n.get("string.structurescompass.source") + ": "
+ StructureUtils.getStructureSource(structure));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

import com.github.samarium150.structurescompass.util.RenderUtils;
import com.github.samarium150.structurescompass.util.StructureUtils;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.widget.list.ExtendedList;
import net.minecraft.world.gen.feature.structure.Structure;
import net.minecraft.client.gui.components.ObjectSelectionList;
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

Expand All @@ -24,7 +24,7 @@
* </a>.
*/
@OnlyIn(Dist.CLIENT)
public final class StructureSearchList extends ExtendedList<StructureSearchEntry> {
public final class StructureSearchList extends ObjectSelectionList<StructureSearchEntry> {

private final StructuresCompassScreen screen;
private final HashMap<String, StructureSearchEntry> map = new HashMap<>();
Expand All @@ -45,13 +45,13 @@ public void selectStructure(StructureSearchEntry entry) {
screen.selectStructure(entry);
}

public void selectStructure(Structure<?> structure) {
public void selectStructure(StructureFeature<?> structure) {
selectStructure(map.get(StructureUtils.getStructureName(structure)));
}

public void refresh() {
clearEntries();
for (Structure<?> structure : screen.sortStructures()) {
for (StructureFeature<?> structure : screen.sortStructures()) {
StructureSearchEntry entry = new StructureSearchEntry(this, structure);
addEntry(entry);
map.put(StructureUtils.getStructureName(structure), entry);
Expand Down Expand Up @@ -84,7 +84,7 @@ protected boolean isSelectedItem(int index) {
}

@Override
protected void renderList(@Nonnull MatrixStack matrixStack, int x, int y, int mouseX, int mouseY, float partialTicks) {
protected void renderList(@Nonnull PoseStack matrixStack, int x, int y, int mouseX, int mouseY, float partialTicks) {
for (int i = 0; i < getItemCount(); ++i) {
int top = getRowTop(i);
int bottom = top + itemHeight;
Expand All @@ -107,7 +107,7 @@ protected void renderList(@Nonnull MatrixStack matrixStack, int x, int y, int mo
}

@Override
public void render(@Nonnull MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
public void render(@Nonnull PoseStack matrixStack, int mouseX, int mouseY, float partialTicks) {
renderList(matrixStack, getRowLeft(), y0 + 4 - (int) getScrollAmount(), mouseX, mouseY, partialTicks);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.github.samarium150.structurescompass.gui;

import net.minecraft.client.Minecraft;
import net.minecraft.item.ItemStack;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,30 @@
import com.github.samarium150.structurescompass.item.StructuresCompassItem;
import com.github.samarium150.structurescompass.util.RenderUtils;
import com.github.samarium150.structurescompass.util.StructureUtils;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.client.gui.GuiComponent;
import net.minecraft.client.gui.screens.ChatScreen;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.core.BlockPos;
import net.minecraft.world.phys.Vec3;

/**
* The HUD of the compass
*/
public final class StructuresCompassHUD extends AbstractGui {
public final class StructuresCompassHUD extends GuiComponent {

private static final Minecraft minecraft = Minecraft.getInstance();
private final MatrixStack matrixStack;
private final PoseStack matrixStack;

/**
* Initializer of the HUD
* @param matrixStack MatrixStack from RenderGameOverlayEvent
* @see net.minecraftforge.client.event.RenderGameOverlayEvent
*/
public StructuresCompassHUD(MatrixStack matrixStack) {
public StructuresCompassHUD(PoseStack matrixStack) {
this.matrixStack = matrixStack;
}

Expand All @@ -47,7 +47,7 @@ public void render() {
if (StructuresCompassConfig.HUD_Level.get() != 0 &&
(minecraft.screen == null || (StructuresCompassConfig.displayWithChatOpen.get()
&& minecraft.screen instanceof ChatScreen))) {
final PlayerEntity player = minecraft.player;
final Player player = minecraft.player;
final ItemStack stack;
assert player != null;
if (!player.getMainHandItem().isEmpty()
Expand Down Expand Up @@ -98,7 +98,7 @@ else if (!player.getOffhandItem().isEmpty()

if (player.getCommandSenderWorld().dimension().location().toString().equals(dim)) {

Vector3d dis = StructureUtils.getDistance(pos, player);
Vec3 dis = StructureUtils.getDistance(pos, player);
double disX = dis.x();
double disY = dis.y();
double disZ = dis.z();
Expand Down
Loading

0 comments on commit 6f6bc6e

Please sign in to comment.