Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More redstone components #914

Open
wants to merge 86 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
fc376ca
Basic dispenser functionality
Creeperface01 Aug 11, 2019
ebd0365
Merge remote-tracking branch 'origin/master' into redstone
Creeperface01 Aug 11, 2019
538c819
Broken pistons implementation
Creeperface01 Aug 16, 2019
69ea148
fixed piston input power, plugin unknown dependency message
Creeperface01 Aug 18, 2019
079f47e
plugin unknown dependency message
Creeperface01 Aug 18, 2019
2aaa64d
fix build
Creeperface01 Aug 18, 2019
f608942
update
Creeperface01 Sep 17, 2019
e38921e
fixes
Creeperface01 Sep 18, 2019
4fc454d
update
Creeperface01 Oct 5, 2019
6318c0e
Fix slimeblocks
Creeperface01 Oct 12, 2019
55e12a1
Implement entity collision
Creeperface01 Oct 13, 2019
f2969ac
Dropper
Creeperface01 Oct 13, 2019
25b57ed
merge master
Creeperface01 Oct 13, 2019
c9d3a55
Bumb API version
Creeperface01 Oct 13, 2019
b0a1d5f
allow more digits in the API version
Creeperface01 Oct 15, 2019
717d44b
Add option to disable redstone
Creeperface01 Oct 16, 2019
b679e70
fix submodule
Creeperface01 Oct 20, 2019
38820ae
test
Creeperface01 Oct 20, 2019
3d7e846
test
Creeperface01 Oct 21, 2019
9004211
Fix submodule
Creeperface01 Oct 21, 2019
9a38c49
Fix duplication bug
Creeperface01 Oct 22, 2019
9ab951f
Fix dispenser duplication
Creeperface01 Oct 22, 2019
d323b52
Fix compatibility
Creeperface01 Oct 22, 2019
64de485
Prevent NPE
Creeperface01 Oct 22, 2019
bd2d2ba
Add BlockPistonEvent
Creeperface01 Oct 23, 2019
f1360be
Fix comparator updates
Creeperface01 Oct 24, 2019
23adeaa
Fix hopper disabled behavior
Creeperface01 Oct 24, 2019
4f2b31c
Fix default facing
Creeperface01 Oct 29, 2019
3a210f7
Add sounds and particles
Creeperface01 Oct 31, 2019
f2085eb
Merge remote-tracking branch 'origin/redstone' into redstone
Creeperface01 Oct 31, 2019
56c0840
Merge 1.13
Creeperface01 Nov 3, 2019
4923c51
Fix piston retracting
Creeperface01 Nov 3, 2019
ae01cd3
Merge remote-tracking branch 'origin/bedrock-1.13' into redstone
Creeperface01 Nov 23, 2019
3a96364
ops
Creeperface01 Nov 23, 2019
d02f415
Static access
Creeperface01 Nov 23, 2019
78e98f7
Fix palette
Creeperface01 Nov 24, 2019
405f23c
Merge remote-tracking branch 'remotes/origin/master' into redstone
Creeperface01 Nov 30, 2019
bd8f5bc
ops
Creeperface01 Nov 30, 2019
b9dd554
Remove debug message left by @Creeperface01 :)
SupremeMortal Nov 30, 2019
334fef0
Merge branch 'master' of https://github.com/NukkitX/Nukkit into redstone
SupremeMortal Nov 30, 2019
9511c34
Merge remote-tracking branch 'origin/redstone' into redstone
SupremeMortal Nov 30, 2019
ae2e7b9
Merge remote-tracking branch 'remotes/origin/master' into redstone
Creeperface01 Dec 9, 2019
d53a270
Merge remote-tracking branch 'origin/redstone' into redstone
Creeperface01 Dec 9, 2019
180fefe
Fix redstone wire placement
Creeperface01 Dec 9, 2019
7bab7c7
Fix block names
Creeperface01 Dec 9, 2019
a79a861
ops
Creeperface01 Dec 9, 2019
294d397
Bump protocol version to 389
SupremeMortal Dec 10, 2019
bb3aad2
Support 1.13 and 1.14
SupremeMortal Dec 10, 2019
eb68985
Merge branch 'master' of https://github.com/NukkitX/Nukkit into redstone
SupremeMortal Dec 10, 2019
f3ab3af
Merge remote-tracking branch 'remotes/origin/bedrock-1.14' into redstone
Creeperface01 Dec 11, 2019
66bf314
Merge remote-tracking branch 'origin/redstone' into redstone
Creeperface01 Dec 12, 2019
a488f71
Merge remote-tracking branch 'remotes/origin/master' into redstone
Creeperface01 Dec 13, 2019
288724c
Fix comparator immediate update
Creeperface01 Dec 15, 2019
8e8d63b
Fix block updates
Creeperface01 Dec 15, 2019
65d96c6
don't push extended pistons
Creeperface01 Dec 15, 2019
7f9086d
Fix pistons behavior
Creeperface01 Dec 21, 2019
02ac8a3
Merge remote-tracking branch 'remotes/origin/master' into redstone
Creeperface01 Dec 21, 2019
a6f99d5
Drop painting when pushed
Creeperface01 Dec 24, 2019
73fb1a2
Merge remote-tracking branch 'remotes/origin/master' into redstone
Creeperface01 Dec 30, 2019
5be10a9
Don't create new BlockEntityPiston instance directly
Creeperface01 Dec 30, 2019
bd3efa1
Fix buttons
Creeperface01 Jan 2, 2020
e2407f2
Merge remote-tracking branch 'origin/redstone' into redstone
Creeperface01 Jan 2, 2020
d7de1ef
Fixed piston bug
Creeperface01 Jan 2, 2020
8a3c56e
Fix piston placement
Creeperface01 Jan 2, 2020
6211594
Merge remote-tracking branch 'remotes/origin/master' into redstone
Creeperface01 Jan 4, 2020
d46a4d7
Don't use player instance in async event
Creeperface01 Jan 4, 2020
d72138b
merge
Creeperface01 Jan 9, 2020
d5193af
Merge branch 'master' of https://github.com/NukkitX/Nukkit into redstone
SupremeMortal Jan 10, 2020
aa12ad7
Merge remote-tracking branch 'remotes/origin/master' into redstone
Creeperface01 Jan 11, 2020
5931d91
Fix redstone torch and piston update
Creeperface01 Jan 12, 2020
a9e676d
Merge branches 'master' and 'redstone' of https://github.com/NukkitX/…
SupremeMortal Feb 12, 2020
ad292d8
Merge branch 'master' of https://github.com/NukkitX/Nukkit into redstone
SupremeMortal Mar 16, 2020
066244e
Merge branches 'master' and 'redstone' of https://github.com/NukkitX/…
SupremeMortal Apr 5, 2020
925f472
Merge branch 'master' of https://github.com/NukkitX/Nukkit into redstone
SupremeMortal Apr 5, 2020
714317c
Merge branch 'master' of https://github.com/NukkitX/Nukkit into redstone
SupremeMortal Apr 6, 2020
bfcfde9
Merge branch 'master' of https://github.com/NukkitX/Nukkit into redstone
SupremeMortal Apr 16, 2020
2cdd822
Merge branch 'master' of https://github.com/NukkitX/Nukkit into redstone
SupremeMortal Apr 16, 2020
4f24a4e
Merge branch 'master' of https://github.com/NukkitX/Nukkit into redstone
SupremeMortal Apr 29, 2020
fa2db54
Merge branch 'master' of https://github.com/NukkitX/Nukkit into redstone
SupremeMortal Apr 30, 2020
8344d9f
[Redstone] Updates from master branch (#1419)
AlicanCopur May 10, 2020
701f543
Merge pull request #1480 from NukkitX/master
SupremeMortal Jun 5, 2020
5b70933
Merge branch 'master' into redstone
Sleepybear Jul 14, 2020
b5b5af0
Merge branch 'master' into redstone
Sleepybear Sep 26, 2020
15da21f
merge master into redstone - fix build
Sleepybear Sep 26, 2020
9e6612d
Redstone 1.16.210 Support (#1817)
FlamingKnight Mar 28, 2021
cc74955
Redstone update for 1.16.221 (#1837)
FlamingKnight May 11, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -232,3 +232,6 @@ creativeitems.json
recipes.json
data/
data/*

# a file that can be used for your helm chart values
/helm-values.local.yaml
33 changes: 33 additions & 0 deletions Dockerfile.arm64
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
FROM arm64v8/openjdk:8-jdk-slim AS build
WORKDIR /usr/local/src/nukkit
COPY src /usr/local/src/nukkit/src
COPY mvn* pom.xml /usr/local/src/nukkit/
COPY .git /usr/local/src/nukkit/.git
COPY .mvn /usr/local/src/nukkit/.mvn
COPY .gitmodules /usr/local/src/nukkit/.gitmodules
RUN apt-get -y update && \
apt-get install -y build-essential git maven && \
git submodule update --init && \
mvn clean package

FROM arm64v8/openjdk:8-jre-slim AS run
LABEL maintainer="Chris Fordham <chris@fordham.id.au>"
COPY --from=build /usr/local/src/nukkit/target/nukkit-1.0-SNAPSHOT.jar /opt/nukkit/nukkit.jar
COPY nukkit.yml.default /etc/opt/nukkit/nukkit.yml
RUN useradd --user-group \
--no-create-home \
--home-dir /var/opt/nukkit \
--shell /usr/sbin/nologin \
minecraft && \
mkdir -p /var/opt/nukkit && \
chown -R minecraft /opt/nukkit /var/opt/nukkit /etc/opt/nukkit/nukkit.yml && \
ln -sfv /etc/opt/nukkit/nukkit.yml /var/opt/nukkit/nukkit.yml && \
apt-get -y update && \
apt-get -y install lsof && \
rm -rf /var/lib/apt/lists/*
USER minecraft
VOLUME /etc/opt/nukkit /var/opt/nukkit /opt/nukkit
EXPOSE 19132
WORKDIR /var/opt/nukkit
ENTRYPOINT ["java"]
CMD [ "-jar", "/opt/nukkit/nukkit.jar" ]
27 changes: 23 additions & 4 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,30 @@ pipeline {
when {
branch "master"
}

steps {
sh 'mvn javadoc:javadoc javadoc:jar source:jar deploy -DskipTests'
step([$class: 'JavadocArchiver',
javadocDir: 'target/site/apidocs',
keepAll: false])
rtMavenDeployer (
id: "maven-deployer",
serverId: "opencollab-artifactory",
releaseRepo: "maven-releases",
snapshotRepo: "maven-snapshots"
)
rtMavenResolver (
id: "maven-resolver",
serverId: "opencollab-artifactory",
releaseRepo: "release",
snapshotRepo: "snapshot"
)
rtMavenRun (
pom: 'pom.xml',
goals: 'javadoc:javadoc javadoc:jar source:jar install -DskipTests',
deployerId: "maven-deployer",
resolverId: "maven-resolver"
)
rtPublishBuildInfo (
serverId: "opencollab-artifactory"
)
step([$class: 'JavadocArchiver', javadocDir: 'target/site/apidocs', keepAll: false])
}
}
}
Expand Down
85 changes: 85 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
DOCKER_REGISTRY = index.docker.io
IMAGE_NAME = nukkit
IMAGE_VERSION = latest
IMAGE_ORG = flaccid
IMAGE_TAG = $(DOCKER_REGISTRY)/$(IMAGE_ORG)/$(IMAGE_NAME):$(IMAGE_VERSION)
export DOCKER_BUILDKIT = 1

WORKING_DIR := $(shell pwd)

.DEFAULT_GOAL := docker-build

.PHONY: build run

# TODO: finish
#build:: ## builds nukkit

# TODO: finish
#run:: ## runs the binary

docker-release:: docker-build docker-push ## builds and pushes the docker image to the registry
docker-release-arm64:: docker-build-arm64 docker-push-arm64 ## builds and pushes the arm64 docker image to the registry

docker-push:: ## pushes the docker image to the registry
@docker push $(IMAGE_TAG)

docker-push-arm64:: ## pushes the arm64 docker image to the registry
@docker push $(DOCKER_REGISTRY)/$(IMAGE_ORG)/$(IMAGE_NAME):arm64

docker-build:: ## builds the docker image locally
@echo http_proxy=$(HTTP_PROXY) http_proxy=$(HTTPS_PROXY)
@echo building $(IMAGE_TAG)
@docker build --pull \
--build-arg=http_proxy=$(HTTP_PROXY) \
--build-arg=https_proxy=$(HTTPS_PROXY) \
-t $(IMAGE_TAG) $(WORKING_DIR)

docker-build-arm64:: ## builds the arm64 docker image locally
@echo http_proxy=$(HTTP_PROXY) http_proxy=$(HTTPS_PROXY)
@echo building $(IMAGE_TAG)
@docker build --pull \
--build-arg=http_proxy=$(HTTP_PROXY) \
--build-arg=https_proxy=$(HTTPS_PROXY) \
-f Dockerfile.arm64 \
-t $(DOCKER_REGISTRY)/$(IMAGE_ORG)/$(IMAGE_NAME):arm64 $(WORKING_DIR)

docker-run:: ## runs the docker image locally
@docker run \
-it \
-p 19132:19132 \
$(DOCKER_REGISTRY)/$(IMAGE_ORG)/$(IMAGE_NAME):$(IMAGE_VERSION)

helm-install:: ## installs using helm from chart in repo
@helm install --name nukkit ./charts/nukkit

helm-upgrade:: ## upgrades deployed helm release
@helm upgrade nukkit ./charts/nukkit

helm-purge:: ## deletes and purges deployed helm release
@helm delete --purge nukkit

helm-render:: ## prints out the rendered chart
@helm install --dry-run --debug charts/nukkit

helm-validate:: ## runs a lint on the helm chart
@helm lint charts/nukkit

install-ghr:: ## installs ghr
@cd /tmp
@wget https://github.com/tcnksm/ghr/releases/download/v0.12.2/ghr_v0.12.2_linux_amd64.tar.gz
@tar zxvf ghr_v0.12.2_linux_amd64.tar.gz
@sudo mv ghr_v0.12.2_linux_amd64/ghr /usr/local/bin/

# a help target including self-documenting targets (see the awk statement)
define HELP_TEXT
Usage: make [TARGET]... [MAKEVAR1=SOMETHING]...

Available targets:
endef
export HELP_TEXT
help: ## this help target
@cat .banner
@echo
@echo "$$HELP_TEXT"
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / \
{printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
47 changes: 46 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ It has a few key advantages over other server software:
* Written in Java, Nukkit is faster and more stable.
* Having a friendly structure, it's easy to contribute to Nukkit's development and rewrite plugins from other platforms into Nukkit plugins.

Nukkit is **under improvement** yet, we welcome contributions.
Nukkit is **under improvement** yet, we welcome contributions.

Links
--------------------
Expand Down Expand Up @@ -67,6 +67,51 @@ Use [docker-compose](https://docs.docker.com/compose/overview/) to start server
docker-compose up -d
```

Kubernetes & Helm
-------------

Validate the chart:

`helm lint charts/nukkit`

Dry run and print out rendered YAML:

`helm install --dry-run --debug nukkit charts/nukkit`

Install the chart:

`helm install nukkit charts/nukkit`

Or, with some different values:

```
helm install nukkit \
--set image.tag="arm64" \
--set service.type="LoadBalancer" \
charts/nukkit
```

Or, the same but with a custom values from a file:

```
helm install nukkit \
-f helm-values.local.yaml \
charts/nukkit
```

Upgrade the chart:

`helm upgrade nukkit charts/nukkit`

Testing after deployment:

`helm test nukkit`

Completely remove the chart:

`helm uninstall nukkit`


Contributing
------------
Please read the [CONTRIBUTING](.github/CONTRIBUTING.md) guide before submitting any issue. Issues with insufficient information or in the wrong format will be closed and will not be reviewed.
23 changes: 23 additions & 0 deletions charts/nukkit/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
6 changes: 6 additions & 0 deletions charts/nukkit/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: v2
name: nukkit
description: A Helm chart for Nukkit
type: application
version: 0.1.0
appVersion: 0.1.0
15 changes: 15 additions & 0 deletions charts/nukkit/templates/NOTES.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "nukkit.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "nukkit.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "nukkit.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "nukkit.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}
63 changes: 63 additions & 0 deletions charts/nukkit/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "nukkit.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "nukkit.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}

{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "nukkit.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Common labels
*/}}
{{- define "nukkit.labels" -}}
helm.sh/chart: {{ include "nukkit.chart" . }}
{{ include "nukkit.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{/*
Selector labels
*/}}
{{- define "nukkit.selectorLabels" -}}
app.kubernetes.io/name: {{ include "nukkit.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

{{/*
Create the name of the service account to use
*/}}
{{- define "nukkit.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "nukkit.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}
14 changes: 14 additions & 0 deletions charts/nukkit/templates/configmap.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "nukkit.name" . }}-conf
labels:
app: {{ template "nukkit.name" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
data:
nukkit.yml: |-
{{- if .Values.config }}
{{ .Values.config | indent 4 }}
{{- end -}}
Loading